IF
See([2])
Global("TALKED","LOCALS",0) // Could also be NumTimesTalkedTo(0) w/ no SetGlobal
THEN
RESPONSE #100
SetGlobal("TALKED","LOCALS",1)
StartDialogueNoSet(LastSeenBy(Myself))
END
EXTEND_TOP OBSHAL01 and OBSHAL03.
COPY_EXISTING ~OBSHAL04.CRE~ ~OVERRIDE~
WRITE_ASCII 0x0250 ~~ #8 // Shouldn't have OBSHAL01 script
BUT_ONLY_IF_IT_CHANGES
Don't try to talk because I have nothing to say...
REPLACE ~OBSHAL01~
IF ~~ 1
SAY #33115
IF ~~ EXIT
END
IF ~~ 2
SAY #33116
IF ~~ EXIT
END
IF ~~ 3
SAY #33117
IF ~~ EXIT
END
END
REPLACE ~OBSHAL03~
IF ~NumTimesTalkedTo(0)~ 0
SAY #33118
+ ~~ + #33119 + 2
+ ~~ + #33120 + 1
+ ~~ + #33122 + 3
+ ~InParty("MINSC")~ + #33133 EXTERN ~MINSCJ~ 63
END
IF ~~ 1
SAY #33121
IF ~~ EXIT
END
IF ~~ 2
SAY #33123
IF ~~ EXIT
END
IF ~~ 3
SAY #33124
IF ~~ EXIT
END
IF ~~ 4
SAY #33135
IF ~~ EXIT
END
END
Just replace the dialogues.
This all seems to work perfectly for me. There's no need to shuffle their script assignments, and no need to make any of them neutral. The only issue is OBSHAL04, which has the OBHSAL01 script assigned (for no apparent reason; it does nothing). While you're here, you might want to restore OBSDEM01 (or whatever, the named demon in the outer world), so you can tell him you're gonna rip his heart out.