(von Fizzban)
Um ein paar Zeilen einzufügen, die gesagt werden, direkt nachdem du einen NSC angesprochen hast (also bevor der Multiple-Choice-Kasten aufgeht), einfach ein wichtiges Info-Objekt einfügen und in die Bedingung hero.aivar[AIV_INVINCIBLE] einbauen:
var int DIA_Hans_Einleitung_Abgespielt;
...
FUNC VOID DIA_Hans_Exit_Info()
{
DIA_Hans_Einleitung_Abgespielt = FALSE;
AI_StopProcessInfos (self);
};
instance DIA_Hans_Hello (C_INFO)
{
npc = Pers_666_Hans;
condition = DIA_Hans_Hello_Condition;
information = DIA_Hans_Hello_Info;
important = TRUE;
permanent = TRUE;
};
FUNC int DIA_Hans_Hello_Condition()
{
if (hero.aivar[AIV_INVINCIBLE] && !DIA_Hans_Einleitung_Abgespielt && !hero.aivar[AIV_IMPORTANT])
{
return TRUE;
};
};
FUNC int DIA_Hans_Hello_Info()
{
// Dialog
DIA_Hans_Einleitung_Abgespielt = TRUE;
};
Da hero.aivar[AIV_INVINCIBLE] nur dann wahr ist, wenn der SC mit jemanden spricht, wird dich der NSC niemals von sich aus ansprechen, obwohl das Objekt als wichtig markiert ist. Die Variable DIA_Hans_Einleitung_Abgespielt stellt sicher, dass wir uns nicht in einer Endlosschleife verfangen. Das ist allerdings unnötig, wenn das Info-Objekt nicht permanent ist.