Napisałem prostą funkcję, dzięki której baalowie zamiast po prostu machać łapami wypowiadają tekst o śniącym. Przypisałem do odpowiedniego ZS itp. Ale potem zauważyłem że np taki Angar też ma rutynę Teaching. Więc zrobiłem nowe rutyny
ZS_Angar_Teaching i ZS_Baal_Teaching i wszystko śmiga pamiętałem o dodaniu w pliku Ta.d i o modyfikacji rutyny, ZS_Listen.
Moje pytanie jest inne. Jak przechodzi się koło takiego NPC, który coś tam bełkocze podczas tej rutyny to jeśli się stoi w miejscu wszystko idzie płynnie, ale jak się poruszymy to rutyna jest przerywana i "ładuje" się kolejne jej wykonanie w pętli.
FUNC void B_Baal_Teach(var int guardreaktion)
{
if (guardreaktion == 0)
{
AI_Output (self, self,"DIA_BaalTaran_Sleeper_05_01"); //Śniący będzie naszym wyzwolicielem. Pięć lat temu ujawnił się nam przez Y'Beriona, naszego wielkiego mistrza.
}
if (guardreaktion == 1)
{
AI_Output (self, self,"DIA_BaalTaran_Sleeper_05_02"); //Od tej chwili, wyrzekliśmy się trzech bogów, co i tobie radzę.
}
[ ... ]
Wyżej jest kawałek kodu, takich powtórzeń jest 7 i to właśnie one przeskakują podczas poruszania.
Dałoby radę zrobić tak żeby dialogi wykonywały się od początku do końca jak już ruszą, oczywiście o ile gracz nie przerwie jakąś swoja akcją, rozmową czy wyciągnięciem broni itp.
Jeszcze kawałek odpowiadającego ZSa:
func void ZS_Baal_Teaching_Loop ()
{
PrintDebugNpc (PD_TA_LOOP, "ZS_Teaching_Loop");
B_GotoFP (self, "TEACHING");
var int guardreaktion;
if(guardreaktion>6) {guardreaktion=0;};
B_Baal_Teach(guardreaktion);
guardreaktion+=1;
};