Jump to content

Odd behaviour regarding spell thrust, secret word and liches


Recommended Posts

I'm not really sure if this is vanilla behaviour or the result of a mod. But anyway...

 

Liches in BG2 are immune to spell levels 1-5. In my game, spell thrust (lvl 3) does not work on them (e.g. for getting rid of spell shield), but secret word (lvl 4) does. This seems inconsistent - either both should work (considering that spell removal is not targeted at the creature, but rather at his magical protections) or neither should work (both being below level 5).

 

Any thoughts?

Link to comment

I seem to recall that while Spell Thrust is a levrl 3 spell, its effect is coded to operate as a level 4 effect - this is so that it can take down a Minor Globe of Invulnerability. Likewise, Secret Word at level 4 has an effect that operates as a level 5 effect, so that it can take down a Globe of Invulnerability. How and whether they affect liches is just a side-effect of that.

Link to comment

Thanks to both of you.

 

I was still wondering why, even at power 5, secret word was working on liches, considering they are immune to level 5 spells.

 

Then I realised that I had installed the SCS component that allows breach to affect liches, which does so by removing the blanket level 5 immunity of liches while individually adding immunities to level 5 spells. Secret word, not being a level 5 spell, is overlooked, which leaves liches vulnerable to its effects.

 

This seems like an oversight on SCS' part, so I'll report it in the SCS forums.

Link to comment

It's odd to hear inconsistent behavior despite that both use sectype 4 (MAGICALATTACK) which is hardcoded to burn through spell level immunities. It's possible the Liches are coded to protect against SPWI321 (Spell Thrust) but not SPWI419 (Secret Word) via opcode 206. However, I do not have SCS installed at the moment, so I cannot comment any more on that.

 

The power level of all effects in Secret Word should be set to 0, not 5. That is a vanilla bug and can reproduce it.

Link to comment
The power level of all effects in Secret Word should be set to 0, not 5. That is a vanilla bug and can reproduce it.

 

 

In the SCS forum, GrimJim mentioned that the Beta Core Fixes from the Fixpack (which I have installed) sets the Secret Word effects to level 5. I found an interesting discussion on this issue here.

 

It's odd to hear inconsistent behavior despite that both use sectype 4 (MAGICALATTACK) which is hardcoded to burn through spell level immunities. It's possible the Liches are coded to protect against SPWI321 (Spell Thrust) but not SPWI419 (Secret Word) via opcode 206.

 

 

That makes conceptual sense to me (burning through immunities). I checked and both spells in my game are set to that type. But I had a look at lich.itm and there's no opcode 206 relating to either of those spells, as far as I can tell.

Link to comment

The power level of all effects in Secret Word should be set to 0, not 5. That is a vanilla bug and can reproduce it.

This again depends on how you look at it... as it depends on implementation of the protections, dispel and immunity system. It works in vanilla, cause it's invisible as it matters not a bit, or it hides it's skin very well, it works in SCS(without any other mod !) and it kinda still works with the BG2 Fixpack, put them all together and it doesn't, or there's odd behavior, or what ever, it's not a bug if it's not according to this, that or those plans, it's just a mixup which either needs a redefinition of all the concurrent variables, or not, if it doesn't work as claimed... but then whose to say what that is. Ironic, but you could just not install something that makes the rule system out of whack. Of course if the mod maker would care to set everything, this wouldn't happen. But then the making of the SCS v1 wouldn't be likely ready either. So, that's for the kicks.
Link to comment

But I had a look at lich.itm and there's no opcode 206 relating to either of those spells, as far as I can tell.

I don't have the files in front of me, but my guess is, liches get total immunity to spells (really meaning effects) of level 4 and below; and they get particularized, opcode 206 immunity to a list of 5th-level spells that excludes Breach. Secret Word, being a 4th-level spell with 5th-level effects, inadvertently slips through the cracks.

 

Really the issue here is, whatever SCS routine checks for 5th-level spells to generate the immunity list should check for 5th-level effects in the extended headers, instead of checking in byte 0x34 (or whichever one it is). (I'm assuming SCS uses some kind of script or routine to build that list, to catch mod-added spells.)

Link to comment
I don't have the files in front of me, but my guess is, liches get total immunity to spells (really meaning effects) of level 4 and below; and they get particularized, opcode 206 immunity to a list of 5th-level spells that excludes Breach. Secret Word, being a 4th-level spell with 5th-level effects, inadvertently slips through the cracks.

 

 

Yep, that seems to be what's happening.

 

On another note, Galactygon mentioned above that:

 

 

It's odd to hear inconsistent behavior despite that both use sectype 4 (MAGICALATTACK) which is hardcoded to burn through spell level immunities. It's possible the Liches are coded to protect against SPWI321 (Spell Thrust) but not SPWI419 (Secret Word) via opcode 206.

 

I wonder why they don't seem to burn through immunities in my game, given that I can't see any opcodes in lich.itm protecting against those spells?

Link to comment

It seems I will have to do further testing in regards to sectype 4-MAGICALATTACK is hardcoded to bypass spell level immunities. I reported this recently in the IESDP and I can reproduce this with Breach. I do not have SCS installed and am testing on vanilla BG2:EE.

 

Reading from the other thread and checking files ingame, Bioware seems to have set the power levels for those spells. Then it would make sense to hardcode sectype 4 MAGICALATTACK to bypass spell deflections/turnings. At the same time, it might fail to penetrate through opcode 102 (blanket spell level immunity used by GoI, MGoI).

 

For the purposes of the fixpack, they were right to change the power level of Secret Word. However, it's a completely another matter what really works best in the game mechanics. I feel all protection removing spells should be streamlined to have a power level of 0 as you are targeting not the creature but the protections around the creature. The exception would be Breach, which should be blocked by spell deflection/turning/trap but not creature level immunities. There is a nifty trick to implementing that part (see here).

 

I will definitely write up such a component in the next SpellPack release.

Link to comment

Interesting, thanks for reading up on this (not being a modder myself a lot of it is beyond my understanding).

 

 

I will definitely write up such a component in the next SpellPack release.

 

That seems like an interesting mod, I look forward to trying it sometime.

Link to comment

Archived

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

×
×
  • Create New...