Formula
CommonFun.CalcRaceParam
function CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
local raceInc = 0
local raceRed = 0
local srcRace = srcUser.race
local targetRace = targetUser.race
if targetUser:HasBuffID(139410_TWO_FACE_DEMON_KING_HUMAN_:MAX_STACK_0) then
targetRace = 3
end
if srcUser:HasBuffID(139411_TWO_FACE_DEMON_KING_DEMON_:MAX_STACK_0) then
srcRace = 3
end
if srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) and srcUser:HasBuffID(49325_RACIAL_ANCIENT_RELICS_CD_:MAX_STACK_0) then
elseif srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) then
targetRace = 2
end
if targetUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) and targetUser:HasBuffID(49325_RACIAL_ANCIENT_RELICS_CD_:MAX_STACK_0) then
elseif targetUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) then
srcRace = 2
end
if nil == CommonFun.RaceProps[targetRace] then
return 1
end
if nil == CommonFun.RaceProps[srcRace] then
return 1
end
raceInc = srcUser:GetProperty(CommonFun.RaceProps[targetRace][1])
raceRed = targetUser:GetProperty(CommonFun.RaceProps[srcRace][2])
local skilllv = srcUser:GetLernedSkillLevel(306_LORD_KNIGHT:ASURA_STRIKE)
local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
if 5 < skilllv and skillID == 306_LORD_KNIGHT:ASURA_STRIKE or skillID == 3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST or skillID == 819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST then
raceRed = math.max(raceRed - 0.06 * (skilllv - 5), 0)
end
local Arrow_attr = CommonFun.GetUserArrowAttr(srcUser, params)
raceInc = raceInc + Arrow_attr
local A = 1 + raceInc - raceRed
local mapid, maptype = srcUser:GetMapInfo()
if (maptype == PVP_MAPS) and targetUser:GetNpcID() ~= 40022_EMPERIUM then
local pvpReduce = 0
local B = raceRed - raceInc
B = B < -1 and -1 or 1 < B and 1 or B
B = math.floor(B * 1000) / 1000
B = B + 0.4 * (1 - math.sin(B * 3.14 / 2))
A = 1 - B
end
if A <= 0.15 then
A = 0.15
end
return A
end