weapon = Npc_GetReadiedWeapon(other);
Other i self są przypisywanie przez silnik przy wywoływaniu niektórych externali. Przy wczytaniu gry other to również null.
Ogólnie skrypt ma kilka błędów. Poprawiłem trochę
func int DMG_OnDmg(var int victimPtr, var int attackerPtr, var int dmg)
{
if (!attackerptr) {
return;
};
var c_npc slf; slf = _^(victimPtr);
var c_npc oth; oth = _^(attackerptr);
var c_item weapon; weapon = Npc_GetReadiedWeapon(oth);
var int weaponDmg; weaponDmg = weapon.damageTotal;
var int armor;
if weapon.damagetype & DAM_EDGE
{
armor = slf.protection[PROT_EDGE];
}
else if weapon.damagetype & DAM_POINT
{
armor = slf.protection[PROT_POINT];
};
if (Hlp_IsItem(weapon, ItMw_1h_Vlk_Sword))
||(Hlp_IsItem(weapon, ItMw_Sztyleciak))
{
var int damage; damage = weaponDmg + oth.attribute[ATR_DEXTERITY];
var int CritChances; CritChances = r_Max(100);
if (CritChances<=oth.hitchance[1])
{
dmg = damage - armor;
PrintScreen ("Kryt", -1, -1, FONT_Screen, 2);
}
else
{
dmg = (damage - armor - 1)/10;
PrintScreen ("Zwykły hit", -1, -1, FONT_Screen, 2);
};
};
return dmg;
};