subtledoctor Posted July 11, 2022 Share Posted July 11, 2022 41 minutes ago, Graion Dilach said: You're welcome. Heh heh, I actually got there before you, but appear to be ninja'd because you added it to your post which went up before mine. Quote Link to comment
Graion Dilach Posted July 11, 2022 Share Posted July 11, 2022 13 minutes ago, subtledoctor said: EDIT - it would still be good to know why EET is setting the SPECIFIC value of party members anyway, since that still results in mod conflicts. I answered this. SPECIFICS is used in SoD coding. This is all inherited from SoD, EET just imports it. Also, here you go, an alternative, garbled from the FIND_FREE_ANIM_SLOT @ https://www.gibberlings3.net/forums/topic/28835-toss-your-semi-useful-weidu-macros-here/?do=findComment&comment=254894 LAF RETURN_FREE_SPECIFIC_SLOT RET slot BEGIN FOR (idx = 1; idx < 256; idx += 1) BEGIN LOOKUP_IDS_SYMBOL_OF_INT name ~specific~ idx PATCH_IF (~%name%~ STR_EQ ~%idx%~) BEGIN SET slot = idx SET idx = 256 END END END Quote Link to comment
subtledoctor Posted July 11, 2022 Share Posted July 11, 2022 4 minutes ago, Graion Dilach said: I answered this. SPECIFICS is used in SoD coding. This is all inherited from SoD, EET just imports it. Not for party members. SoD uses those SPECIFIC values, but AFAIK it does not apply them to party members at the beginning of the campaign. Only EET does that. Quote Link to comment
Graion Dilach Posted July 11, 2022 Share Posted July 11, 2022 (edited) Please open SoD's BD0101.BCS. You can argue on that front that Brandock applies it's SPECIFICS a bit early with applying there, but Viconia, Minsc, Dynaheir and Safana already gets set up. That's right after Korlasz's tomb. And every non-joined NPC gets these values set both in BD3000.BCS and BD4000.BCS. Edited July 11, 2022 by Graion Dilach Quote Link to comment
jastey Posted July 11, 2022 Share Posted July 11, 2022 2 hours ago, Graion Dilach said: this is not caused by your mods. Thanks! Quote Link to comment
jastey Posted July 11, 2022 Share Posted July 11, 2022 2 hours ago, Graion Dilach said: And, just for @jastey - this is not caused by your mods. I've looked at Brandock and it actually proves that a followup mod overwrote EET's ALLIES mapping in SPECIFICS - Brandock also sets it's SPECIFIC to ALLIES. That's just for NPCs that aren't in the party, though? The setting to ALLIES is not done for NPCs in party, at least not per script. ? (Yes, I have no idea what I'm talking about.) Quote Link to comment
subtledoctor Posted July 11, 2022 Share Posted July 11, 2022 Yeah but those are blue-circle creatures - not party members. I still don't know where EET's script is that does this to party members. This is something that needs to be undone, or prevented, and I don't have enough information to do so. Easy enough to fix the overlapping IDS entries, but messing with SPECIFIC values of party members is going to cause problems that other mods will need to deal with. Quote Link to comment
Graion Dilach Posted July 11, 2022 Share Posted July 11, 2022 JoinParty() doesn't touch SPECIFICS afaik, so ALLIES is set as blue-circled and just kept along after the NPC enters the party. If Refinements changes the value, then it still needs to restore ALLIES during LeaveParty() or extend BDSHOUT and related with it's own values. Quote Link to comment
subtledoctor Posted July 11, 2022 Share Posted July 11, 2022 I’ve played through SoD with it, and nothing seemed out of place; SoD may set the SPECIFIC value of some NPCs before they join, but my mod changes it in the kit table, which is processed upon joining the party. (This should particularly apply to thieves, which need the NO_UMD value to prevent them using arcane scrolls. It could also be applied to clerics in order to allow some kits of Oghma/Mystra/Azuth to use arcane scrolls.) So NPCs joining the party should right themselves even if changed by SoD. (I recall a comment by Ardanis, who worked on SoD, confirming that SoD’s increased use if SPECIFIC values is only needed for non-party-members.) A problem will arise if EET applies SPECIFIC values to party members, which would override the value applied in the kit table and would be of no use to SoD anyway. Quote Link to comment
Endarire Posted July 12, 2022 Share Posted July 12, 2022 Is there a misuse of GAME_IS versus GAME_INCLUDES regarding SoD? Quote Link to comment
Graion Dilach Posted July 12, 2022 Share Posted July 12, 2022 I've looked at various NPC mods and there is a problem here - Skitia's NPC mods only set the SoD-appropriate SPECIFICS in BD0101 while not touching BD3000 and BD4000, so does Brandock. Sirene and Aura are different, they resets SPECIFICS at various points of the campaign, which includes their starting point, BD1000, BD3000 and only omitting BD4000. Walahnan also resets in BD3000. It seems NPC mods need to be updated to ensure they reset the SPECIFICS in BD3000 if they don't do that and also update BD4000. I've also looked at a lot of my installs and I haven't seen any evidence that EET has anything to do with this. I've even looked at my megamod installs to find any result of that claim. Quote Link to comment
jastey Posted July 12, 2022 Share Posted July 12, 2022 1 hour ago, Graion Dilach said: Skitia's NPC mods only set the SoD-appropriate SPECIFICS in BD0101 while not touching BD3000 and BD4000, so does Brandock. brandock gets created in bd0101, then only moved globally to bd3000 and bd7100 and bd4xxx if he isn't in party. Would I need to set his specifics every time he is moved? Quote Link to comment
jastey Posted July 12, 2022 Share Posted July 12, 2022 OK, the real question is: what is this specific ALLIES for, and why are we talking about setting it for NPCs that are not in party if the original problem was "mages in party can no longer use scrolls and wands upon transition to SoD in EET"? It's an honest question, I have no clue. Quote Link to comment
subtledoctor Posted July 12, 2022 Share Posted July 12, 2022 There are two issues. The SPECIFIC value is used by SoD to handle some of the big set-piece army battles in the game. I don’t recall the exact particulars but at one or more points you have a bunch of blue-circle people fighting other blue-circle creatures. Or maybe one group is actually red-circle? But normally blue-circle creatures don’t fight red-circle, and Beamdog needed to make that happen. (Think about the Nimbul ambush on the streets of Nashkel - normally citizens will (quite reasonably) not attack Nimbul, leaving it to the player; but Beamdog added Rasaad right there, and scripts Rasaad to attack Nimbul even if he isn’t in the party.) So I guess NPCs like Khalid and Jaheira, even if they are not in the party, should be scripted to join this or that fight on the side of Baldur’s Gate forces. Whether other NPCs should be do scripted is an open question, and should not be assumed. As I said, I definitely played through SoD with a mod that disrupts the SPECIFIC value upon joining the party, and during the game I had several of them leave the party. And I don’t recall seeing anything weird like NPCs standing around when they should have been fighting. So the first issue in this thread is, a macro I used failed to avoid doubling up values in the SPECIFICS table, and when the game did its AI thing, it inadvertently set party members’ SPECIFIC value to an entry that was doubled up in the table and prevents people from using scrolls. This is fixed easily enough by fixing that macro. The second issue is, changing SPECIFIC value on party members means NO mod could ever reasonably use that field. (Recall that the alternative, for Refinements, is installing several hundred invisible kits… let’s not go back to those days!) My use of that value is intentionally bounded, applying it on a per-kit basis only when joining the party. According to Beamdog, its use by the game(s) is only for non-party members. So there need not be a conflict. And indeed, if you play SoD by itself with the mod installed, everyone can use scrolls and it all works fine. It is only in EET that I have seen this problem where its use for non-party members is bleeding over and affecting party members. It seems like more work is needed to harden party members from being affected in this way… so I’m trying to figure out the best way to reinforce the distinction (And set aside the question of why SPECIFIC is used here in the first place, when a less-conflict-prone value like a spellstate or local variable could serve… but it’s too late to discuss this, unless someone wants to make a feature request for the 2.7 patch…) Quote Link to comment
jastey Posted July 12, 2022 Share Posted July 12, 2022 Thanks for the explanation, and good luck. 7 hours ago, Graion Dilach said: It seems NPC mods need to be updated to ensure they reset the SPECIFICS in BD3000 if they don't do that and also update BD4000. Is this still a thing if, as I said, the NPC was set to ALLIES once if not in party (but never if in party upon transition)? Quote Link to comment
Recommended Posts
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.