Jeżeli korzystasz z notepada++ to za pomocą regexa możesz znaleźć wywołanie funkcji:
AI_StartState(self, ZS_ATTACK, tu jakieś inne zbdety)
można to osiągnąć przez użycia wyrażenia w postaci:
AI_StartState.+ZS_Attack
Jak już dostaniesz liste plików w których takie wywołanie się znajduje to radzę się zainteresować tymi co mają w nazwie Assess lub zaczynają się na ZS_. Przed wywołaniem wspomnianej wcześniej funkcji możesz walnać jakiegoś printa, dobrze by było, żeby każdy miał inną wiadomość i najlepiej inne miejsce na ekranie by na siebie nie nachodziły. Wtedy w grze jak człowiek zacznie cię bić, gdy zaatakujesz orka, to będziesz wiedział, które wywołanie funkcji za to odpowiada i ewentualnie będziesz mógł opakować to w jakiś warunek, byś nie dostawał po łbie za bicie zielonoskórych.
Nie sprawdzałem tego i są to jedynie moje domysły, ale chyba warto spróbować.
Edit:
Dobra, w sumie to trochę źle podpowiedziałem. Pogrzebałem trochę w plikach AI przyglądając się pewnym rzeczom i zauważyłem, że ludzkie AI w ogóle olewa przypadek orków. Interesuje cię plik:
_Work\Data\Scripts\Content\AI\AI_Intern\C_Functions.d
W nim to znajduje się między innymi funkcja C_NpcIsMonster, która w skrócie służy między innymi do tego, by AI mogło odpowiednio zareagować w pewnych sytuacjach. Problem w tym, że orkowie nie są uznani za potwory i npc będący orkiem nie przejdzie pozytywnie testów tej funkcji, przez co mogą się dziać dziwne rzeczy, w tym atakowanie nas przez ludzi gdy w pobliżu jest ork. Rozwiązanie szybkie:
Zmieniasz:
func int C_NpcIsMonster(var C_NPC slf)
{
PrintDebugNpc (PD_ZS_DETAIL,"C_NpcIsMonster");
PrintDebugString (PD_ZS_DETAIL,"...name: ", slf.name);
if ((slf.guild > GIL_SEPERATOR_HUM) && (slf.guild < GIL_SEPERATOR_ORC))
{
PrintDebugNpc (PD_ZS_DETAIL,"...true");
return TRUE;
}
else
{
PrintDebugNpc (PD_ZS_DETAIL,"...false");
return FALSE;
};
};
na:
func int C_NpcIsMonster(var C_NPC slf)
{
PrintDebugNpc (PD_ZS_DETAIL,"C_NpcIsMonster");
PrintDebugString (PD_ZS_DETAIL,"...name: ", slf.name);
if (slf.guild > GIL_SEPERATOR_HUM)
{
PrintDebugNpc (PD_ZS_DETAIL,"...true");
return TRUE;
}
else
{
PrintDebugNpc (PD_ZS_DETAIL,"...false");
return FALSE;
};
};
I ludzie powinni już poprawnie reagować na pojawienie się orków w ich najbliższym otoczeniu. Rozwiązanie dłuższe polegałoby na naprawie AI i tam gdzie jest sprawdzane C_NpcIsMonster sprawdzać też C_NpcIsOrc.