Formula
CommonFun.ModifyRealDam
function CommonFun.ModifyRealDam(srcUser, targetUser, params, skillParams, damage, skillID, maptype)
local NormalAtkDam = srcUser:GetProperty("NormalAtkDam")
local NormalAtkRes = targetUser:GetProperty("NormalAtkRes")
local SkillDam = srcUser:GetProperty("SkillDam")
local SkillRes = targetUser:GetProperty("SkillRes")
if (skillID == 306_LORD_KNIGHT:ASURA_STRIKE or skillID == 3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST or skillID == 819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST) and srcUser:HasBuffID(22000830_ASURA_STRIKE_IGNORES_SKILL_DMG_DOWN_:MAX_STACK_0) then
SkillRes = math.max(SkillRes - 0.3, 0)
end
local ActuallySkiRes = SkillRes - SkillDam
local ActuallyNorRes = NormalAtkRes - NormalAtkDam
if maptype == PVP_MAPS then
ActuallySkiRes = ActuallySkiRes < -1 and -1 or 1 < ActuallySkiRes and 1 or ActuallySkiRes
ActuallySkiRes = math.floor(ActuallySkiRes * 1000) / 1000
ActuallySkiRes = ActuallySkiRes + 0.4 * (1 - math.sin(ActuallySkiRes * 3.14 / 2))
ActuallyNorRes = ActuallyNorRes < -1 and -1 or 1 < ActuallyNorRes and 1 or ActuallyNorRes
ActuallyNorRes = math.floor(ActuallyNorRes * 1000) / 1000
ActuallyNorRes = ActuallyNorRes + 0.4 * (1 - math.sin(ActuallyNorRes * 3.14 / 2))
end
local NormalEnd = 1 - ActuallyNorRes
local SkillEnd = 1 - ActuallySkiRes
NormalEnd = math.max(NormalEnd, 0.15)
SkillEnd = math.max(SkillEnd, 0.15)
if CommonFun.RollType.Magic == skillParams.RollType then
local RefineMDamReduc = targetUser:GetProperty("RefineMDamReduc")
if srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
local NormalMRealDam = srcUser:GetProperty("NormalMRealDam")
damage = (damage + NormalMRealDam * (1 - RefineMDamReduc)) * NormalEnd
elseif not srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
local SkillMRealDam = srcUser:GetProperty("SkillMRealDam")
damage = (damage + SkillMRealDam * (1 - RefineMDamReduc)) * SkillEnd
end
end
if CommonFun.RollType.Attack == skillParams.RollType then
local RefineDamReduc = targetUser:GetProperty("RefineDamReduc")
if srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
local NormalRealDam = srcUser:GetProperty("NormalRealDam")
damage = (damage + NormalRealDam * (1 - RefineDamReduc)) * NormalEnd
elseif not srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
local SkillRealDam = srcUser:GetProperty("SkillRealDam")
damage = (damage + SkillRealDam * (1 - RefineDamReduc)) * SkillEnd
end
end
return damage
end