Formula

CommonFun.DoCalcStateEffectDam

formula.lua
1function CommonFun.DoCalcStateEffectDam(srcUser, targetUser, params)
2  local StateEffect = targetUser:GetProperty("StateEffect")
3  local bits = CommonFun.getBits(StateEffect)
4  local Weapon = srcUser:GetEquipedID(7_WEAPON)
5  local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
6  local Profession = srcUser:GetProfressionID()
7  local Num1 = srcUser:GetRunePoint(31011_AESIR_DEALS_10_MORE_DAMAGE_TO_STUNNED_TARGETS)
8  local Num2 = srcUser:GetRunePoint(31012_AESIR_DEALS_5_MORE_DAMAGE_TO_STUNNED_TARGETS)
9  local Num3 = srcUser:GetRunePoint(31013_AESIR_DEALS_10_MORE_DAMAGE_TO_STUNNED_TARGETS)
10  local Num4 = srcUser:GetRunePoint(31014_AESIR_DEALS_5_MORE_DAMAGE_TO_STUNNED_TARGETS)
11  local Num5 = srcUser:GetRunePoint(31015_AESIR_DEALS_5_MORE_DAMAGE_TO_STUNNED_TARGETS)
12  local RuneDamage1 = Num1 * 0.1 + Num2 * 0.05 + Num3 * 0.1 + Num4 * 0.05 + Num5 * 0.05
13  local Num6 = srcUser:GetRunePoint(41011_AESIR_DEALS_15_DAMAGE_TO_SNARED_UNITS)
14  local Num7 = srcUser:GetRunePoint(41012_AESIR_DEALS_10_DAMAGE_TO_SNARED_UNITS)
15  local Num8 = srcUser:GetRunePoint(41013_AESIR_DEALS_15_DAMAGE_TO_SNARED_UNITS)
16  local RuneDamage2 = Num6 * 0.15 + Num7 * 0.1 + Num8 * 0.15
17  local Num9 = srcUser:GetRunePoint(62001_AESIR_DEALS_2_MORE_DAMAGE_TO_STUNNED_TARGETS)
18  local Num10 = srcUser:GetRunePoint(62002_AESIR_DEALS_4_MORE_DAMAGE_TO_STUNNED_TARGETS)
19  local Num11 = srcUser:GetRunePoint(62003_AESIR_DEALS_4_MORE_DAMAGE_TO_STUNNED_TARGETS)
20  local Num12 = srcUser:GetRunePoint(62004_AESIR_DEALS_2_MORE_DAMAGE_TO_STUNNED_TARGETS)
21  local Num13 = srcUser:GetRunePoint(62005_AESIR_DEALS_2_MORE_DAMAGE_TO_STUNNED_TARGETS)
22  local RuneDamage3 = Num9 * 0.02 + Num10 * 0.04 + Num11 * 0.04 + Num12 * 0.02 + Num13 * 0.02
23  local Num14 = srcUser:GetRunePoint(120180_AESIR_DEALS_3_DMG_TO_SILENCED_TARGETS)
24  local RuneDamage4 = Num14 * 0.03
25  local Num16 = srcUser:GetRunePoint(120210_AESIR_DEALS_10_DMG_TO_STUNNED_TARGETS)
26  local RuneDamage6 = Num16 * 0.1
27  local Num17 = srcUser:GetRunePoint(90210_AESIR_DEALS_5_DMG_TO_STUNNED_TARGETS)
28  local RuneDamage7 = Num17 * 0.05
29  local Num18 = srcUser:GetRunePoint(90200_AESIR_DAMAGE_TO_TARGETS_OF_SLOW_ATK_AND_CLOSE_CONFINE_3)
30  local RuneDamage8 = Num18 * 0.03
31  local Snatch = 0
32  local fromid = targetUser:GetBuffFromID(106131_INTIMIDATE_AEISR_MONUMENT_DAMAGE_BONUS_:MAX_STACK_0)
33  local guid = srcUser:GetGuid()
34  local Num19 = srcUser:GetRunePoint(90110_AESIR_WITHIN_5_SECONDS_THE_DAMAGE_TO_TARGET_OF_INTIMIDATE_5)
35  if fromid == guid then
36    Snatch = 0.05 * Num19
37  end
38  local DizzyRatio = 0
39  if srcUser:HasBuffID(80001480_ORC_HERO_CARD_DEPOSITE_:MAX_STACK_0) and srcUser:HasBuffID(51230_ORC_HERO_CARD_:MAX_STACK_0) or srcUser:HasBuffID(81004140_ORC_HERO_CARD_:MAX_STACK_0) and srcUser:HasBuffID(58530_ORC_HERO_CARD_:MAX_STACK_0) then
40    DizzyRatio = 0.15
41  end
42  if srcUser:HasBuffID(38010_3000812SR_HELMET_1_:MAX_STACK_0) then
43    DizzyRatio = DizzyRatio + 0.1
44  end
45  local CardNumzsj = srcUser:GetEquipCardNum(7, 24624_ROTAR_ZAIRO_STAR_CARD)
46  if srcUser:HasBuffID(54100_ROTAR_ZAIRO_CARD_:MAX_STACK_0) then
47    DizzyRatio = DizzyRatio + 0.1 * CardNumzsj
48  end
49  local Ring5 = srcUser:GetEquipedID(5_ACCESSORY)
50  local RefineLv5 = srcUser:GetEquipedRefineLv(5_ACCESSORY)
51  local Ring6 = srcUser:GetEquipedID(6_ACCESSORY)
52  local RefineLv6 = srcUser:GetEquipedRefineLv(6_ACCESSORY)
53  local curse5 = 0
54  local curse6 = 0
55  if Ring5 == 44089 or Ring5 == 144089 then
56    curse5 = RefineLv5 / 100
57  end
58  if Ring6 == 44089 or Ring6 == 144089 then
59    curse6 = RefineLv6 / 100
60  end
61  local equipRing5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
62  if equipRing5.id == 44164 or equipRing5.id == 144164 then
63    curse5 = curse5 + equipRing5.refinelv * 0.01
64  end
65  local equipRingSD5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
66  if equipRingSD5.id == 44164 or equipRingSD5.id == 144164 then
67    curse5 = curse5 + equipRingSD5.refinelv * 0.01 * equipRingSD5.quench_per / 100
68  end
69  local equipRing6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
70  if equipRing6.id == 44164 or equipRing6.id == 144164 then
71    curse6 = curse6 + equipRing6.refinelv * 0.01
72  end
73  local equipRingSD6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
74  if equipRingSD6.id == 44164 or equipRingSD6.id == 144164 then
75    curse6 = curse6 + equipRingSD6.refinelv * 0.01 * equipRingSD6.quench_per / 100
76  end
77  local curse = curse5 + curse6
78  local skilllv_Rogue = srcUser:GetLernedSkillLevel(484_RUNEMASTER:STATE_PURSUIT)
79  local Rogue = 0
80  if 1 <= skilllv_Rogue then
81    Rogue = 0.03 * skilllv_Rogue
82  end
83  local bloodrain = 0
84  local RefineLv7 = srcUser:GetEquipedRefineLv(7_WEAPON)
85  if srcUser:HasBuffID(90001048_BLOOD_TEARS_1_TIER_9_:MAX_STACK_0) and 10 <= RefineLv7 then
86    bloodrain = 0.15
87  end
88  if srcUser:HasBuffID(41870_ASSASSIN_S_JUR_:MAX_STACK_0) and 5 <= RefineLv7 then
89    bloodrain = 0.2
90  end
91  if srcUser:HasBuffID(44290_POISONOUS_WHIP_ROSE_:MAX_STACK_0) or srcUser:HasBuffID(44300_NEPENTHES_LYRE_:MAX_STACK_0) then
92    bloodrain = RefineLv7 * 0.01
93  end
94  if srcUser:HasBuffID(90004314_DESERT_STORM_1_TIER_5_:MAX_STACK_0) then
95    bloodrain = 0.15
96  end
97  if srcUser:HasBuffID(64350_2982_:MAX_STACK_0) then
98    bloodrain = bloodrain + 0.1
99  end
100  local skilllv_Zhuangtai = srcUser:GetLernedSkillLevel(1166_THIEF:STATUS_VULNERABILITY)
101  local skilllv_Zhuangtai2 = srcUser:GetLernedSkillLevel(1490_GUILLOTINE_CROSS:STATUS_VULNERABILITY)
102  local skilllv_Zhuangtai3 = srcUser:GetLernedSkillLevel(1716_ARCHER:STATUS_VULNERABILITY)
103  local skilllv_Zhuangtai4 = srcUser:GetLernedSkillLevel(1912_HUNTER:STATUS_VULNERABILITY)
104  local skilllv_Zhuangtai5 = srcUser:GetLernedSkillLevel(62001_:STATUS_VULNERABILITY)
105  local Numfs = srcUser:GetRunePoint(24080_AESIR_STATUS_VULNERABILITY_S_EFFECT_3_AUTO_ATTACK_HAS_A_3_CHANCE_TO_INFLICT_BURN_FREEZING_STUN_OR_BLEEDING_ON_THE_ENEMY)
106  local Yishang = skilllv_Zhuangtai * 0.05 + Numfs * 0.03 + skilllv_Zhuangtai2 * 0.05 + skilllv_Zhuangtai3 * 0.05 + skilllv_Zhuangtai4 * 0.05 + skilllv_Zhuangtai5 * 0.005
107  local FrozenM = 0
108  local Card1 = srcUser:GetEquipCardNum(7, 20025_MARINA_CARD)
109  if 0 < Card1 and srcUser:HasBuffID(80000250_MARINA_CARD_DEPOSITE_:MAX_STACK_0) then
110    FrozenM = 0.25 + FrozenM
111  end
112  if srcUser:HasBuffID(52180_GARM_CARD_:MAX_STACK_0) and srcUser:HasBuffID(81000050_GARM_CARD_DEPOSITE_:MAX_STACK_0) then
113    FrozenM = 0.2 + FrozenM
114  end
115  if srcUser:HasBuffID(56250_GARM_CARD_:MAX_STACK_0) and srcUser:HasBuffID(81003180_GARM_CARD_STORAGE_:MAX_STACK_0) then
116    FrozenM = 0.2 + FrozenM
117  end
118  if srcUser:HasBuffID(54930_REVENANT_STORMY_KNIGHT_CARD_:MAX_STACK_0) and srcUser:HasBuffID(54910_STORMY_KNIGHT_CARD_:MAX_STACK_0) then
119    FrozenM = 0.1 + FrozenM
120  end
121  local BloodM = 0
122  if srcUser:HasBuffID(37540_3000531SRSILVER_MOON_BLACKCAT_:MAX_STACK_0) then
123    BloodM = 0.05 + BloodM
124  end
125  local Rosa = 0
126  if srcUser:HasBuffID(138691_GUIDE_OF_ROSE_:MAX_STACK_0) then
127    local Bufflv = srcUser:GetBuffLevel(138691_GUIDE_OF_ROSE_:MAX_STACK_0)
128    Rosa = Bufflv * 0.03
129  end
130  if bits[CommonFun.StateEffect.Poison] == 1 and (Weapon == 40909_BLOOD_TEARS_1 or Weapon == 140909_BLOOD_TEARS_2) then
131    return 1 + bloodrain
132  end
133  if bits[CommonFun.StateEffect.Poison] == 1 and (Weapon == 40945_ASSASSIN_S_JUR_1 or Weapon == 140945_ASSASSIN_S_JUR_2) then
134    return 1 + bloodrain
135  end
136  if bits[CommonFun.StateEffect.Poison] == 1 and (Weapon == 62819_POISONOUS_WHIP_1 or Weapon == 162819_POISONOUS_WHIP_2 or Weapon == 63153_NEPENTHES_LYRE_1 or Weapon == 163153_NEPENTHES_LYRE_2) then
137    return 1 + bloodrain
138  end
139  if bits[CommonFun.StateEffect.Poison] == 1 and (Weapon == 40766_DESERT_STORM_1 or Weapon == 140766_DESERT_STORM_2) then
140    return 1 + bloodrain
141  end
142  if bits[CommonFun.StateEffect.Poison] == 1 then
143    return 1 + bloodrain
144  end
145  if targetUser:GetBuffFromID(106131_INTIMIDATE_AEISR_MONUMENT_DAMAGE_BONUS_:MAX_STACK_0) and fromid == guid and (Profession == 92_ROGUE_ROGUE_ROGUE_ROGUE_ROGUE or Profession == 93_STALKER_STALKER_STALKER_STALKER_STALKER or Profession == 94_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER or Profession == 95_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER) then
146    return 1 + Snatch
147  end
148  if bits[CommonFun.StateEffect.Dizzy] == 1 and (Profession == 92_ROGUE_ROGUE_ROGUE_ROGUE_ROGUE or Profession == 93_STALKER_STALKER_STALKER_STALKER_STALKER or Profession == 94_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER or Profession == 95_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER) then
149    return 1 + Rogue + RuneDamage7 + Snatch
150  end
151  if (bits[CommonFun.StateEffect.NoMove] == 1 or targetUser:HasBuffID(106151_CLOSE_CONFINE_REMOVE_EFFECTS_:MAX_STACK_0)) and (Profession == 92_ROGUE_ROGUE_ROGUE_ROGUE_ROGUE or Profession == 93_STALKER_STALKER_STALKER_STALKER_STALKER or Profession == 94_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER or Profession == 95_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER) then
152    return 1 + Rogue + RuneDamage8 + Snatch
153  end
154  if (bits[CommonFun.StateEffect.Dark] == 1 or targetUser:HasBuffID(106151_CLOSE_CONFINE_REMOVE_EFFECTS_:MAX_STACK_0)) and (Profession == 92_ROGUE_ROGUE_ROGUE_ROGUE_ROGUE or Profession == 93_STALKER_STALKER_STALKER_STALKER_STALKER or Profession == 94_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER or Profession == 95_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER) then
155    return 1 + Rogue + Snatch + curse
156  end
157  if (bits[CommonFun.StateEffect.Dizzy] == 1 or bits[CommonFun.StateEffect.NoMove] == 1 or bits[CommonFun.StateEffect.Dark] == 1 or targetUser:HasBuffID(106151_CLOSE_CONFINE_REMOVE_EFFECTS_:MAX_STACK_0)) and (Profession == 92_ROGUE_ROGUE_ROGUE_ROGUE_ROGUE or Profession == 93_STALKER_STALKER_STALKER_STALKER_STALKER or Profession == 94_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER_SHADOW_CHASER or Profession == 95_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER_PHANTOM_DANCER) then
158    return 1 + Rogue + Snatch
159  end
160  if bits[CommonFun.StateEffect.Dizzy] == 1 and (Weapon == 41813_WINDHAWK_1 or Weapon == 141813_WINDHAWK_2) then
161    return 1.15 + RuneDamage1 + RuneDamage3 + RuneDamage6 + DizzyRatio + Rogue
162  end
163  if bits[CommonFun.StateEffect.Dizzy] == 1 and (Weapon == 41811_GUILLOTINE_1 or Weapon == 141811_GUILLOTINE_2) then
164    return 1 + 0.05 * RefineLv + RuneDamage1 + RuneDamage3 + RuneDamage6 + DizzyRatio + Rogue
165  end
166  if bits[CommonFun.StateEffect.Dizzy] == 1 and (Profession == 61_MERCHANT or Profession == 62_BLACKSMITH or Profession == 63_WHITESMITH or Profession == 64_MECHANIC or Profession == 65_LIGHTBRINGER or Profession == 31_THIEF or Profession == 32_ASSASSIN or Profession == 33_ASSASSIN_CROSS or Profession == 34_GUILLOTINE_CROSS or Profession == 35_BLADE_SOUL or Profession == 213_LITTLE_SAVIOR or Profession == 214_RYUJINMARU or Profession == 215_RYUOUMARU) then
167    return 1 + RuneDamage1 + RuneDamage3 + DizzyRatio
168  end
169  if bits[CommonFun.StateEffect.Freeze] == 1 then
170    return 1 + Yishang + FrozenM
171  end
172  if bits[CommonFun.StateEffect.NoMove] == 1 then
173    return 1 + RuneDamage2
174  end
175  if bits[CommonFun.StateEffect.Silence] == 1 and (Profession == 122_MONK_MONK or Profession == 123_CHAMPION_CHAMPION or Profession == 124_SHURA_SHURA or Profession == 125_DRAGON_FIST_DRAGON_FIST) then
176    return 1 + RuneDamage4 + curse
177  end
178  if bits[CommonFun.StateEffect.Dizzy] == 1 and (Profession == 122_MONK_MONK or Profession == 123_CHAMPION_CHAMPION or Profession == 124_SHURA_SHURA or Profession == 125_DRAGON_FIST_DRAGON_FIST) then
179    return 1 + RuneDamage6 + DizzyRatio
180  end
181  if srcUser:HasBuffID(80113_HEAD_CRUSH_PEAK_:MAX_STACK_0) and bits[CommonFun.StateEffect.Blood] == 1 then
182    local skilllv_1 = srcUser:GetLernedSkillLevel(25_SWORDSMAN:HEAD_CRUSH)
183    if 10 < skilllv_1 then
184      return 1 + (skilllv_1 - 10) * 0.05 + BloodM + Rosa
185    end
186  end
187  if bits[CommonFun.StateEffect.Blood] == 1 then
188    return 1 + Yishang + BloodM + Rosa
189  end
190  if bits[CommonFun.StateEffect.Dizzy] == 1 and (Profession == 24_WARLOCK_WARLOCK or Profession == 25_ARCANE_MASTER_ARCANE_MASTER or Profession == 144_SUPER_NOVICE_SUPER_NOVICE or Profession == 145_NOVICE_GUARDIAN_NOVICE_GUARDIAN or Profession == 204_WARRIOR_OF_WILDFIRE_WARRIOR_OF_WILDFIRE or Profession == 205_INFERNO_ARMOR_INFERNO_ARMOR or Profession == 224_CHAOTIC_ARCHMAGE_CHAOTIC_ARCHMAGE or Profession == 225_SLAYER_SLAYER or srcUser:HasBuffID(231010_STATUS_VULNERABILITY_:MAX_STACK_0)) then
191    return 1 + Yishang + DizzyRatio
192  end
193  if (bits[CommonFun.StateEffect.Freeze] == 1 or bits[CommonFun.StateEffect.Blood] == 1 or bits[CommonFun.StateEffect.Burn] == 1) and (Profession == 24_WARLOCK_WARLOCK or Profession == 25_ARCANE_MASTER_ARCANE_MASTER or Profession == 144_SUPER_NOVICE_SUPER_NOVICE or Profession == 145_NOVICE_GUARDIAN_NOVICE_GUARDIAN or Profession == 204_WARRIOR_OF_WILDFIRE_WARRIOR_OF_WILDFIRE or Profession == 205_INFERNO_ARMOR_INFERNO_ARMOR or Profession == 224_CHAOTIC_ARCHMAGE_CHAOTIC_ARCHMAGE or Profession == 225_SLAYER_SLAYER or srcUser:HasBuffID(231010_STATUS_VULNERABILITY_:MAX_STACK_0)) then
194    return 1 + Yishang
195  end
196  if bits[CommonFun.StateEffect.Dizzy] == 1 then
197    return 1 + DizzyRatio
198  end
199  local GemValue = srcUser:GetGemValue(91061_DMG_DEALT_TO_ENEMIES_IN_FEAR_PERCENTAGE)
200  local RuneNum_mjhw = srcUser:GetRunePoint(153041_AESIR_MEOW_INFLICTS_EXTRA_DMG_OF_3_ON_ENEMY_UNITS_WITH_THE_FEAR_STATUS)
201  if bits[CommonFun.StateEffect.Fear] == 1 then
202    return 1 + GemValue / 100000 + RuneNum_mjhw * 0.03 + curse
203  end
204  if bits[CommonFun.StateEffect.Curse] == 1 then
205    return 1 + curse + Rosa
206  elseif bits[CommonFun.StateEffect.Fear] == 1 or bits[CommonFun.StateEffect.Dark] == 1 or bits[CommonFun.StateEffect.Silence] == 1 then
207    return 1 + curse
208  end
209  return 1
210end
Formula Graph

Connected Archive Data

See which cards, equipment, headwears, buffs, and other archived records connect to this formula.

Loading graph filters

CommonFun.DoCalcStateEffectDam

commonfun-docalcstateeffectdam

Nodes

0

Edges

0

Related Nodes

Select at least one node type.