Yes, I figured that. I basically copied code from Ghreyfain's tutorial. Here's my PDIALOG:
BEGIN E#DarienP
IF ~Global("DarienJoined","LOCALS",1)~ THEN BEGIN KickOut
SAY ~You're telling me to leave? Have you actually thought this through?~
IF ~~ THEN REPLY ~Oops, not really.~ DO ~JoinParty()~ EXIT
IF ~~ THEN REPLY ~Yes, I don't want you in the party now.~ GOTO KickedOut
END
IF ~~ THEN BEGIN KickedOut
SAY ~All right, it's your decision to make. I'll be at the Docks when you need me again.~
IF ~~ THEN REPLY ~No, I need you to wait here.~ DO ~SetGlobal("DarienJoined","LOCALS",0)~ EXIT
IF ~~ THEN REPLY ~All right, I'll find you there if I need you.~ DO ~SetGlobal("DarienJoined","LOCALS",0)~ EXIT //Goto Docks here
END
IF ~Global("DarienJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~You want me back?~
IF ~~ THEN REPLY ~Yes, we could use your skills.~ DO ~SetGlobal("DarienJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~No.~ EXIT
END
When I talk to him while he's in the party, when I kick him out, and when I talk to him after kicking him out, here's what happens:
IF ~NumTimesTalkedToGT(0)~ THEN BEGIN ReturnDialogue
SAY ~So you're back?~
IF ~~ THEN REPLY ~Yes. I've decided I want you in the party.~ DO ~SetGlobal("DarienJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~Yes, but I still have no use for you.~ GOTO RefusedAgain
END