Jump to content


  • Posts

  • Joined

  • Last visited

Everything posted by Galactygon

  1. 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:
  2. Careful: MT and all its subspells should be removed by by all items/spells where Cure Disease opcode is present. It's fine doing lists of 321s as a mod, but is too hacky for 2.6.
  3. Oops, my bad. Looks like this hasn't been implemented. Spike Stones does display "Slow" in IWD:EE as well. 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.
  4. I've gone through the spells, here's my exhaustive feedback. Most of it are bugs and inconsistencies and some are subjective balance issues:
  5. 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. That's debatable and maybe you're right. I'll let @CamDawgvoice his opinion. Whatever the case, mechanics should be consistent across the board.
  6. 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.
  7. Re IWD:EE 2.6.6. I'll leave the rest to @CamDawg: 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. 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. That 0 damage effect is there for show. It doesn't disrupt spellcasting. 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. 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? 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. 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. 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? 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. Thanks! Should be set to 0. The splprot filter is an "IF" "ELSE" so everybody is affected by one of the child spells. I don't see an issue here!
  8. 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.
  9. Okay then yes, we should have identical behavior in Blood Rage. 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.
  10. 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.
  11. Fixing concentration is on my to-do list but I have to familiarize myself with the exact mechanics of it and therefore haven't yet figured out repro steps. It would make my life much easier if you folks can come up with repro steps so all I have to do is relay the ticket internally.
  12. Evasion Check has been softcoded a long time ago (since 2.5?) so it's linked to the entry 252 EVASION in the SPLSTATE.ids rather than any thief levels.
  13. Thanks, reported in PP even if he already knows.
  14. 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.
  15. This is a known issue, at least when polymorphing is applied via equipped effects as they are in BG1/2:EE. This can be repro'd by: casting Shapechange shapechanging into a Mind Flayer shapechanging into an Earth Elemental
  16. You will need to modify LIGHTB.pro (BG1/2:EE) or IDPRO40.pro (IWD:EE) to use 207 (now 206) as the explosion (not secondary) projectile: WRITE_SHORT 0x21a 207 // Change explosion projectile
  17. 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.
  18. 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.
  19. I am unable to reproduce the issue in of BG2:EE (without SCS installed). Does SCS patch WAND13.itm?
  20. 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.
  21. 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.
  22. 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.
  23. Thanks, edited original post for accuracy. Is targettype 9-original caster properly used on reflection by spell turning? In that case, original caster should switch to the creature doing the reflection. Some existing spells use the parent spell to affect turning/deflection (nonzero power values) while others have their nonzero resist/dispel/power values used in the child .spls. I will report this inconsistency in Redmine on a good repro case.
  • Create New...