code\:
func void ZS_SitAround ()
{
PrintDebugNpc (PD_TA_FRAME, "ZS_SitAround");
B_SetPerception (self);
//-------- Grobpositionierung --------
AI_StandUp (self);
AI_SetWalkmode (self, NPC_WALK);
AI_GotoWP (self, self.wp); // Gehe zum Tagesablaufstart
};
func int ZS_SitAround_Loop ()
{
PrintDebugNpc (PD_TA_LOOP,"ZS_SitAround_Loop");
//-------- Sitzgelegenheit suchen ! --------
if (!C_BodyStateContains(self, BS_SIT))
{
PrintDebugNpc (PD_TA_CHECK, "...NSC sitzt noch nicht!");
if (Wld_IsMobAvailable(self,"BENCH"))
{
PrintDebugNpc (PD_TA_CHECK, "...Bank gefunden!");
AI_UseMob (self,"BENCH",1); // Benutze den Mob einmal bis zum angegebenen State
self.aivar [AIV_HangAroundStatus] = 2;
}
else if (Wld_IsMobAvailable(self,"CHAIR"))
{
PrintDebugNpc (PD_TA_CHECK, "...Stuhl gefunden!");
AI_UseMob (self,"CHAIR",1); // Benutze den Mob einmal bis zum angegebenen State
self.aivar [AIV_HangAroundStatus] = 3;
}
else if (Wld_IsMobAvailable(self,"SMALL THRONE"))
{
PrintDebugNpc (PD_TA_CHECK, "...kl. Thron gefunden!");
AI_UseMob (self,"SMALL THRONE",1); // Benutze den Mob einmal bis zum angegebenen State
self.aivar [AIV_HangAroundStatus] = 4;
}
else if (Wld_IsFPAvailable (self, "SIT"))
{
PrintDebugNpc (PD_TA_CHECK, "...FP 'SIT' gefunden!");
AI_GotoFP (self, "SIT");
AI_AlignToFP( self ); //Richte Dich aus
AI_PlayAniBS (self, "T_STAND_2_SIT", BS_SIT);
self.aivar [AIV_HangAroundStatus] = 1;
}
else
{
PrintDebugNpc (PD_TA_CHECK, "...keine Sitzgelegenheit gefunden!");
AI_StartState (self, ZS_StandAround, 1, ""); // ...also stehen wir!
return LOOP_CONTINUE;
};
}
//-------- Zufalls-Animationen spielen ! --------
else
{
Print ("Gleich muss Smalltalk beginnen");
if (Wld_DetectNpc(self, -1, ZS_SitAround, -1)) && (Npc_GetDistToNpc (self, other)<HAI_DIST_SITSMALLTALK))
{
Print ("!Smalltalk wurde aufgerufen!");
// Neue Texte für Smalltalk (kurze, gemurmelte, Wortfetzen, die als SVMs vorliegen)
// ...wenn Du meinst...
// ...kann schon sein...
// ...war nicht besonders schlau....
// ...ich halt mich da lieber raus...
// ...das ist ein Problem, aber nicht mein Problem...
// ...war doch klar, daß das Ärger gibt...
// ...aber behalt's für Dich, muß nicht gleich jeder wissen...
// ...das passiert mir nicht...
// ...an der Gechichte muß wohl doch was dran sein...
// ...man muß eben aufpassen was man rumerzählt...
// ...solange ich damit nichts zu tun habe...
// ...man darf auch nicht alles glauben, was man hört...
// ...in seiner Haut will ich trotzdem nicht stecken...
// ...immer wieder die selbe Leier...
// ...manche lernen eben garnichts dazu...
// ...früher wäre das ganz anders gelaufen...
// ...gequatscht wird viel...
// ...ich hör nicht mehr auf das Gefasel...
// ...verlaß Dich auf jemanden und Du bist verlassen, das ist eben so...
// ...ich glaube kaum, daß sich daran was ändern wird...
// ...wahrscheinlich hast Du recht...
// ...erstmal abwarten. Es wird nichts so heiß gegessen, wie es gekocht wird...
// ...ich dachte, das wäre schon lange geklärt, aber das ist wohl nicht so...
// ...laß uns über lieber über was anderes reden...
var int talktime;
talktime = Hlp_Random (200);
if (talktime < 5)
{
B_Say ( self, NULL, "$SMALLTALK01");
}
else if (talktime < 10)
{
B_Say ( self, NULL, "$SMALLTALK02");
}
else if (talktime < 15)
{
B_Say ( self, NULL, "$SMALLTALK03");
}
else if (talktime < 20)
{
B_Say ( self, NULL, "$SMALLTALK04");
}
else if (talktime < 25)
{
B_Say ( self, NULL, "$SMALLTALK05");
}
else if (talktime < 30)
{
B_Say ( self, NULL, "$SMALLTALK06");
}
else if (talktime < 35)
{
B_Say ( self, NULL, "$SMALLTALK07");
}
else if (talktime < 40)
{
B_Say ( self, NULL, "$SMALLTALK08");
}
else if (talktime < 45)
{
B_Say ( self, NULL, "$SMALLTALK09");
}
else if (talktime < 50)
{
B_Say ( self, NULL, "$SMALLTALK10");
}
else if (talktime < 55)
{
B_Say ( self, NULL, "$SMALLTALK11");
}
else if (talktime < 60)
{
B_Say ( self, NULL, "$SMALLTALK12");
}
else if (talktime < 65)
{
B_Say ( self, NULL, "$SMALLTALK13");
}
else if (talktime < 70)
{
B_Say ( self, NULL, "$SMALLTALK14");
}
else if (talktime < 75)
{
B_Say ( self, NULL, "$SMALLTALK15");
}
else if (talktime < 80)
{
B_Say ( self, NULL, "$SMALLTALK16");
}
else if (talktime < 85)
{
B_Say ( self, NULL, "$SMALLTALK17");
}
else if (talktime < 90)
{
B_Say ( self, NULL, "$SMALLTALK18");
}
else if (talktime < 95)
{
B_Say ( self, NULL, "$SMALLTALK19");
}
else if (talktime < 100)
{
B_Say ( self, NULL, "$SMALLTALK20");
}
else if (talktime < 105)
{
B_Say ( self, NULL, "$SMALLTALK21");
}
else if (talktime < 110)
{
B_Say ( self, NULL, "$SMALLTALK22");
}
else if (talktime < 115)
{
B_Say ( self, NULL, "$SMALLTALK23");
}
else if (talktime < 120)
{
B_Say ( self, NULL, "$SMALLTALK24");
};
return LOOP_CONTINUE;
};
Print ("Der Smalltalk wurde umgangen");
var int sitreaktion;
sitreaktion = Hlp_Random (100);
PrintDebugInt (PD_TA_DETAIL, "...Zufallsani-Wurf: ", sitreaktion);
if (sitreaktion >= 95)
{
B_Pee(self);
}
else if (sitreaktion >= 90)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_1",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_1",BS_SIT);
};
}
else if (sitreaktion >= 85)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_2",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_2",BS_SIT);
};
}
else if (sitreaktion >= 80)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_3",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_3",BS_SIT);
};
}
else if (sitreaktion >= 75)
{
if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_PlayAniBS (self, "R_CHAIR_RANDOM_4",BS_SIT);
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_PlayAniBS (self, "R_BENCH_RANDOM_4",BS_SIT);
};
};
};
AI_Wait (self, 1);
return LOOP_CONTINUE;
};
func void ZS_SitAround_End ()
{
PrintDebugNpc (PD_TA_FRAME,"ZS_SitAround_End");
if (self.aivar[AIV_HangAroundStatus] == 1)
{
AI_PlayAni (self, "T_SIT_2_STAND");
self.aivar[AIV_HangAroundStatus] = 0;
}
else if (self.aivar[AIV_HangAroundStatus] == 4)
{
AI_UseMob (self,"SMALL THRONE",-1);
self.aivar[AIV_HangAroundStatus] = 0;
}
else if (self.aivar[AIV_HangAroundStatus] == 2)
{
AI_UseMob (self,"BENCH",-1);
self.aivar[AIV_HangAroundStatus] = 0;
}
else if (self.aivar[AIV_HangAroundStatus] == 3)
{
AI_UseMob (self,"CHAIR",-1);
self.aivar[AIV_HangAroundStatus] = 0;
};
};