Jump to content

jmerry's Tweak Collection


Recommended Posts

FYI in my BGEE game the Temple of Lathander in Beregost (TEM3402.STO) sells a cure called "J8#GRNF.SPL" but there is no such spell in the game, causing a crash.

I was about to paste my weidu.log, and still will if needed, but I am fairly certain that I have no mods installed that remove J8#GRNF.SPL from the game. So it is more likely that the mod neglected to copy it in.  (Just my speculation.)

Edited by subtledoctor
Link to comment

That's from the "temple cures work better" component. Copy SPPR713 (Greater Restoration) to J8#GRNF, delete the opcode 93 fatigue effect.

As the base spell exists in standard BGEE, this should be fine. I don't see why that would go wrong other than a glitch of some kind. If it's in the store (replacing SPPR713), then at least some of the component was installed successfully. And even if a mod deleted the spell from the game entirely somehow, that would already have broken the store before my component got there.

Restoration being in that particular temple to be replaced - that's mod influence. Or possibly SoD. The standard pre-SoD BGEE temples don't offer either lesser restoration or greater restoration at all, so the component would only replace their versions of Dispel Magic.

This component is identical across all versions of my mod, going back even before my first release. Here's the code:

Spoiler

BEGIN @15000 DESIGNATED 150
GROUP @2
/* INCLUDE ~jtweaks/resource/functions.tph~ (New function ALTER_STORE_CURE needed) */
    COPY_EXISTING ~SPPR303.spl~ ~override/J8#TMDIS.SPL~
        LPF ALTER_SPELL_HEADER INT_VAR header_type=1 target=1 projectile=1 END
        LPF ALTER_SPELL_EFFECT INT_VAR match_opcode=58 parameter1=0 END
    BUT_ONLY // Single-target dispel, no level check
    COPY_EXISTING ~SPPR417.spl~ ~override/J8#LRNF.SPL~
        LPF DELETE_EFFECT INT_VAR match_opcode=93 END
    BUT_ONLY // Lesser restoration without fatigue
    COPY_EXISTING ~SPPR713.spl~ ~override/J8#GRNF.SPL~
        LPF DELETE_EFFECT INT_VAR match_opcode=93 END
    BUT_ONLY // Greater restoration without fatigue
    COPY_EXISTING_REGEXP GLOB ~^.+\.STO$~ ~override~
        LPF ALTER_STORE_CURE STR_VAR match_resref=SPPR303 resref=J8#TMDIS END
        LPF ALTER_STORE_CURE STR_VAR match_resref=SPPR417 resref=J8#LRNF END
        LPF ALTER_STORE_CURE STR_VAR match_resref=SPPR713 resref=J8#GRNF END
    BUT_ONLY // Replace Dispel Magic, Lesser Restoration, Greater Restoration.
 

Reinstalling that component is about all I can think of here.

Link to comment

Don't bother me about GitHub. If I choose to enter that platform, this will go there. Until then, no.

As for Spell Revisions, I have no idea because I'm not familiar with the mod at all. I try to code with compatibility in mind, but I certainly haven't taken any specific interactions with Spell Revisions into consideration at all.

 

On a brighter note, I've started work on the next version of the mod. With both some new components and a bunch of fixes to old components, version 3.0 is coming.

Link to comment

Thankee!

For spell changes, I wasn't sure if you patched spells or overwrote files.

Request: On BeamDog/G3/etc., put the full documentation of each change immediately after each title (Wilson's strength doesn't stack indefinitely, etc.) to make it easy for people to determine at a glance whether they should download this.

Link to comment

Updated to 3.0. That bug with my temple cure component has been fixed; it will no longer cause crashes when another mod has already removed fatigue from restoration. Also, various other bug fixes, a full run-through recoding all sorts of things to reflect my improving skills, and fifteen new components.

The first post here has been updated with full descriptions of all components. Subcomponents have also been included in the short component list.

Edited by jmerry
Link to comment

I thought I was good on this one, but no. I have to add an install order advisory for an interaction with SCS.

Advisory: The SCS component "Smarter Beholders" will, if installed after my component "Antimagic Ray and Spell Shield -> Spell Shield blocks one antimagic ray", effectively nullify the effect of my component. If you want both of these, my mod's component must be installed after the SCS component.

Given how SCS edits the antimagic rays (adding effects to the beginning), there is nothing I can do to make my tweak work if it's installed first. Installing it after SCS is the only way to make the two work together properly.

Link to comment

Updated to 3.1, with two small new components and bug fixes to two existing components. The changes:

- "Random spawns scale with difficulty": Bugs fixed. No longer causes errors when installed without "Bigger random spawns", no longer causes errors when applied to areas that lack rest encounter tables. That latter bug isn't just an issue with my mod, and I've posted a mini-library over in the macros thread so other people can fix the same issue. (Edits that change the size of an ARE file can cause out-of-bounds read errors when applied to areas that lack the rest encounter table.)

- "Shapeshift corrections": No longer causes errors when the druid-only and mage-only versions are installed on BGEE.

- New component "Warrior and rogue HLAs can't be removed by spell-breakers": Nonmagical abilities such as Hardiness and Evasion are no longer subject to removal by spells such as Breach or Spell Thrust. Included as a "rule change" because the EE Fixpack discussion couldn't come to a consensus on whether it was a bug to fix in that project.

- New component "Deactivate Spellhold picture monsters until their doors are opened": Exactly what it sounds like. No real impact without other mods, but if an AI mod gives some of those monsters the ability to teleport (SCS), you won't see them pop out and fight you before you can open their rooms up.

I should have had this out a month ago, but ... well, I'm way too much of a procrastinator.

Link to comment

Hi, I'm having some trouble with a few components (like Death Gaze against Aec'Letec and curing green slime poison) interacting with Artisan's Kitpack.

ERROR: CLONE_EFFECT does not support file type EFF
ERROR: [C0BG#04A.SPL] -> [override/C0BG#04A.SPL] Patching Failed (COPY) (Failure("ERROR: CLONE_EFFECT does not support file type EFF "))
Stopping installation because of error.

I've identified the C0BG files as part of Artisan's Blackguard revision. There are a few of those but only that one causes the issue, and I can't see what could be wrong about it or if if it was changed by some other mod.

C0BG#04A.SPL

Link to comment

It's a malformed file; extension SPL, header says EFF. Looking at it in NI, I'm pretty sure it's actually an EFF file that's mislabeled. Just about anything that does a global pass through all SPL files would choke on it; nothing special about my component here.

Interpreted as a SPL, it's nonsense. Interpreted as an EFF ... opcode = 0xE8 (232, cast spell on condition), target = 1 (self), power = 0, parameter 1 = 0 (target self), parameter 2 = 8 (condition = someone's close, once per round), timing mode = 9 (permanent), duration = 0, probability 1 = 100, probability 2 = 0, resource = C0BG#04B, dice = 0d0, saving throw = none, no dispel or MR, everything else zeros.

So, what it's supposed to do is not what my component is trying to patch. I suspect it doesn't work, because with the wrong extension it doesn't get called by whatever's supposed to use this effect. Blind hotfix attempt: change the extension of that file to .EFF.

[Edit. I took a look at the Artisan's Kitpack. Here's the offending snippet, in blackguard.tpa:

COPY_EXISTING ~C0PAL01.EFF~ ~OVERRIDE/C0BG#04A.SPL~
WRITE_ASCII 0x30 ~C0BG#04B~

Just a simple mistake, really. There don't look to be any namespace collisions, so renaming that ".SPL" to the .EFF it's meant to be should fix both the blackguard's permanent Aura of Despair and any interactions with future mod installs.]

And the pithy summary: EFF that file.

Edited by jmerry
Link to comment
21 hours ago, jmerry said:

So, what it's supposed to do is not what my component is trying to patch.

Does not your component have a sanity check... aka:

    COPY_EXISTING_REGEXP GLOB ~^.+\.spl$~ ~override~
    PATCH_IF (SOURCE_SIZE > 0xf1) THEN BEGIN 						// protects against invalid spl files

 

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