Doszedłem do wniosku, że funkcja wykonuje się jeśli JA trafię wilka. Ma być na odwrót... Myślałem, że jak podmienię slf na oth zadziała, ale wciąż to samo...
// *****************
// B_MM_AssessDamage
// *****************
func void TruciznaFunction ()
{
WillZatruty = 1;
PrintScreen ("zatruty", -1,-1, "font_old_20_white.tga",3);
};
var int prev_hp;
func void B_PoisonousWolf (var C_NPC oth)
{
if (oth.aivar[AIV_MM_REAL_ID] == ID_WOLF)//Jakieś unikalne, poszukaj w AI_Constants.d linijek ID_* i dodaj własną stałą, oraz dodaj ją do ID wilka (ID = nowaStała)
{
if (oth.attribute[ATR_HITPOINTS] < prev_hp)
{
TruciznaFunction();
};
prev_hp = oth.attribute[ATR_HITPOINTS];
};
};
func void B_MM_AssessDamage ()
{
self.aivar[AIV_MM_PRIORITY] = PRIO_ATTACK;
B_BeliarsWeaponSpecialDamage (other, self);
B_PoisonousWolf (self);
// EXIT IF
// ------ SONDERFALL: Magic Golem ------ //JUUUUNGEEEEE!!!
// ----- wenn Monster Beute von Angreifer ------
if (C_PredatorFoundPrey(other,self))
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Flee, 0, "");
return;
};
// ------ wenn Monster im ZS_Attack ------
if (Npc_IsInState(self,ZS_MM_Attack))
{
// EXIT IF...
// ------ Partymember ignorieren Treffer vom Spieler im Kampf ------
if (Npc_IsPlayer (other))
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
return;
};
// ------ HACK: von Skelettmagier getroffene Skelette ignorieren Schaden ------
if (self.aivar[AIV_MM_REAL_ID] == ID_SKELETON)
&& (other.aivar[AIV_MM_REAL_ID] == ID_SKELETON_MAGE)
{
return;
};
// FUNC
// ------ Wenn ich von jemand ANDEREM getroffen werde ------
if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
{
if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
{
Npc_SetTarget (self, other); //Ziel wechseln, wenn zum zweiten Mal getroffen
}
else
{
self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other); //EIN Freischlag
};
};
return;
};
// FUNC
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, "");
return;
};
Gdy zmieniłem
B_PoisonousWolf (self);
na
B_PoisonousWolf (other);
wtedy wgl funkcja się nie wywoływała.
Jak zrobić, żeby to działało na odwrót? Tzn, że kiedy ja zaatakuję wilka to wywołuje się skrypt.