Jump to content

Release Candidate 1 for IWDification Now Available


Recommended Posts

Release Candidate 1 for IWDification has been released! IWDification is a mod to bring some of the elements of Icewind Dale into the Baldur's Gate series of games. A lot of this project is based upon the work of the discontinued IWD-in-BG2 conversion project, which later formed the backbone of IWDEE.

This new version has five new components, and the imported IWD spells and bard songs have been pulled from the latest IWDEE 2.6 patch. I'm designating this version as a Release Candidate (as opposed to the previous betas) as the mod is more or less feature-complete and now just needs some real-world testing.

RC1 Changelog:

  • A major overhaul of the way the Arcane and Divine Spell Packs and bard songs for IWD Class Updates: Bard are handled. Specifically, these are now pulled from the newly updated IWDEE 2.6 release and worked from there. In the future, it should be easier to pull these resources from future IWDEE patches.
  • While spells were sourced from the new 2.6 IWDEE patch, additional issues were addressed for the mod (and submitted to Beamdog and/or BG2 Fixpack, as appropriate):
    • You could indefinitely delay the fatigue effects of Blood Rage by re-casting it
    • Cloudburst now removes Fireshield and will protect from Aura of Flaming Death for its duration
    • Wall of Moonlight could potentially interact with spell protections, unlike other area-of-effect spells
    • Static Charge could be dispelled, but the portrait icon would persist
    • Animal Rage could potentially have multiple checks with spell protections, instead of just the one check when it's cast
    • Mold Touch could potentially leave its target in state 'Diseased' permanently, instead of just during the spell's duration
    • Mass Cause Light Wounds was available to druids (and rangers and shamans) despite none of the other Cause X Wounds spells being available
    • Beltyn's Burning Blood was bypassing magic resistance checks in nearly all situations
    • Emotion, Fear would always remove the effects of Emotion, Courage even when the target resisted via save or magic resistance
    • On a failed save, targets of Great Shout would receive duplicate combat feedback and other effects
    • Lich Touch now uses paralyze, not hold, as its on-hit effect, bringing it inline with other undead attacks
    • Darts of all types set the user's APR to 3, however, the APR boost on Darts of Bone had a save and could fail as a result
    • One of the generic BG2 priest AI scripts (EE and original) could get stuck in a loop when it tried to cast Confusion
    • Cause Disease is an abjuration, but its description still listed it as necromancy
  • Fixed many graphical issues with the spells, namely, that they were too transparent on vanilla BG2 or had black fogs around the new graphics.
  • Renamed the Bard Song component as IWD Class Updates: Bard, as it's now part of a broader series
  • Added new components to bring in IWD class abilities under the names IWD Class Updates: Druid, IWD Class Updates: Paladin, and IWD Class Updates: Thief. A ranger update is similarly planned, but requires a bit of community help for the tracking component.
  • The changes made to the arcane spell Polymorph Self were broken into their own component, Expanded Polymorph Self, instead of being rolled into the Arcane Spell Pack
  • Added Additional Portrait Icons as a separate component for vanilla BG2, since it has the potential to not play nicely with other mods
  • Shout, Great Shout, and Mordenkainen's Force Missiles have been made available in vanilla BG2 as part of the Arcane Spell Pack. IWD's version of Mordenkainern's Sword is added as Mordenkainen's Force Blade instead of replacing the existing BG2 version.
  • Mold Touch is now available available in vanilla BG2 as part of the Divine Spell Pack
  • Spell Revisions has a component where Spell Deflection can now protect against area-of-effect spells, and IWDification now takes this into account when installing new spells.
  • Blood Rage was not really working on vanilla BG2; in an attempt to keep it ally-only it ended up working on pretty much no one instead.
  • Lich Touch now has its saving throws sorted for vanilla BG2
  • Resolved a potential conflict with SCS (and other spell mods) by correcting the internal names of Symbol, Pain and Symbol, Hopelessness
  • Cure Moderate Wounds is now added correctly to temples which offer healing
  • Decastave will crash oBG2 if cast when an offhand weapon or shield is equipped. As such, it's changed to be a one-handed staff weapon, like the staff-mace.
Edited by CamDawg
typo
Link to comment

edit: this is fixed, download away.

I just realized the uploaded version has "v1" as the version number instead of "RC1". I'm re-uploading so the download links aren't working while it uploads.

Edited by CamDawg
Link to comment

So:

Spoiler

 

  • It seems that all new portrait icons are missing (Shroud of Flame, Beltyn's Burning Blood, Circle of Bones, etc...)?
  • CLERIC_FLAME_STRIKE appears to be broken: it is unclear what you wanted to achieve here, but the spell deals no damage (subspell "SPPR503D" has no feature effects). Maybe you wanted to turn it into an AoE spell (like its IWDEE counterpart)...? In any case, it's not coded like that there... Speaking of this, it's single-target on BG games, so you don't want to be able to evade it (IWD Class Updates: Thief)... Ditto for all related spells (f.i. TRAP_FLAMESTRIKE...)
  • CLERIC_MOLD_TOUCH: that op206 effect separating those who fail the Save from those who do not fail the Save needs itself a Save vs. Spell. Additionally, "IDMOLD.PRO" should NOT be flagged as "Ignore Center" (@ 0xC)... I mean, the caster should contract the mold if it is standing too close to the secondary targets...
  • CLERIC_WHIRLWIND: op45 (and related op139, 142) bypass Magic Resistance, whereas op12 and op13 do not. Guess that all effects should NOT bypass MR, right...? Additionally, its projectile makes use of the "Pass Target" flag (which is meaningless for AoE projectiles), so I'm not sure what were the original intentions here... It's currently behaving like a slow-moving Lightning Bolt...
  • #BELTYN: there's an extra leading op12 that deals no damage (`parameter1`, `dicenumber`, and `dicesize` are all 0). Guess that it should be removed, right...? Nope, it's there for "show"...
  • CLERIC_SMASHING_WAVE: there's an extra op139 (`parameter1=Unconscious`, `timing=0`, and `duration=12`) that should be removed... Also, as usual, op45 automatically provides the "Stun" portrait icon, so consider removing the corresponding op142...
  • WIZARD_SHROUD_OF_FLAME(B): outsourcing op333's Saving Throw is probably best done via op318 + V2 EFF files (naturally, there is hope you will fix this bug for v2.7...). Additionally, "IDSHROUD.PRO" should probably be flagged as "Ignore Center" (@ 0xC)... In so doing, each affected target will correctly get a Magic Resistance check (instead of none). However, that flag will also prevent the caster from contracting the shroud (should it be standing too close to the secondary targets), but this is hopefully "negligible" with respect to secondary targets not getting their MR check (again, there is hope you will fix this bug for v2.7...).
  • WIZARD_DECASTAVE ("DECASTA.ITM") and WIZARD_DARTS_OF_BONE ("DOBONE.ITM") interact with deflection/reflection/trap opcodes and do not bypass Magic Resistance, whereas CLERIC_STAR_METAL_CUDGEL ("SMCUDGE.ITM") bypasses deflection/reflection/trap opcodes and bypasses Magic Resistance. Guess that they should behave equally...? Speaking of this, it's always unclear how magically created weapons should behave with respect to deflection/reflection/trap opcodes and Magic Resistance (f.i. WIZARD_LICH_TOUCH "LTOUCH.SPL" bypasses deflection/reflection/trap opcodes but does not bypass Magic Resistance...)
  • CLERIC_SPIKE_STONES: all effects bypass Magic Resistance. Guess that they should not, right (except for maybe op174, which should be the so-called "sound" feedback)? Also, that op321 effect preventing self-stacking is probably unnecessary since its projectile already triggers once per round (`explosion_frequency=100`) => True, but what Sequencers and the like...? In any case, if you prefer to leave it there for extra precaution, make sure `timing=1` and `duration=0`...
  • CLERIC_ALICORN_LANCE: that op321 effect preventing self-stacking should not bypass Magic Resistance...
  • CLERIC_CIRCLE_OF_BONES: the spell is not dispellable, whereas similar spells (f.i. WIZARD_FIRE_SHIELD_BLUE) are dispellable. Guess that it should be dispellable (`resist_dispel=3`), right? This spell is more similar to CLERIC_BLADE_BARRIER than WIZARD_FIRE_SHIELD_BLUE, and that one is not dispellable, so neither this one should be...
  • WIZARD_SUFFOCATE: this one should probably use op176 in place of op126... I mean, CLERIC_FREE_ACTION should not protect against it (it does not affect movement in the same way Web, Grease, or Entangle affect it...). Additionally, that op321 effect preventing self-stacking is probably unnecessary since its projectile already triggers once per round (`explosion_frequency=100`) => True, but what Sequencers and the like...? In any case, if you prefer to leave it there for extra precaution, make sure `savingthrow=BIT0`...
  • CLERIC_CLOUD_OF_PESTILENCE: all those leading op324/318 effects have a weird duration of 85. Should be 0.
  • CLERIC_SUNSCORCH, WIZARD_SNILLOCS_SNOWBALL_SWARM: since the Magic Resistance field is checked before the splprot filter (`parameter1` & `parameter2`), you might want to move it from op326 to subspell's effects (so as to avoid unnecessary feedback...). => True, but since the splprot filter is an "IF" "ELSE", everybody is affected by one of the child spells...
  • Consider providing a human-friendly identifier (MISSILE.IDS) for all new PRO files (copy/paste from IWDEE...)

 

Edited by Luke
Link to comment

Re IWD:EE 2.6.6. I'll leave the rest to @CamDawg: 

6 hours ago, Luke said:
  • CLERIC_MOLD_TOUCH: that op206 effect separating those who fail the Save from those who do not fail the Save needs itself a Save vs. Spell. Additionally, "IDMOLD.PRO" should NOT be flagged as "Ignore Center" (@ 0xC)... I mean, the caster should contract the mold if it is standing too close to the secondary targets...

  I haven't looked at this spell properly so can't answer any questions. Have you tried standing next to the infected creature with your caster? If the projectile is applied internally via a 326 style effect then the target might become the "caster" so then the target might be rightfully excluded. I actually don't know the exact behavior. More on this in Shroud of Flame below.

6 hours ago, Luke said:
  • CLERIC_WHIRLWIND: op45 (and related op139, 142) bypass Magic Resistance, whereas op12 and op13 do not. Guess that all effects should NOT bypass MR, right...? Additionally, its projectile makes use of the "Pass Target" flag (which is meaningless for AoE projectiles), so I'm not sure what were the original intentions here... It's currently behaving like a slow-moving Lightning Bolt...

As you said the projectile doesn't work properly because the fix will have to involve changes to the source code. None of the effects should bypass MR so that's an easy fix.

6 hours ago, Luke said:
  • #BELTYN: there's an extra leading op12 that deals no damage (`parameter1`, `dicenumber`, and `dicesize` are all 0). Guess that it should be removed, right...?

That 0 damage effect is there for show. It doesn't disrupt spellcasting.

6 hours ago, Luke said:
  • CLERIC_SMASHING_WAVE: there's an extra op139 (`parameter1=Unconscious`, `timing=0`, and `duration=12`) that should be removed... Also, as usual, op45 automatically provides the "Stun" portrait icon, so consider removing the corresponding op142...

Thanks, should be an easy fix. There's also an extra 318 at the end of the effects list which should be removed. It's likely a relic from when pass-through projectiles hit the same target multiple times which has been thankfully fixed in 2.6.

6 hours ago, Luke said:
  • WIZARD_SHROUD_OF_FLAME(B): outsourcing op333's Saving Throw is probably best done via op318 + V2 EFF files (naturally, there is hope you will fix this bug for v2.7...). Additionally, "IDSHROUD.PRO" should probably be flagged as "Ignore Center" (@ 0xC)... In so doing, each affected target will correctly get a Magic Resistance check (instead of none). However, that flag will also prevent the caster from contracting the shroud (should it be standing too close to the secondary targets), but this is hopefully "negligible" with respect to secondary targets not getting their MR check (again, there is hope you will fix this bug for v2.7...).

For some reason, the caster can be affected by his/her own spell. I know because I tested this extensively. Could it be because 333 sets the target as the caster? I haven't investigated the behavior of the "ignore caster" bit for projectiles if applied via 326/333/146 p2=2. But it seems to be the case, no?

6 hours ago, Luke said:
  • WIZARD_DECASTAVE ("DECASTA.ITM") and WIZARD_DARTS_OF_BONE ("DOBONE.ITM") interact with deflection/reflection/trap opcodes and do not bypass Magic Resistance, whereas CLERIC_STAR_METAL_CUDGEL ("SMCUDGE.ITM") bypasses deflection/reflection/trap opcodes and bypasses Magic Resistance. Guess that they should behave equally...? Speaking of this, it's always unclear how magically created weapons should behave with respect to deflection/reflection/trap opcodes and Magic Resistance (f.i. WIZARD_LICH_TOUCH "LTOUCH.SPL" bypasses deflection/reflection/trap opcodes but does not bypass Magic Resistance...)

Yes, this is a larger issue that needs attention. These effects shouldn't be turned by a spell turning, though at the same time it makes sense to block them with an anti-magic shell or a Potion of Magic Blocking or a MGoI. But then what about the damage from the weapon itself? Should MMM also be blocked by MGoI? This is a whole new can of worms. For now it make sense to set these effects to power = 0.

6 hours ago, Luke said:
  • CLERIC_SPIKE_STONES: all effects bypass Magic Resistance. Guess that they should not, right (except for maybe op174, which should be the so-called "sound" feedback)? Also, that op321 effect preventing self-stacking is probably unnecessary since its projectile already triggers once per round (`explosion_frequency=100`)... In any case, if you prefer to leave it there for extra precaution, make sure `timing=1` and `duration=0`...

There are arguments for this, since Earthquake bypasses MR. Though Spike Growth and Entangle do not. There's no real consistency for this. These spells change the environment rather than affect the creatures directly. I'm on the fence for this.

6 hours ago, Luke said:
  • CLERIC_CIRCLE_OF_BONES: the spell is not dispellable, whereas similar spells (f.i. WIZARD_FIRE_SHIELD_BLUE) are dispellable. Guess that it should be dispellable (`resist_dispel=3`), right?

Blade Barrier and Circle of Bones are stationary spells in IWD:EE and are not dispellable (like other stationary spells). If Circle of Bones is stationary in BG1/2 then it makes sense to leave them as-is, no?

6 hours ago, Luke said:
  • WIZARD_SUFFOCATE: this one should probably use op176 in place of op126... I mean, CLERIC_FREE_ACTION should not protect against it (it does not affect movement in the same way Web, Grease, or Entangle affect it...). Additionally, that op321 effect preventing self-stacking is probably unnecessary since its projectile already triggers once per round (`explosion_frequency=100`)... In any case, if you prefer to leave it there for extra precaution, make sure `savingthrow=BIT0`...

Self-stacking can occour if multiple instances of Suffocation are cast or if the caster launches the spell 3x via Chain Contingency. The effect should have a savingthrow = 1, so that's an easy fix. As for 126 vs 176, I'm on the fence for this one.

6 hours ago, Luke said:
  • CLERIC_CLOUD_OF_PESTILENCE: all those leading op324/318 effects have a weird duration of 85. Should be 0.

Thanks! Should be set to 0.

6 hours ago, Luke said:
  • CLERIC_SUNSCORCH, WIZARD_SNILLOCS_SNOWBALL_SWARM: since the Magic Resistance field is checked before the splprot filter (`parameter1` & `parameter2`), you might want to move it from op326 to subspell's effects (so as to avoid unnecessary feedback...).

The splprot filter is an "IF" "ELSE" so everybody is affected by one of the child spells. I don't see an issue here!

Link to comment
10 hours ago, Luke said:
  • It seems that all new portrait icons are missing (Shroud of Flame, Beltyn's Burning Blood, Circle of Bones, etc...)?

This is fixed.

10 hours ago, Luke said:
  • CLERIC_FLAME_STRIKE appears to be broken: it is unclear what you wanted to achieve here, but the spell deals no damage (subspell "SPPR503D" has no feature effects). Maybe you wanted to turn it into an AoE spell (like its IWDEE counterpart)...? In any case, it's not coded like that there... Speaking of this, it's single-target on BG games, so you don't want to be able to evade it (IWD Class Updates: Thief)... Ditto for all related spells (f.i. TRAP_FLAMESTRIKE...)

This is also fixed. Flame Strike should be blocked by Entropy Shield, but does not use a projectile. The idea is to farm out the damage to a subspell and then have Entropy Shield block that, but the subspell was being stripped of all effects instead of leaving the damage intact.

10 hours ago, Luke said:
  • CLERIC_MOLD_TOUCH: that op206 effect separating those who fail the Save from those who do not fail the Save needs itself a Save vs. Spell. Additionally, "IDMOLD.PRO" should NOT be flagged as "Ignore Center" (@ 0xC)... I mean, the caster should contract the mold if it is standing too close to the secondary targets...

Save is fixed, projectile is correct. IDMOLD is cast by the target of Mold Touch in order to spread it, so ignore center is there to force a spread target other than the mold source, the original victim.

10 hours ago, Luke said:
  • CLERIC_WHIRLWIND: op45 (and related op139, 142) bypass Magic Resistance, whereas op12 and op13 do not. Guess that all effects should NOT bypass MR, right...? Additionally, its projectile makes use of the "Pass Target" flag (which is meaningless for AoE projectiles), so I'm not sure what were the original intentions here... It's currently behaving like a slow-moving Lightning Bolt...

Fixed the MR bug; this bug goes all the way back to oIWD. Not much I can do about the projectile.

10 hours ago, Luke said:
  • #BELTYN: there's an extra leading op12 that deals no damage (`parameter1`, `dicenumber`, and `dicesize` are all 0). Guess that it should be removed, right...?

This is for show.

10 hours ago, Luke said:
  • CLERIC_SMASHING_WAVE: there's an extra op139 (`parameter1=Unconscious`, `timing=0`, and `duration=12`) that should be removed... Also, as usual, op45 automatically provides the "Stun" portrait icon, so consider removing the corresponding op142...

Fixed, along with the redundant 318 at the end. All redundant stun icons (Whirlwind, Smashing Wave, Icelance, and Great Shout) have been removed.

10 hours ago, Luke said:
  • CLERIC_SPIKE_STONES: all effects bypass Magic Resistance. Guess that they should not, right (except for maybe op174, which should be the so-called "sound" feedback)? Also, that op321 effect preventing self-stacking is probably unnecessary since its projectile already triggers once per round (`explosion_frequency=100`)... In any case, if you prefer to leave it there for extra precaution, make sure `timing=1` and `duration=0`...

For MR, I'm inclined to leave it as it's consistent with its oIWD implementation but I'm willing to be convinced. The 321 is really there to prevent the speed penalties from stacking. Imagine someone triple Spike-Stoning an area--I'd be fine with them taking damage from all three but I don't think their movement speed should be cut thrice. Timing's been fixed, at least.

10 hours ago, Luke said:
  • CLERIC_ALICORN_LANCE: that op321 effect preventing self-stacking should not bypass Magic Resistance...

Fixed.

10 hours ago, Luke said:
  • CLERIC_CIRCLE_OF_BONES: the spell is not dispellable, whereas similar spells (f.i. WIZARD_FIRE_SHIELD_BLUE) are dispellable. Guess that it should be dispellable (`resist_dispel=3`), right?

It's consistent with oIWD and existing immobile spells like Blade Barrier.

10 hours ago, Luke said:
  • WIZARD_SUFFOCATE: this one should probably use op176 in place of op126... I mean, CLERIC_FREE_ACTION should not protect against it (it does not affect movement in the same way Web, Grease, or Entangle affect it...). Additionally, that op321 effect preventing self-stacking is probably unnecessary since its projectile already triggers once per round (`explosion_frequency=100`)... In any case, if you prefer to leave it there for extra precaution, make sure `savingthrow=BIT0`...

Yes on the 176, and I'll keep the 321 (with the fix) for the same reason as Spike Stones.

10 hours ago, Luke said:
  • CLERIC_CLOUD_OF_PESTILENCE: all those leading op324/318 effects have a weird duration of 85. Should be 0.

Fixed.

10 hours ago, Luke said:
  • CLERIC_SUNSCORCH, WIZARD_SNILLOCS_SNOWBALL_SWARM: since the Magic Resistance field is checked before the splprot filter (`parameter1` & `parameter2`), you might want to move it from op326 to subspell's effects (so as to avoid unnecessary feedback...).

Not sure I understand this one. Multiple effects that get blocked by MR only generate one line of combat feedback. E.g. for Sunscorch, if the target makes their MR check for the first MR-checking opcode (blindness) the engine will print the 'Magic Resistance' string and then proceed to ignore the rest of the MR-checking effects, including both 326s, without further feedback.

10 hours ago, Luke said:
  • Consider providing a human-friendly identifier (MISSILE.IDS) for all new PRO files (copy/paste from IWDEE...)

Done.

I'm going to save the Shroud of Flame and magical items for separate posts since they need a little more of a writeup.

Link to comment
27 minutes ago, CamDawg said:

Save is fixed, projectile is correct. IDMOLD is cast by the target of Mold Touch in order to spread it, so ignore center is there to force a spread target other than the mold source, the original victim.

If it's being cast by the disease opcode, then no, the target is not considered the source for "Ignore Center", the original caster is.  You would need to save and reload between triggers for it then default to the diseased.

For the same reason, Shroud of Flame should use "Ignore Center", since its subspell is cast through op333 and delayed, both so that the initial target is except from the aoe, and to enforce the MR check of the subspells effects.  Only the first, instantaneous trigger of op333 will use the original caster for "Ignore Center", all further triggers (or all triggers if it uses a delayed timing mode) will use the target instead.

Unrelated: Consider adding MISSILE.IDS entries for all added projectiles.

Link to comment
1 hour ago, kjeron said:

If it's being cast by the disease opcode, then no, the target is not considered the source for "Ignore Center", the original caster is.  You would need to save and reload between triggers for it then default to the diseased.

TIL. Easy enough to work around, though, and fixed.

1 hour ago, kjeron said:

Unrelated: Consider adding MISSILE.IDS entries for all added projectiles.

Already done.

Link to comment
14 hours ago, Luke said:

WIZARD_DECASTAVE ("DECASTA.ITM") and WIZARD_DARTS_OF_BONE ("DOBONE.ITM") interact with deflection/reflection/trap opcodes and do not bypass Magic Resistance, whereas CLERIC_STAR_METAL_CUDGEL ("SMCUDGE.ITM") bypasses deflection/reflection/trap opcodes and bypasses Magic Resistance. Guess that they should behave equally...? Speaking of this, it's always unclear how magically created weapons should behave with respect to deflection/reflection/trap opcodes and Magic Resistance (f.i. WIZARD_LICH_TOUCH "LTOUCH.SPL" bypasses deflection/reflection/trap opcodes but does not bypass Magic Resistance...)

Right. Magically created weapons.

While we had the occasional issue that needed to be addressed by Fixpack, I never really sat down and took a systematic look at how these are handled w.r.t. power levels, MR, etc. The existing setup (see attached) doesn't really offer a lot of clear guidance. Decastave and Star Metal Cudgel's closest analog would be the first batch of items. SCM in particular matches well with Phantom Blade, though a case could be made for Shillelagh or Spiritual Hammer. Darts of Bone would be closer to the last batch of Energy Blade/MMM/Sol's Searing Orb.

So there are multiple levels to be had here. First and foremost is what to do with the magically created items from IWDification, but looking at the inconsistency in the items themselves, there are probably some suggestions we can make for 2.7/Fixpack as well.

magic_items.jpg

Link to comment
15 hours ago, Galactygon said:

That 0 damage effect is there for show. It doesn't disrupt spellcasting.

Noted.

15 hours ago, Galactygon said:

Self-stacking can occour if multiple instances of Suffocation are cast or if the caster launches the spell 3x via Chain Contingency.

 

13 hours ago, CamDawg said:

and I'll keep the 321 (with the fix) for the same reason as Spike Stones.

Yeah, me dumb. I forgot about about Sequencers and the like (and also op#188...)

15 hours ago, Galactygon said:

Blade Barrier and Circle of Bones are stationary spells in IWD:EE and are not dispellable (like other stationary spells)

 

13 hours ago, CamDawg said:

It's consistent with oIWD and existing immobile spells like Blade Barrier.

OK, fine.

13 hours ago, CamDawg said:

The 321 is really there to prevent the speed penalties from stacking. Imagine someone triple Spike-Stoning an area--I'd be fine with them taking damage from all three but I don't think their movement speed should be cut thrice

Yeah, me dumb. I forgot about about Sequencers and the like (and also op#188...)

12 hours ago, kjeron said:

If it's being cast by the disease opcode, then no, the target is not considered the source for "Ignore Center", the original caster is

Exactly. If you give a name (@ 0x8) to the subspell, remove the "Ignore Center" bit from "IDMOLD.PRO", and cast the spell at someone that is standing really close to you, you'll see Caster : Damage Taken (x) upon a failed Save vs. Spell. So it's always the original caster that casts all the subspells via op78...

10 hours ago, CamDawg said:

TIL. Easy enough to work around, though, and fixed.

That op318 (p2=SPLSTATE=MOLD_TOUCH) effect on the subspell is probably redundant since "IDMOLD.PRO" already checks for that (@ 0x3E)...

Having said that, you might want to address the following:

  • On the main SPL file: op215 and op174 offer no Saving Throw. Guess that they're there for providing "visual" and "sound" feedback, right? If that's the case, then they should also bypass Magic Resistance (`resist_dispel=2` or 0)...
  • On the main SPL file: please remove op78 (Disease type: Mold touch/Single) and alter `parameter1` of the second op78 (Disease type: Mold touch/Decrement) from to 2 to 3... The `Delay/Permanent` timing mode of op78 (Disease type: Mold touch/Single) is still causing issues (it leaves a permanent Diseased portrait icon along with the corresponding spell state...)
  • On the subspell file: make sure `spell type` (@ 0x1C) and `primary_type` (@ 0x25) match the values of the parent spell (this is already the case for `secondary_type` (@ 0x27)). I'm not sure if this is relevant or not when the subspell is cast by op78, but just in case...
13 hours ago, CamDawg said:

Not sure I understand this one. Multiple effects that get blocked by MR only generate one line of combat feedback. E.g. for Sunscorch, if the target makes their MR check for the first MR-checking opcode (blindness) the engine will print the 'Magic Resistance' string and then proceed to ignore the rest of the MR-checking effects, including both 326s, without further feedback.

Yes, you're right, but simply because in all these cases the splprot filter is an "IF" "ELSE", so everybody is affected by one of the child spells (as mentioned above by Galactygon). However, generally speaking, it would be better to move those checks from op326 to the subspell... In fact, it does matter for spells like CLERIC_WALL_OF_MOONLIGHT, where the splprot filter is not an "IF" "ELSE" (see the file in IWDEE). So please move the MR checks from op326s to the subspells (also, that final op318 should bypass MR as well – "A creature that has passed through the wall can only take damage from it once." So If the target fails its MR check, good; if it does not, then the spell is wasted...).

Edited by Luke
Link to comment

It's generally best practice to do all the power and MR checks once in the parent spell containing the projectile and have the resist_dispel set to 0/2 for insta effects and 3 for timed effects in the child spells. Some ambiguity is preferable IMHO so you wouldn't know the GENERAL/ALIGNMENT of the creature stepping through the wall based off of combat feedback.

Also, from the QA point of view, you'd be more easily catch any MR/resist_dispel bugs/inconsistencies if they're all done in the parent spell.

Edited by Galactygon
Link to comment
21 minutes ago, Galactygon said:

Some ambiguity is preferable IMHO so you wouldn't know the GENERAL/ALIGNMENT of the creature stepping through the wall based off of combat feedback.

True... So basically it's a matter of personal tastes... But if that's the case, then you should also "fix" all those leading op318/324 effects (filtering GENERAL/RACE/CLASS/etc...): they usually bypass both MR and Saving Throw checks...

It's probably better to leave things as they are...?

Edited by Luke
Link to comment
On 7/26/2021 at 10:44 PM, CamDawg said:

This is also fixed. Flame Strike should be blocked by Entropy Shield, but does not use a projectile. The idea is to farm out the damage to a subspell and then have Entropy Shield block that, but the subspell was being stripped of all effects instead of leaving the damage intact.

I see.

So basically the subspell is needed in order not to prevent visual feedback (op215) from displaying. But for the same reason, the targeted creature should be able to evade the subspell, not the main spell... Ditto for all related spells...

Link to comment

Ideally, a single target flame strike would farm out the visuals to the projectile as a "pillar animation" which would play regardless of the target's protections/deflections/turnings/traps. Then you don't need any extra child spells.

20 hours ago, Luke said:

True... So basically it's a matter of personal tastes... But if that's the case, then you should also "fix" all those leading op318/324 effects (filtering GENERAL/RACE/CLASS/etc...): they usually bypass both MR and Saving Throw checks...

It's probably better to leave things as they are...?

That's debatable and maybe you're right. I'll let @CamDawgvoice his opinion. Whatever the case, mechanics should be consistent across the board.

Edited by Galactygon
Link to comment

Ha! If working again on IWDification has taught me anything, it's that my bugfixing skills are rusty and I should be deferring to you guys. :)

In general I like to load up the parent with the relevant checks, as long as it doesn't cause other bugs. I feel like it makes more sense for the engine to check there and skip the subspell, rather than loading up the subspell only to realize it shouldn't apply. And while it's rare, it also means you can share subspells (or EFFs) between spells which may have different power levels, saves, or MR checks. Something like cdhda60.eff is used by IIRC seven spells, at varying power and saves.

 

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...