Formula Source
function CommonFun.calcDamage_1202(srcUser, targetUser, params, damageParam, logger) local Str = srcUser:GetProperty("Str") local Dex = srcUser:GetProperty("Dex") local Luk = srcUser:GetProperty("Luk") local Atk = srcUser:GetProperty("Atk") local AtkPer = srcUser:GetProperty("AtkPer") local DamIncrease = srcUser:GetProperty("DamIncrease") local IgnoreDef = 0 local IgnoreDef1 = srcUser:GetProperty("IgnoreDef") local IgnoreDef2 = srcUser:GetProperty("IgnoreEquipDef") if targetUser.boss or targetUser.mini then IgnoreDef = IgnoreDef1 else IgnoreDef = IgnoreDef1 + IgnoreDef2 end if 1 <= IgnoreDef then IgnoreDef = 1 end local Refine = srcUser:GetProperty("Refine") local skilllv_1 = srcUser:GetLernedSkillLevel(damageParam.skill1_id) local AttrEffect = srcUser:GetProperty("AttrEffect") local bits = CommonFun.getBits(AttrEffect) local Def2 = targetUser:GetProperty("Def") local DefPer2 = targetUser:GetProperty("DefPer") local Vit2 = targetUser:GetProperty("Vit") local VitPer2 = targetUser:GetProperty("VitPer") local DamReduc2 = CommonFun.calcDamReDuc(srcUser, targetUser) local RefineDamReduc = targetUser:GetProperty("RefineDamReduc") local HumanRes = targetUser:GetProperty("DemiHumanResPer") local count = params.hitedCount local damChangePer = damageParam.damChangePer local damChangePer1 = damageParam.damChangePer1 local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger) local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger) local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger) local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger) local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger) local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger) local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger) local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger) local BaseAtk = Str * 2 + math.floor(Str * Str / 100) + math.floor(Dex / 5) + math.floor(Luk / 5) local AtkFinal = ((Atk - BaseAtk) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk) * raceparam * bossparam * bossparam2 local DefReduc = CommonFun.CalcDef(srcUser, targetUser) local ShortRangeDamReduc2 = targetUser:GetProperty("ShortRangeDamReduc") local countDam = 0.1 if 10 < skilllv_1 then countDam = 0.3 end local A = (AtkFinal * DefReduc * (1 - DamReduc2) + Refine) * (damChangePer + countDam * count) * (1 - RefineDamReduc) * (1 + DamIncrease - ShortRangeDamReduc2) - Vit2 * (1 + VitPer2) local B = 0 local Buff = targetUser:HasBuffID(80000240) local Weapon = srcUser:GetEquipedID(7) if Buff == true then B = HumanRes * 100 * 20 end if A - B <= 1 then return 1 end local guaiwuhujiM = 1 if CommonFun.Shape.M == targetUser.shape and srcUser:HasBuffID(90001163) then guaiwuhujiM = 1.1 end if CommonFun.Shape.M == targetUser.shape and (Weapon == 40359 or Weapon == 140359) then guaiwuhujiM = 1.1 end if bits[CommonFun.AttrEffect.GuaiWuHuJiDam] == 1 and 10 <= skilllv_1 then return (A - B) * 1.3 * guaiwuhujiM elseif (Weapon == 40308 or Weapon == 140308) and 10 <= skilllv_1 then return (A - B) * 2 * guaiwuhujiM elseif (Weapon == 40359 or Weapon == 140359) and 10 <= skilllv_1 then return (A - B) * 2 * guaiwuhujiM end return (A - B) * guaiwuhujiM end
No formula links