Jump to content

Galactygon

Modders
  • Posts

    827
  • Joined

  • Last visited

Posts posted by Galactygon

  1. On 8/27/2021 at 4:31 AM, CamDawg said:

    This is firmly in "IWD and BG are different" and/or rebalancing. The latter is not something I am touching unless I absolutely have to, and the former we're only addressing where it causes serious discrepancies such as the elemental conjuration spells.

    ...

    This is in the docs. The tl;dr is that 6th-level Entropy Shield is better in nearly every aspect, so Physical Mirror is moved to level 5.

    This is somewhat contradictory and arbitrary. If any change to Physical Mirror is warranted I'm much more of a fan of souping it up so it affects a much wider array of projectiles, like physical spells as used in PnP. Or reflect msectype 10-OFFENSIVEDAMAGE and suddenly it becomes a decent spell. See below, from Priest Spell Compendium vol 2:

    image.png.7d3d25ee31d8c85ced4d8e725534da64.png

  2. 1 hour ago, Luke said:

    Really? There's "Increased Movement Rate" (index #195 in BG(2)EE, index #193 in IWDEE), but I'm not seeing a "Reduced Movement Rate" status icon...

    Oops, my bad. Looks like this hasn't been implemented. Spike Stones does display "Slow" in IWD:EE as well.

    1 hour ago, Luke said:

    Do you know why there are a lot of op206 effects protecting the caster from all those AoE spells?

    Unless I'm missing something, op102 (Immunity to spell level) is perfectly able to block effects delivered by AoE projectiles... As a result, they seem to be redundant and should probably be removed...?

    Opcode 102 doesn't protect against area of effect projectiles if coming from the caster. If you remove the 102s from MGoI you can damage yourself with a Fireball. In Antimagic Shell's case they aren't necessary since spellcasting is disabled anyway.

  3. I've gone through the spells, here's my exhaustive feedback. Most of it are bugs and inconsistencies and some are subjective balance issues:

    Spoiler

    Component IWD style casting glows:

    The graphics are outdated and the casting glows in IWDEE are softer. I'd port the various CG... projectiles over as well as all the casting sounds CHA_... There should be 3x2x8=48 different casting sounds.

    Component spells from IWD:

    • Curse: Should use BG-style projectile Sparkle_Area_Purple_Not_Party (SPARPUNP.pro). Should also dispel and be dispelled by Bless (bug in IWD).
    • Entangle: IWD version of this spell has a smaller area of effect but grants no bonus to saving throws like the BG version.
    • Magic Stone: IWD version is more potent than BG versions.
    • Sanctuary: IWD version of this spell has a different duration (2 rounds + 1 round/level) vs. BG1/2 (1 turn)
    • Cause Light/Moderate/Medium Wounds: It would make sense to have the same behavior as the BG2 versions of Cause Serious/Critical Wounds by creating a melee item and allowing extraplanar creatures to be affected. I suggest COPY_EXISTING "SERIOUS.itm" "CDLIGHT.itm" etc. as a template. Alternatively, there could be a seperate component to change the icons and behavior of all Cause Wounds + Harm spells to IWD:EE style without item creation (and possibly extraplanar immunity). Note: This issue may/may not also apply to Cause Disease since it's a touch spell.
    • Cure/Cause Medium Wounds (L3 spell): With the presence of the L2 Moderate Wounds spells, the name is a bit too similar and can be confused with the L2 spell. I'd rename these spells to "Intermediate Wounds" since they don't exist in PnP anyway. I know this confusion also exists in IWDEE. Obviously, we wouldn't dare touch the IDS_SYMBOL of these spells.
    • Cloudburst: I noticed in IWDEE it doesn't remove the Shroud of Flame subspells SPWI524B/C.spl properly. Is a bug in 2.6. One way to enhance this spell (it's a bit underpowering imo) is to have it negate/protect against all fire-based spells of 3rd level or lower. It does something similar in PnP source material. It can also halt all movement and reduce vision during those 2 rounds and make bows/crossbows ineffective. Or reduce cold resistance by 50% (if creatures aren't naturally immune to cold) so cold spells become more effective during those 1-2 rounds. There is a lot of creative potential in this spell imho.
    • Circle of Bones: Status icon doesn't work.
    • Moonblade: I'd remove the glow and do a recolor of SPFLMBLD.bam using the blue palette of OHDSTREE.bam (BG2EE). MOONBLA.itm needs to use BG style visuals (invocation/red SHEARTH, glow)
    • Unfailing Endurance: Should be using BG-style necromancy/aqua SHAIR and glow.
    • Smashing Wave: Child projectile embedded as a ray is missing its smoke/trail animation. The ini files can be copied over from IWD as nothing is taking its place in BG1/2.
    • Star Metal Cudgel: SMCUDGE.itm should use BG style visuals (conjuration/purple SHEARTH, glow)
    • Spike Stones: Displays the slowed status icon even though all it does is reduce movement (126) without slowing. There's a Reduced Movement Rate status icon in 2.6 now.
    • Shield of Lathander: Displays the Frozen Fist status icon. I suggest an ADD_STATUS_ICON function that looks for a particular status icon .bam when replacing/adding existing status icons.
    • Mass Cause Light Wounds: Should use projectile "Sparkle_Area_Ice_Not_Party" (SPARICNP.pro). Visuals should match other cause wounds (i.e. SERIOUS.itm, CRITICAL.itm, HARM.itm)
    • Physical Mirror: Why is there a duplicate of the 6th level spell at 5th level?
    • Entropy Shield: Visual should be green/abjuration SHWATER and play EFF_P01 when spell is cast. Status icon shows "Flaming Fists"
    • Sol's Searing Orb: I like the IWD version of the spell much better (visuals, effects, everything). The spell is underwhelming in BG1/2.
    • Spiritual Wrath: Missing red/invocation SHAIR visual to accompany the glow. Sound not necessary since the damage sound takes over. Also, the child projectile is missing its smoke/trail animation.
    • Earthquake: One of the rare instances where the IWD version is party-friendly while the BG version isn't.
    • Greater Shield of Lathander: Displays the Armor of Faith status icon
    • Stalker: I'd use similar visuals to Elemental Summoning (SPPORTAL.vvc) and use the BG2 style opcode 67 as external .effs
    • (Greater) Elemental Summoning: Would be nice to have a % chance for Water Elementals too. Even if these HLAs aren't IWD material. Speaking of which, priests do not have Water Elemental as an option in IWD which is a shame. :(
    • Regeneration: It makes sense to change the visuals to what IWDEE has bcuz Righteous Wrath of the Faithful has been imported and uses those visuals.
    • Symbol Pain: The description says the symbol is activated the instant the spell is cast when in reality it's a glyph projectile that waits until an enemy gets too close. I'd change the description so it's more consistent with the other symbol spells when behave the same way except Symbol of Hopelessness (see below). The radius stated in the description doesn't match the projectile.
    • Symbol Hopelessness: idpro277.pro has its secondary projectile incorrectly set. It should look for 230-Icewind_Glyph_Hit (ICGHIT).
    • Seems as though there's a great deal of inconsistency between stated areas of effect and ICEGLYP.pro/idpro277.pro so I'd do a review of the Glyph of Warding/Symbol spells. They should generally have similar areas of effect. Symbol spells can be grouped into a single spell with a spell immunity menu to make them very appealing for the player. Subspells need to be added to HIDESPL.2da and the immunity menu .2da needs to match the main spell resname so that trigger/contingency spells can pick up on the subspells. It could be an idea for a seperate component, possibly affecting other groups of spells as well (i.e. Emotion, Cause/Cure Wounds, Harm/Heal, Regeneration/Wither Elemental Summoning spells, etc.)
    • Wither: I'd replace the HARMH.vvc with SPCAUSEW.vvc (like the other Harm/Cause Wounds spells in BG2). Keep the red glow since that has been implemented in BG1/2 for those types of spells. Also, do extraplanar creatures need to be protected in BG2 like in IWD?
    • Destruction: Subjective, but wouldn't the Finger of Death visual be more appropriate for BG1/2?
    • Grease: Affects a smaller radius in IWD:EE but no bonus to save like in BG1/2.
    • Chill Touch: It's different in IWD:EE but undead fear is problematic to implement.
    • Sleep: It affects only 2d4 HD of creatures in IWDEE but allows no save like it does in BG1/2 though it's awaken-on-hit. Also affects a small radius. I like this version of the spell better than BG1/2 which is a humongous radius for a L1 spell.
    • Expeditious Retreat: I actually think this spell is subpar for L1 because it disables everything except movement. In PnP this spell lasts for 3 rounds plus 1 round/level and the only limitation is no attacking while moving which is true in the IE anyway. I'd make this a simple 3 + 1 round/level caster-only speed haste which is appropriate given that a L3 spell does more in an area of effect.
    • Agannazar's Scorcher: The spell in IWD is weaker and it enables thief evasion for secondary targets (not the primary one though). Maybe secondary targets can use evasion in BG1/2 as well if thief evasion is implemented?
    • Decastave: I'd remove the glow and the SHAIR lighting effects from the base spell. DECASTA.itm needs to be updated to use red SHEARTH and glow.
    • Ghoul Touch: Slightly longer duration in IWD.
    • Lance of Disruption: Missing its smoke/trail .bams and .ini
    • Monster Summoning: These spells use IWD style summoning visuals which imo look better but they're not widely used in BG1/2. They also use the IWD style summoning smoke which should be changed to the BG style SPGFLSH1.vvc. Animal Summoning hasn't been changed so ideally, you should use the BG2 style monster summoning opcode (127) with the existing tables MONSUM0[4-7].2da. Wouldn't it be cool to summon Greater Basilisks which are already included in MONSUM07.2da?
    • Ice Storm: Is the BG or IWD version preferred? The damage and explosion count is different.
    • Emotion spells: the projectiles should appear more similar to the small area of effect sparkle area gold projectiles (i.e. HOLD.pro). Because of the reduced radius of Emotion Hopelessness what would make Emotion spells appealing is a spell immunity style menu for all 4 spells. They need to be added to HIDESPL.2da and a new master spell needs to be added with the same resname.2da pointing to the child spells.
    • Conjure Lesser Water Elemental: Should use BG style summoning opcode, like other Conjure Lesser Elemental spells.
    • Shroud of Flame: Status Icon doesn't work.
    • Summon Shadow, Shades, Demishadow Monsters, Shadow Monsters: I think SPPORTAL.vvc is more appropriate but it needs to be used via the BG2 monster summoning opcode because of a hardcoded delay at which the monsters appear (exact delay in ticks is keyed to the .vvc name).
    • Antimagic Shell: Status Icon doesn't work.
    • Death Fog: Would it make sense to change the effects (increasing damage & slow instead of removing summons) to IWD? The AI uses Death Spell instead to remove summons and it would be nice to differentiate this spell from DS.
    • Darts of Bone: DOBONE.itm uses IWD style visuals. Should be using necromancy/aqua SHEARTH plus accompanying glow and sound
    • Lich Touch: LTOUCH.spl should be using necromancy/aqua SHEARTH plus accompanying glow and sound. Currently using IWD-style visuals.
    • Otiluke's Freezing Sphere: The save to completely negate damage is a bit underwhelming compared to Cone of Cold which is save for half. It's a bit tricky because in IWD damage for many spells is capped at L30. Admittedly, it's an impractical spell in IWD as well since overkill from cold destroys loot.
    • Seven Eyes: Spell resnames in the 7EYES.2da need to be keyed to all the different clones/variations of BG1/2. Mod spells too if mod compatibility is a priority i.e. all the SCS spell duplicates. Eye of Fortitude should cast Shout not Vitriolic Sphere and target an area.
    • Mordenkainen's Force Blade: Why not use identical visuals to the L2 Flame Blade/L7 Mordy's Sword?
    • Horrid Wilting: Would be cool to have this spell affect water-based creatures like in IWD. Don't think damage scaling to L30 is necessary (it's party-friendly unlike in IWD).
    • Iron Body: Visuals should be similar to Iron Skins? It's currently using IWD-style visuals. Spell should protect against a wider range of petrification i.e. Basilisk Stare BASIGAZE.itm
    • Power Word Kill: in IWD it's an area of effect spell. It's not the strongest 9th level spell in BG2 so it could make sense to use IWD's version.

     

  4. 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.

  5. 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.

  6. 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!

  7. 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.

  8. 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.

  9. 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.

  10. Projectile areas of effect need to "hit" the center x,y of the affected characters which admittedly is suboptimal. This is especially true for hitting large creatures such as dragons.

  11. Edited the first post for clarity (jumbled opcode "special" bits 3,4,6,7, sorry!). Bits 6 and 7 function independently of any drain bits (0,1,3,4) but are often used together to achieve desired HP drain behavior. Bit7 in conjunction with bit1 is used in IWD:EE/SoD's "Shadow Pact" ability for shadows to prevent them from inflicting more damage on reverse HP drain than necessary to heal them to normal max HP.

    @Luke

    It appears as though opcode 245 is meant to apply BERSERKSTAGE1 on a hardcoded 1% chance on each hit for a certain duration but I'm unable to reproduce this behavior after hundreds of hits. Maybe there's a mistake in the code or I've been unlucky with the random number generator? Let me check with the programming team next week.

  12. OPCODES

    #12 (0xC) HP: Damage

    The flags defined in the "Special" field have received an update:

    • Bit 0 ⟶ Drain HP to caster (cumulative)
    • Bit 1 ⟶ As bit 0 but caster and target are reversed (cumulative)
    • Bit 3 ⟶ Drain HP to caster (non-cumulative)
    • Bit 4 ⟶ As bit 3 but caster and target are reversed (non-cumulative)
    • Bit 6 ⟶ Damage inflicted is limited to amount available by target (checks stat MINHITPOINTS and works in reverse if bits 1 or 4 are set)
    • Bit 7 ⟶ Damage inflicted is limited to the caster's MAXHITPOINTS minus CURRENTHP (works in reverse if bits 1 or 4 are set)
    • rest of the bits not mentioned here are unchanged
    • NOTE: Bits 0, 1, 3, and 4 are mutually exclusive, while bits 6 and 7 do not require any of the HP drain bits to be set to function. 

    In all cases, HP drain now only increases maximum HP if the character is at full health and there are extra HP remaining from the drain, which can happen even during the drain. Current HP gained is always cumulative (bits 0,1,3,4) if the caster is injured. Extra HP gained by non-cumulative HP drain (bits 3,4) may still coexist on the same creature. This means that the caster can still benefit from lower HP drain if the effect expires later than the higher HP drain effect.

    Example: The caster at 3/4 HP can increase his/her HP to 7/7 with one casting of Larloch's Minor Drain (if 4 is rolled) and 8/8 with another casting if 4 is rolled again, otherwise nothing seems to happen despite the damage inflicted. The caster may further benefit with additional castings if injured, but cannot go beyond 8/8 hp. This all assumes there is sufficient HP to drain (since bit 6 is now set in SPWI119.spl).

    Extra maximum HP effects carried on the .cre now have their mschool, msectype, resource, resist dispel, dispel level etc properly set (fixed in 2.6). See below for how non-cumulative HP gain is stored.

    #18 (0x12) HP: Maximum HP Modifier

    • To differentiate non-cumulative HP gain from other forms of HP gain, parameter2 is set internally to 6. As mentioned previously, multiple effects of param2=6 can be carried by the creature at the same time and only the largest value is used when calculating extra HP. Hence the term "noncumulative coexisting". This functionality doesn't interact with other forms (param2 != 6) of HP gain, and cumulative HP drain doesn't use param2=6. 
    • The issue where Dice values generate extra HP has now been fixed.

    #61 (0x3D) Creature RGB color fade

    This opcode has been fixed to behave as it did in original IWD. The creature will instantly be covered by a color overlay which then fades out. The color overlay will not fade back in. It's otherwise similar to opcode 50, where the color overlay fades onto the creature and then fades back out.

    #243 (0xF3) Item: Drain Item Charges

    You can drain charges of a particular item if the resource field is used.

    #324 (0x144) Protection: Immunity to Resource and Message

    The name of the correct resource is displayed instead of the name of the resource the effect instance is located in. It now works as intended in 2.6.

    New smart feature: It will attempt to identify the name of the parent spell if this effect is located in a child spell with no valid name. It does in the following manner: if the effect is used within a spell that has no name but there is a spell in the game who's resname is one character shorter with a valid name, then it will display that name. This feature is used by Sunfire (SPWI523D.spl) in IWD:EE to check for thief evasion.

    This feature will also attempt to look for an identical resname.itm and display that (identified/unidentified) if the .spl the effect is in doesn't have a valid name.

    PROJECTILE FILE FORMAT

    DWORD at 0x02c (Extended flags - Bit 1 ⟶ Pass target)

    Fixed an issue where projectile would target the same creatures several times. The projectile targets each creature only once unless Bit 0 is set (bounce from walls) at which point during the bounce, the targets are cleared and the projectile can target previously hit creatures once more (as expected).

    DWORD at 0x200 (Area of effect flags - Bit 11 ⟶ Cone Area of Effect) & WORD at 0x202 (Ray Count)

    When the Ray Count (WORD at 0x202) is nonzero, the explosion is suppressed and rays are generated instead. Setting the "Cone Area of Effect" bit will cause the rays to spawn at the location of the caster. If this bit is not set and the Ray Count is nonzero, then the rays will spawn at the location of the explosion of the projectile.

    The direction of the first ray is no longer fixed towards the southeast but is determined as follows: 1.) if the cone bit is disabled the first ray will continue in the same direction as the parent projectile using a vector of the caster's location to the explosion point 2.) if the cone bit is enabled the first ray will travel from the caster's position towards the destination/casting point. Further rays as generated based on how cone angle/angle between rays (WORD at 0x224) is set, see below.

    In 2.6, you may nest rays in one another to construct complex-shaped areas of effect. In terms of nesting multiple rays, the point of origin of the ray one higher up the "chain" is treated as the caster's position.

    WORD at 0x206 (Explosion size)

    The function of this is unchanged in 2.6 when Ray Count is nonzero. This explanation is nonetheless informative to understanding the Ray feature:

    The distance defined in the explosion defines how far the ray travels. For lightning bolt-type projectiles, this distance is used up, even as the bolt bounces (see LIGHTB.pro in BG1/2:EE and IDPRO40.pro in IWD:EE as examples). For single,-target projectiles, they simply travel that distance before disappearing. For area-of-effect projectiles (i.e. FIREBALL.pro), they explode normally when reaching that distance. And as mentioned earlier, area-of-effect child projectiles can also use the ray feature themselves to generate additional rays with the direction vector determined as mentioned above.

    WORD at 0x224 (cone angle/angle between rays)

    When the Ray Count is nonzero, this will generate additional rays relative to the initial direction of the first ray. They will be generated on alternating sides of the first ray at angle increments set by this field. For example, if "Ray Count" is set to 5 and this field is set to 45, then rays will be generated at angles -90,-45,0,45,90 degrees relative to the direction vector as described above. Note that if Ray Count is an even number, the ray group will be asymmetrical unless you rotate them, see below. In Spiritual Wrath's case (IDPRO312.pro in IWD:EE), there are 4 rays at 90 degree angles from one another, making them appear symmetrical.

    WORD at 0x226 (rotate rays clockwise)

    Setting this field (0-359) will rotate the entire ray group clockwise. Note: it's been mentioned erroneously that it's counterclockwise but it's actually clockwise, sorry for the mistake!

    No projectile in the unmodded game uses this field.

  13. I have started a topic over 10 years ago in an attempt to set a commonly-agreed list of IDS_OF_SYMBOL names, originally meant for mega-mods. Heck, this was before the days of the EEs. Time really flies.

    http://www.shsforums.net/topic/46717-add-spell-in-spell-mods/

    Not much has come out of that since the traditional mega-mods have long been abandoned. It's certainly a good idea to have agree on a list of names so that mod-added ADD_SPELLs replace each other in order of installation without generating doublettes.

  14. On 1/6/2021 at 7:30 PM, Luke said:

    Why the need of two consecutive subspells???

    Because of a glitch with autopause messing up the effect order. Until that is fixed, implementation has to be water tight. #RDREMOV.spl is also conventiently used to clear temporary abilities for Mislead/PI/Simulacra when they are created.

  15. A bit of extra info: if opcode 333 has a saving throw attached to it, that save will be rolled each time the effect repeats and the effect self-terminates on a successful saving throw but not other effects from the same resource like opcode 321.

    Creatures carrying effects that were applied via opcodes 326/333 will use the dispel.level of the target of 326/333 rather than the original caster.

    This functionality is present as of patch 2.5 which may/may not be fixed in the future.

×
×
  • Create New...