
Storm Gust
Lv 1AttackMagic
Deals (M.Atk100%) M.Dmg to the target
Range: 6
Formula
1function CommonFun.calcDamage_80(srcUser, targetUser, params, damageParam, logger)
2 local Luk = srcUser:GetProperty("Luk")
3 local Int = srcUser:GetProperty("Int")
4 local Vit = srcUser:GetProperty("Vit")
5 local MAtk = srcUser:GetProperty("MAtk")
6 local Numxp = srcUser:GetRunePoint(82001_AESIR_INCREASE_SAGE_S_AUTO_ATTACK_BONUS_FROM_INT_BY)
7 local NormalAtk = srcUser:GetProperty("NormalAtk")
8 NormalAtk = NormalAtk + (3 + 0.3 * Numxp) * Int
9 local MAtkPer = srcUser:GetProperty("MAtkPer")
10 local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
11 local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
12 if 1 <= IgnoreMDef then
13 IgnoreMDef = 1
14 end
15 local Num1 = srcUser:GetBuffLayer(90000952_SILK_ROBE_TIER_3_:MAX_STACK_0)
16 local Num2 = srcUser:GetBuffLayer(90000953_SILK_ROBE_TIER_4_:MAX_STACK_0)
17 local Num3 = srcUser:GetBuffLayer(90000954_SILK_ROBE_TIER_5_:MAX_STACK_0)
18 local Num24 = 0
19 local RefineLv2 = srcUser:GetEquipedRefineLv(2)
20 if srcUser:HasBuffID(90000959_1905_:MAX_STACK_0) then
21 Num24 = Num24 + RefineLv2 * 0.01
22 end
23 local Num26 = 0
24 local equipRing = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
25 if equipRing.id == 42126 or equipRing.id == 142126 then
26 Num26 = Num26 + equipRing.refinelv * 0.01 + 0.1
27 end
28 if (equipRing.id == 42126 or equipRing.id == 142126) and equipRing.refinelv >= 15 then
29 Num26 = Num26 + 0.05
30 end
31 local equipRingSD = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
32 if equipRingSD.id == 42126 or equipRingSD.id == 142126 then
33 Num26 = Num26 + (equipRingSD.refinelv * 0.01 + 0.1) * equipRingSD.quench_per / 100
34 end
35 if (equipRingSD.id == 42126 or equipRingSD.id == 142126) and equipRingSD.refinelv >= 15 then
36 Num26 = Num26 + 0.05 * equipRingSD.quench_per / 100
37 end
38 local Num4 = srcUser:GetBuffLayer(90000942_TIDAL_SHOES_TIER_3_:MAX_STACK_0)
39 local Num5 = srcUser:GetBuffLayer(90000944_TIDAL_SHOES_TIER_5_:MAX_STACK_0)
40 local Num25 = 0
41 local RefineLv4 = srcUser:GetEquipedRefineLv(4)
42 if srcUser:HasBuffID(90000949_1910_:MAX_STACK_0) and 10 <= RefineLv4 then
43 Num25 = 1
44 end
45 local Num27 = 0
46 local equipRingshoes = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_SHOES)
47 if equipRingshoes.id == 43587 or equipRingshoes.id == 143587 then
48 if equipRingshoes.refinelv < 5 then
49 Num27 = Num27 + 10
50 elseif equipRingshoes.refinelv >= 5 and equipRingshoes.refinelv < 10 then
51 Num27 = Num27 + 10 + 5
52 elseif equipRingshoes.refinelv >= 10 and equipRingshoes.refinelv < 15 then
53 Num27 = Num27 + 10 + 5 + 5
54 elseif equipRingshoes.refinelv >= 15 then
55 Num27 = Num27 + 10 + 5 + 5 + 5
56 end
57 end
58 local equipRingSDshoes = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_SHOES)
59 if equipRingSDshoes.id == 43587 or equipRingSDshoes.id == 143587 then
60 if equipRingSDshoes.refinelv < 5 then
61 Num27 = Num27 + 10 * equipRingSDshoes.quench_per / 100
62 elseif equipRingSDshoes.refinelv >= 5 and equipRingSDshoes.refinelv < 10 then
63 Num27 = Num27 + 15 * equipRingSDshoes.quench_per / 100
64 elseif equipRingSDshoes.refinelv >= 10 and equipRingSDshoes.refinelv < 15 then
65 Num27 = Num27 + 20 * equipRingSDshoes.quench_per / 100
66 elseif equipRingSDshoes.refinelv >= 15 then
67 Num27 = Num27 + 25 * equipRingSDshoes.quench_per / 100
68 end
69 end
70 local skilllv_1 = srcUser:GetLernedSkillLevel(1324_ASSASSIN:SHARPEN_WEAPON)
71 local CriDam = 0
72 if 0 < skilllv_1 and skilllv_1 <= 5 then
73 CriDam = 0.1
74 elseif 5 < skilllv_1 then
75 CriDam = 0.1 + (skilllv_1 - 5) * 0.05
76 end
77 local Num_bs = srcUser:GetRunePoint(82024_AESIR_INCREASE_CRIT_DMG_BY_AN_EXTRA_5_WHEN_USING_AUTO_ATTACK_ONCE_THE_SAGE_LEARNS_SHARPEN_WEAPON)
78 local GemValue1 = srcUser:GetGemValue(82101_THE_CHANCE_OF_AUTO_ATTACK_TRIGGERING_A_CRIT_PERCENTAGE_CRIT_DMG_S)
79 local GemValue2 = srcUser:GetGemValue(82102_THE_CHANCE_OF_AUTO_ATTACK_TRIGGERING_A_CRIT_PERCENTAGE_CRIT_DMG_S)
80 local RuneDamage = 1 + CriDam + 0.03 * Num1 + 0.03 * Num2 + 0.04 * Num3 + 0.05 * Num_bs + GemValue2 / 100000 + Num24 + Num26
81 local RuneDamage1 = 0
82 if 0 < Num4 + Num5 + skilllv_1 + Num25 + Num27 then
83 RuneDamage1 = skilllv_1 + Luk / 3 + Num4 * 5 + Num5 * 5 + GemValue1 / 1000 + Num25 * 5 + Num27
84 end
85 local MRefine = srcUser:GetProperty("MRefine")
86 local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
87 local targetDefElement = targetUser:GetProperty("DefAttr")
88 local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
89 local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
90 local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
91 local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
92 local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
93 local MDef2 = targetUser:GetProperty("MDef")
94 local MDefPer2 = targetUser:GetProperty("MDefPer")
95 local Vit2 = targetUser:GetProperty("Vit")
96 local VitPer2 = targetUser:GetProperty("VitPer")
97 local Int2 = targetUser:GetProperty("Int")
98 local IntPer2 = targetUser:GetProperty("IntPer")
99 local MDamReduc2 = CommonFun.calcMDamReDuc(srcUser, targetUser)
100 local RefineMDamReduc = CommonFun.calcRefineMDamReduc(srcUser, targetUser)
101 local damChangePer = damageParam.damChangePer
102 local BaseMAtk = Int + math.floor(Int * Int / 100)
103 local MAtkFinal = ((MAtk - BaseMAtk + NormalAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
104 local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
105 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)
106 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
107 if skillID == 2718_ARCHBISHOP:FIRE_BREATH_ARCHBISHOP:FIRE_BREATH then
108 local Num = srcUser:GetBuffLayer(137570_SERPENT_ECHO_:MAX_STACK_3)
109 local count = params.hitedCount
110 if count == 1 then
111 A = A * (1 + Num * 0.5)
112 end
113 end
114 if MDef2 <= 0 and (srcUser:HasBuffID(42360_POCKET_WATCH_:MAX_STACK_0) or srcUser:HasBuffID(43110_TIME_MANIPULATOR_:MAX_STACK_0) or srcUser:HasBuffLayer(43110, EBUFFERLAYER_SHADOW)) and (srcUser:HasBuffID(41670_SAGE_S_DIARY_:MAX_STACK_0) or srcUser:HasBuffID(42240_SAGE_S_HANDBOOK_:MAX_STACK_0)) then
115 RuneDamage1 = 100
116 end
117 local damageType = CommonFun.DamageType.Normal
118 if CommonFun.IsInRate(RuneDamage1, srcUser:GetRandom()) then
119 A = A * RuneDamage
120 damageType = CommonFun.DamageType.Crit
121 end
122 if srcUser:HasBuffID(137540_SURGING_ARCANE_:MAX_STACK_10) and skillID == 2718_ARCHBISHOP:FIRE_BREATH_ARCHBISHOP:FIRE_BREATH then
123 local skilllv_an = srcUser:GetLernedSkillLevel(2704_ARCHBISHOP:DISASTER_PANIC)
124 A = A * (1 + skilllv_an * 0.2)
125 damageType = CommonFun.DamageType.Crit
126 end
127 if A <= 1 then
128 return 1
129 end
130 return A, damageType
131endPreserved HTML snapshot from ROM Handbook
