Jump to content

ToB effects


Recommended Posts

#5 Charm creature - The flags here are weak

bit 0 - turn hostile after duration (1); return to previous alignment (0)
bit 1 - dire charm (1) text string; normal charm (0) text string
bit 2 - turn undead

The only requisite for not showing a string is having any other bit set.


#12 Damage - The old save for half stuff is actually percentage damage in BG2. This differs from mode 2 (NI term). Mode 2 will set current HP to n% of max HP, whereas 3 will reduce current HP by n% of max HP (e.g., with 100 max HP, 85/2 will set current HP to 85, and 85/3 will set current HP to 15).


#22 Luck modifier - There's nothing unknown here. This just modifies the character luck stat (vs. the non-cumulative Luck spell effect). All normal stat modifier types (increment, set, set %) work. The luck stat gives (at least) an equal amount bonus on to hit rolls (won't show up on records sheet, though).


#23 Morale mod - This is simply "Cure: Horror." Nothing here will ever change the morale value (in fact, there doesn't appear to be any way at all to modify morale during runtime). This only removes magical fear (i.e., Panic), and doesn't effect non-magical (i.e., morale failure). Read on.


#41 Sparkle - The list of available particle colors (why couldn't they have these in the same order as the 2DA?)

0 crash
1 black
2 blue
3 chromatic
4 gold
5 green
6 purple
7 red
8 white
9 ice
10 stone
11 magenta
12 orange
13+ crash


#105 Gold bonus - This effect can only ever remove gold, regardless of the timing mode. It also appears unsigned, so negative values will take a *lot* of gold.


#106 Set morale failure - This is just the morale break modifier, and works the same as other stat bonuses. Morale break is an unsigned value; the condition for morale failure is morale <= morale break (i.e., the break is the cutoff value). Morale eventually resets to 20 (since this is written to the CRE on save and can't be modified, I don't know if/how it ever resets to the default value from the CRE file). Setting this to a low value will give effective immunity to morale failure (I don't know if morale ever gets to 0; morale is unsigned).


#114 Dither - I'd call this one unknown. It doesn't appear to do anything. It really is Dither.


#121 VFX - I'd call this one unknown. It doesn't appear to do anything. It really is Visual animation effect.


#144 Disable button - There really doesn't appear to be a way to disable bard song or guard. Is this true, or does somebody know how to do it?


#147 Learn spell - The field labeled type appears to have no relevance whatsoever. The spell is always learned as the correct spell type.


#173 Poison resist mod - You may want to call "Set poison resistance," just to be 100% clear.


#178 THAC0 vs. type - 2 corresponds to EA.ids, not Object.ids. I didn't find a single EFF target that uses Object.ids; conveniently, they're all [EA.GENERAL.RACE.CLASS.SPECIFIC.GENDER.ALIGN(MEN?)].


#179 Damage vs. type - as above.


#184 Allow impassable - thanks to Avenger, the value for param2 just sets the stat. The only requirement is that it be non-zero (this is likely true of all of the "constant value" effects). If 0, the effect does nothing. If !0, it works.


#186 Destroy self - this appears to be used by MoveBetweenAreas() (and probably EscapeAreaMove()). It needs an EFF v2 struct to work; the destination area is stored in the resref, param2 holds the destination orientation, and the destination point in the EFF2 caster x.y. I don't know quite how the engine handles it, but creatures are "carried" with the party (they get inserted into every area visited) until the destination area is visited. If you just stick the effect on somebody, they're no longer drawn on the map, but they still exist in the area.


#191 Casting level mod - Excepting that this effect doesn't appear to do anything to the casting level of spells, if param2 is set to 0, the CASTINGLEVELBONUSMAGE stat gets set to 1; if param2 is 1, CASTINGLEVELBONUSCLERIC gets set to 1.


#194 Ignore dialogue pause - This works fine. For PCs at least, when dialogue is running, all actions are paused. When dialogue is finished, the characters will resume whatever they were doing. When the stat is > 0 (param2 must be non-zero), characters will continue performing their actions during dialogue (obviously, this only works for non-pausing dialogue). Interjections are especially fun if the target is moving, since the dialogue window will string along (each time you press continue, since it centers on the target's current location).


#198 Bounce opcode - This effect actually appears to bounce an entire projectile if the effects list contains the specified opcode. Bounce blindness, if you cast Blindness on somebody, the entire spell gets reflected (not just the opcode).


#215 Play 3D effect - If the param2 value is 0, the animation is played over the target but not attached. If param2 is 1, the animation is played over the target and attached. If param2 is 2, the animation is played on the point clicked. The distinction is fairly important. If an AoE spell is cast, 0 will cause the animations to run over each creature at the point of impact. The animation isn't attached, so it will only play on the point (it won't move with the actor; duration and timing mode are ignored). With 1, the effect is the same, but the animation is attached and moves with the actor (duration and timing mode are important). With 2, the animation plays where you click, and only plays once. Contrary to the description, the target doesn't have to be self, but the effects are applied relative to the target (if you allow a saving throw, the animation won't run if the save is successful). If target is self, the animation should always run, but it can fail due to spell level immunity (if the effect power eq immunity level). It's a good way to fake AoE projectiles.


#219 AC vs. type - Again, 2 appears to use EA.ids.


#234 Contingency - param2 appears to be 2 word values. The first word is the number of spells that can be selected. A value greater than 3 screws things up (it doesn't look like you can ever get more than three). The second word appears to be the type. 0 means chain contingency (you get all 3 target choices), 1 means contingency (only myself is available), 2 is some funky, non-functional sequencer (you don't get any conditions or targets, and the resulting sequencer gives an icon but can't be removed from the spellbook or cast). I swear there was a value here that let spells be picked without decrement (meaning you could load it up with 3 monster summoning or something, even if only one was memorized), but I can't remember what it was.


#235 Wing buffet - Both 0 and 1 cause the fidget (there is no "slide north" value), but only if the target tries to move (if the target is stationary, nothing happens until they start to move). 3 didn't appear to do anything.


#237 Puppet ID - param1 stores the puppet ID (the master). This value is 0-5 (corresponding to Player1-Player6) or -1. The game doesn't appear to store the master ID for images not created by a PC (if you force the game to save with a non-PC image, the value is -1 and the image will be "detached" on load (e.g., the caster is no longer held)). This effect appears to be the only thing used to determine who gets the icon and caster pause (if you change the ID to 0 in a save and then reload, Player1 will get the icon and be held for the duration).


#247 Attack nearest actor - This effect sets BERSERKSTAGE2 (144) to param2. Like all these effects, the only requirement is that param2 be non-zero.


#264 Drop items - The check is a bit more specific. If 0, the engine will drop any item. If 1, the engine will only drop an item equipped in a quick weapon slot.


#266 Remove protect from spell - Doesn't appear to work. At all. Sorry, Avenger. Works fine.


#270 Unpause target - Assuming the target is paused, this effect seems to always work. Both parameters are meaningless.


#293 Enable offscreen AI - As far as I know, AI runs offscreen by default. I call this "Set persistent AI" (and call the stat NODEFERAI).


#306 Main hand THAC0 bonus - This works fine. Off-hand penalties to the main hand will still be applied, so you may not get exactly +/- param1, but it functions correctly.

Link to comment

I don't agree with the charm bits.

I've checked the executable (using debugger) and it really used +1000 for supressing text.


#186 Destroyself being a movement effect: this is a great find, i wonder how you found it!

Actually, it is called "Jump To Area" in iwd2, so originally i expected it to do something like you just found. But it didn't work like advertised by Effects.src of iwd2.

Now it turns out why :) Congrats.


#178/179 using object.ids, that is definitely a typo, object.ids isn't an ids targeting field. It was in dltcep's effect list too :)


#23 yeah, i called it remove fear, and without any useful params in bg2. But according to iwd2's effect.src it is a morale stat modifier. So, it should be tested in iwd/iwd2.


#106 is truly a morale break modifier, setting it over 10 (or maybe 20) causes morale break.


#194 congrats on making this working, you are the first. I still have to see this one.


#144 i tested disable button extensively, i still wonder why some aren't possible.


#247 well, i already wrote about this one.

#245 an #246 are also modifying CHECKFORBERSERK and BERSERKSTAGE1


#266 you surely misunderstood this one. Try to add a permanent protection from spell, lets say magic missile (using #206). Check it by casting magic missile on the target.

Then apply this effect (simply replace #206 with #266). Cast magic missile again.

Link to comment

Charm: enable any bit. The string won't display. Charm usually has bit 0, dire has 0 and 1, and domination has 0 1 3 4 5 6 7 8. 0 1 3 = no string. 0 1 4 = no string. etc. NI does have the supposed "no string" bit in the wrong spot, but any bit beyond 2 kills the string.


#186 : I found it last year when I saw that Malaaq was being inserted into every area the party visited (he was always in the main area in the saved game). I was just testing my stuff, so I never visited AR0601, and saw that the effect parameters exactly matched his MoveBetweenAreas() command. I added the effect (from a spell, so no dest coordinates) to Imoen, and she disappeared, but she was still in the party (you could select her, and she even played her selection sounds, but you couldn't give her any commands or even see her). I never checked EscapeAreaMove(), but I know that LeaveArea*() actions don't do this (they only appear to work for PCs).


#106 : the only condition is that it's raised to be >= morale. I was more disturbed that there wasn't any visible way to modify the morale stat (neither the effect, nor the scripting actions do anything to morale). BioWare used two forms of 106 mod (vs. just setting it to 0 or 1): -10 decrement, and set to 20. The latter will go over any characters morale (instant failure), and the first goes way over any morale setting (what, 244 or 245).


#266 : that's pretty close to what I did. I gave characters protection from resref. Firing this effect (with the same resref) at the characters didn't remove the protection from spell (didn't appear to do anything, actually). The protection from spell effects were still on the characters after saving.

Link to comment

#194 is easy to check. If you have ToB installed, make sure you don't have Force Dialog Pause on or G3Tweaks all dialogues pause, and start a new game. Run to the jailkeep golem, get somewhere so both Imoen and the PC are visible, and give Imoen the command to move somewhere. Have the PC initiate dialogue with the golem. Imoen will stop moving (she'll run the "ready" animation for the duration); after exiting the dialogue, she'll start moving again.


After adding this effect to Imoen, she'll continue moving throughout the dialogue, and even during her own interjections.

Link to comment

#106 Modify Morale Break - After recent criticism of the IESDP I checked this out (it's sitting in the local copy, as Morale Break Modifier. I couldn't get #23 to do anything remotely related to morale, horror, panic or anything else (however, there are so many 'lose control of the characer' effects that I probably just didn't try the one you did).


#186 Destroy self - I actually suspected this effect did something like you describe, but I couldn't find any proof.


#293 Enable offscreen AI - if AI runs offscreen by default, then what does this effect actually do?



Anyway, thanks for the info.

Link to comment

AI is switched off if:

1. there are no pending actions for the actor

2. the actor is not standing in an explored (currently seen) area. (creatures with the EXPLORE flag count too). Like wizard eye, cutspy etc.

3. the actor isn't a teammember

4. ENABLEOFFSCREENAI is not set for the actor


Probably there are other checks too, i don't know :)


[edit] yes, i had this in GemRB too :)

5. if the actor receives any trigger event (for example: got hurt).

But also help, shout etc. events wake them up.

Link to comment

That's why my stat says NODEFERAI.


If you cast an offensive spell that targets everyone (4), every creature (offscreen and on) will start gunning for the caster as their scripts start to fire.


My guess is that the engine starts to defer processing when certain conditions are true (like Avenger posted above), but the AI is always up and running for every creature (even if in some sort of "standby" mode). Which means this opcode probably stops the engine from ever deferring script processing for any reason (any reason which wouldn't normally cause a PC's script to halt processing, like cutscenes, that is). Hence, I call the effect "Set persistent AI" - the creature always gets full AI processing.


I'm honestly more interested in Creature uninterruptible. Any clues, Avenger? This can't be the same as SetInterrupt(), since MINHP1 gives this effect and those creatures act normally.


For #23, it cures the panic opcode. It's used everywhere, and should work fine, as long as the panic isn't actually morale failure. Read on.

The second remove fear (Remove fear 2 in NI) removes morale failure, and may also remove the panic opcode.


There are a bunch of creatures in BG2 with immunity to #23 opcode, so Avenger is probably correct that it was (at least supposed to be) a morale modifier, but it doesn't work this way (maybe BG1 or PsT handled this differently).

Link to comment

I forgot this one:


#283 Use EFF 2: NI has always listed this "Use EFF file as curse." It may be worth more extensive testing, but I'm fairly certain the only difference between this and normal use EFF is that effects applied with #283 are removed by "Remove Curse." Saving throws are most definitely not ignored.

Link to comment

#186 - I got a minute to check this with Ulene (ActionOverride("Ulene",EscapeAreaMove("AR0700",x,y,2))). The engine adds the effect twice (identical), and also sets creature flag 14. Malaaq has this too, so this may be what keeps the creature from being shown or otherwise able to interact (or what tells the engine to "carry" the CRE along with the party).


I may check later by setting Imoen flag 14 and loading the edited save (she if she disappears or something).

Link to comment
#266 you surely misunderstood this one. Try to add a permanent protection from spell, lets say magic missile (using #206). Check it by casting magic missile on the target.

Then apply this effect (simply replace #206 with #266). Cast magic missile again.

I probably gave her protection from Magic Missile, which is conveniently what I use to check target !self effects (I use Armor to check target self effects). So she was immune to the spell I was using to try and remove the immunity!


I just tested with immunity to spwi303 with limited duration 3000. Blocks Flame Arrow as expected. I cast spwi112 with #266 and spwi303, and the protection from spell (vs. spwi303) was removed and she is affected by spwi303. Changing to a different resref has no effect (e.g., it doesn't clear protection from spwi211).


The parameters appear unused.

Link to comment
I forgot this one:


#283 Use EFF 2: NI has always listed this "Use EFF file as curse." It may be worth more extensive testing, but I'm fairly certain the only difference between this and normal use EFF is that effects applied with #283 are removed by "Remove Curse." Saving throws are most definitely not ignored.

Hmm, this is good to know !

And much easier to implement for me :)

Link to comment

I did go back and confirm that saving throws, duration, and every other parameter are respected, and the #283 opcode is removed by the remove curse effect.


It's only used for the DoMT "bad card" spells, so it makes sense.

Link to comment

Another one I missed:


#295 (0x127) Graphics: Disable Chunking Death - this effect is actually Disable permanent death. When the stat value is !0, it protects against chunk, as well as disintegration opcode. Against the kill target effect, it prevents any of the death types from "permanently" killing the character (no stoned, exploding, chunky, or disintegration death); all death types will cause normal (reversible) death.


Unfortunately, it doesn't work like it should; the opcode doesn't prevent normal petrification (from the opcode), and doesn't protect from normal freezing (from Cone of Cold, for instance). For GemRB, I'd make it prevent petrification and freezing deaths (with this stat set, they'd just cause normal death).


I call the stat "186 NOPERMANENTDEATH" (thanks for finding these, Avenger!).

Link to comment

igi looks hungry, so... afternoon buffet!


#5 Charm - bit 2 has the target turn hostile after the charm expires without the need to set additional bits. Any bit other than 0, 1, or 2 does indeed disable the string (I rechecked). If the target is set to turn hostile, their allegiance is permanently set to 200 (EVILCUTOFF) if the effect is successful (this happens as the effect is applied); the effect itself controls their charm behavior (so, not checking the hostility flags doesn't change the expiry behavior, but prevents changing the allegiance at the very beginning).


#7 Set color - Missed component locations for BG2 are 33 "Shield interior" (this is the embossing or detail on the face of the shield; the small shield animation will make the location apparent), and 35 "Helm" (something to do with helmets; use HELM01 to see where). 52 is the face or mask portion of the helmet (again, use HELM01 to see the precise location).

This is true for all effects that use component locations; I wasn't ever able to check most of the unknowns, unfortunately, since the majority cause the game to crash.


#16 Haste - type 2 appears to work similar to normal haste (the character is hasted, the regular haste icon is applied, and they gain .5 attacks). Lies, all lies. See following post.


#17 Current HP bonus - Param2 is actually two WORD values. The first 2 bytes control the bonus type, the second seems to control the heal target. If set to 0, the effect just heals normally. If set to 1, the effect will heal dead creatures (returning them to life). A corpse is required for this to work, and it will work for PCs and NPCs. This may be a bit field (or they just do a bitwise check), since a value of 3 has the same effect as 1.

The type values are 0 (increment), 1 (set), and 2 (increment %). Unlike other effects, 2 doesn't ever seem to set (it will only increment).


#20 Invisibility - type 2 doesn't seem to do much of anything. It's applied to the target, and will sometimes "blink" the character, but doesn't appear to affect the behavior of any normal invisibility.


#23 Morale mod - igi is correct that this does nothing to panic or any other disabling effect. Apparently, this effect just sets morale to 10 (if morale is lt or gt 10). The attribute is set permanently; params and duration are irrelevant.


#25 Poison - the types here are wrong. Type 0 seems to do 1 damage per second for the duration, but only if param1 is !0. I didn't observe long enough to see if param1 affects the duration.

Type 1 also does 1 damage per second for the duration, but only if param1 is >1. There appears to be some sort of limit, and param1 does modify it, but it's definitely not % of total HP (it looked like param1/4 of max HP total, but it'd take forever to figure it out).

Type 2 does param1 damage every second for the duration of the effect.

Type 3 does 1 damage every param1 seconds for the duration of the effect.

Type 4 inflicts no damage (that I could tell; I didn't test different param1 values very thoroughly).

Types 5+ all seem to crash.


#41 Sparkle - Type 1 is the particle explosion, used for exploding death types (when frozen or petrified). It is not a "puff." :-)


#50 Color pulse - the cycle speed of the effect is the only value used to determine the duration. 0 will cause the creature to briefly flash the color (looks dumb, so use > 0). Depending on the color, 255 will just make the character look bright for a lengthy period of time.


#72 Change AI type - If param2 is 0 (use EA.ids), the supported values all appear to match EA.ids as expected.


#78 Disease - the first 3 types are the same as poison (0 and 1 are 1/sec, 2 is HP/sec, and 3 is 1/param sec).


#83 Immunity to PRO - values are taken straight from PROJECTL.ids (not +3).


#98 Regenerate - pretty much the same as poison. First two types heal 1/sec, 2 does paramHP/sec, 3 does 1/param sec, 4 does nothing, and 5+ crash.


#127 Summon monsters - contrary to integer division, the value of param1 is the max sum of XP monsters to summon, and as long as XP of summoned so far < max XP, a new creature spawns in. So, if the max XP is 4, and the game picks a kobold with 3 XP, you get 2 kobolds. Regardless of the max XP set, the effect will only pick a single resref from the selected 2DA (you'll only get multiples of the same CRE).

For some reason, the game crashed if I had max XP set to 1.


#135 Polymorph - 0 copies the stats and disables spellcasting, and !0 appears to be appearance only (there is no "coloring" or "no coloring" or whatever).


#164 Slow poison - from the EFF list, this is supposed to be Remove intoxication. It has no apparent effect in-game, against poison or intoxication or otherwise.


#166 Magic resistance - unlike most stat mods, this doesn't support setting or increasing by percentage (type 2). Using type 2 will have no effects. Additionally (again unlike other stat mods), this effect won't ever modify the MR attribute (the effect is always attached, even with timing mode 1).


#176 Movement mod 2 - due to 185, I'm betting that the only difference between normal movement mod here is that this effect isn't cleared by the Free action effect (called Restore movement rate in the engine), but I haven't tested.


#185 Hold creature 2 - this copy of the hold effect is not removed by effect 162 (it's otherwise identical to the hold creature effect 175).


#196 Familiar block - causes the engine to display the "already have a familiar" message when attempting to cast Find Familiar. Parameters are useless. I didn't check to see if this could be put on any non-GAM NPC (it can be put on a PC or familiar and will work).


#197 Bounce PRO - values are taken straight from PROJECTL.ids (not +3).


#243 Drain item - this effect doesn't appear to work in ToB at all? I hope this was their fix to nishruu bugs, and not something specific to Mac or 26499b.


#254 Set marker loc - according to the engine, this actually calls remove map note. These effects don't work here, so I wasn't ever able to test, but it makes sense (the effects will be stored until the trap goes off, at which time this effect would run and remove the trap map note).


#297 CRE no interrupt - this is immunity to turn undead. Works fine. Stat value at param2 must be !0.


#300 This effect was formerly thought to remove the creature corpse upon death - Riiiiiiigggghhhhttttt. It does appear to affect collision behavior (or pathfinding), but I can't be more specific than that right now (mainly because I can't see why there'd be a selective effect to cause the behavior I've experienced).

Link to comment


This topic is now archived and is closed to further replies.

  • Create New...