Tutaj podaje skrypt B_AssessDamage.d stworzony skrypt przez program pana Rafała "Miecze Runiczne"
Spoiler
func void B_U (var C_NPC oth, var C_NPC slf)
{
if (Hlp_GetInstanceID(oth) == Hlp_GetInstanceID(hero))
{
var C_ITEM ready;
var int randomdmg;
var int procent_trafienia;
var int obrazenia;
ready = Npc_GetReadiedWeapon(hero);
randomdmg = Hlp_Random (1);
procent_trafienia = 100;
obrazenia = 200;
if (Npc_HasItems(hero, ItMw_ElBastardo) == TRUE && Hlp_IsItem(ready, ItMw_ElBastardo) == TRUE)
&& (randomdmg <= procent_trafienia)
{
if (slf.flags != NPC_FLAG_IMMORTAL)
{
Wld_PlayEffect("spellFX_Firestorm_SPREAD", slf, slf, 1, 1, 1, FALSE );
B_MagicHurtNpc (slf, slf, obrazenia);
Wld_PlayEffect("spellFX_FireRain", slf, slf, 1, 1, 1, FALSE );
B_MagicHurtNpc (slf, slf, obrazenia);
Wld_PlayEffect("spellFX_Beliarweapon", slf, slf, 1, 1, 1, FALSE );
B_MagicHurtNpc (slf, slf, obrazenia);
Wld_PlayEffect("spellFX_FireRain_RAIN", slf, slf, 1, 1, 1, FALSE );
B_MagicHurtNpc (slf, slf, obrazenia);
};
Wld_PlayEffect("spellFX_Zap_COLLIDE", hero, hero, 1, 1, 1, FALSE );
Wld_PlayEffect("spellFX_Sleep_ORIGIN", hero, hero, 1, 1, 1, FALSE );
};
if (Npc_HasItems(hero, ItMw_ItMw_ElBastardo) == TRUE && Hlp_IsItem(ready, ItMw_ElBastardo) == TRUE)
&& (randomdmg <= procent_trafienia)
{
Wld_PlayEffect("spellFX_Zap_COLLIDE", hero, hero, 1, 1, 1, FALSE );
Wld_PlayEffect("spellFX_Sleep_ORIGIN", hero, hero, 1, 1, 1, FALSE );
};
};
};
func void B_AssessDamage ()
{
var C_NPC Quarho; Quarho = Hlp_GetNpc (NONE_ADDON_111_Quarhodron);
var C_NPC Rhadem; Rhadem = Hlp_GetNpc (NONE_ADDON_112_Rhademes);
if ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Quarho)))
|| ((Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Rhadem)))
{
B_GhostSpecialDamage (other, self);
return;
};
B_BeliarsWeaponSpecialDamage (other, self);
B_U (other, self);
miecz();
if (self.aivar[AIV_ArenaFight] == AF_AFTER)
{
self.aivar[AIV_ArenaFight] = AF_AFTER_PLUS_DAMAGE;
};
if self.aivar [AIV_EnemyOverride] == TRUE
{
var C_NPC RAV; RAV = Hlp_GetNpc(BDT_1090_Addon_Raven);
if (Hlp_GetInstanceID(self) == (Hlp_GetInstanceID(RAV)))
{
self.aivar [AIV_EnemyOverride] = FALSE;
};
};
if (Npc_IsInState(self,ZS_Attack))
{
if (Npc_IsPlayer (other))
&& (self.npctype == NPCTYPE_FRIEND)
{
return;
};
if (Npc_IsPlayer (other))
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
return;
};
if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
{
if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
|| (Hlp_GetInstanceID(other) != Hlp_GetInstanceID(hero))
{
Npc_SetTarget (self, other);
}
else
{
self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other);
};
};
return;
};
if (B_AssessEnemy())
{
return;
};
if (!Npc_IsPlayer(other))
&& (other.aivar[AIV_ATTACKREASON] == AR_NONE)
{
B_Attack (self, other, AR_NONE, 0);
return;
};
if (Npc_IsInFightMode (other, FMODE_MELEE))
|| (Npc_IsInFightMode (other, FMODE_FIST))
|| (Npc_IsInFightMode (other, FMODE_NONE))
{
if (Npc_GetAttitude (self, other) == ATT_FRIENDLY)
|| ( (self.npctype == NPCTYPE_FRIEND) && Npc_IsPlayer(other) )
{
if (!Npc_IsInState(self, ZS_ReactToDamage))
{
Npc_ClearAIQueue (self);
B_ClearPerceptions (self);
AI_StartState (self, ZS_ReactToDamage, 0, "");
return;
};
};
};
B_Attack (self, other, AR_ReactToDamage, 0);
return;
};
Spoiler
func void B_MM_AssessDamage ()
{
self.aivar[AIV_MM_PRIORITY] = PRIO_ATTACK;
B_BeliarsWeaponSpecialDamage (other, self);
B_U (other, self);
miecz();
if (Npc_HasItems (other, Holy_Hammer_MIS) > 0)
{
var C_NPC MagGol; MagGol = Hlp_GetNpc(MagicGolem);
Npc_GetInvItem(other, Holy_Hammer_MIS);
var C_ITEM OthWeap; OthWeap = Npc_GetReadiedWeapon(other);
if (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(MagGol))
&& (Hlp_GetInstanceID(OthWeap) == Hlp_GetInstanceID(item))
{
Npc_ChangeAttribute (self, ATR_HITPOINTS, -1000);
return;
};
};
if (self.guild == GIL_STONEGUARDIAN)
&& (self.aivar[AIV_EnemyOverride] == TRUE)
{
B_AWAKE_STONEGUARDIAN (self);
};
if (C_PredatorFoundPrey(other,self))
{
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Flee, 0, "");
return;
};
if (Npc_IsInState(self,ZS_MM_Attack))
{
if (Npc_IsPlayer (other))
&& (self.aivar[AIV_PARTYMEMBER] == TRUE)
{
return;
};
if (self.aivar[AIV_MM_REAL_ID] == ID_SKELETON)
&& (other.aivar[AIV_MM_REAL_ID] == ID_SKELETON_MAGE)
{
return;
};
if (Hlp_GetInstanceID (other) != self.aivar[AIV_LASTTARGET])
{
if (self.aivar[AIV_HitByOtherNpc] == Hlp_GetInstanceID (other))
{
Npc_SetTarget (self, other);
}
else
{
self.aivar[AIV_HitByOtherNpc] = Hlp_GetInstanceID (other);
};
};
return;
};
Npc_ClearAIQueue (self);
Npc_SetTarget (self, other);
B_ClearPerceptions (self);
AI_StartState (self, ZS_MM_Attack, 0, "");
return;
};