Jump to content

SR Revised V1.3.900 (2022 August 8th)


Recommended Posts

See, and here I'm automatically thinking, "Use something like 'LPF DELETE_EFFECT INT_VAR OPCODE = 328 END' to simplify fixing a file instead of having to use NI/DLTCEP...and then copy the corrected resource to the relevant sp(wi/pr)### folder and remove the patch from main_component so that nobody has to both copy AND patch it again!". main_component would look like such a disaster if you started doing everything that way. I like everything neat and tidy, :p...but you're absolutely right from a comparative point of view - comparing resource files is way more difficult than comparing patches.

Link to comment

...

 

@Grammarsalad: Uh, you know, I would, because everyone seems to just love github, but my few experiences with github's web interface have been extremely infuriating to the point of never wanting to touch the thing. I've been told that there are other ways to use github that don't involve the ridiculous web interface, but... As I've said to subtledoctor, anything SRR can be used as anyone pleases. Like IRR, I only started messing around with things for my own enjoyment - anything beyond that is a bonus. However, I would warn you, as subtledoctor discovered...just compare my main_component.tpa to b15's...and THEN compare my arcane.tra to b15's arcane.tra. Ha.

 

...

Understood. My thinking was to incorporate some of your fixes to lighten the load, so to speak. But, maybe subtledoctor is already doing this(?)

Link to comment

Mad Mate has also been fixing some stuff, some of which duplicates the work I did here. But his version is much cleaner - he went back and converted kreso's b15 changes as commits on top of b14.

I talked to him about getting everything done so far into a single branch with commits for various fixes. Once that branch is caught up, we should talk about moving forward. (My suggestion at that point would be, we can each fork it and make fixes and make pull requests to get the fixes into that branch. And Mike, in turn, can inspect the commits to that branch and incorporate them into the G3 main branch, as he sees fit.

Edited by subtledoctor
Link to comment

Mad Mate has also been fixing some stuff, some of which duplicates the work I did here. But his version is much cleaner - he went back and converted kreso's b15 changes as commits on top of b14.

 

I talked to him about getting everything dobe so far into a single branch with commits for various fixes. Once that branch is caught up, we should talk about moving forward. (My suggestion at that point would be, we can each fork it abd make fixes and make pull requests to get the fixes into that branch. And Mike, in turn, can inspect the commits to that branch and incorporate them into the G3 main branch, as he sees fit.

Sure, just let me know if/when you need my help.

Link to comment

@#bo: I made no such change. I just compared from b15's version of that file to mine, and neither make any mention of "#bo". What version did your kreso_eestatsr.tph come from?

Whoa. I just found this line in my unreleased mod:

SNPRINT 3 ~spl_prefix~ ~%SOURCE_RES%~
PATCH_IF NOT (~%spl_prefix%~ STRING_EQUAL_CASE ~#bo~) BEGIN
At first I wondered if I've bee hacked or got a virus. But no... which means I must have added that code... but I had no memory of doing so. Then I had a bit of a Fight Club moment... before finally realizing that I did in fact add it, for IWDEE compatibility. Mods that patch spells will often choke on the stupid "#bonecir.spl" which has headers out of order, or a corrupt effect or something. Even reading data from the spell causes Weidu to error out sometimes. So I added those two lines to have some functions skip that spell.

 

Mystery solved! :jump:

Edited by subtledoctor
Link to comment

An incomplete list of bugs affecting the official version of SR b15:

  • Almost all AoE projectiles that are not 30' are the wrong size. 65 is not '5 - 42 is. 200 is not 20', nor is 190 - 170 is.
  • Some classes and their kits do not really have updated abilities. spcl212 (Paladins' Detect Alignment), spcl222 (Cavalier's Remove Fear), spcl231 (Inqusitor's Dispel Magic), spcl232 (Inquisitor's True Seeing), spcl732 (Priest of Helm's True Seeing), spcl742 (Priest of Lathander's Halt Undead), and possibly a few others.
  • Gust of Wind/Zone of Sweet Air inconsistencies - either separate them into two different spells (pulse-like effect that lasts a few rounds for Zone a la True Seeing?), or make them the same.
  • Dispel Magic/Remove Magic inconsistencies. In vanilla, Dispel Magic is the one that targets everyone, Remove Magic is the one that targets only enemies, and SR tried to merge them into all being Remove Magic while calling all of them Dispel Magic, but it's all messed up, since both (arcane) spells are now called Dispel Magic, you can still learn both (but their scrolls don't stack), and the original functions of both are still in effect (and the Cleric and innates versions of Dispel Magic don't all act the same). Remove Magic is friendlier to AI (who may have bad targeting that can accidentally lead to them to hitting themselves if they cast Dispel Magic instead of Remove Magic) - therefore, probably make Remove Magic the default, but actually do it correctly.
  • Insect spells not properly protected against from the secondary effect. I recommend immunity to the secondary effect, but not the primary - essentially, if the AI cast insects upon someone protected by a Fire Shield, they will not be affected, BUT the insects will still spread to other nearby characters.
  • The spell selection variant of Ice Lance's icon is messed up (spwi327c.bam? One of those, can't ever remember which variant is which off of the top of my head).
  • Un/Holy Word, among others such as Color Spray and possibly Dolorous Decay, should have its slow effect relegated to a secondary spell to properly work with the slow sectype (you don't want Haste canceling out confusion and blindness and such, right?).
  • Physical Mirror, and Protection from Missiles, do not protect against many EE and 1pp projectiles, as each projectile type has to protected against individually, and 1pp and the EEs add many new types. I have fixed this to a degree already for the 1pp installer via the BWPFP, but this must be handled by SR itself for the EEs.
  • Spell deflection spells should be updated via a patched in opcode for the EEs to make use of new EE 2.5 functionality.
  • Vampiric effects (Larloch's, Vampiric Touch, etc.) should not affect a variety of creature types (illusory, golems, undead, etc.).
  • Many wrong or otherwise misleading descriptions, such as Feeblemind (it does not reduce creatures' intelligence to 3...it does what Feeblemind has always done), Haste (no longer single target), Reflected Image (I don't think this was ever updated to say that it only creates one image per round instead of an image every time attacked), Aid (it is not a dice roll for the max HP bonus - and it cannot be, since the opcode does not support it), and likely more.
  • Spells not properly de-activated for the EEs (e.g. Protection from (Element), among other supposedly disabled spells - SR's hidespl.2da, in other words, is not working for the EEs...and I THINK needs updating for ToBEx games, too).
  • AI continuing to exploit the existence of some Spell Immunities when the player cannot even access them. These should be replaced as possible (e.g. SI: Illusion with True Seeing, SI: Alteration with Ghostform, etc.).
  • Stone to Flesh exists as a spell you can learn from scrolls throughout BG2, but not as a selectable spell for sorcerers. If this spell is to cease its existence by way of Break Enchantment taking its place, then another spell should probably take its scroll.
  • Phantom Blade is missing its special effect.
  • "The spin203.spl issue is on line 2924 of /spell_rev/lib/kreso_eestatSR.tph. Should be changed from "spwi203" to "spin105".
  • Free Action, Minor Globe of Invulnerability, and Globe of Invulnerability cause CTDs for non-EE users as a result of invalid opcodes.
  • kreso_petrification.tph's is missing the "BUT_ONLY" flag in several places, causing many pointless overwrites.
  • BAM issues. SR's entire "bams" folder needs to be redone - avoid pointless overwrites and maintain compatibility with other mods. This is more annoying to fix than you might expect, since it means fixing the icons for spells that are using these overwritten icons, and yet it's unfortunately necessary to stop screwing over other spells and mods using these icons.
  • The stupid basilisks from MS9 are the worst idea for a mod that removes the Protection from Petrification spell, especially when Potions of Mirrored Eyes basically don't exist IIRC in BG2. Just the very worst idea.
  • Prismatic Mantle should probably receive protection from weapons again. IIRC, this was an unnoted(?) change from kreso's latest version, and while the player may not expect it, that may not necessarily be the case for the AI. My solution was to make the prismatic effect occur only 50% of the time, but that's just me.
  • A number of arcane spells are selectable in EE games that should be disabled, I believe.
  • Arcane spells from the wrong spell schools should be removed from specialist mage (playable) characters.
  • Disabled arcane spells should be stripped from characters via the "update spellbooks" component.
  • Prevent Fire Shield-like effects from targeting allied characters (as misfires on friendly creatures as a result of casting spells in the nearby vicinity can occur).
  • Prevent the rapid-firing of Fire Shield-like effects (especially endless loops of back and forth Fire Shield-like effects between two different characters) - can be done through a 1 second immunity .eff.
  • IIRC, Emotion: Despair has a -3 saving throw penalty instead of a -2 (and there's more where that came from, but I don't remember exactly what else had stuff like this).
  • I vaguely recall there being some animation problems with summoned creatures regarding their weapon animations (was it Hobgoblins who were lacking proper weapon animations? Can't quite recall).
  • Disintegrate has incorrect saving throw types for the last 2 headers (IIRC, it should be vs. breath, but it's vs. spell).
  • Tenser's Transformation issues that were discussed recently on the forums.
  • IIRC, some of Enchanted Weapons' descriptions are messed up, Composite Long Bow +3 is not an option, and new to the EEs, Dart +3, Wakizashi +3, and Ninja-To +3 are not options.
  • Planetars have 3 regeneration per second instead of 1 per 3 seconds. In other words, they have 9x as much regeneration as they should.
  • Divine Power has the same sort of problem regarding ApR as did Tenser's.

Glaring (I feel, at least) problems:

  • Anti-magic attacks should penetrate improved invisibility. I do not know whether this is already true in the EEs, but from what I remembering testing, it was not in the non-EEs and made fighting Improved Invisibility spellcasters with Non-Detection applied quite impossible. SCS can fix this, but SR should, too. This is also something that should definitely be noted in the spell descriptions.
  • Chill Touch should be more like Shocking Grasp (in terms of damage scaling).
  • Ice Lance and Acid Shield are not properly developed to having scaling effects like the spells they're closest to (Lightning Bolt and Fire Shield respectively), and are not really in any position to compete with them as such (well, Acid Shield is actually probably too strong at first, but then gets outpaced by Fire Shield, which makes it a worse spell at a higher level). In the same vein, Vitriolic Sphere could probably use a re-design too, but it at least mostly works as is, IIRC.
  • Same with the Regenerate Wound series. Neat idea that can work if done right, awful execution that just kind of gimps druids since they no longer have access to the Cure spells and the Regenerate Wounds spells simply do not compete by any stretch of the imagination.
  • Scroll problems (for example, Summon Nishruu doesn't exist anymore because of bad scroll allocation? The spell's still there, but you can't get it into your spellbook except via character creation).
  • Halt Undead and Control Undead are affected by magic resistance. Doesn't that make them kind of...useless? Not sure if bug or just absolutely terrible spells. Lower Resistance does exist, yes, but...these spells are specifically for targeting the undead, and many undead have way too high of spell resistance to effectively be combated by Lower Resistance.
  • Contagion is just the worst spell and there's no reason it should've replaced Rigid Thinking, which is an actually half-decent disable spell for clerics. As opposed to Contagion, which is just an annoyance against the player ("oh boy, I have to prepare a cure disease spell") and completely useless against the AI.

More that I cannot currently remember. A lot of reported bugs that can be found throughout the forums, and a lot of not reported bugs that can only be found by trawling through each spell (I remember a lot of incorrect saving throw penalties). I've already fixed all of these for SRR (...well, hopefully). Some are arguable (e.g. Halt/Control Undead), I understand. I still have other things I'm going to add to this post, but I gotta go right now and I don't want to leave this unattended, so maybe I'll post again just to reserve a post.

 

3) afaik they're inteded to be different spells. I even had a rather cute custom animation for SoZA - the spell was supposed to give immunity to cloud-based spells to the caster. Gust of Wind was supposed to be able to clear insects instead.

 

4) idea was to keep the spell name ("Dispel magic") but make it work as vanilla "Remove" (affecting only enemies). Both cleric and mage version should affect enemies only.

 

7) I fixed this locally, but never uploaded the thing since my internet connection sucks beyond measure.

 

12) I'm rather sure this doesn't happen. The only spell immunities used by SCS are Divination, Abjuration, and very rarely Conjuration (afaik, only very high level fighter-mages have a chance to use this).

I don't know vanilla game.

 

14) the spell should definitely be replaced. I had an idea; I'll check my PMs with Demi about it.

 

21) The spell is OP; very OP. It should probably work as a "disabling fireshield" with random effects like stun, feeblemind, confusion, hold etc rather than being a virtual instagib. Demi's idea was to make this spell like it's PnP counterpart...but the result is kinda crazy in BG.

 

Glaring Problems

 

 

1) No, they shouldn't. You need to remove invisibility first or cast True seeing to make imp.invisible enemies a valid target.

Also, Spell Thrust doesn't require a target so---

 

4) yes, they're weak. Refinements mod had a neat implementation for a druid HLA (cure x HP/round for y rounds to everyone around the caster, slows druid on use). Maybe tone down duration, but buff regen rate.

 

6) the spells are useless, it doesn't matter if MR affects them or not....7th level should do massive damage to Liches/vampires to make it worth, but even so , with things such as Sunray etc using anti-undead spells is pretty pointless.

Link to comment

Mods that patch spells will often choke on the stupid "#bonecir.spl" which has headers out of order, or a corrupt effect or something. Even reading data from the spell causes Weidu to error out sometimes. So I added those two lines to have some functions skip that spell.

What's wrong with #bonecir.spl? Looking in NI, it looks okay.

 

I ask partly because # was the prefix I used in IWD-in-BG2, so that spell probably came into IWDEE directly from my converter. And it's auto-built, so if there's something wrong with it there might be a broader issue with some function I use - although those libraries have been revised lots since then.

Link to comment

What's wrong with #bonecir.spl? Looking in NI, it looks okay.

I ask partly because # was the prefix I used in IWD-in-BG2, so that spell probably came into IWDEE directly from my converter. And it's auto-built, so if there's something wrong with it there might be a broader issue with some function I use - although those libraries have been revised lots since then.

In IWDEE it's signature is "SPL" instead of "SPL ".

The character probably won't display in the post, but its character 0x03, while it should be 0x20 (space).

The spell isn't actually used in IWDEE (it crashes if used).

Link to comment

Certain Weidu functions - I don't remember exactly right now, but probably ALTER_EFFECT and its ilk - cause an error that stops the install when they hit #bonecir.spl, even if their parameters don't match anything in the spell.

 

Something like that. Unfortunately the spell has been left in that state in IWDEE through several patches, so we need to code around it.

Link to comment

Certain Weidu functions - I don't remember exactly right now, but probably ALTER_EFFECT and its ilk - cause an error that stops the install when they hit #bonecir.spl, even if their parameters don't match anything in the spell.

 

Something like that. Unfortunately the spell has been left in that state in IWDEE through several patches, so we need to code around it.

No, we need to find out what the problem is and fix it. (It could even be a WEIDU function error, after all.) Do you have a reproducible case where you can get WEIDU to throw an error?

Link to comment

No, we need to find out what the problem is and fix it. (It could even be a WEIDU function error, after all.) Do you have a reproducible case where you can get WEIDU to throw an error?

I agree in the abstract. But when is Beamdog going to drop the next patch for IWDEE? Should we throw up our hands and say "no Spell Revisions until then?" Or should we add a couple lines of code to make SR work?

 

As for reproducing, it's easy: grab my branch of SR "4.15.5" from here

https://github.com/subtledoctor/SpellRevisions

 

Comment out lines 111 and 115 of spell_rev/lib/kreso_haste_slow.tph, and try to install the mod on IWDEE. You'll get

FAILURE:
ERROR: CLONE_EFFECT does not support file type SPL
ERROR: [#BONECIR.SPL] -> [override/#BONECIR.SPL] Patching Failed (COPY) (Failure("ERROR: CLONE_EFFECT does not support file type SPL\003"))
Stopping installation because of error.
I suppose CLONE_EFFECT et al. could be patched to handle the very slight deviation in the file. How it is addressed doesn't really matter to me, as long as I get to use SR on IWDEE. Edited by subtledoctor
Link to comment

Just put this in the mod somewhere before any regexp that cycles through spells:

 

ACTION_IF FILE_EXISTS_IN_GAME "#bonecir.spl" BEGIN
  COPY_EXISTING "#bonecir.spl" override
      WRITE_ASCII 0x0 ~SPL V1  ~
  BUT_ONLY
END
(#bonecir.spl has a slightly malformed version identifier. It mostly doesn't make any difference, but CLONE_EFFECT et al are careful to check that the filetype they're patching is a supported version.)

 

EDIT:

 

On slightly more research, "#bonecir.spl" is no longer used in the game anyway - it's cruft left over from IWD-in-BG2 and the IWDEE developers went a different way. So you might as well just do

 

ACTION_IF FILE_EXISTS_IN_GAME "#bonecir.spl" BEGIN
  DISABLE_FROM_KEY "#bonecir.spl"
END
ACTION_IF FILE_EXISTS "override/#bonecir.spl" BEGIN
    DELETE "override/#bonecir.spl"
END
Edited by DavidW
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...