|
|
强制21亿伤害代码这么写:
在pvf里找到这个文件sqr/ui/ap/ap_monster.nut
把下面这段写到里面去,
覆盖原本的同名函数function onApplyHpDamage_appendage_monster(appendage, newHpDamage, attacker)的所有内容。
还可以控制怪物受伤百分比来压缩伤害,来防止超出上限。
————————————————————————————————————————————————
DAMAGE_SCALE_FACTOR <- 1.0//限制怪物受到伤害百分比100%
DAMAGE_MAX_VALUE_ONCE <- 1999999999 //超出强制1999999999伤害
function onApplyHpDamage_appendage_monster(appendage, newHpDamage, attacker)
{
if (!appendage) return;
if (!attacker) return;
local monster = appendage.getParent();
monster = sq_GetCNRDObjectToActiveObject(monster);
if (!monster) return;
if (appendage.getParent().getTeam() == attacker.getTeam()) return newHpDamage;
// SKILL OVERFLOw CHECK
if (newHpDamage == 1) {
if (SKILL_DAMAGE_OVERFLOW_MARK == 1) {
newHpDamage = -1;
}
}
local scaledDamage = (DAMAGE_SCALE_FACTOR * newHpDamage.tofloat()).tointeger();
if (newHpDamage > 0) {
if (scaledDamage == 0) {
scaledDamage = 1;
}
local newAddHpDamage2 = 0;
local addHpDamage = applyAddHpDamage(appendage, newHpDamage);
if (addHpDamage < 0) {
// int overflow
addHpDamage = DAMAGE_MAX_VALUE_ONCE;
newAddHpDamage2 = DAMAGE_MAX_VALUE_ONCE;
} else {
newAddHpDamage2 = (DAMAGE_SCALE_FACTOR * addHpDamage.tofloat()).tointeger();
if (addHpDamage > 0 && newAddHpDamage2 == 0) {
newAddHpDamage2 = 1;
}
}
if (newAddHpDamage2 > DAMAGE_MAX_VALUE_ONCE) {
newAddHpDamage2 = DAMAGE_MAX_VALUE_ONCE;
}
if (scaledDamage > DAMAGE_MAX_VALUE_ONCE) {
scaledDamage = DAMAGE_MAX_VALUE_ONCE;
}
appendage.getVar("addHpDamage").setInt(0, newAddHpDamage2);
appendage.getVar("newHpDamage").setInt(0, scaledDamage);
if (appendage.getVar("atkCount").getInt(0) == 1) NOMAL_ATTACK_FLAG = 1;
else appendage.getVar("atkCount").setInt(0, 1);
} else if (newHpDamage < 0) {
// int overflow
scaledDamage = DAMAGE_MAX_VALUE_ONCE;
appendage.getVar("addHpDamage").setInt(0, DAMAGE_MAX_VALUE_ONCE);
appendage.getVar("newHpDamage").setInt(0, DAMAGE_MAX_VALUE_ONCE);
}
return scaledDamage;
} |
|