To jest całe napisane zadanie
//********************************************************
// ZADANIE
//********************************************************
INSTANCE DIA_Kyle_Zadanie (C_INFO)
{
npc = Vlk_536_Kyle;
nr = 10;
condition = DIA_Kyle_Zadanie_Condition;
information = DIA_Kyle_Zadanie_Info;
permanent = 0;
important = 0;
description = "Może będę mógł Ci pomóc.";
};
FUNC INT DIA_Kyle_Zadanie_Condition()
{
if (Npc_KnowsInfo (hero, DIA_Kyle_Problem))
{
return 1;
};
};
FUNC VOID DIA_Kyle_Zadanie_Info()
{
AI_Output (other, self,"DIA_Kyle_Zadanie_15_00"); //Słuchaj, może będę mógł Ci pomóc.
AI_Output (self, other,"DIA_Kyle_Zadanie_10_01"); //Co? Na prawdę możesz coś z tym zrobić?
AI_Output (other, self,"DIA_Kyle_Zadanie_15_03"); //Daj mi czas a na pewno coś wymyślę.
AI_Output (self, other,"DIA_Kyle_Zadanie_10_04"); //Dzięki stary! Jednak nie zrzucają do tej dziury samych samolubnych dupków.
Log_CreateTopic (CH1_Kylehelp, LOG_MISSION);
B_LogEntry (CH1_Kylehelp,"Kopacz Kyle wybudował chatę zbyt blisko rowu i teraz ma parę dodatkowych drzwi i jego dom służy za przejście. Jeśli mu pomogę będę mógł liczyć na drobny prezent. Może jakiś strażnik może mi pomóc...");
Log_SetTopicStatus (CH1_Kylehelp, LOG_RUNNING);
};
//**********************************************************
// SUKCES ZADANIA WRZÓD
//**********************************************************
INSTANCE DIA_Kyle_Zadanie_SUKw (C_INFO)
{
npc = Vlk_536_Kyle;
nr = 4;
condition = DIA_Kyle_Zadanie_SUKw_Condition;
information = DIA_Kyle_Zadanie_SUKw_Info;
permanent = 0;
description = "Znalazłem Ci chatę.";
};
FUNC INT DIA_Kyle_Zadanie_SUKw_Condition()
{
if(Npc_KnowsInfo(hero, DIA_MUD_CHUT_SUK))
{
return 1;
};
};
FUNC VOID DIA_Kyle_Zadanie_SUKw_Info()
{
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_00"); //Znalazłem Ci chatę.
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_01"); //Jeden z kopaczy, nazywa się wrzód, zgodził się zamienić na chaty.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKw_10_02"); //Serio?! Jak go do tego przekonałeś?
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_03"); //Powiedzmy, ze nasz przyjaciel panicznie boi się duchów.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKw_10_04"); //No cóż ważne, że będę miał nową chatę. To gdzie ona jest?
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_03"); //Chata znajduje się na lewo od bramy do zamku. Jak zobaczysz kucharza imieniem Snaf, to znaczy, że jesteś na miejscu.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKw_10_05"); //Od razu zaczynam się pakować!
B_LogEntry (CH1_Kylehelp, "Kyle był zadowolony, że znalazłem mu nowe lokum. Może odwiedzę go za parę dni aby zobaczyć jak sobie radzi w nowym domu.");
AI_StopProcessInfos (self);
B_ExchangeRoutine (Vlk_536_Kyle, "NOWACHATAMUD");
B_ExchangeRoutine (VLK_574_Mud, "NOWACHATA");
};
//**********************************************************
// SUKCES ZADANIA DUSTY
//**********************************************************
INSTANCE DIA_Kyle_Zadanie_SUKd (C_INFO)
{
npc = Vlk_536_Kyle;
nr = 5;
condition = DIA_Kyle_Zadanie_SUKd_Condition;
information = DIA_Kyle_Zadanie_SUKd_Info;
permanent = 0;
description = "Znalazłem Ci chatę.";
};
FUNC INT DIA_Kyle_Zadanie_SUKd_Condition()
{
if(Npc_KnowsInfo(hero, DIA_BaalTondral_DustySuccess))
{
return 1;
};
};
FUNC VOID DIA_Kyle_Zadanie_SUKd_Info()
{
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKd_15_00"); //Znalazłem Ci chatę.
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKd_15_01"); //Jeden z kopaczy, nazywa się Dusty, wyniósł się do obozu sekty i jego chata pozostaje wolna.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKd_10_02"); //No cóż ważne, że będę miał nową chatę. To gdzie ona jest?
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKd_15_03"); //Chata znajduje się nad urwiskiem na targowisku.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKd_10_04"); //Od razu zaczynam się pakować!
AI_StopProcessInfos (self);
B_LogEntry (CH1_Kylehelp, "Kyle był zadowolony, że znalazłem mu nowe lokum. Może odwiedzę go za parę dni aby zobaczyć jak sobie radzi w nowym domu.");
B_ExchangeRoutine (Vlk_536_Kyle, "NOWACHATADUSTY");
};
//**********************************************************
// ODEBRANIE NAGRODY DUSTY
//**********************************************************
INSTANCE DIA_Kyle_Zadanie_NAd (C_INFO)
{
npc = Vlk_536_Kyle;
nr = 6;
condition = DIA_Kyle_Zadanie_NAd_Condition;
information = DIA_Kyle_Zadanie_NAd_Info;
permanent = 0;
description = "I jak Ci się tu żyje?";
};
FUNC INT DIA_Kyle_Zadanie_NAd_Condition()
{
if(Npc_KnowsInfo(hero, DIA_Kyle_Zadanie_SUKd))
{
return 1;
};
};
FUNC VOID DIA_Kyle_Zadanie_NAd_Info()
{
AI_Output (other, self,"DIA_Kyle_Zadanie_NAd_15_00"); //I jak Ci się tu żyje?
AI_Output (self, other,"DIA_Kyle_Zadanie_NAd_10_01"); //Jest świetnie! Cisza i spokój. Już nikt nie przebiega mi przez chatę i mam spokój od strażników.
AI_Output (self, other,"DIA_Kyle_Zadanie_NAd_10_03"); //Dziękuję Ci przyjacielu. Niewiem jak się odwdzięczyć weź chociaż trochę rudy.
B_GiveXP(100);
B_GiveInvItems (self, other, itminugget,100);
B_LogEntry (CH1_Kylehelp, "Kyle był zachwycony, nowa chata spisuje się świetnie! W końcu może odpocząć od niechcianych gości. ");
Log_SetTopicStatus (CH1_Kylehelp, LOG_SUCCESS);
};
//**********************************************************
// ODEBRANIE NAGRODY WRZÓD
//**********************************************************
INSTANCE DIA_Kyle_Zadanie_NAw (C_INFO)
{
npc = Vlk_536_Kyle;
nr = 7;
condition = DIA_Kyle_Zadanie_NAw_Condition;
information = DIA_Kyle_Zadanie_NAw_Info;
permanent = 0;
description = "I jak Ci się tu żyje?";
};
FUNC INT DIA_Kyle_Zadanie_NAw_Condition()
{
if(Npc_KnowsInfo(hero, DIA_Kyle_Zadanie_SUKw))
{
return 1;
};
};
FUNC VOID DIA_Kyle_Zadanie_NAw_Info()
{
AI_Output (other, self,"DIA_Kyle_Zadanie_NAw_15_00"); //I jak Ci się tu żyje?
AI_Output (self, other,"DIA_Kyle_Zadanie_NAw_10_01"); //Rudera jakich mało, pełna szczurów i karaluchów. Ale chociaż mam tu święty spokój.
AI_Output (self, other,"DIA_Kyle_Zadanie_NAw_10_02"); //Mimo wszystko dzięki za starania.
B_GiveXP(50);
B_GiveInvItems (self, other, itminugget,50);
B_LogEntry (CH1_Kylehelp, "Kyle nie był zachwycony nowym domem. Nie mogę powiedzieć, że go nie rozumiem, sam nie chciałbym mieszkać w tej szopie. Mimo wszystko podziękował mi za pomoc.");
Log_SetTopicStatus (CH1_Kylehelp, LOG_SUCCESS);
};
A tu część, o którą mi chodzi i problem gdzie muszę czekać aż NPC przejdzie całą drogę i dopiero dialog się wyłącza.
FUNC VOID DIA_Kyle_Zadanie_SUKw_Info()
{
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_00"); //Znalazłem Ci chatę.
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_01"); //Jeden z kopaczy, nazywa się wrzód, zgodził się zamienić na chaty.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKw_10_02"); //Serio?! Jak go do tego przekonałeś?
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_03"); //Powiedzmy, ze nasz przyjaciel panicznie boi się duchów.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKw_10_04"); //No cóż ważne, że będę miał nową chatę. To gdzie ona jest?
AI_Output (other, self,"DIA_Kyle_Zadanie_SUKw_15_03"); //Chata znajduje się na lewo od bramy do zamku. Jak zobaczysz kucharza imieniem Snaf, to znaczy, że jesteś na miejscu.
AI_Output (self, other,"DIA_Kyle_Zadanie_SUKw_10_05"); //Od razu zaczynam się pakować!
B_LogEntry (CH1_Kylehelp, "Kyle był zadowolony, że znalazłem mu nowe lokum. Może odwiedzę go za parę dni aby zobaczyć jak sobie radzi w nowym domu.");
AI_StopProcessInfos (self);
B_ExchangeRoutine (Vlk_536_Kyle, "NOWACHATAMUD");
B_ExchangeRoutine (VLK_574_Mud, "NOWACHATA");
};
Z rutynami jest wszystko w porządku każdy NPC ma wpisane nowe z dokładnie takimi nazwami i są one prawidłowo zamieniane, tylko, że podczas dialogu a nie po jego zakończeniu.
Edit.
Zmieniłem B_ExchangeRoutine( ) na Npc_ExchangeRoutine( ) i o dziwo zadziałało. Może nie idealnie tzn. Wrzód pojawia się w chacie Kyle'a natychmiastowo w chwili rozmowy z Kylem ale z drugiej strony ten kończy rozmowę i dopiero wtedy rusza do nowej chaty.