Circle of Eight Forum

Go Back   Circle of Eight Forum > Modding > ToEE Toolset Project Documentation

Notices

ToEE Toolset Project Documentation A forum dedicated to storing useful information about modding ToEE using the ToEE Toolset Project programs.



View The Keep on the Borderlands on Mod DBDownload Keep on the Borderlands 1.0.0 from Mod DBView The Keep on the Borderlands on Mod DB

Reply
 
Thread Tools
Old January 20th, 2010   #61
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

How to recombine and split the massive Hommlet map with World Builder for later use

Let's say you want to make a gigantic map for ToEE. Like most people, you'll probably want to do this by making a template from an existing map so that map limits and all that other silly stuff can just be transfered right over to your new map. Easy - we just have WB recombine the Hommlet map and go from there. But wait! We get an out of memory message or something similar since the map is so damn large. Now what?

Here's what to do, using the mysterious 'recombine partially' feature in WB:

1. Enter these exact figures into WB (under the 2D Maps tab) and click Recombine Partially. Then navigate to the Hommlet ground art folder, select the first .jpeg there, and click OK.

wb1.jpg

2. Enter these exact figures into WB (under the 2D Maps tab) and click Recombine Partially. Then navigate to the Hommlet ground art folder, select the first .jpeg there, and click OK.

wb2.jpg

3. Enter these exact figures into WB (under the 2D Maps tab) and click Recombine Partially. Then navigate to the Hommlet ground art folder, select the first .jpeg there, and click OK.

wb3.jpg

4. Enter these exact figures into WB (under the 2D Maps tab) and click Recombine Partially. Then navigate to the Hommlet ground art folder, select the first .jpeg there, and click OK.

wb4.jpg

This will give you four separate .jpegs that when combined will make up the entirety of the Hommlet map. The chunks look like this (bottom left and top right are the night version of the map, just to make the distinction somewhat clearer):

hommy ex.jpg

Now you can put these back together in your art program of choice, make a gigantic new art landscape overtop to your heart's content, split them again into the four pieces, and use WB to split the four pieces back into the little pieces that are used for maps in-game. The only thing you have to bear in mind when splitting them with WB is that the corresponding text file with the two figures in it has to have the same two figures you entered in the 'starting at' line when you recombined each piece originally. That means change the text file for each of the four pieces.

This is not theory btw: if you do it exactly as stated above, it will work.
__________________
Gaear is offline   Reply With Quote
Old February 16th, 2010   #62
Shiningted
No its not a joke
Super Moderator
 
Shiningted's Avatar
 
Join Date: Oct 2004
Location: Sydney
Posts: 10,573
Re: Well whaddya know?

Reseting a Heartbeat

There are any number of situations in which you may wish to change or reset a heartbeat. For instance, you may want a proactive NPC that initiates conversation when he has line-of-sight, each time, but you also want the PCs to be able to just walk away from him without getting dragged into another conversation instantly.

There are various ways to achieve this with flags, timed scripts etc. But the easiest I have found is simply to reset the heartbeat at the start of the map, with the first heartbeat. Put something like this in:

def san_first_heartbeat( attachee, triggerer ):
________attachee.scripts[19] = 612
________return RUN_DEFAULT

612 in this case is the number of the Bugbear Chief (ie py00612Bugbear.py). If you wish to have some other heartbeat kick in (a generic one or whatever) from another file, use another number.

This way you can switch off the heartbeat when it initiates (game.new_sid = 0) and it will be back next time the PCs arrives on the map
Shiningted is offline   Reply With Quote
Old July 20th, 2010   #63
DarkStorm
Hobgoblin
Moderator
 
DarkStorm's Avatar
 
Join Date: Oct 2003
Location: Germany
Posts: 419
daylight.mes

Heh, while I had to research this brute-force style (I replaced a map tile with a completely while JPEG, then took screenshots every hour of the day, and compared to daylight.mes),
I still want to share my results here:

daylight.mes controls the coloring of the background map and 3D lighting separately.

The entries for the background coloring of a map have the following style:

{MMMMXX}{R,G,B}

where MMMM is the map id, XX is the hour of the day and R,G,B is the color with which the background map is multiplied.
For XX=06, the entry is {Rn,Gn,Bn,Rd,Gd,Bd}, where Rn,Gn,Bn is multiplied with the nighttime map, while Rd,Gd,Bd is multiplied with the daytime map. Actually this is not entirely accurate, since at hour 6:00, the daylight map is already visible, the night-time value is only used to smooth out transitions. For XX=18, the entry is reversed.

The second set of entries are:
{MMMMXX}{R,G,B}

where MMMM is the map id and XX is 24+hour of the day. These entries are multiplied with the 3d lighting color (from global.lit). Otherwise the same rules as above apply.

In addition, the game uses linear interpolation between entries.

I don't know whether someone wrote this down already somewhere else, but I couldn't find anything like this description.

Regards,
Storm
DarkStorm is offline   Reply With Quote
Old July 29th, 2010   #64
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Fun Fact:

If you have an NPC with waypoints, and he is scripted to stop combat at some point in his san start_combat script and launch a dialog, but he has no san dialog script defined, he will instead stop combat and run his waypoints route.

Seems like lots of potential there.
__________________
Gaear is offline   Reply With Quote
Old July 29th, 2010   #65
Ranth
Lizardman
 
Ranth's Avatar
 
Join Date: Jan 2008
Location: Somewhere eastern
Posts: 825
Re: Well whaddya know?

How fun would it be to have villagers run from the Hommlet invaders?
Ranth is offline   Reply With Quote
Old August 3rd, 2010   #66
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

How to make an NPC stop combat

If you've got an NPC that has no business getting into combat (like a static object that is masquerading as an NPC, e.g. the shop map chests) and you want it to stop combat if it gets attacked, do this:
  • First, flag it as invulnerable and no flee.

  • Second, make sure its proto has san_start_combat defined in its scripts file.

  • Third, invoke the following at the start of the NPC's scripts file:

    Code:
    from Co8 import *
    This loads the file that contains Cerulean the Blue's script to stop combat.

  • Fourth, add the following to the san_start_combat entry in the NPC's scripts file:

    Code:
    def san_start_combat( attachee, triggerer ):
    	leader = game.party[0]
    	StopCombat(attachee, 0)
    	leader.begin_dialog( attachee, x )
    	return RUN_DEFAULT
    This will make the NPC stop combat on its turn and start dialog at the indicated line number in his dialog file (x). You have to point to a dialog or else combat won't stop. Since the NPC is invulnerable, it won't be any worse for wear from any hits it may have taken, and it won't try to run away and deliver and panicky float lines with its no flee flag set.
Note that this will also stop combat for any other battles that are going on that the NPC may have just happened to get pulled into, such as via an AoE spell.
__________________
Gaear is offline   Reply With Quote
Old August 25th, 2010   #67
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Observation: mobile objects don't like to be destroyed.

Or more specifically, the game doesn't like it and it may cause crashes on save, even though the save can be loaded successfully later, strangely.

Case in point: Captain Asaph's ghostly guards in Welkwood Bog got destroyed via script if you denied him three times. (Also the giant and the spirit.) If you then tried to save, the game would CTD, but you could load the save later without apparent issue. Changing it so that the mobs just got turned off instead of destroyed fixed it - no more CTDs.

Who knows why this is, but it's probably best not to destroy any mobile objects.

Speculation ... it might be that when you save, the game looks for the mobs that used to be there and can't find them - crash. But when you load the save, since the mob data wasn't saved, the game no longer looks for them - no crash.
__________________

Last edited by Gaear; August 25th, 2010 at 03:34 PM.
Gaear is offline   Reply With Quote
Old September 6th, 2010   #68
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Less High-Strung NPCs

If you want to create a scenario where an NPC initiates conversation on his heartbeat when PCs come in range (like when you first arrive on a map, if it's a small map), but you don't want the talking NPC to start talking the very instant you arrive on that map like they're inclined to do (if, for example, you want other NPCs to do things on their heartbeat like cast spells ), you can use the timevent thing effectively to make them wait:

Code:
def san_heartbeat( attachee, triggerer ):
	if (not game.combat_is_active()):
		if (is_better_to_talk(attachee, game.party[0])):
			game.timevent_add( relax_and_wait_a_second, ( attachee, triggerer ), 3000 )	
	return RUN_DEFAULT

def relax_and_wait_a_second( attachee, triggerer ):
	attachee.turn_towards(game.party[0])
	game.party[0].begin_dialog( attachee, 1 )
	game.new_sid = 0
The above scripts make the talking NPC wait a mere three seconds before they start in, allowing other NPCs to do whatever.

The vanilla timevent function seems to work flawlessly as long as you don't switch maps. If you do switch maps, the timed event will only occur when you return to the map where the event was scheduled.
__________________
Gaear is offline   Reply With Quote
Old October 30th, 2010   #69
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Just putting this out there so I don't have to re-figure-it-out everytime I do it ...

Unidentified Items

If you want to make a magical item unidentified, it must have the OIF_IS_MAGICAL item flag, and an entry for Unidentified Description ID in description.mes. Also, if you use the 'give' console command to test, the item will come identified. Use 'create' instead.
__________________
Gaear is offline   Reply With Quote
Old October 31st, 2010   #70
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

This is probably well-known already, but ...

Secret Doors

Secret doors don't show up properly for testing (correct DC or any DC at all) without starting a new game.

Also, the only detect secret doors roll that will show in the rolls history window is a successful auto-check (e.g., not an active search via the radial menu, and not a failed auto-check).
__________________
Gaear is offline   Reply With Quote
Old December 17th, 2010   #71
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

I'm a little surprised by this, but it appears to be a fact: there is a limit of 200 game maps useable in the game (5000 - 5199). If you try to add map #5200, the game will crash upon trying to access it.

(This is bad news as far as the notion of making all those doorways in Verbo lead to somewhere goes.)
__________________
Gaear is offline   Reply With Quote
Old December 21st, 2010   #72
Kneller1
Kobold
 
Kneller1's Avatar
 
Join Date: Feb 2006
Posts: 196
Re: Well whaddya know?

Quote:
Originally Posted by Gaear View Post
I'm a little surprised by this, but it appears to be a fact: there is a limit of 200 game maps useable in the game (5000 - 5199). If you try to add map #5200, the game will crash upon trying to access it.

(This is bad news as far as the notion of making all those doorways in Verbo lead to somewhere goes.)
Unless you use 1 large map with lots of small non-interconnected rooms?
Kneller1 is offline   Reply With Quote
Old January 16th, 2011   #73
Shiningted
No its not a joke
Super Moderator
 
Shiningted's Avatar
 
Join Date: Oct 2004
Location: Sydney
Posts: 10,573
Re: Well whaddya know?

So you want to give the PCs a specific disease or poisoning? I know I do, I didn't add dragon bile so people poisoned by it could get a tag saying 'Carrion Crawler Brain juice'. Thats just silly.

Here are the poisons and diseases by number (ie the number used by say protos.tab, or poison_index, or whatever). I only copied this from combat.mes, but it took me a while to find so I figured I might save someone else the trouble. I also have a vague recollection of a new critter with poison giving an error message so this may help track that down if it shows again.

// Poisons
0 - Small Centipede
1 - Greenblood Oil
2 - Spider Venom
3 - Blood Root
4 - Purple Worm
5 - Large Scorpion ----- Type: Injury; DC 18 ; Initial: 1d6 Str ; Secondary: 1d6 Str
6 - Wyvern
7 - Giant Wasp
8 - Black Adder
9 - Malyss Root Paste
10 - Dragon Bile
11 - Sassone Leaf Residue
12 - Terinav Root
13 - Carrion Crawler Brain Juice
14 - Black Lotus Extract
15 - Id Moss
16 - Striped Toadstool
17 - Lich Dust
18 - Dark Reaver Powder
19 - Burnt Othur Fumes
20 - Quasit
21 - Violet Fungi
22 - Yellow Mold
23 - Mystical
24 - Other
25 - Blue Whinnis
26 - Shadow Essence
27 - Deathblade
28 - Nitharit
29 - Oil of Taggit
30 - Arsenic
31 - Ungol Dust
32 - Insanity Mist

// Diseases
0 - Blinding Sickness
1 - Cackle Fever
2 - Demon Fever
3 - Devil Chills
4 - Filth Fever
5 - Mindfire
6 - Mummy Rot
7 - Red Ache
8 - Shakes
9 - Slimy Doom

EDIT: Note: the DCs and effects appear to be quite consistent with the SRD (see HERE) even though the use of the poison spell and poison potion both currently only give #23, Mystical Poison. (22 in some cases in KotB). Monsters can be set to deliver any sort of poison, so they all work, even ones not in the Help.tab like Striped Toadstool. Mysitcal is NOT in the SRD and they seem to have made it up or something (and a couple of others, like 'other'). Mystical, as the spell description says, is DC 10 + 1/2 caster level, Initial Damage: 1d10 Con, Secondary Damage: 1d10 Con. Nasty!

Last edited by Shiningted; March 25th, 2014 at 08:36 AM.
Shiningted is offline   Reply With Quote
Old May 29th, 2011   #74
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Tip: Never, ever, EVER leave return SKIP_DEFAULT off the end of a san dialog script.
__________________
Gaear is offline   Reply With Quote
Old June 17th, 2011   #75
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Shedding some light on predetermined encounters

Fact: You can use the code 'game.encounter_queue' in the console to return whatever predetermined encounters are scheduled by number. This can be useful if your scheduled encounter has failed somehow, because it seems to no longer appear in the queue if it has.

e.g., you schedule an encounter and the above code returns 3010 or whatever. You go on a little trip and instead of 3010 get a normal random encounter with crayfish or something. You then run the code again and 3010 is no longer listed. Something is wrong! But at least you know that and don't have to worry that the game is just goofing off.
__________________
Gaear is offline   Reply With Quote
Old October 17th, 2011   #76
Sitra Achara
Gargoyle
Super Moderator
 
Join Date: Sep 2003
Location: Israel
Posts: 1,524
Re: Well whaddya know?

Summon Monster Spell

1. You can summon multiple monsters with the same spell, by repeating the summon_monster command.
E.g. to summon 3 monsters:
Code:
spell.summon_monsters( 1, spell_arg)
spell.summon_monsters( 1, spell_arg)
spell.summon_monsters( 1, spell_arg)
2. You can make the summon a controllable NPC:
Code:
spell.summon_monsters( 0, spell_arg)



Quote:
Originally Posted by Gaear View Post
Tip: Never, ever, EVER leave return SKIP_DEFAULT off the end of a san dialog script.
Why is that, by the way?
__________________
Looking for more awesome turn based combat like ToEE? Check out Knights of the Chalice.

Need to upload a savegame? Here are the instructions.
Sitra Achara is offline   Reply With Quote
Old October 17th, 2011   #77
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

I can't remember anymore (must have blacked it out) but it must have been something pretty serious.
__________________
Gaear is offline   Reply With Quote
Old February 15th, 2012   #78
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Fact: the game always looks for objects based on the object name first, as defined in oname.mes (as opposed to a proto number), even though not all objects have object names. If an object doesn't have an object name, the game will then look for its proto number.

This means that if you have a script that is looking for a proto number but that proto has an object name assigned, the script will fail because the game is looking for that object's object name instead, and you probably won't have any idea why the script's not working for like an hour and a half.
__________________
Gaear is offline   Reply With Quote
Old August 20th, 2012   #79
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Tip: If the files townmap_ui_placed_flag_text.mes (data\mes) and townmap_ui_placed_flag_locations (data\rules) aren't synched, the game will crash at startup. (Must have identical map numbers, etc.)
__________________
Gaear is offline   Reply With Quote
Old October 14th, 2012   #80
FGWquester
Skeleton
 
Join Date: Jun 2012
Posts: 4
Re: Well whaddya know?

With obj_f_weapon_damage_dice, the number translates to XdY using the following formula: 128Y + X

The limit is 16383 or 127d127. Anything higher uses the remainder of dividing the number by 16384.

Example: for a weapon that does 1d10, use obj_set_int(195, 1281)
or use obj_set_int(obj_f_weapon_damage_dice, 1281)

I have not found this by searching, but it is possible this is common knowledge. If this is too common, feel free to keep the thread clean by deletion.

Last edited by FGWquester; October 14th, 2012 at 05:42 PM. Reason: More information on limit
FGWquester is offline   Reply With Quote
Old August 17th, 2013   #81
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Just a heads-up: MapLimits.mes does not like empty map entries. e.g.

Code:
{5135}{1540,-11788,-1520,-15106}
{5136}
{5137}{2040,-11774,-2040,-15106}
Will this crash the game? Of course not. ToEE's perversions work in mysterious ways, so that would be too overt. Instead, it subtlely creates bizarre behavior in map limits (the things that keep any map from scrolling to infinity in any direction) that fall after the empty entry.

I noticed this when the Verbobonc sewers mysteriously stopped allowing access to the very bottom of the map. After hours of fiddling with the map limits numbers themselves to no effect, I filled in an empty entry (a Verbobonc shop that had been removed) with random figures from another entry and presto, everything below that (sewers included) worked properly again.
__________________
Gaear is offline   Reply With Quote
Old September 6th, 2013   #82
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Quote:
Originally Posted by Gaear
Fact: you can instruct the game to play an endslide from dialogue just like you would a movie. Like so: (enslides are in the 200 - 299 range)

Quote:
{501}{[dialogue]}{}{1}{}{510}{game.fade(0,0,298,0)}
Neat!

The endslide will play for exactly one second. Not so neat.

If the duration of playback had been manipulatable, all sorts of possibilities would have been opened up for advancing plot through alternative non-dialogue related methods.
Turns out I was wrong about this, and the implications are significant. The duration of an endlside, it seems, is determined by the duration of it's accompanying .mp3 file. This means we can indeed play set length endslides basically anywhere we want. I'll hold forth on more detail elsewhere.
__________________
Gaear is offline   Reply With Quote
Old September 7th, 2013   #83
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

Fact: Want to play a queue of slides without ending the game? Use this:

Code:
game.moviequeue_play()
Sample script:

Code:
def play_four_slides():
	game.moviequeue_add(xxx)
	game.moviequeue_add(xxx)
	game.moviequeue_add(xxx)
	game.moviequeue_add(xxx)
	game.moviequeue_play()
	return RUN_DEFAULT
That's it.
__________________
Gaear is offline   Reply With Quote
Old October 18th, 2013   #84
Sitra Achara
Gargoyle
Super Moderator
 
Join Date: Sep 2003
Location: Israel
Posts: 1,524
Re: Well whaddya know?

san_insert_item fires before you sell an item.

This may allow you to manipulate prices / create refunds scripts for specific items / vendors / states etc.
__________________
Looking for more awesome turn based combat like ToEE? Check out Knights of the Chalice.

Need to upload a savegame? Here are the instructions.
Sitra Achara is offline   Reply With Quote
Old October 24th, 2013   #85
Sitra Achara
Gargoyle
Super Moderator
 
Join Date: Sep 2003
Location: Israel
Posts: 1,524
Re: Well whaddya know?

How to prevent AoO when stopping combat

Sometimes you have spellcasters or the like who are set to drink a potion or cast a spell in their AI. If they also stop the combat to initiate dialog, your adjacent PCs may sneak in an AoO, making the scripting look weird. (in fact, sometimes the animation may loop idefinitely)

To counter this, make the san_start_combat return SKIP_DEFAULT instead of RUN_DEFAULT. E.g. Falrinth's script will now be modified to be:

Code:
def san_start_combat(...):
    ....
    if (obj_percent_hp(attachee) < 50):
		for pc in game.party:
			attachee.ai_shitlist_remove( pc )
#		game.global_flags[822] = 1
		if (game.global_vars[901] == 0):
			leader.begin_dialog( attachee, 200 )
			return SKIP_DEFAULT
		elif (game.global_vars[901] == 1):
			leader.begin_dialog( attachee, 130 )
			return SKIP_DEFAULT
This will prevent the AI from taking action, and thus not provoke an AoO.

(I also implemented this in the Traders' scripting a while back)
__________________
Looking for more awesome turn based combat like ToEE? Check out Knights of the Chalice.

Need to upload a savegame? Here are the instructions.
Sitra Achara is offline   Reply With Quote
Old January 18th, 2014   #86
Shiningted
No its not a joke
Super Moderator
 
Shiningted's Avatar
 
Join Date: Oct 2004
Location: Sydney
Posts: 10,573
Re: Well whaddya know?

People probably know this, but consider this from #10:
Quote:
Originally Posted by Ag
attachee.standpoint_set(STANDPOINT_DAY, ***)
attachee.standpoint_set(STANDPOINT_NIGHT, ***)

Where "***" should be replaced with a number from jumppoint.tab corresponding to a jump point that is to be used as a creature's standpoint.
If you spawn an NPC with waypoint_day and waypoint_night flags set (or set the flags when you spawn them), then assign standpoints using Ag's method above, they will walk to those standpoints.

Waypoint walking for spawned critters, not just mobs. Yay! Tested in several encounters in KotB.
Shiningted is offline   Reply With Quote
Old January 19th, 2014   #87
Shiningted
No its not a joke
Super Moderator
 
Shiningted's Avatar
 
Join Date: Oct 2004
Location: Sydney
Posts: 10,573
Two things

Firstly, a hideous bug that held me up for hours:

I spawned a critter at the top of a climb, turned him toward the game leader, then used is_better_to_talk() to start the conversation (in case the game leader knocked himself out in the climb).

It didn't work.

Much swearing, screaming and abuse later, it turned out that speaker.can_see(listener) wasn't working: or, it was working too well. In fact, it was firing BEFORE the critter had turned toward the game leader, and thus couldn't 'see' him. Setting the critter's rotation in the general direction of the party when spawning, fixed it.

Secondly, something more positive: this works right in dlg.

pc.d20_query(Q_Critter_Is_Encumbered_Heavy) or pc.d20_query(Q_Critter_Is_Encumbered_Overburdened)
Shiningted is offline   Reply With Quote
Old April 20th, 2014   #88
Sitra Achara
Gargoyle
Super Moderator
 
Join Date: Sep 2003
Location: Israel
Posts: 1,524
Re: Well whaddya know?

Faction Reputation FUBAR:

Apparently, if a critter belongs to two factions that are affected by the same reputation, only the first one will count.

e.g. the KotB watchmen have factions 1, 10

Enemy of the Keep reputation was:

Code:
{10}{0 0 0, -21 1 -61 10 -61 17 +10 2 +20 7 }	// Enemy of Keep - done
I expected the watchmen to go KOS when the reputation was in effect, but they didn't.

I checked their reaction_get, and it returned 29 - i.e. it only counted the -21 modifier, and not the -61 (which would make them go hostile).

So I swapped the order in the reputation definition:

Code:
{10}{0 0 0, -61 10 -61 17 -21 1 +10 2 +20 7 }	// Enemy of Keep - done
Et voila. (their reaction was now -11, which made them KOS)


The takeaway is to be careful with reputation definitions and thoroughly test, with the above in mind!
__________________
Looking for more awesome turn based combat like ToEE? Check out Knights of the Chalice.

Need to upload a savegame? Here are the instructions.
Sitra Achara is offline   Reply With Quote
Old April 20th, 2014   #89
Gaear
Bastard Maestro
Administrator
 
Gaear's Avatar
 
Join Date: Apr 2004
Posts: 10,089
Re: Well whaddya know?

It looks like your effects aren't separated by commas, something I figured out the hard way in ToEE a while ago. Should look like this:

Code:
{1}{0 0 0, -100 49, -100 64, -30 9} //Butcher of Hommlet
I discovered that eventually (it was a vanilla bug) by reading the commented text at the top of gamerep.mes, which says at one point:

Code:
// Each reputation can then have up to 5 effects, separated by commas
Then it all fell into place, lol.

Sorry if I'm not comprehending what you're saying deeply enough or something - been out of the tech stuff for a while.
__________________
Gaear is offline   Reply With Quote
Old April 20th, 2014   #90
Sitra Achara
Gargoyle
Super Moderator
 
Join Date: Sep 2003
Location: Israel
Posts: 1,524
Re: Well whaddya know?

I had a feeling that wasn't the whole picture, thus the line at the bottom
__________________
Looking for more awesome turn based combat like ToEE? Check out Knights of the Chalice.

Need to upload a savegame? Here are the instructions.
Sitra Achara is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


Our Host!

All times are GMT -5. The time now is 10:41 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Circle of Eight Design by Ian Miles "Sol Invictus" Cheong