Formula Source
function CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger) local raceInc = 0 local raceRed = 0 local srcRace = srcUser.race local targetRace = targetUser.race if srcUser:HasBuffID(49320) and srcUser:HasBuffID(49325) then elseif srcUser:HasBuffID(49320) then targetRace = 2 end if targetUser:HasBuffID(49320) and targetUser:HasBuffID(49325) then elseif targetUser:HasBuffID(49320) 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 xinnian = 0 local skill_xinnian3 = srcUser:GetLernedSkillLevel(6013) local skill_xinnian1 = srcUser:GetLernedSkillLevel(6011) if srcUser:HasBuffID(1010201) then local layer_xinnian = srcUser:GetBuffLayer(1010201) xinnian = skill_xinnian3 * 0.01 * (1 + (layer_xinnian - 1) * (0.15 + skill_xinnian1 * 0.05)) end local skilllv = srcUser:GetLernedSkillLevel(306) local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel) if 5 < skilllv and skillID == 306 or skillID == 3303 or skillID == 819 then raceRed = math.max(raceRed - 0.06 * (skilllv - 5) - xinnian, 0) end local skilllv1 = srcUser:GetLernedSkillLevel(4762) if skillID == 4763 or skillID == 4764 or skillID == 4766 then raceRed = math.max(raceRed - 0.02 * skilllv1, 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 == 2 or maptype == 4) and targetUser:GetNpcID() ~= 40022 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.2 * (1 - math.sin(B * 3.14 / 2)) A = 1 - B end if A <= 0.15 then A = 0.15 end return A end
No formula links
Changes: 20251127_update vs 20251105_standard_instalation
function CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger) local raceInc = 0 local raceRed = 0 local srcRace = srcUser.race local targetRace = targetUser.race if srcUser:HasBuffID(49320) and srcUser:HasBuffID(49325) then elseif srcUser:HasBuffID(49320) then targetRace = 2 end if targetUser:HasBuffID(49320) and targetUser:HasBuffID(49325) then elseif targetUser:HasBuffID(49320) 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 xinnian = 0 local skill_xinnian3 = srcUser:GetLernedSkillLevel(6013) local skill_xinnian1 = srcUser:GetLernedSkillLevel(6011) if srcUser:HasBuffID(1010201) then local layer_xinnian = srcUser:GetBuffLayer(1010201) xinnian = skill_xinnian3 * 0.01 * (1 + (layer_xinnian - 1) * (0.15 + skill_xinnian1 * 0.05)) end local skilllv = srcUser:GetLernedSkillLevel(306) local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel) if 5 < skilllv and skillID == 306 or skillID == 3303 or skillID == 819 then raceRed = math.max(raceRed - 0.06 * (skilllv - 5) - xinnian, 0) end local skilllv1 = srcUser:GetLernedSkillLevel(4762) if skillID == 4763 or skillID == 4764 or skillID == 4766 then raceRed = math.max(raceRed - 0.02 * skilllv1, 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 == 2 or maptype == 4) and targetUser:GetNpcID() ~= 40022 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.2 * (1 - math.sin(B * 3.14 / 2)) A = 1 - B end if A <= 0.15 then A = 0.15 end return A end