Dokładnie, to w pliku Weapons.d (bo to w końcu i tak nie ma znaczenia chyba) wpisałem to:
func void weaponreaction(var c_npc attacker,var c_npc defender)
{
if(!Npc_IsInFightMode(attacker,FMODE_MELEE))
{return;};
var c_item weapon;
weapon=Npc_GetReadiedWeapon(attacker);
if(Hlp_IsItem(weapon,instance_broni_a))
{
//reakcja na broń a
}
else if(Hlp_IsItem(weapon,instance_broni_b))
{
//reakcja na broń b
};
};
func void B_Orc_AssessCombatDamage()
{
weaponreaction(other,self);
};
func int CmpNpc(var c_npc p1,var c_npc p2)
{
var int old1;
var int old2;
var int result;
old1=p1.aivar[0];
old2=p2.aivar[0];
p1.aivar[0]=0;
p2.aivar[0]=1;
result=p1.aivar[0];
p1.aivar[0]=old1;
p2.aivar[0]=old2;
return result;
};
func void Sbd_is_damaged()
{
//ERRATA if (self==other&&hero==victim)
if(Npc_IsPlayer(victim)&&CmpNpc(self,other))
{weaponreaction(self,hero);};
};
Wld_PlayEffect("spellFX_IceCube",attacker,defender,0,0,0,FALSE)
Oczywiście zamieniłem instacje broni na instancje mojej broni.
A co nie działa? Cóż, zspy wykrywał mi błąd za błędem...