
The Heroic Shot
Lv 1AttackSkill Delay: 1 sec
Unlocked for use in the 【Limit Off】 state, deals an ultimate strike to a single target for (Atk + M.Atk) * 3200%. 【The Heroic Shot】 is neither "magic" nor Slash, ignoring enemy Reflected damage, magic immunity, Magic Reduc., and M.Def. When calculating damage bonuses, it is treated as magic damage and can trigger a Critical.
CD: 10 sec
Range: 3
Formula
1function CommonFun.calcDamage_80501(srcUser, targetUser, params, damageParam, logger)
2 local Int = srcUser:GetProperty("Int")
3 local Vit = srcUser:GetProperty("Vit")
4 local Str = srcUser:GetProperty("Str")
5 local Dex = srcUser:GetProperty("Dex")
6 local Luk = srcUser:GetProperty("Luk")
7 local Atk = srcUser:GetProperty("Atk")
8 local AtkPer = srcUser:GetProperty("AtkPer")
9 local MAtk = srcUser:GetProperty("MAtk")
10 local MAtkPer = srcUser:GetProperty("MAtkPer")
11 local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
12 local MDamSpike = srcUser:GetProperty("MDamSpike_MPEN")
13 local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
14 if 1 <= IgnoreMDef then
15 IgnoreMDef = 1
16 end
17 local Refine = srcUser:GetProperty("Refine")
18 local MRefine = srcUser:GetProperty("MRefine")
19 local RangeDam = srcUser:GetProperty("RangeDam")
20 local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
21 local targetDefElement = targetUser:GetProperty("DefAttr")
22 local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
23 local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger)
24 local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger)
25 local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
26 local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
27 local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger)
28 local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
29 local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
30 local MDef2 = targetUser:GetProperty("MDef")
31 local MDefPer2 = targetUser:GetProperty("MDefPer")
32 local Vit2 = targetUser:GetProperty("Vit")
33 local VitPer2 = targetUser:GetProperty("VitPer")
34 local Int2 = targetUser:GetProperty("Int")
35 local IntPer2 = targetUser:GetProperty("IntPer")
36 local MDamReduc2 = CommonFun.calcMDamReDuc(srcUser, targetUser)
37 local RefineMDamReduc = CommonFun.calcRefineMDamReduc(srcUser, targetUser)
38 local damChangePer = damageParam.damChangePer
39 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
40 local NormalAtk = srcUser:GetProperty("NormalAtk")
41 NormalAtk = NormalAtk + 3 * Int
42 if skillID == 4796_PHANTOM_DANCER:M_ATK then
43 NormalAtk = 0
44 end
45 local BaseAtk = Str * 2 + math.floor(Str * Str / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
46 local AtkFinal = ((Atk - BaseAtk) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam + BaseAtk) * raceparam * bossparam * bossparam2
47 local BaseMAtk = Int + math.floor(Int * Int / 100)
48 local MAtkFinal = ((MAtk - BaseMAtk + NormalAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
49 local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
50 if skillID == 4801_PHANTOM_DANCER:M_ATK then
51 local skill_cj = srcUser:GetLernedSkillLevel(4792_PHANTOM_DANCER:BLADE_RESONANCE)
52 damChangePer = skill_cj * 0.08 + 0.2
53 end
54 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)
55 if skillID == 4782_PHANTOM_DANCER:FIRE_BOLT then
56 local GemValue = srcUser:GetGemValue(220101_EACH_STACK_OF_FIRE_BOLT_CHARGE_INCREASES_PERCENTAGE_OF_FIRE_BOLT_DAMAGE)
57 local FireNum = srcUser:GetBuffLayer(140842_FIRE_BOLT_CHARGING_BUILT_IN_:MAX_STACK_0)
58 local GemDam = 1 + GemValue / 100000 * FireNum
59 A = ((AtkFinal + MAtkFinal) * MDefReduc * (1 - MDamReduc2) + (Refine + MRefine)) * (1 - RefineMDamReduc) * damChangePer * (1 + MDamIncrease) * GemDam * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)
60 end
61 local NormalAtkDam = srcUser:GetProperty("NormalAtkDam")
62 local GemValue = srcUser:GetGemValue(220111_THE_HEROIC_SHOT_IS_AFFECTED_BY_AUTO_ATTACK_DMG_INC_WITH_AN_IMPACT_RATIO_OF_PERCENTAGE)
63 local NormalEnd = 1
64 if 0 < GemValue then
65 NormalEnd = 1 + NormalAtkDam * GemValue / 100000
66 end
67 if skillID == 4787_PHANTOM_DANCER:THE_HEROIC_SHOT then
68 A = ((AtkFinal + MAtkFinal) * (1 + MDamSpike) + (Refine + MRefine)) * (1 - RefineMDamReduc) * damChangePer * (1 + MDamIncrease) * NormalEnd * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)
69 end
70 if skillID == 4796_PHANTOM_DANCER:M_ATK then
71 local NormalAtkRes = targetUser:GetProperty("NormalAtkRes")
72 NormalEnd = 1 + NormalAtkDam - NormalAtkRes
73 NormalEnd = math.max(NormalEnd, 0.1)
74 A = (MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * (1 - RefineMDamReduc) * damChangePer * NormalEnd * (1 + MDamIncrease) * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)
75 if srcUser:HasBuffID(90007034_BELL_EQUIPMENT_INFUSED_WEAPONS_TIER_5_:MAX_STACK_0) then
76 local shandian = srcUser:GetBuffLayer(140841_FIRE_BOLT_CHARGING_:MAX_STACK_0)
77 A = A * (1 + 0.1 * shandian)
78 end
79 end
80 if A <= 1 then
81 return 1
82 end
83 return A
84endPreserved HTML snapshot from ROM Handbook
