Cold Bolt

Cold Bolt

Lv 1AttackMagic

Attacks an enemy with the ice arrows from the sky, dealing (M.Atk100%) water M.Dmg

Range: 6
Cast: 0.64
Fixed: 0.16

Formula

1function CommonFun.calcDamage_38(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 MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
7  local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
8  if 1 <= IgnoreMDef then
9    IgnoreMDef = 1
10  end
11  local Num1 = srcUser:GetRunePoint(22120_AESIR_COLD_BOLT_HAS_A_8_CHANCE_TO_BECOME_HIGH_ENERGY_DEALING_10_TOTAL_DAMAGE)
12  local RuneRate = 0
13  if 0 < Num1 then
14    RuneRate = 8
15  end
16  local RuneDamage = Num1 * 0.1 + 1
17  local Num2 = srcUser:GetRunePoint(22160_AESIR_INCREASES_THE_DAMAGE_OF_FIRE_BOLT_COLD_BOLT_LIGHTNING_BOLT_AND_CHRONOLOGY_BOLT_BY_10)
18  local Num3 = srcUser:GetRunePoint(22161_AESIR_INCREASES_THE_DAMAGE_OF_FIRE_BOLT_COLD_BOLT_LIGHTNING_BOLT_AND_CHRONOLOGY_BOLT_BY_10)
19  local RuneDamage1 = (Num2 + Num3) * 0.1 + 1
20  local MRefine = srcUser:GetProperty("MRefine")
21  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
22  local targetDefElement = targetUser:GetProperty("DefAttr")
23  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
24  local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
25  local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
26  local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
27  local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
28  local MDef2 = targetUser:GetProperty("MDef")
29  local MDefPer2 = targetUser:GetProperty("MDefPer")
30  local Vit2 = targetUser:GetProperty("Vit")
31  local VitPer2 = targetUser:GetProperty("VitPer")
32  local Int2 = targetUser:GetProperty("Int")
33  local IntPer2 = targetUser:GetProperty("IntPer")
34  local MDamReduc2 = CommonFun.calcMDamReDuc(srcUser, targetUser)
35  local RefineMDamReduc = CommonFun.calcRefineMDamReduc(srcUser, targetUser)
36  local damChangePer = damageParam.damChangePer
37  local damChangePer1 = damageParam.damChangePer1
38  local BaseMAtk = Int + math.floor(Int * Int / 100)
39  local MAtkFinal = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
40  local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
41  local BaseLvDamage = 0
42  local IBaseLv = srcUser.BaseLv
43  if srcUser:HasBuffID(42110_FLUORESCENCE_:MAX_STACK_0) then
44    BaseLvDamage = IBaseLv * 15
45  end
46  if srcUser:HasBuffID(42120_MJOLNIR_SPELLBOOK_:MAX_STACK_0) then
47    BaseLvDamage = IBaseLv * 15
48  end
49  local taozhuang1 = 1
50  if srcUser:HasBuffID(91000470_SAGE_S_BOOK_TELEKINETIC_ORB_:MAX_STACK_0) or srcUser:HasBuffID(91000770_SAGE_S_HANDBOOK_TELEKINETIC_ORB_:MAX_STACK_0) or srcUser:HasBuffID(91001490_SAGE_S_BOOK_CONTRACT_JEWELERY_:MAX_STACK_0) or srcUser:HasBuffID(91001500_SAGE_S_HANDBOOK_CONTRACT_JEWELERY_:MAX_STACK_0) then
51    taozhuang1 = 1.15
52  end
53  if srcUser:HasBuffID(90004514_SAGE_S_HANDBOOK_1_TIER_5_:MAX_STACK_0) then
54    taozhuang1 = taozhuang1 + 0.15
55  end
56  local Ring1 = srcUser:GetEquipedID(7_WEAPON)
57  local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
58  if Ring1 == 63440_SAGE_S_HANDBOOK_1 or Ring1 == 163440_SAGE_S_HANDBOOK_2 then
59    taozhuang1 = RefineLv * 0.01 + taozhuang1
60  end
61  local GemValue = srcUser:GetGemValue(82072_COLD_BOLT_DMG_PERCENTAGE)
62  local GemDam = 1 + GemValue / 100000
63  local SnowBeast = 1
64  if srcUser:HasBuffID(53980_SMALL_SIROMA_CARD_:MAX_STACK_0) then
65    SnowBeast = 1.1
66  end
67  if srcUser:HasBuffID(53980_SMALL_SIROMA_CARD_:MAX_STACK_0) and srcUser:HasBuffID(80002350_SIROMA_CARD_DEPOSITE_:MAX_STACK_0) then
68    SnowBeast = SnowBeast + 0.02
69  end
70  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) + damChangePer1) * RuneDamage1 * taozhuang1 * GemDam * SnowBeast + BaseLvDamage
71  if A <= 1 then
72    return 1
73  end
74  if CommonFun.IsInRate(RuneRate, srcUser:GetRandom()) then
75    return A * RuneDamage, CommonFun.DamageType.Crit
76  end
77  return A
78end
Preserved HTML snapshot from ROM Handbook