Jump to content

[35.17][bug] EET, SoD, Chapter 8, BDVESSAN.CRE AI script overwrite makes finishing The Vanished quest impossible


Recommended Posts

Area: BD1000.ARE
NPC: BDVESSAN.CRE
Problem: "overwrite script" set to "dw#innhl.bcs" makes it impossible to complete quest "The Vanished"  as original BDVESSAN.BCS set as "script" contains quest logic that doesn't get executed. You have to side with Teleria and suggest that you'll bring her people that'll serve as better material to her art piece. Then talk to Vessanal to bait him to Teleria. Vessanal doesn't move (he should move), global state is not updated (it should: SetGlobal("bd_move_vessan","MYAREA",2)).

image.png.020824354bf36d41bd16f5681e2ed644.png

Edited by LuLNope
Link to comment

So, the original state here - Vessanal has three scripts:

- BDVESSAN in the override slot. All quest-related stuff. Should be left alone.

- SHOUT in the race slot.

- RUNENEMY in the general slot. Fitting for a level 1 INNOCENT with no combat capability.

So, looking at this, it's got to be the "Better Calls for Help" component that's causing trouble. And here's the offending block:

Spoiler
// Level 1 innocents (no specific)

   LAF install STR_VAR file="dw#innhl.baf" location=baf END
   
   COPY_EXISTING_REGEXP GLOB ".*\.cre" override
      PATCH_TRY
         READ_BYTE 0x273 class
         READ_BYTE 0x234 level
         PATCH_IF (class=155 && level<=1 && INDEX_BUFFER ("shout") >=0) BEGIN

              FOR (i=0x248;i<0x270;i+=8) BEGIN
                 READ_ASCII i script
                 PATCH_IF "%script%" STRING_EQUAL_CASE "shout" BEGIN
                    WRITE_ASCIIE 0x248 "dw#innhl"
				 END

			  END
		 END
	  WITH DEFAULT
	 			LPF regexp_warning STR_VAR parent=install_bg1_help END
	  END
    BUT_ONLY

 

Level 1 innocents with the SHOUT script in BG1 get the new dw#innhl shout script, placed in the override slot with no check for anything already being there. And there's even a comment explaining why this was done:

/*

A note on SHOUT in BG1

Basically, it's really dangerous. Nearly a thousand creatures have it, and it's indiscriminately given to hostiles and to innocents.
BD hacks around this by using alignment as a de facto SPECIFICS.

We handle it in a more principled way by:

- mapping lots of the users of SHOUT onto their own bespoke scripts
- mapping all the remainder, who are people like city guards and merchants, onto a non-specific-keyed help script with a bespoke shout code (119).
- giving 57 as the bespoke Shout shout code
- creating a new innocents-only shout, that responds both to 119 and to 57.
- setting original SHOUT so that it's harmless in any case if a few residual innocents have it

*/

That new dw#innhl shout script is the innocents-only script. Nothing wrong with using it, but letting it bump off whatever script is in the override slot is bad. Better to find where SHOUT is and replace that instead.

Link to comment

Other SoD characters affected by this specific issue:

- The petrified people at the Coast Way Crossing.

- Herod, a minor NPC involved with the petrified people quest.

- Senderin, a minor NPC at the Bridgefort.

- Merome, Senderin's kid.

Link to comment
54 minutes ago, jmerry said:

That new dw#innhl shout script is the innocents-only script. Nothing wrong with using it, but letting it bump off whatever script is in the override slot is bad. Better to find where SHOUT is and replace that instead.

Yes, it's just a typo that means it's not doing that. Fixed locally, will be in 35.18.

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