Sorry to bump this again but I just realized I had some unexpected behaviour. Since I assumed the problem was the LOCALS I just change both for GLOBAL leaving:
IF~~THEN REPLY ~Yes. Goodbye.~ DO ~SetGlobal("Z9MAIEVJoin","GLOBAL",0)~ EXIT
IF~~THEN REPLY ~No. It’s just a mistake. Come, we should be moving.~ DO ~JoinParty()SetGlobal("Z9MAIEVJoin","GLOBAL",1)~ EXIT
Now, the initial dialogue works, the kickout works and the rejoins works too. But, if I add the character to the party again (after the initial kick) and kick it again the dialogue that appears is the rejoin one.