Formula

CommonFun.calcDamage_82501

formula.lua
1function CommonFun.calcDamage_82501(srcUser, targetUser, params, damageParam, logger)
2  local Int = srcUser:GetProperty("Int")
3  local Vit = srcUser:GetProperty("Vit")
4  local MAtk = srcUser:GetProperty("MAtk")
5  local MAtkPer = srcUser:GetProperty("MAtkPer")
6  local Str = srcUser:GetProperty("Str")
7  local NormalAtk = srcUser:GetProperty("NormalAtk")
8  NormalAtk = NormalAtk + 3 * Int
9  local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
10  local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
11  if 1 <= IgnoreMDef then
12    IgnoreMDef = 1
13  end
14  local MRefine = srcUser:GetProperty("MRefine")
15  local RangeDam = srcUser:GetProperty("RangeDam")
16  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
17  local targetDefElement = targetUser:GetProperty("DefAttr")
18  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
19  local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
20  local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
21  local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
22  local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
23  local MDef2 = targetUser:GetProperty("MDef")
24  local MDefPer2 = targetUser:GetProperty("MDefPer")
25  local Vit2 = targetUser:GetProperty("Vit")
26  local VitPer2 = targetUser:GetProperty("VitPer")
27  local Int2 = targetUser:GetProperty("Int")
28  local IntPer2 = targetUser:GetProperty("IntPer")
29  local MDamReduc2 = CommonFun.calcMDamReDuc(srcUser, targetUser)
30  local RefineMDamReduc = CommonFun.calcRefineMDamReduc(srcUser, targetUser)
31  local damChangePer = damageParam.damChangePer
32  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
33  local BaseMAtk = Int + math.floor(Int * Int / 100)
34  local MAtkFinal = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
35  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
36  local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
37  if skillID == 4841_PHANTOM_DANCER:MAGNETIC_FIELD_EFFECTS and skillID == 4847_PHANTOM_DANCER:SPACE_TIME_GAZE then
38    RangeDam = 0
39  end
40  if skillID == 4847_PHANTOM_DANCER:SPACE_TIME_GAZE_PHANTOM_DANCER:SPACE_TIME_GAZE then
41    local skilllv_cichang = srcUser:GetLernedSkillLevel(4841_PHANTOM_DANCER:MAGNETIC_FIELD_EFFECTS)
42    damChangePer = skilllv_cichang * 1.6 + 12
43  end
44  local skilllv_paomo = srcUser:GetLernedSkillLevel(4850_PHANTOM_DANCER:TEMPORAL_EROSION_BUBBLE)
45  if skillID == 4855_PHANTOM_DANCER:TEMPORAL_EROSION_BUBBLE_PHANTOM_DANCER:TEMPORAL_EROSION_BUBBLE then
46    damChangePer = skilllv_paomo * 0.05 + 0.9
47    if targetUser:HasBuffID(141440_ETERNAL_REALM_:MAX_STACK_0) or targetUser:HasBuffID(141441_ETERNAL_REALM_STILLNESS_:MAX_STACK_0) or targetUser:HasBuffID(141851_TIME_DELAY_BLACK_HOLE_:MAX_STACK_0) or targetUser:HasBuffID(141852_TIME_DELAY_BLACK_HOLE_:MAX_STACK_0) then
48      damChangePer = damChangePer * 2
49    end
50  end
51  local GemValue = srcUser:GetGemValue(222101_MAGNETIC_FIELD_EFFECT_DAMAGE_PERCENTAGE)
52  local GemValue2 = srcUser:GetGemValue(222151_SILENT_SINGULARITY_DAMAGE_RATIO_AT_SETTLEMENT_PERCENTAGE)
53  if skillID == 4841_PHANTOM_DANCER:MAGNETIC_FIELD_EFFECTS or skillID == 4847_PHANTOM_DANCER:SPACE_TIME_GAZE_PHANTOM_DANCER:SPACE_TIME_GAZE then
54    damChangePer = damChangePer * (1 + GemValue / 100000)
55  end
56  local attackcharid = srcUser:GetGuid()
57  local wanxiang = 1
58  local RefineLv7 = srcUser:GetEquipedRefineLv(7_WEAPON)
59  if srcUser:HasBuffID(23411_OSCAR_WEAPON_1_:MAX_STACK_0) then
60    wanxiang = wanxiang * (1 + RefineLv7 * 0.01)
61  end
62  if srcUser:HasBuffID(23421_OSCAREQUIPMENT_USES_INFUSE_WEAPON_1_:MAX_STACK_0) then
63    wanxiang = wanxiang * (1 + RefineLv7 * 0.02)
64  end
65  if (skillID == 4857_PHANTOM_DANCER:SINGULARITY_OF_SILENCE_PHANTOM_DANCER:SINGULARITY_OF_SILENCE or skillID == 4858_PHANTOM_DANCER:SINGULARITY_OF_SILENCE_PHANTOM_DANCER:SINGULARITY_OF_SILENCE) and attackcharid ~= nil then
66    local paomo = targetUser:GetLossOfLifeTimes(attackcharid)
67    local skilllv_baopo = srcUser:GetLernedSkillLevel(4848_PHANTOM_DANCER:SINGULARITY_OF_SILENCE)
68    if paomo == 0 then
69      return 0, 0
70    else
71      damChangePer = (skilllv_paomo * 0.05 + 0.9) * (skilllv_baopo * 0.05 + GemValue2 / 100000) * paomo
72    end
73    if targetUser:HasBuffID(141440_ETERNAL_REALM_:MAX_STACK_0) or targetUser:HasBuffID(141441_ETERNAL_REALM_STILLNESS_:MAX_STACK_0) or targetUser:HasBuffID(141851_TIME_DELAY_BLACK_HOLE_:MAX_STACK_0) or targetUser:HasBuffID(141852_TIME_DELAY_BLACK_HOLE_:MAX_STACK_0) then
74      damChangePer = damChangePer * 2
75    end
76  end
77  local A = ((MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * (1 - RefineMDamReduc) * damChangePer * (1 + MDamIncrease) * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)) * (1 + RangeDam)
78  local zhuanwu = 1
79  if (skillID == 4857_PHANTOM_DANCER:SINGULARITY_OF_SILENCE_PHANTOM_DANCER:SINGULARITY_OF_SILENCE or skillID == 4858_PHANTOM_DANCER:SINGULARITY_OF_SILENCE_PHANTOM_DANCER:SINGULARITY_OF_SILENCE or skillID == 4855_PHANTOM_DANCER:TEMPORAL_EROSION_BUBBLE_PHANTOM_DANCER:TEMPORAL_EROSION_BUBBLE) and srcUser:HasBuffID(90007624_OSCAREQUIPMENT_USES_INFUSE_WEAPONS_1_TIER_5_:MAX_STACK_0) and targetUser:GetNpcID() ~= 0 then
80    A = A * 1.5
81  end
82  if skillID == 4848_PHANTOM_DANCER:SINGULARITY_OF_SILENCE then
83    A = A * wanxiang
84  end
85  if A <= 1 then
86    return 1
87  end
88  return A
89end
Formula Graph

Connected Archive Data

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

Loading graph filters

CommonFun.calcDamage_82501

commonfun-calcdamage

Nodes

0

Edges

0

Related Nodes

Select at least one node type.