I suppose the only fix for this is to replace NumTimesTalkedTo with something less crappy, but there are over 700 instances in unmodded BG1 alone, and the prospects of reliably automating the work are rather iffy with the tools available today.
Or you could just exclude the start up by excluding the NumTimesTalkedTo(0) ...
This would make it so that if you fail at your first attempt, the
NPC would notice the PC and auto talk to them the normal way, the next time they would then give them the chance check and if they would pass they wouldn't be upset ...
Yeah, you would need to adjust the
NPC with two functions... something to this effect, from:
BEGIN
ACTION_IF FILE_EXISTS_IN_GAME ~%file%.bcs~
BEGIN
COPY_EXISTING ~%file%.bcs~ ~override~
PATCH_IF (%SOURCE_SIZE% > 0x01)
BEGIN
// ===============================================================================
DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY EXACT_MATCH
~StartDialogue("stolen",LastTrigger)~
~StartDialogOverride("RR#STLN1",LastTrigger)~
PATCH_IF ("%SOURCE_RES%" STRING_EQUAL_CASE ~STEALHOS~)
BEGIN // SoA hostile anti-steal script (requries a specific approach)
REPLACE_TEXTUALLY EXACT_MATCH ~Enemy()~ ~StartDialogOverride("RR#STLN1",LastTrigger)~
END
COMPILE_BAF_TO_BCS
// ===============================================================================
END
BUT_ONLY
END
END
To:
BEGIN
ACTION_IF FILE_EXISTS_IN_GAME ~%file%.bcs~
BEGIN
COPY_EXISTING ~%file%.bcs~ ~override~
PATCH_IF (%SOURCE_SIZE% > 0x01)
BEGIN
// ===============================================================================
DECOMPILE_BCS_TO_BAF
REPLACE_TEXTUALLY EXACT_MATCH
~StartDialogue("stolen",LastTrigger)~
~StartDialogOverride("RR#STLN1",LastTrigger)~
PATCH_IF ("%SOURCE_RES%" STRING_EQUAL_CASE ~STEALHOS~)
BEGIN // SoA hostile anti-steal script (requries a specific approach)
REPLACE_TEXTUALLY EXACT_MATCH ~Enemy()~ ~~~~~IF
NumTimesTalkedTo(0)
THEN
RESPONSE #100
StartDialog([PC])
EXIT
////////////////////////////////////////////////////
////the upper part has a hole in it as you need to add the NumTimesTalkedTo(0) to the tricker ... but
////then the rest is easy
////////////////////////////////////////////////////
IF ~!NumTimesTalkedTo(0)~
THEN
RESPONSE #100
StartDialogOverride("RR#STLN1",LastTrigger)
EXIT~~~~~
END
COMPILE_BAF_TO_BCS
// ===============================================================================
END
BUT_ONLY
END
END
Yep the ~~~~~ x ~~~~~ is so nice with the
weidu's replace textually.
Yeah, it has holes in it, but he basic idea should be there...
Edited by Jarno Mikkola, 27 March 2013 - 07:14 AM.