Jump to content

Mages Can't Use Scrolls


Guest Mage Problems

Recommended Posts

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

 

Link to comment
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.

Link to comment

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 by Graion Dilach
Link to comment
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.)

Link to comment

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.

Link to comment

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.

Link to comment

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. 

Link to comment

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.

Link to comment
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?

Link to comment

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.

Link to comment

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…) 

Link to comment

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)?

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