Jump to content

Sword Coast Stratagems v34 (edit: 34.3) now available


Recommended Posts

There seems to be something strange going on with the spell Impervious Sanctity of Mind and I'd like some people's insight on this issue.
ISoM adds a spell shield like effect, among other things, but it seems to be doubly effective than a regular spell shield spell.
I've always noticed during my games that very high level clerics seemed strangely difficult to strip of their spell protections; they always seemed to have some left over despite me thinking I've accounted for everything.
I decided to mess around a little bit and noticed that it probably has to do with ISoM.
Take a look at this video:
https://streamable.com/inhhx5
I put up ISoM and 4 protections. In total that should be stripped with 5 secret words, but it takes 6.
Repeat the same test but instead of ISoM, I use spell shield, and it works as expected, taking 5.

Am I missing something, or is this not working as intended?

Link to comment

You're not missing something. This is bugged.

Note that ISoM only gains this effect from an additional component on top of the basic IWD spells; the original IWD version of the spell doesn't have it. I'm not sure exactly where in the process it comes in, and it may be automatic unless you disable it in the ini.

And checking that component...

Spoiler
DEFINE_ACTION_FUNCTION sanctity_of_mind BEGIN

     LAF log_this STR_VAR file="scs_modified_spells_iwd.2da" input=CLERIC_IMPERVIOUS_SANCTITY_OF_MIND repeat=no END

       // copy of spell shield
       
       MAKE_PATCH
          name1_string=>"-1"
          delete_ability=>"ability_min_level>1"
		  patch_effect_inline=>"duration=>2880"
          spell_type=>cleric
       END

       LAF clone_spell STR_VAR spell="%WIZARD_SPELL_SHIELD%=>dw#isss" edits=patch_data END

       // edits to main spell
       
       MAKE_PATCH
          say_description=>40100
          delete_ability=>"ability_min_level>1"
          patch_effect_inline=>"duration=>2880"
          add_effect_inline=>"target=>1 duration=>2880 resist_dispel=>3 power=>7 opcode=>101 parameter2=>60"  // casting failure
          add_effect_inline'=>"target=>1 duration=>2880 resist_dispel=>3 power=>7 opcode=>169 parameter2=>105"  // miscast magic icon
          add_effect_inline''=>"target=>1 duration=>0 opcode=>146 parameter2=>1 timing=>1 power=>7 resource=>dw#isss"  // spell shield effect
       END
       LAF edit_spell STR_VAR spell=CLERIC_IMPERVIOUS_SANCTITY_OF_MIND edits=patch_data END

END

 

The component clones Spell Shield to dw#isss, makes it divine, increases its duration to match ISoM, and adds an effect to ISoM that casts the new spell. When does this component run? I'm not actually sure; I haven't found the reference to sanctity_of_mind.tpa in any of the other files I've looked at.

All right, how does Spell Shield work? It's one level of deflection against spells of the magic attack type, and also of the new "Breach" type if SCS separates that out for the Breach component. Which ... actually, that's a tricky internal dependency. If you install the Breach component after the ISoM component, they won't work properly together. The Breach component creates the new secondary type and gives it to the Breach spell, then edits Spell Shield to clone its deflection effect for the new type. It does not edit Impervious Sanctity of Mind, the subspell it casts, or any other variant of Spell Shield. So then, dw#isss doesn't block the newly modified Breach like it should; you'll also need a general deflection effect such as Shield of the Archons if you want proper Breach protection.

Anyway, when the spell shield effect deflects a spell of level >= 1, it uses up that protection. Spells of the magic attack type ignore general deflection effects, but are subject to this type-specific one. And all such spells a normal mage or priest can cast hit with positive level, so the first one always trades with the spell shield. Multiple spell shield effects on the same caster don't help; the same spell that uses up one spell shield uses up all of them.

Using up the protection doesn't automatically make Spell Shield go away; that's handled by the "resource" field in the op226 effect. Cast that spell when the protection is used up. In the case of SPWI519 "Spell Shield", that's SPWI519B, which does a sound effect and removes (op321) SPWI519.

In the case of dw#isss, that's still SPWI519B, because the cloning process didn't change that. Protection used up, remove SPWI519 - no effect, since that's not present. And since dw#isss is a spell protection, it's still sitting there as something for a Secret Word to remove even though it no longer does anything. Oops.

All right, that's two bugs I see. First, the one you found: the clone of Spell Shield doesn't properly remove itself when used up. sanctity_of_mind.tpa needs to also clone the subspell SPWI519B and alter the relevant resource references. Second, the bad internal dependency. If you install in what I expect is the standard order of IWD spells (and tweaks to them) first and SCS spell changes later, the Breach component doesn't update the clone of Spell Shield properly and ISoM fails to deflect Breach. Where modify_breach.tpa edits SPELL_SHIELD, it needs to also edit dw#isss. And possibly any other clones of the Spell Shield effect.

If you have the Breach component installed and want to test for that second bug, try your setup but open with a Breach before any Secret Words. If things are working the way I think they are, that should be "Spell Ineffective" in both cases, and then the follow-up Secret Word should remove a protection in the Spell Shield case but be "Spell Ineffective" trading with the spell shield effect in the ISoM version. The initial Breach, despite the immunity from SI: Abj, trades with Spell Shield; deflection is processed before immunity. It doesn't trade with the ISoM clone, so that effect is still in place to block the next Secret Word.

(All done with respect to the current (2.6) EE. Code diving, not checked against an actual SCS installation)

Edited by jmerry
Link to comment

Thanks for confirming the bug.
I don't know what this "breach component" you keep referring to is though. I see no such thing in my weidu log. The only "spell component" I've installed are IWD spells through the SCS package.

Headaches around spell shield and its clone keep piling up. First it was the infinite beholder anti-magic ray absorption, then blocking wing buffet, then being able to block mind flayer ballistic attacks and now this...

Edited by boof
Link to comment

The "breach component" I'm referring to is "More consistent Breach spell (always affects liches and rakshasas; doesn't penetrate Spell Turning)". It works, at least in part, by changing around secondary types, and that means it has to change Spell Shield too to preserve the "blocks Breach" functionality ... but it doesn't catch any clones of Spell Shield.

Link to comment
7 hours ago, jmerry said:

The "breach component" I'm referring to is "More consistent Breach spell (always affects liches and rakshasas; doesn't penetrate Spell Turning)". It works, at least in part, by changing around secondary types, and that means it has to change Spell Shield too to preserve the "blocks Breach" functionality ... but it doesn't catch any clones of Spell Shield.

Wait, Spell Shield alone blocks breach? I thought you needed spell trap/turning, (minor) deflection or SI:Abjuration for that. I thought spell shields only job is protecting those against Secrets words and others that remove spell protections.

Link to comment

Here's the description of Spell Shield in an unmodified game:

Quote

When this spell is cast, the wizard is protected from the next magical attack against <PRO_HIMHER>. The spells from which the wizard is protected are Spell Thrust, Secret Word, Breach, Lower Resistance, Pierce Magic, Ruby Ray, Khelben's Warding Whip, Pierce Shield, and Spellstrike. If one of these spells is cast at the wizard, this spell activates and absorbs the attack. However, this only works once and this spell is consumed in the process. Otherwise, it will last for its duration.

Note the presence of Breach on that list. In fact, the only ways to protect against Breach in the vanilla game are Spell Shield and blanket immunity to level 5 spells - the latter of which is only available to player characters through scrolls of protection from magic.

Some SCS components may alter the list, by adding spells to it. Nothing in SCS takes any spells off that list.

Edited by jmerry
Link to comment
54 minutes ago, jmerry said:

Here's the description of Spell Shield in an unmodified game:

Note the presence of Breach on that list. In fact, the only ways to protect against Breach in the vanilla game are Spell Shield and blanket immunity to level 5 spells - the latter of which is only available to player characters through scrolls of protection from magic.

Some SCS components may alter the list, by adding spells to it. Nothing in SCS takes any spells off that list.

Ok, thank you. I didn´t trust vanilla description since SCS changed breach behaviour.

Link to comment
On 2/1/2023 at 3:19 AM, feedwony said:

Hi, I'm getting an error installing the Smarter Priests and Improved Cloakwood Druids components on BGEE. Both errors seem related to file AMARAN.CRE. Can you help me?

BTW, not sure if this is relevant: I did not install Improved Shapeshifting and I disabled Improved Shapeshifting for enemies in the .ini file.

  Reveal hidden contents

Determining spells and script for AMARAN

Including file(s) spellchoices_defensive/iwd/druid.tph
Copying and patching 1 file ...
This is Stratagems Scripting Language...


 Input file is STRATAGEMS/priest/ssl/main/dw#priest.ssl

 Output file is weidu_external\workspace\ssl_out/dw#priest.baf
Copying and patching 1 file ...
Copying 1 file ...
Compiling 1 script ...

[tb#_compile_eval_buffer/weidu_external/workspace\ssl_out\dw#pr13.baf] PARSE ERROR at line 5650 column 1-55
Near Text: )
        Type mismatch in "RES" argument of [ForceSpellRES].
        Expecting type "string". Recovering.
ERROR: parsing [tb#_compile_eval_buffer/weidu_external/workspace\ssl_out\dw#pr13.baf]: Not_found
ERROR: error compiling [tb#_compile_eval_buffer/weidu_external/workspace\ssl_out\dw#pr13.baf]: Not_found
ERROR: compiling [weidu_external/workspace\ssl_out\dw#pr13.baf]!
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
ERROR: [AMARAN.CRE] -> [override/AMARAN.CRE] Patching Failed (COPY) (Not_found)
Stopping installation because of error.

Failed to patch AMARAN.CRE; error message was Not_found

Failed to patch AMARAN.CRE; error message was Not_found
Appending to files ...
Copying and patching 1 file ...

Determining spells and script for ARCHDR

Including file(s) spellchoices_defensive/iwd/druid.tph
Copying and patching 1 file ...
This is Stratagems Scripting Language...


 Input file is STRATAGEMS/priest/ssl/main/dw#priest.ssl

 Output file is weidu_external\workspace\ssl_out/dw#priest.baf
Copying and patching 1 file ...
Copying 1 file ...
Compiling 1 script ...
Copying and patching 1 file ...

///////////////////////////////////////////////////////////////////////////////////////////////////

SFO: Applying patch(es) to CRE file(s) amaran...

Including file(s) spellchoices_defensive/iwd/druid.tph
Copying and patching 1 file ...
Copying and patching 1 file ...
Copying and patching 1 file ...
This is Stratagems Scripting Language...


 Input file is STRATAGEMS/priest/ssl/main/dw#priest.ssl

 Output file is weidu_external\workspace\ssl_out/dw#priest.baf
Copying and patching 1 file ...
Copying 1 file ...
Compiling 1 script ...

[tb#_compile_eval_buffer/weidu_external/workspace\ssl_out\dw#pr60.baf] PARSE ERROR at line 6226 column 1-55
Near Text: )
        Type mismatch in "RES" argument of [ForceSpellRES].
        Expecting type "string". Recovering.
ERROR: parsing [tb#_compile_eval_buffer/weidu_external/workspace\ssl_out\dw#pr60.baf]: Not_found
ERROR: error compiling [tb#_compile_eval_buffer/weidu_external/workspace\ssl_out\dw#pr60.baf]: Not_found
ERROR: compiling [weidu_external/workspace\ssl_out\dw#pr60.baf]!
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
Stopping installation because of error.
ERROR: [amaran.CRE] -> [override/amaran.CRE] Patching Failed (COPY) (Not_found)
Stopping installation because of error.

Failed to patch amaran.CRE; error message was Not_found

Failed to patch amaran.CRE; error message was Not_found
Appending to files ...

...done

 

I can confirm this bug. Setting no_swift_shapeshift = 1 and not installing Improved Shapeshifting causes errors during Smarter Priests while setting up some druid files. It is a seperate bug from PUSH_RANDOM spells (DEFENSIVE_HARMONY null For my case I installed IWDification and SRR on same setup but I don't know if it requires one or both of them or solely caused by improved shapeshifting/ini setup combination.

Edit: I did further testing and installing improved shapeshifting or nor do not make a difference by itself. So It may be just another error spell selection maybe iwd/druid.tph? or something else

Edited by Chosen
Link to comment

I spend some time trying to pinpoint no_swift_shapeshift = 1 bug but sadly couln't figure it out. I am going to share my weidu.log so if someone else wants to look at it they can. For my setup these creatures was affected AMARAN.CRE,GDRUID.CRE,SPPAIN.CRE,TDR10A.CRE,X#ANDART.CRE,X#SHDR8A.CRE,X#SHDR8B.CRE.

WeiDU.log

Link to comment

The obvious common factor: they're all Avengers. At least, they are with SCS. Looks like somewhere along the line, a switch was missed and the system forgot how to put together an Avenger without the "Improved Shapeshifting" resources available.

Exactly where that is ... I don't know. Trying to trace things through the tangle of multiple files and layers of functions involved is hard.

Link to comment
Guest lololol

Does anyone have a recommendation on what version of SCS I should use?  I see 34 has some problems.  I don't care about new features I just want the basic SCS options from 5 years ago in a stable package.  Is there a less feature rich version of SCS that is stable with 2.6.6 EE?

Link to comment
1 hour ago, Guest lololol said:

Does anyone have a recommendation on what version of SCS I should use?  I see 34 has some problems.  I don't care about new features I just want the basic SCS options from 5 years ago in a stable package.  Is there a less feature rich version of SCS that is stable with 2.6.6 EE?

I think v34 is needed to work on the 2.6 EE patch.

I'm using v33.4 - and it is in very good shape - but that is because I am playing BG2EE v2.5.16.

On 2/21/2023 at 7:00 PM, boof said:

Headaches around spell shield and its clone keep piling up. First it was the infinite beholder anti-magic ray absorption, then blocking wing buffet, then being able to block mind flayer ballistic attacks and now this...

Consider installing a mod that alters this! JTweaks has a nice component to address antimagic attacks from e.g. beholders; and for a more comprehensive overhaul there is my "Magic Battles Revised" mod.

Link to comment
3 hours ago, subtledoctor said:

Consider installing a mod that alters this! JTweaks has a nice component to address antimagic attacks from e.g. beholders; and for a more comprehensive overhaul there is my "Magic Battles Revised" mod.

JTweaks eh? Thanks for the suggestion, I'll check it out. I'm actually in the process of doing a fresh install and am looking to maybe add a mod or two, though I'm a bit spooked by the potential of messing up the install order. The magic battles revised mod looks interesting but changes things a bit too much for my current taste.
Do you maybe know if there's an easy way to change the ballistic attack added to mindflayers by scs so it's not blocked by spell shield in something like NI? Like just changing the type of attack it is or something like that, because that's the extent of my expertise of fiddling with this stuff. 

 

 

On another unrelated note, could people that have ascension installed check their demogorgon's resistances for me?
This is my demogorgon with ascension and scs installed:

Demogorgon

It does not match what's written on the wiki about the modded Demogorgon, and the ascension/scs readmes never specifically state the changes they made to him, at least regarding stats like resistances.
Here are the stats the wiki lists out for the ascension/scs Demogorgon (scroll about halfway down)
I'm most confused about the 50 fire res. How does that happen? Even the unmodded Demo should have it maxed, no?
Supposedly immune to level 1-7 spells with a few exceptions. Not in my game.
Supposedly has 99% magic damage resistance. Not in my game.

Is something in my game busted, or are other people's Demos like this too?
This is my current weidu log https://pastebin.com/2H3EsVQ5

Edited by boof
Link to comment
2 hours ago, boof said:

Do you maybe know if there's an easy way to change the ballistic attack added to mindflayers by scs so it's not blocked by spell shield

That I don't know - I install my psionics mod and I don't use SCS Smarter Ilithids because I have them set to use my 'real' psionics, rather than the pseudo-psionic magic effects in the vanilla game and SCS.

Link to comment

Right, lots of things to answer in that last post.

First, my component on antimagic rays and Spell Shield: it's a very limited thing, focused on that one interaction alone. Change the rays so they use up the spell shield when they hit. Or, in the option I included but don't prefer, change the rays so they don't interact with the spell shield at all. (Of course, there are also lots of other components, some of which you might like)

Second, illithid "ballistic attack" with SCS. That uses an existing resource PSIONIC_BALLISTIC, which is set up to hit as level 0 with "magic attack" secondary type. That type ignores all generic spell defenses, but is blocked by Spell Shield. Of course, being level 0 also lets it bypass all generic spell defenses. Recommended action: either set that secondary type to "none" so that no defenses other than damage resistance work on it, or set it to "offensive damage" so that the Cloak of Mirroring blocks it. That type, even in the base game, is clearly wrong.

(The SCS changes to the spell itself: more damage, nothing else relevant)

Demogorgon:

Demogorgon, in the base game, has 100% resistance to fire, 50% to cold, 10% to physical, and 90% magic resistance. Plus immunity to poison, oodles of status effects, weapons below +3, spells below level 3, and Sarevok's "Deathbringer Assault".

Ascension gives him more hit points, increases his non-functional regeneration from 6/sec to 10/sec (but I don't think it actually makes that work, so who cares), gives him "gate in more demons" powers, and re-scripts him. SCS then cleans up a few things, applies the general fiend stuff and re-scripts him again. Nowhere in there has anything about magic damage resistance or immunity to higher-level spells. Setting seven spike traps absolutely will instantly win the fight.

Demogorgon can actually become vulnerable to fire, under some circumstances. You see, he opens with Aura of Flaming Death, setting his resistance to 90% instead of its base 100%. If you can take advantage of that 10% vulnerability, you can hurt him with fire. Less efficient than melee attacks, but with the right party, you can hurt him. My "Kill It With Fire" party certainly did, largely with our own AoFD retaliating against his attack's disease effect.

But ... my log indicates that his fire resistance went down to 50% after I Breached that AoFD. And I have a picture confirming that. This was back in 2.5 and v33, but I don't think anything relevant has changed. Somehow, Demogorgon only had 50% base fire resistance, and I don't know what changed that.

Link to comment
Guest
This topic is now closed to further replies.
×
×
  • Create New...