Formula
CommonFun.calcDamReDuc
function CommonFun.calcDamReDuc(srcUser, targetUser)
if srcUser == nil or targetUser == nil then
return 0
end
local DamSpike = srcUser:GetProperty("DamSpike_PEN")
if nil ~= CommonFun.Shape and CommonFun.Shape.M == targetUser.shape and srcUser:HasBuffID(90004384_TITAN_1_T5_:MAX_STACK_0) then
DamSpike = DamSpike + 0.15
end
local DamReduc2 = targetUser:GetProperty("DamReduc")
local ReduceLv = CommonFun.calcSpikeLv(srcUser, targetUser)
local SkillDamReduc = CommonFun.calcSkillDamReduc(srcUser, targetUser)
if srcUser:HasBuffID(138002_23_:MAX_STACK_0) then
local MDamSpike = srcUser:GetProperty("MDamSpike_MPEN")
DamSpike = DamSpike + MDamSpike
end
if targetUser:GetNpcID() ~= 0 and srcUser:HasBuffID(57720_23_:MAX_STACK_0) and srcUser:HasBuffID(138002_23_:MAX_STACK_0) then
DamSpike = DamSpike + 0.2
elseif targetUser:GetNpcID() ~= 0 and srcUser:HasBuffID(57720_23_:MAX_STACK_0) then
DamSpike = DamSpike + 0.1
end
local A = 1 - (1 + 0.009 * ReduceLv + DamSpike - DamReduc2) * SkillDamReduc
local mapid, maptype = srcUser:GetMapInfo()
if (maptype == PVP_MAPS) and targetUser:GetNpcID() ~= 40022_EMPERIUM then
local pvpReduce = 0
local Master = targetUser:GetMasterUser()
if targetUser:GetNpcID() == 0 or Master ~= nil then
pvpReduce = 0.2
end
A = A < -1 and -1 or 1 < A and 1 or A
A = math.floor(A * 1000) / 1000
A = A + 0.3 * (1 - math.sin(A * 3.14 / 2)) + pvpReduce
end
if 0.85 <= A then
A = 0.85
end
return A
end