Storm Gust

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
131end
Preserved HTML snapshot from ROM Handbook