Jump to content

SR V4 Beta 18


Mike1072

Recommended Posts

I’ve noticed myself recently these graphic anomalies about SR v4_beta 18- 5 for the arcane list and a handful of divine spells (Gust of Wind, etc) - so is it possible to have in a near future fixes for them, fully integrated in the mod ? Without to make a new version, of course (SR_v4_beta 18.1 for example). I think it could be made quickly by experienced modders. Thank you for response.

Link to comment
7 hours ago, subtledoctor said:

In adding spell projectiles to clearair.2da, SR 4b18 adds spell names with two words, rather than a single string joined by an underscore.  This means there are three columns in the 2da file, which may be problematic.

Thanks, will fix.

On 2/5/2020 at 9:07 AM, Luke said:

For each spell that lets you polymorph into some creature (e.g., WIZARD_SHAPECHANGE and the like), you might want to disable the following buttons (via opcode #144): Stealth, Thieving, Turn undead, Bard song and Find traps.

Guess it makes sense...?

Good suggestion.  It's not a super high priority, but I'll try to write it down so it doesn't get lost.

Link to comment

SR 4b18 seems to install Mass Regenerate as CLERIC_PROTECTION_FROM_FIRE at SPPR523.spl. Not sure whether:

  • that's an intended substitution, or
  • it should be ADD_SPELL'd with its own IDS name, or maybe
  • it should overwrite SPPR523 but change its IDS name?

If one of the latter two is intended, then I think it's a bug.  If the first one is intended, that's fine, I just need to account for it in FnP.

Link to comment
3 hours ago, subtledoctor said:

SR 4b18 seems to install Mass Regenerate as CLERIC_PROTECTION_FROM_FIRE at SPPR523.spl. Not sure whether:

  • that's an intended substitution, or
  • it should be ADD_SPELL'd with its own IDS name, or maybe
  • it should overwrite SPPR523 but change its IDS name?

If one of the latter two is intended, then I think it's a bug.  If the first one is intended, that's fine, I just need to account for it in FnP.

Isn't it add_spelled with its own ids entry? Straight from SR's main_component.tpa:

ADD_SPELL ~spell_rev\sppr5##\sppr524.spl~ 1 5 ~CLERIC_MASS_REGENERATE~ // Mass Regenerate

Link to comment

I just reinstalled it to get a screenshot and... this time it is correct.  Really weird.  Unless it has something to do with SCS...?  Hang on.

EDIT - yeah, sorry, it's an SCS problem.  I only installed the IWD spells on top of SR, I didn't think they would interact.  But SCS IWD spell components actually screw up the IDS names of various SR spells - I think because it was last updated before SR moved to using ADD_SPELL.  I thought that would only happen with the AI component but it must be in the ALWAYS block or something.

Edited by subtledoctor
Link to comment
8 hours ago, subtledoctor said:

I just reinstalled it to get a screenshot and... this time it is correct.  Really weird.  Unless it has something to do with SCS...?  Hang on.

EDIT - yeah, sorry, it's an SCS problem.  I only installed the IWD spells on top of SR, I didn't think they would interact.  But SCS IWD spell components actually screw up the IDS names of various SR spells - I think because it was last updated before SR moved to using ADD_SPELL.  I thought that would only happen with the AI component but it must be in the ALWAYS block or something.

In retrospect, updating SR to switch to add_spl specifically for SCS while DavidW is gone and SCS can't be updated to handle it properly was perhaps not the greatest idea, :p.

Link to comment

The switch to ADD_SPELL wasn't to accommodate SCS; it was to improve compatibility with other spell-adding mods.  The recent effort was motivated by DavidW's post about the workaround he was using to add SR spells to spell.ids, but using ADD_SPELL had been a goal for a long time.

Players can use SRv4b16 with SCS 32.7 until SCS receives a compatibility update.

Any modders who want to look into a hotfix for SCS, feel free.  I imagine it will consist of removing the code SCS uses to adjust spell.ids for SR and then doing a search/replace for any IDS references that differ between DavidW's list and the SR implementation.  Take a look at this post for details on the different names and the first post in that topic for the code SCS is using to adjust spell.ids for SR.

Link to comment
5 hours ago, Mike1072 said:

The switch to ADD_SPELL wasn't to accommodate SCS; it was to improve compatibility with other spell-adding mods.  The recent effort was motivated by DavidW's post about the workaround he was using to add SR spells to spell.ids, but using ADD_SPELL had been a goal for a long time.

Players can use SRv4b16 with SCS 32.7 until SCS receives a compatibility update.

Any modders who want to look into a hotfix for SCS, feel free.  I imagine it will consist of removing the code SCS uses to adjust spell.ids for SR and then doing a search/replace for any IDS references that differ between DavidW's list and the SR implementation.  Take a look at this post for details on the different names and the first post in that topic for the code SCS is using to adjust spell.ids for SR.

These are the mismatches in spell_rev_ids.tpa:

  1118 => CLERIC_GOODBERRY_DRUID_VERSION
  1120 => CLERIC_ANIMAL_SUMMONING_SR_1
  1220 => CLERIC_ANIMAL_SUMMONING_SR_2
  1320 => CLERIC_ANIMAL_SUMMONING_SR_3
  2226 => WIZARD_MONSTER_SUMMONING_SR_2
  2107 => WIZARD_MONSTER_SUMMONING_SR_1

...and possibly REPLACE_TEXTUALLY "2610\(%TAB%\| \)+.*$" "2610 WIZARD_MONSTER_SUMMONING_4_INACTIVE", but I don't know what SPWI610 is or why it'd be included for SR which doesn't use SPWI610.

The following spells were missing entries inside that file (what that means, I'm not exactly sure):

Spoiler

 

CLERIC_KNOW_OPPONENT
CLERIC_BREAK_ENCHANTMENT
CLERIC_POLYMORPH_OTHER
CLERIC_CHAOS

WIZARD_KNOW_ALIGNMENT
WIZARD_RESIST_ELEMENTS
WIZARD_BATTERING_RAM
WIZARD_BREAK_ENCHANTMENT
WIZARD_SPELL_DEFLECTION
WIZARD_BANISHMENT
WIZARD_ACID_FOG
WIZARD_GREATER_SPELL_DEFLECTION
WIZARD_CHAOS
WIZARD_GHOSTFORM
WIZARD_MOMENT_OF_PRESCIENCE
WIZARD_BIGBYS_ICY_GRASP

anything marked by SR as "_DEPRECATED"

 

So that leaves me with just this left: https://dl.dropboxusercontent.com/s/v3ncbox6cy01q9s/spell_rev_ids.tpa

I'm unsure of how to get this file to then read what the correct entries are (which might vary from install to install) to then append the SCS identifiers to spell.ids.

Edited by Bartimaeus
Link to comment

Annoying thing is, I just updated FnP to require SR v4b17+.  So the two of them plus SCS cannot all work together at the moment. :(

There are more problems than that - as I originally (mistakenly) mentioned, Protection from Element spells are wrong, and Mass Regenerate gets overwritten... long story short, I think the solution is not to modify spell_rev_ids.tpa, but rather to stop SCS from applying it altogether. 

But I'm not sure how feasible it would be to make a hotfix - it really needs to modify the SCS mod itself, BWFixPack-style.  I hate that sort of thing.

I suppose... you could run a little mod after SR, to record where it installed each spell (put the info in a .2da table or something), and then run a second little mod after SCS, restoring it according to the findings of the 1st little mod?  That's pretty cumbersome, though.

If DavdW is really gone for another while, and the current version of SCS is going to be around for some time, the best idea might be to make another kreso-style "Revised SCS."  Then when DavidW returns he can review the changes and decide whether to adopt them.  I am very hesitant to fork someone else's mod... but it would be the most expedient way to deal with this compatibility issue.

Link to comment

SCS is hosting on the G3 github account, is it not? I kind of just assumed Mike would be able to apply the fix to SCS itself if somebody worked it out, as he has released a community-fixed version of SCS officially at least once before when DavidW was gone. I would think he'd just increment the beta version number.

Edited by Bartimaeus
Link to comment

Looking at the .tpa file (over here), I don't really see any point in the latter part of it (making the array and APPENDing to SPELL.ids.  I haven't done a completely exhaustive search, but it seems like SR is now ADD_SPELLing all of those spells, which means they already have IDS entries and the SCS action is completely unnecessary. 

A more surgical change would simply modify the UNLESS conditions there, from

APPEND "spell.ids" "%key% %value%" UNLESS "%key% +%value%"

to

APPEND "spell.ids" "%key% %value%" UNLESS "[ %TAB%]%value%[ %TAB%%LNL%%MNL%%WNL%]"

But, that will probably means the code ends up doing nothing.  And in any event the %key% entries added there bear no relation to the RES #s of spells added by SR now, so even if the SCS function does append something to the IDS table there's no reason to think it would be correct.  So I think the best course is to eliminate that whole part of the function. 

The only reason to hesitate is if SCS AI looks for an IDS name that is different from the ones SR ended up using, in which case the SCS variant should be added to the IDS table... however, the current method is still no good for that, instead it should IDS_OF_SYMBOL the current SR name, and then append the returned value with the new SCS name.  But I'm not sure this is even necessary - in the only obvious example, Cause Serious Wounds as called out in the function, SR 4b18 has already adopted DavidW's preferred IDS name. 

There is also the first part of the function:

COPY_EXISTING "spell.ids" override
  REPLACE_TEXTUALLY "1306\(%TAB%\| \)+.*$" "1306 CLERIC_PROTECTION_FROM_FIRE_DEPRECATED"
  REPLACE_TEXTUALLY "1407\(%TAB%\| \)+.*$" "1407 CLERIC_PROTECTION_FROM_LIGHTNING_DEPRECATED"
  REPLACE_TEXTUALLY "2610\(%TAB%\| \)+.*$" "2610 WIZARD_MONSTER_SUMMONING_4_INACTIVE"
  REPLACE_TEXTUALLY "1702\(%TAB%\| \)+.*$" "1702 CLERIC_STALKER"
  REPLACE_TEXTUALLY "1716\(%TAB%\| \)+.*$" "1716 CLERIC_ANIMAL_SUMMONING_4"
  REPLACE_TEXTUALLY "2109\(%TAB%\| \)+.*$" "2109 WIZARD_DIMENSION_JUMP"

I'm not really sure what that is doing, so I can't comment on it.  Except to say there is still a (smaller) danger of a mismatch, e.g. I think SR no longer puts Dimension Jump at SPWI109, etc.  I did a recent install to test some other mods, with SR 4b18 and SCS 32.7 IWD spells, and some later mod (I forget which) choked on SPWI109 for some reason or other.  Conservatively, I think it would be better for SCS to not do anything, than to do something but do it wrong.  (Unless, again, later SCS components require some of this to be done... in which case there is a bit more work needed to figure out how to do it right.)

EDIT - yup, SR leaves SPWI109 blank and installs Dimension Jump as SPWI127 on my BG2EE game.  Let's see... SR has SPWI610 as WIZARD_MONSTER_SUMMONING_LEVEL_6 so the SCS change there might be harmful as well.  SR 4b18 already has the above IDS names for SPPR306, SPPR407, and SPPR702, so those lines are unnecessary.  And SR 4b18 does not install anything at SPPR716, so that line might be harmful.  So I would eliminate this first part of the function as well.

Last EDIT -

SCS seems to detect SR by looking for ~dvimhere.mrk~, which I think includes SRv3(?)

If SCS intends to maintain compatibility for earlier versions, then the function might still be useful.  In this case, SR's overabundance of marker files can come in handy: condition the contents of the SCS function on

ACTION_IF !(FILE_EXISTS_IN_GAME ~dvsrv4here.mrk~) BEGIN

...that way, the function will run if it detects old versions of SR, but will step aside if it detects new versions.

Edited by subtledoctor
Link to comment

Okay I found a mismatch: SR4b18 uses

WIZARD_MONSTER_SUMMONING_LEVEL_1

...while SCS AI looks for

WIZARD_MONSTER_SUMMONING_SR_1

As far as what to do about this: this is not my area of expertise.  Would I be correct in assuming that it is preferable to give SPWI107 two different IDS entries, vs. changing the one created by SR?  I.e. the two courses of action are:

1)

  • SET ms1_spell_num = IDS_OF_SYMBOL ~WIZARD_MONSTER_SUMMONING_LEVEL_1~
  • APPEND SPELL.IDS ~%ms1_spell_num%   WIZARD_MONSTER_SUMMONING_SR_1~

2)

  • COPY_EXISTING ~SPELL.IDS~
  • REPLACE_TEXTUALLY ~WIZARD_MONSTER_SUMMONING_LEVEL_1~ ~WIZARD_MONSTER_SUMMONING_SR_1~

Either one should be easy enough, just not sure which is best.

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