Eine (etwas doofe) Lösung wäre das ganze Bank mob unter anderem Namen zu duplizieren.
So dass du dann ein mob "BENCH" und ein mob "MEINEBANK" hast.
Dann könntest du auch ZS_Sit_Bench duplizieren unter neuem Namen und dort den NPC nur nach mobs mit schemenamen "MEINEBANK" suchen lassen. Dann kannst du sicherstellen das dieser eine NPC immer die richtige Bank benutzt.
(In DirtySwamp hatten wir etwas ähnliches gemacht mit dem Zustand ZS_Smalltalk für einen Raum wo 4 NPCs in 2er Paaren Smalltalk machen sollen. 2 NPCs sind in ZS_Smalltalk und suchen nach "SMALLTALK" freepoints und 2 NPCs sind in ZS_IDLECHATTER und suchen nach "IDLECHATTER" freepoints)
Code:
// ************
// ZS_Idlechatter
// Ist eine Kopie von ZS_Smalltalk mit anderen freepoints. (wenn man nahe beieinander mehrere SMALLTALK freepoints setzt lässt sich nicht gut kontrollieren wer da mit wem spricht
// Lösung: 2 NPCs in ZS_Smalltalk, 2 NPCs in ZS_Idlechatter
// ************
func void ZS_Idlechatter ()
{
Perception_Set_Normal();
B_ResetAll (self);
AI_SetWalkmode (self,NPC_WALK);
if (Npc_GetDistToWP (self,self.wp) > TA_DIST_SELFWP_MAX)
{
AI_GotoWP (self, self.wp);
};
};
func int ZS_Idlechatter_Loop ()
{
if (Npc_IsOnFP (self, "IDLECHATTER"))
{
if (Npc_GetStateTime(self) >= (SmallTalkFreq * 2) )
{
Npc_PerceiveAll (self);
if (Wld_DetectNpc(self, -1, ZS_Idlechatter, -1)) //other = Nearest Npc (0=Spieler ignorieren!)
{
if (Npc_GetDistToNpc(self, other) < PERC_DIST_DIALOG)
{
Npc_SetStateTime (other, SmallTalkFreq);
B_TurnToNpc (self,other);
B_Say_Smalltalk();
};
};
Npc_SetStateTime (self, 0);
};
}
else if (Wld_IsFPAvailable(self,"IDLECHATTER"))
{
AI_GotoFP (self, "IDLECHATTER");
AI_StandUp (self);
AI_AlignToFP (self);
};
return LOOP_CONTINUE;
};
func void ZS_Idlechatter_End ()
{
};