Formula

CommonFun.ModifyRealDam

formula.lua
1function CommonFun.ModifyRealDam(srcUser, targetUser, params, skillParams, damage, skillID, maptype)
2  local NormalAtkDam = srcUser:GetProperty("NormalAtkDam")
3  local NormalAtkRes = targetUser:GetProperty("NormalAtkRes")
4  local SkillDam = srcUser:GetProperty("SkillDam")
5  local SkillRes = targetUser:GetProperty("SkillRes")
6  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
7    SkillRes = math.max(SkillRes - 0.3, 0)
8  end
9  local ActuallySkiRes = SkillRes - SkillDam
10  local ActuallyNorRes = NormalAtkRes - NormalAtkDam
11  if maptype == PVP_MAPS then
12    ActuallySkiRes = ActuallySkiRes < -1 and -1 or 1 < ActuallySkiRes and 1 or ActuallySkiRes
13    ActuallySkiRes = math.floor(ActuallySkiRes * 1000) / 1000
14    ActuallySkiRes = ActuallySkiRes + 0.4 * (1 - math.sin(ActuallySkiRes * 3.14 / 2))
15    ActuallyNorRes = ActuallyNorRes < -1 and -1 or 1 < ActuallyNorRes and 1 or ActuallyNorRes
16    ActuallyNorRes = math.floor(ActuallyNorRes * 1000) / 1000
17    ActuallyNorRes = ActuallyNorRes + 0.4 * (1 - math.sin(ActuallyNorRes * 3.14 / 2))
18  end
19  local NormalEnd = 1 - ActuallyNorRes
20  local SkillEnd = 1 - ActuallySkiRes
21  NormalEnd = math.max(NormalEnd, 0.15)
22  SkillEnd = math.max(SkillEnd, 0.15)
23  if skillID == 404_RUNE_KNIGHT:FEAR_BREEZE_AUTO_ATTACK or skillID == 1232_THIEF:DUPLE_LIGHT or skillID == 4796_PHANTOM_DANCER:M_ATK then
24    SkillEnd = 1
25  end
26  if skillID == 83040_:CURRENT or skillID == 83041_:CURRENT_INCREASE_IN_NUMBER_OF_PEOPLE or skillID == 83042_:CURRENT_THUNDERSTORM or skillID == 83050_:HOMING_MISSILE or skillID == 83051_:ELECTRIC_ENERGY_TRACKING_BOMB then
27    SkillEnd = 1
28  end
29  if CommonFun.RollType.Magic == skillParams.RollType then
30    local RefineMDamReduc = CommonFun.calcRefineMDamReduc(srcUser, targetUser)
31    if srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
32      local NormalMRealDam = srcUser:GetProperty("NormalMRealDam")
33      damage = (damage + NormalMRealDam * (1 - RefineMDamReduc)) * NormalEnd
34    elseif not srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
35      local SkillMRealDam = srcUser:GetProperty("SkillMRealDam")
36      damage = (damage + SkillMRealDam * (1 - RefineMDamReduc)) * SkillEnd
37    end
38  end
39  if CommonFun.RollType.Attack == skillParams.RollType then
40    local RefineDamReduc = CommonFun.calcRefineDamReduc(srcUser, targetUser)
41    if srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
42      local NormalRealDam = srcUser:GetProperty("NormalRealDam")
43      damage = (damage + NormalRealDam * (1 - RefineDamReduc)) * NormalEnd
44    elseif not srcUser:IsAttackSkill(params.skillIDAndLevel) and 0 < damage then
45      local SkillRealDam = srcUser:GetProperty("SkillRealDam")
46      damage = (damage + SkillRealDam * (1 - RefineDamReduc)) * SkillEnd
47    end
48  end
49  return damage
50end
Formula Graph

Connected Archive Data

See which cards, equipment, headwears, buffs, and other archived records connect to this formula.

Loading graph filters

CommonFun.ModifyRealDam

commonfun-modifyrealdam

Nodes

0

Edges

0

Related Nodes

Select at least one node type.