
Asura Strike
Lv 10AttackPhysical
Consume all SP to deal neutral Phy. DMG of Phy. ATK x (40 + remaining SP/100) + 2500 + 500 x50 to a single enemy unit, ignoring 30% of the target's Race Reduc., Attribute Reduc. and Phy. DMG Reduc. and defying the target's DMG Reduc. skill effect. It can only be cast in the Aura Burst state. SP recovery is disabled for 5 seconds upon its release and Auto SP regeneration is disabled for 300 seconds The number of Aura Bombs consumed varies according to the skill it follows: Consume Aura Bomb x5 if released directly Consume Aura Bomb x4 if released after the Way of a Dragon or Blade Stop Consume Aura Bomb x3 if released after Tiger Fist Consume Aura Bomb x1 if released after Chain Crush
CD: 5 sec
Range: 3
Cast: 2
Formula
1function CommonFun.calcDamage_12202(srcUser, targetUser, params, damageParam, logger)
2 local Str = srcUser:GetProperty("Str")
3 local Dex = srcUser:GetProperty("Dex")
4 local Luk = srcUser:GetProperty("Luk")
5 local Atk = srcUser:GetProperty("Atk")
6 local AtkPer = srcUser:GetProperty("AtkPer")
7 local DamIncrease = srcUser:GetProperty("DamIncrease")
8 local Sp = srcUser:GetProperty("Sp")
9 local MaxSp = srcUser:GetProperty("MaxSp")
10 local IgnoreDef = 0
11 local IgnoreDef1 = srcUser:GetProperty("IgnoreDef")
12 local IgnoreDef2 = srcUser:GetProperty("IgnoreEquipDef")
13 if targetUser.boss or targetUser.mini then
14 IgnoreDef = IgnoreDef1
15 else
16 IgnoreDef = IgnoreDef1 + IgnoreDef2
17 end
18 if 1 <= IgnoreDef then
19 IgnoreDef = 1
20 end
21 local Refine = srcUser:GetProperty("Refine")
22 local Def2 = targetUser:GetProperty("Def")
23 local DefPer2 = targetUser:GetProperty("DefPer")
24 local Vit2 = targetUser:GetProperty("Vit")
25 local VitPer2 = targetUser:GetProperty("VitPer")
26 local RefineDamReduc = CommonFun.calcRefineDamReduc(srcUser, targetUser)
27 local damChangePer = damageParam.damChangePer
28 local damChangePer1 = damageParam.damChangePer1
29 local DamSpike = srcUser:GetProperty("DamSpike_PEN")
30 local DamReduc = targetUser:GetProperty("DamReduc")
31 local skilllv = srcUser:GetLernedSkillLevel(306_LORD_KNIGHT:ASURA_STRIKE)
32 if 5 < skilllv and 0 <= DamReduc then
33 DamReduc = math.max(DamReduc - 0.06 * (skilllv - 5), 0)
34 end
35 local PvP_DamReduc = DamReduc
36 local mapid, maptype = srcUser:GetMapInfo()
37 if (maptype == PVP_MAPS) and targetUser:GetNpcID() == 0 then
38 PvP_DamReduc = PvP_DamReduc < -1 and -1 or 1 < PvP_DamReduc and 1 or PvP_DamReduc
39 PvP_DamReduc = math.floor(PvP_DamReduc * 1000) / 1000
40 PvP_DamReduc = 0.4 * (1 - math.sin(PvP_DamReduc * 3.14 / 2))
41 else
42 PvP_DamReduc = 0
43 end
44 DamReduc = DamReduc + PvP_DamReduc
45 ReduceLv = CommonFun.calcSpikeLv(srcUser, targetUser)
46 local SkillDamReduc = CommonFun.calcSkillDamReduc(srcUser, targetUser)
47 local DamReduc2 = 1 - (1 + 0.009 * ReduceLv + DamSpike - DamReduc) * SkillDamReduc
48 if 5 < skilllv then
49 DamReduc2 = 1 - (1 + 0.009 * ReduceLv + DamSpike - DamReduc)
50 end
51 if 0.9 <= DamReduc2 then
52 DamReduc2 = 0.9
53 end
54 local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
55 local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger)
56 local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger)
57 local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
58 local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
59 local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger)
60 local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
61 local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
62 local Num1 = srcUser:GetRunePoint(120100_AESIR_INCREASES_MULTIPLIER_OF_ASURA_STRIKE_FORMULA_SKILL_LV_X4_REMAINING_SP_100_BY)
63 local RuneDamage = Num1 * 0.6
64 local BaseLvDamage = 0
65 local IBaseLv = srcUser.BaseLv
66 if srcUser:HasBuffID(42220_TOOTH_SHARD_:MAX_STACK_0) then
67 BaseLvDamage = IBaseLv * 40
68 end
69 local a = 0
70 local b = 0
71 local c = 0
72 local d = 0
73 local Equip1 = srcUser:GetEquipedID(7_WEAPON)
74 local Equip3 = srcUser:GetEquipedID(5_ACCESSORY)
75 local Equip4 = srcUser:GetEquipedID(6_ACCESSORY)
76 if Equip1 == 62508 or Equip1 == 162508 then
77 a = 5
78 end
79 if Equip1 == 62540 or Equip1 == 162540 then
80 a = 5
81 end
82 local equipRing = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
83 if equipRing.id == 42089 or equipRing.id == 142089 then
84 b = 2
85 end
86 local equipRingSD = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
87 if equipRingSD.id == 42089 or equipRingSD.id == 142089 then
88 b = 2 * equipRingSD.quench_per / 100
89 end
90 if Equip3 == 44003 or Equip3 == 144003 then
91 c = 1.5
92 end
93 if Equip4 == 44003 or Equip4 == 144003 then
94 d = 1.5
95 end
96 local equipRing5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
97 if equipRing5.id == 44047 or equipRing5.id == 144047 then
98 c = 2
99 end
100 local equipRingSD5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
101 if equipRingSD5.id == 44047 or equipRingSD5.id == 144047 then
102 c = 2 * equipRingSD5.quench_per / 100
103 end
104 local equipRing6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
105 if equipRing6.id == 44047 or equipRing6.id == 144047 then
106 d = 2
107 end
108 local equipRingSD6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
109 if equipRingSD6.id == 44047 or equipRingSD6.id == 144047 then
110 d = 2 * equipRingSD6.quench_per / 100
111 end
112 local BaseAtk = Str * 2 + math.floor(Str * Str / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
113 local BaseAtk1 = Str * 4 + math.floor(Str * Str / 100) * 2 + math.floor(Dex / 5) + math.floor(Luk / 5)
114 local AtkFinal = ((Atk - BaseAtk) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk1) * raceparam * bossparam * bossparam2
115 local ShortRangeDamReduc2 = targetUser:GetProperty("ShortRangeDamReduc")
116 local GemDam = 1
117 if Sp < MaxSp * 0.3 then
118 GemValue = srcUser:GetGemValue(122131_WHEN_SP_FALLS_BELOW_30_ASURA_STRIKE_DAMAGE_PERCENTAGE)
119 GemDam = 1 + GemValue / 100000
120 end
121 local potian = 1
122 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
123 if skillID == 3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST or skillID == 819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST then
124 local skilllv_potian = srcUser:GetLernedSkillLevel(3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST)
125 local skilllv_fuw = srcUser:GetLernedSkillLevel(819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST)
126 local skilllv_lz = srcUser:GetLernedSkillLevel(3329_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_DRAGON_BALL)
127 local Num_lz = srcUser:GetBuffLayer(100500_SPIRIT_BOMB_:MAX_STACK_0)
128 local lz = 1
129 if 1 <= skilllv_lz then
130 lz = 1 + Num_lz * skilllv_lz * 0.002
131 end
132 damChangePer = 4 * skilllv
133 damChangePer1 = 5 * skilllv
134 potian = (math.max(skilllv_potian, skilllv_fuw) * 0.05 + 0.5) * lz
135 end
136 local A = (((AtkFinal * (1 - DamReduc2) + Refine) * (damChangePer + Sp / 100 + RuneDamage + a + b + c + d) + 2500 + 500 * damChangePer1) * (1 + DamIncrease - ShortRangeDamReduc2) * (1 - RefineDamReduc) * GemDam + BaseLvDamage) * potian
137 if A <= 1 then
138 return 1
139 end
140 return A
141endPreserved HTML snapshot from ROM Handbook
