Jump to content

IWDification Returns with a Shiny New Beta


CamDawg

Recommended Posts

@CamDawg

Since you're directly porting everything from IWDEE as is, please be aware of the following issues (and please add them to your v2.7 to-do list):

Spoiler
  • When attaching the EVASION spell state to all relevant CRE files, consider setting its parent resource to the SPL file that grants it (`effsource="cdievade"` in this case). In so doing, it won't get duplicated when a Thief NPC joins the Party.
  • CLERIC_WALL_OF_MOONLIGHT: Make sure the effect(s) (opcode #12) of both its subspells ("SPPR428A" and "SPPR428B" in IWDEE) have `power=0` (otherwise the spell can be deflected/reflected/trapped, and that would be wrong since it's an AoE spell...)
  • CLERIC_MOLD_TOUCH: Consider using just the Decrement mode of Mold Touch (`parameter2=12`), and `timing_mode=3` with `duration=0` (otherwise spell state #250 DISEASED will remain until cured/death, and that would be incorrect...). You might also want to add an op206 effect (`savetype=Spell`, `duration=0`) right after the first op#328 effect to properly separate the case where the Saving Throw is failed from the one where the Saving Throw is successful... Finally, consider setting the portrait icon via the special field of op78 instead of using op142...
  • WIZARD_LICH_TOUCH: the subspell cast by its corresponding magically created weapon ("LTOUCH.SPL" in IWDEE) should probably use op109 in place of op175, since the latter is supposed to be a mental effect, not a paralyzation effect...
  • CLERIC_BLOD_RAGE: its description states that "At the end of the spell's duration, the target becomes fatigued and <PRO_HISHER> Strength drops to 3 for 2 turns.". However, that's not the case due to that leading op321 effect. As a result, consider deleting it and putting an op206 effect (`insert_point=last`, `timing=0`, `duration=120*2=240`). In so doing, you won't be able to benefit from it until when the fatigue period is expired (or dispelled). => See here for an explanation about 120 vs. 240...
  • WIZARD_GREAT_SHOUT: According to the spell description, the `maximum_level` field of the first op#13 effect (Exploding death) should be set to 5 (instead of 3). The `maximum_level` field of the second op#13 effect (Normal death) should be set to 0 (unbounded, instead of 5); the `minimum_level` field of the second op#13 effect (Normal death) should be set to 6 (instead of 4); the `savetype` field of the second op#13 effect (Normal death) should be set to `Spell` (instead of None). Also, there should be an op206 effect (`savetype=Spell`, `duration=0`) somewhat in the middle to properly separate the case where the Saving Throw is failed from the one where the Saving Throw is successful (so as to take one or the other possibility...)
  • WIZARD_EMOTION_FEAR: description states that "This spell nullifies Emotion, Courage within the area of effect at the time of casting.". The op#321 responsible for that bypasses Magic Resistance and the Saving Throw check. I'm not sure if it's intended of not...
  • CLERIC_ANIMAL_RAGE: make sure all effects of its subspell ("SPPR522B.SPL" in IWDEE) have `power=0` (this is probably unnecessary, but just in case...). Also, remove the final op#321 effect (it should be totally useless).
  • CLERIC_STATIC_CHARGE: op#142 (`parameter2=Static_Charge_Icon`) should be flagged as Dispellable (`resist_dispel=3`).
  • WIZARD_BELTYNS_BURNING_BLOOD: make sure that on ALL Extended headers (a.k.a. Abilities) either op#333 on the main spell bypasses Magic Resistance and all effects on its subspell ("#BELTYN") does not bypass Magic Resistance OR op#333 on the main spell does not bypass Magic Resistance and all effects on its subspell ("#BELTYN") bypass Magic Resistance. Currently both op#333 on the main spell and all effects on its subspell are bypassing Magic Resistance, and that's incorrect... As I said, that's not true for all Abilities (for instance, on the first Ability op#333 is correctly flagged as "Not bypass resistance", given that all effects of "#BELTYN" are flagged as "Bypass resistance"...). Also, on "#BELTYN" you might want to remove that "empty" opcode #12 (`parameter1=0`, `dicenumber=0`, `dicesize=0`).
  • WIZARD_OTILUKES_FREEZING_SPHERE: make sure all its effects (not just opcode #12) are flagged as "Not bypass resistance". Also, in IWDEE this spell has no exclusion flags and that is clearly an oversight/unintended. Since it's flagged as INVOKER / OFFENSIVEDAMAGE, it should probably be treated as Magic Missile. As a result, make sure Conjurers cannot cast it (and cannot use the corresponding scroll...)
  • Speaking of Exclusion flags, you might want to conform to the BG world where each arcane spell has just one Exclusion flag, so you might want to remove the second flag when importing arcane spells from IWDEE... Or you could alternatively add the second exclusion flag to all BG spells...

 

Edited by Luke
Link to comment

 

43 minutes ago, Luke said:
  • WIZARD_OTILUKES_FREEZING_SPHERE: make sure all its effects (not just opcode #12) are flagged as "Not bypass resistance". Also, in IWDEE this spell has no exclusion flags and that is clearly an oversight/unintended. Since it's flagged as INVOKER / OFFENSIVEDAMAGE, it should probably be treated as Magic Missile. As a result, make sure Conjurers cannot cast it (and cannot use the corresponding scroll...)
  • Speaking of Exclusion flags, you might want to conform to the BG world where each arcane spell has just one Exclusion flag, so you might want to remove the second flag when importing arcane spells from IWDEE... Or you could alternatively add the second exclusion flag to all BG spells...

Otiluke's exclusions are correct, for IWD, see: https://forums.beamdog.com/discussion/comment/1112924/#Comment_1112924

Though if importing the spells into BG, exclusion flags would have to be updated anyway, as they differ between games.

Link to comment

Wall of Moonlight: Thanks. Both power and MR checks should be done in the parent spell SPPR428.spl and those fields should be 0 in the child spells.

Mold Touch: we hope to fix this in 2.7.

Lich Touch: I see your point. I'll look at application of 109 vs 175

Blood Rage: This only occours if the spell is refreshed before expiration but the fatigue will still be impending. I'm on the fence for this one whether we block subsequent castings via a 206 or dispel previous castings as is now. An alternative would be to use both in that the 206 appears as a delayed duration effect that blocks unfatigueing the recipient if subsequent castings occours during the fatigue period.

Great Shout: death effects seem to be properly set according to the description. It goes for chunked death for 3 HD and lower but that's still within the scope of the description. I can look at the effect ordering to prevent unnecessary text feedback.

Emotion Fear, Animal Rage, Static Charge: these are bugs that I missed, thanks. Added to my to-do list.

Beltyn's Burning Blood: The spell does one MR check at the beginning of the spell so the parent spell should check MR and not the child spell #BELTYN.spl. Saving throws are rolled once per round by the child spell which is how it behaves in 2.6.6

Otiluke's Freezing Sphere: is meant to play graphics and audio regardless of MR which should only block damage. 100% intentional. The spell has 2 mschools in the description so the exclusions are unset. Ofc since the IE doesn't allow for a spell to belong to two mschools at the same time it has to belong to one of them.

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

Blood Rage: This only occours if the spell is refreshed before expiration but the fatigue will still be impending. I'm on the fence for this one whether we block subsequent castings via a 206 or dispel previous castings as is now. An alternative would be to use both in that the 206 appears as a delayed duration effect that blocks unfatigueing the recipient if subsequent castings occours during the fatigue period.

No, this needs to change--Haste doesn't use a 321 precisely because we don't want negative effects to be delayed.

Link to comment
42 minutes ago, Galactygon said:

Mold Touch: we hope to fix this in 2.7.

Good. But that's how it should be coded for the time being...

42 minutes ago, Galactygon said:

Lich Touch: I see your point. I'll look at application of 109 vs 175

This is also related to "Enrage" spell-like abilities, which should not grant immunity to op109 (only the mental one, i.e., op175...)

42 minutes ago, Galactygon said:

The spell does one MR check at the beginning of the spell so the parent spell should check MR...

OK, but that's not case for all Abilities. For instance, look at the one whose `minimum_level=14`. Here op333 bypasses MR (`resist_dispel=3`), so both the main spell and its child "#BELTYN.spl" bypass MR (which is incorrect...). However, this is probably an unnecessary fix (since both the main spell and its child use projectile `1|None`), but just in case...

42 minutes ago, Galactygon said:

Otiluke's Freezing Sphere: is meant to play graphics and audio regardless of MR which should only block damage. 100% intentional.

Is there any particular reason for that...? I reported it because I find it a bit misleading (target makes its MR check but graphics and audio still play...).

Edited by Luke
Link to comment
53 minutes ago, Galactygon said:

Great Shout: death effects seem to be properly set according to the description. It goes for chunked death for 3 HD and lower but that's still within the scope of the description

So basically you coded it as a Chunked death for 3 HD and lower and a Normal Death for 4-5 HD... If that's the case, then OK, I misunderstood its description (in fact, my interpretation does sound a bit OP: all 6+ HD creatures are instantly killed on a failed Save vs. Spell...).

Separately, I'm not sure you can solve the other issue by just reordering the effects... I think you do need an op206 effect to properly distinguish the two cases...

Link to comment
12 minutes ago, CamDawg said:

While oIWD does use a hold rather than a paralyze, paralyzation would be more in line with existing lich attacks.

I agree. Also look at Ghoul/Ghast/Carrion Crawler attacks: they all use op109.

Link to comment
44 minutes ago, CamDawg said:

No, this needs to change--Haste doesn't use a 321 precisely because we don't want negative effects to be delayed.

Okay then yes, we should have identical behavior in Blood Rage.

44 minutes ago, Luke said:

Is there any particular reason for that...? I reported it because I find it a bit misleading (target makes its MR check but graphics and audio still play...).

The graphics/audio show the physical impact of the spell, much like Magic Missile, Vitriolic Sphere, or Sol's Searing Orb which occours regardless of MR and saving throws.

Link to comment
16 hours ago, Galactygon said:

The graphics/audio show the physical impact of the spell, much like Magic Missile, Vitriolic Sphere, or Sol's Searing Orb which occours regardless of MR and saving throws.

OK, makes sense, thanks for clarifying.

15 hours ago, CamDawg said:

OK, these fixes are in.

CLERIC_BLOOD_RAGE: duration of op206 should be 240 (the fatigue period kicks in after 120 seconds and lasts for 120 seconds, so 120 * 2), otherwise you can benefit from it while being fatigued...

Link to comment

No, 120 is correct. Fatigue is applied permanently at the 120 second mark and the 206 is only there to prevent stacking. If someone wants to Blood Rage (or Haste or Lesser Restoration) while fatigued, they can.

Link to comment

Actually, a robust way would be to keep opcode 321 so the spell can be refreshed but separate the delayed fatigue effects into another child spell that is instantly cast. The fatigue effects would still be applied on a delay inside that spell even if the parent spell was refreshed.

This behavior would be consistent with haste which can be recast without dispelling previously cast haste spells.

Edited by Galactygon
Link to comment
47 minutes ago, CamDawg said:

No, 120 is correct. Fatigue is applied permanently at the 120 second mark and the 206 is only there to prevent stacking. If someone wants to Blood Rage (or Haste or Lesser Restoration) while fatigued, they can.

You're forgetting about that op44 setting STR to 3 ("... the target becomes fatigued and <PRO_HISHER> Strength drops to 3 for 2 turns."). This one is not applied permanently, and that's why 240 is correct...

Link to comment
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...