Cyclone gyration · Type 2

Cyclone gyration · Type 2

Lv 8Attack

Sakray summons the magic sword to deal much P.DMG to a ring-shaped area around self. Each hit target loses one stack of "Heart of Defiance."

Range: 7

Skill Levels

Lvl: 7
Attack
Range: 5

• Sakray summons the magic sword to deal much P.DMG to the surroundings. Each hit target loses one stack of "Heart of Defiance."

Lvl: 6
Buff
Range: 9

• Increases his and surrounding allies' Phy. ATK.

Lvl: 5
Attack
Range: 5

• It allows him to not stop or be knocked back when hit, improves M. DEF, and knocks back enemies around him.

Lvl: 4
LeadSkill
Physical
Range: 15

• Enters a casting phase. During casting, water orbs randomly fall around him to deal damage. Players who are hit by the water orbs will be wrapped inside and temporarily unable to move.

Lvl: 3
Attack
Physical
Range: 10

• Deals AoE Dmg to the area ahead and charges to the finishing position after charging for a few seconds with a chance to inflict stun effect.

Lvl: 2
Attack
Physical
Range: 5

• Spins the blade to slash enemies around him, dealing AoE Dmg with a chance to inflict Equipment Break.

Lvl: 1
Attack
Physical
Range: 8

• Leaps to the target position after charging for a few seconds with a high probability of following up with a Whirlwind Slash.

Formula

1function CommonFun.calcDamage_32(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 MRefine = srcUser:GetProperty("MRefine")
12  local RangeDam = srcUser:GetProperty("RangeDam")
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 BaseLvDamage = 0
33  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
34  if skillID == 93_KNIGHT:HEAVEN_S_DRIVE_KNIGHT:HEAVEN_S_DRIVE or skillID == 1483_GUILLOTINE_CROSS:HEAVEN_S_DRIVE then
35    local IBaseLv = srcUser.BaseLv
36    if srcUser:HasBuffID(42110_FLUORESCENCE_:MAX_STACK_0) then
37      BaseLvDamage = IBaseLv * 15
38    end
39  end
40  if skillID == 1482_GUILLOTINE_CROSS:STORM_GUST_GUILLOTINE_CROSS:STORM_GUST then
41    local IBaseLv1 = srcUser.BaseLv
42    if srcUser:HasBuffID(42110_FLUORESCENCE_:MAX_STACK_0) then
43      BaseLvDamage = IBaseLv1 * 15
44    end
45    local GemValue = srcUser:GetGemValue(143161_STORM_GUST_DMG_PERCENTAGE)
46    damChangePer = damChangePer * (1 + GemValue / 100000)
47  end
48  local CardXR = 1
49  local CardNum = srcUser:GetEquipCardNum(7, 23048_HILL_WIND_CARD)
50  local CardNum2 = srcUser:GetEquipCardNum(7, 24664_HILL_WIND_STAR_CARD)
51  CardNum = CardNum + CardNum2
52  if skillID == 82_SWORDSMAN:LORD_OF_VERMILION_SWORDSMAN:LORD_OF_VERMILION_SWORDSMAN:LORD_OF_VERMILION then
53    CardXR = CardNum * 0.25 + 1
54  end
55  if skillID == 1939_SNIPER:MAGIC_WIND_JELLYFISH_SUMMON_SNIPER:MAGIC_WIND_JELLYFISH_SUMMON then
56    local skilllv_mf = srcUser:GetLernedSkillLevel(1933_SNIPER:DIM_WIND)
57    damChangePer = (skilllv_mf * 0.8 + 8.8) * 0.8
58  end
59  local Atk = srcUser:GetProperty("Atk")
60  local AtkPer = srcUser:GetProperty("AtkPer")
61  local AtkFinal = 0
62  if (srcUser:HasBuffID(30031400_CONSTELLATION_SEAL_SURGE_:MAX_STACK_0) or srcUser:HasBuffID(30031401_CONSTELLATION_SEAL_SURGE_:MAX_STACK_0) or srcUser:HasBuffID(30031402_CONSTELLATION_SEAL_SURGE_:MAX_STACK_0) or srcUser:HasBuffID(30031403_CONSTELLATION_SEAL_SURGE_:MAX_STACK_0)) and (skillID == 81_SWORDSMAN:STORM_GUST_SWORDSMAN:STORM_GUST or skillID == 82_SWORDSMAN:LORD_OF_VERMILION_SWORDSMAN:LORD_OF_VERMILION_SWORDSMAN:LORD_OF_VERMILION or skillID == 801_HIGH_WIZARD:LIGHTNING_ROD) then
63    AtkFinal = Atk * (1 + AtkPer)
64  end
65  local A = (((MAtkFinal + AtkFinal) * MDefReduc * (1 - MDamReduc2) + MRefine) * (1 - RefineMDamReduc) * damChangePer * (1 + MDamIncrease) * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)) * (1 + RangeDam) * CardXR + BaseLvDamage
66  local Num1 = srcUser:GetRunePoint(143014_AESIR_STORM_GUST_DMG_7)
67  if skillID == 81_SWORDSMAN:STORM_GUST_SWORDSMAN:STORM_GUST or skillID == 1482_GUILLOTINE_CROSS:STORM_GUST_GUILLOTINE_CROSS:STORM_GUST or skillID == 1904_HUNTER:STORM_GUST then
68    if (srcUser:HasBuffID(52170_STORMY_KNIGHT_CARD_:MAX_STACK_0) or srcUser:HasBuffID(54910_STORMY_KNIGHT_CARD_:MAX_STACK_0)) and srcUser:HasBuffID(81000040_STORMY_KNIGHT_CARD_DEPOSITE_:MAX_STACK_0) then
69      A = A * 1.2
70    end
71    if srcUser:HasBuffID(53290_MARTIN_SCAVENGER_CARD_:MAX_STACK_0) then
72      A = A * 1.05
73    end
74    if 0 < Num1 then
75      A = A * (Num1 * 0.07 + 1)
76    end
77    local GemValue1 = srcUser:GetGemValue(21073_STORM_GUST_DMG_PERCENTAGE)
78    local GemValue2 = srcUser:GetGemValue(143073_STORM_GUST_DMG_PERCENTAGE)
79    A = A * (1 + GemValue1 / 100000 + GemValue2 / 100000)
80  end
81  if skillID == 1160_THIEF:EARTH_STRAIN then
82    local GemValue = srcUser:GetGemValue(21053_EARTH_STRAIN_DMG_PERCENTAGE)
83    A = A * (1 + GemValue / 100000)
84  end
85  if skillID == 82_SWORDSMAN:LORD_OF_VERMILION_SWORDSMAN:LORD_OF_VERMILION_SWORDSMAN:LORD_OF_VERMILION then
86    local GemValue = srcUser:GetGemValue(21062_LORD_OF_VERMILION_DMG_PERCENTAGE)
87    A = A * (1 + GemValue / 100000)
88  end
89  if skillID == 93_KNIGHT:HEAVEN_S_DRIVE_KNIGHT:HEAVEN_S_DRIVE then
90    local GemValue = srcUser:GetGemValue(21092_HEAVEN_S_DRIVE_DMG_PERCENTAGE)
91    A = A * (1 + GemValue / 100000)
92  end
93  if skillID == 3107_WHITESMITH:WIND_BLADE_ADJUDICATION then
94    local skilllv_kf = srcUser:GetLernedSkillLevel(3124_WHITESMITH:WIND_BLADE_ADJUDICATION_ENHANCE)
95    A = A * (1 + skilllv_kf * 0.05)
96  end
97  if (skillID == 3111_WHITESMITH:SAND_STORM or skillID == 1933_SNIPER:DIM_WIND or skillID == 1939_SNIPER:MAGIC_WIND_JELLYFISH_SUMMON_SNIPER:MAGIC_WIND_JELLYFISH_SUMMON) and (targetUser:HasBuffID(118140_EARTH_FIELD_:MAX_STACK_0) or targetUser:HasBuffID(125140_QUICKSAND_VORTEX_EMPTY_BUFF_:MAX_STACK_0)) then
98    local skilllv_slj = srcUser:GetLernedSkillLevel(3126_WHITESMITH:SAND_STORM_EARTH_ELEMENT)
99    local skilllv_mofeng = srcUser:GetLernedSkillLevel(1946_SNIPER:MAGIC_WIND_EARTH_ELEMENT)
100    A = A * (1 + skilllv_slj * 0.12 + skilllv_mofeng * 0.12)
101  end
102  if skillID == 3108_WHITESMITH:QUICKSAND_VORTEX or skillID == 1931_SNIPER:JELLYFISH_SUMMON then
103    local GemValue = srcUser:GetGemValue(21141_QUICKSAND_VORTEX_DMG_PERCENTAGE)
104    A = A * (1 + GemValue / 100000)
105  end
106  if A <= 1 then
107    return 1
108  end
109  return A
110end
Preserved HTML snapshot from ROM Handbook