Arm Cannon

Arm Cannon

Lv 1AttackPhysical

Fires with Madogear’s arm cannon, dealing Atk1070% neutral Dmg to enemies in range. Deals 1.5x/1x/0.75x damage to small/mid/large sized enemy. This skill ignores Flee

Range: 7.5

Formula

1function CommonFun.calcDamage_30(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 MAtkPer = srcUser:GetProperty("MAtkPer")
7  local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
8  local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
9  if 1 <= IgnoreMDef then
10    IgnoreMDef = 1
11  end
12  local MRefine = srcUser:GetProperty("MRefine")
13  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
14  local targetDefElement = targetUser:GetProperty("DefAttr")
15  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
16  local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
17  local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
18  local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
19  local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
20  local MDef2 = targetUser:GetProperty("MDef")
21  local MDefPer2 = targetUser:GetProperty("MDefPer")
22  local Vit2 = targetUser:GetProperty("Vit")
23  local VitPer2 = targetUser:GetProperty("VitPer")
24  local Int2 = targetUser:GetProperty("Int")
25  local IntPer2 = targetUser:GetProperty("IntPer")
26  local MDamReduc2 = CommonFun.calcMDamReDuc(srcUser, targetUser)
27  local RefineMDamReduc = CommonFun.calcRefineMDamReduc(srcUser, targetUser)
28  local damChangePer = damageParam.damChangePer
29  local BaseMAtk = Int + math.floor(Int * Int / 100)
30  local MAtkFinal = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
31  local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
32  local CardXR = 1
33  local CardNum = srcUser:GetEquipCardNum(7, 23048_HILL_WIND_CARD)
34  local CardNum2 = srcUser:GetEquipCardNum(7, 24664_HILL_WIND_STAR_CARD)
35  CardNum = CardNum + CardNum2
36  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
37  if skillID == 84_SWORDSMAN:JUPITEL_THUNDER then
38    CardXR = CardNum * 0.25 + 1
39  end
40  local A = ((MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * damChangePer * (1 - RefineMDamReduc) * (1 + MDamIncrease) * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)) * CardXR
41  if skillID == 1930_SNIPER:HEAVY_SLASH then
42    local MDamSpike = srcUser:GetProperty("MDamSpike_MPEN")
43    MAtkFinal = (MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk
44    A = (MAtkFinal * (1 + MDamSpike) + MRefine) * damChangePer * (1 - RefineMDamReduc) * (1 + MDamIncrease)
45  end
46  if skillID == 1500_GUILLOTINE_CROSS:ICE_WALL then
47    local Num1 = srcUser:GetRunePoint(143026_AESIR_ICE_WALL_DAMAGE_INCREASES_BY_10)
48    A = A * (1 + Num1 * 0.1)
49  end
50  if skillID == 3209_MECHANIC:CHRONOLOGY_BOLT then
51    local skilllv_1 = srcUser:GetLernedSkillLevel(3226_MECHANIC:CHRONOLOGY_BOLT_ENHANCE)
52    local taozhuang1 = 1
53    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
54      taozhuang1 = 1.15
55    end
56    if srcUser:HasBuffID(90004514_SAGE_S_HANDBOOK_1_TIER_5_:MAX_STACK_0) then
57      taozhuang1 = taozhuang1 + 0.15
58    end
59    local Ring1 = srcUser:GetEquipedID(7_WEAPON)
60    local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
61    if Ring1 == 63440_SAGE_S_HANDBOOK_1 or Ring1 == 163440_SAGE_S_HANDBOOK_2 then
62      taozhuang1 = RefineLv * 0.01 + taozhuang1
63    end
64    local Num1 = srcUser:GetRunePoint(22160_AESIR_INCREASES_THE_DAMAGE_OF_FIRE_BOLT_COLD_BOLT_LIGHTNING_BOLT_AND_CHRONOLOGY_BOLT_BY_10)
65    local Num2 = srcUser:GetRunePoint(22161_AESIR_INCREASES_THE_DAMAGE_OF_FIRE_BOLT_COLD_BOLT_LIGHTNING_BOLT_AND_CHRONOLOGY_BOLT_BY_10)
66    local RuneDamage = (Num1 + Num2) * 0.1 + 1
67    local GemKj = 0
68    local GemSj = 0
69    if srcUser:HasBuffID(126122_CHRONOLOGY_BOLT_TIME_FIELD_:MAX_STACK_0) then
70      GemSj = srcUser:GetGemValue(82151_WHILE_YOU_ARE_IN_TIME_FIELD_INCREASE_CHRONOLOGY_BOLT_DMG_BY_PERCENTAGE)
71    end
72    local GemDam = 1 + GemSj / 100000
73    A = A * (1 + skilllv_1 * 0.06) * taozhuang1 * RuneDamage * GemDam
74  end
75  if A <= 1 then
76    return 1
77  end
78  return A
79end
Preserved HTML snapshot from ROM Handbook