Formula
CommonFun.ModifyCriDamage
formula.lua
1function CommonFun.ModifyCriDamage(srcUser, targetUser, params, logger, skillParams, damage)
2 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
3 local damageParam = skillParams.Damage
4 if damageParam ~= nil and damageParam[1] ~= nil then
5 damageParam = damageParam[1]
6 end
7 local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
8 local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger)
9 local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger)
10 local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
11 local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
12 local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger)
13 local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
14 local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
15 local Str1 = srcUser:GetProperty("Str")
16 local Num1 = srcUser:GetRunePoint(62080_AESIR_INCREASE_AUTO_ATTACK_BY_20_WHEN_USING_NORMAL_ATTACKS_ATK_QUALITY_FROM_STR_1)
17 local Num2 = srcUser:GetRunePoint(51013_AESIR_ACOLYTE_PRIEST_AND_HIGH_PRIEST_S_AUTO_ATTACK_BONUS_CONVERTED_FROM_STRENGTH_INCREASES_BY_5_AUTO_ATTACK_INCREASES_BY)
18 local Num3 = srcUser:GetRunePoint(120010_AESIR_MONK_AND_CHAMPION_S_AUTO_ATTACK_BONUS_CONVERTED_FROM_STRENGTH_INCREASES_BY_5_AUTO_ATTACK_INCREASES_BY)
19 local Numlianj = srcUser:GetRunePoint(130110_AESIR_ATTRIBUTE_ATTACK_FROM_STR_3_WHEN_USING_AUTO_ATTACK_INCREASE_AUTO_ATTACK_BY)
20 local RuneDamage = Num1 * 0.01 + Num2 * 0.05 + Num3 * 0.05 + Numlianj * 0.03 + 1
21 local Str = Str1 * RuneDamage
22 local Dex = srcUser:GetProperty("Dex")
23 local Luk = srcUser:GetProperty("Luk")
24 local Int = srcUser:GetProperty("Int")
25 local Agi = srcUser:GetProperty("Agi")
26 local DamIncrease = srcUser:GetProperty("DamIncrease")
27 local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
28 local race2 = targetUser.race
29 if targetUser:HasBuffID(139410_TWO_FACE_DEMON_KING_HUMAN_:MAX_STACK_0) then
30 race2 = 3
31 end
32 if srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) and srcUser:HasBuffID(49325_RACIAL_ANCIENT_RELICS_CD_:MAX_STACK_0) then
33 elseif srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) then
34 race2 = 2
35 end
36 local DefAttr2 = targetUser:GetProperty("DefAttr")
37 local skillLevel = srcUser:GetLernedSkillLevel(29_SWORDSMAN:AURA_BLADE)
38 local skillLevel1 = srcUser:GetLernedSkillLevel(1701_BLADE_SOUL:FIRE_SWORD)
39 local skillLevel2 = 0
40 if race2 == 3 or DefAttr2 == 9 or srcUser:HasBuffID(20510031_REGARD_THE_ENEMY_AS_DARK_ELEMENT_:MAX_STACK_0) and srcUser:HasBuffID(22000520_DEMON_BANE_IS_EFFECTIVE_ON_THE_DARK_ELEMENT_:MAX_STACK_0) or DefAttr2 == 7 and srcUser:HasBuffID(22000520_DEMON_BANE_IS_EFFECTIVE_ON_THE_DARK_ELEMENT_:MAX_STACK_0) then
41 skillLevel2 = srcUser:GetLernedSkillLevel(234_LORD_KNIGHT:DEMON_BANE)
42 if 10 < skillLevel2 then
43 skillLevel2 = 10
44 end
45 end
46 local SkillRealDamage1 = 0
47 if skillLevel <= 5 then
48 SkillRealDamage1 = skillLevel * 20
49 elseif 5 < skillLevel and skillLevel <= 10 then
50 SkillRealDamage1 = 100 + math.floor(Agi / 5) * ((skillLevel - 5) * 0.5 + 0.5)
51 else
52 SkillRealDamage1 = 100 + (skillLevel - 10) * 20 + math.floor(Agi / 5) * 3 + Luk * 2
53 end
54 local Numliehuo = srcUser:GetRunePoint(203003_AESIR_BOOST_SWORDS_OF_WILDFIRE_S_ALL_TRUE_DMG_BY_5)
55 local liehuo = 1 + Numliehuo * 0.05
56 local SkillRealDamage2 = 0
57 if skillLevel1 <= 10 then
58 SkillRealDamage2 = skillLevel1 * 20 * liehuo
59 else
60 SkillRealDamage2 = 200 * liehuo
61 end
62 local SkillRealDamage = SkillRealDamage1 + SkillRealDamage2
63 local BaseAtk = 0
64 local BaseMAtk = Int * 2 + math.floor(Int * Int / 100)
65 local BaseAtk1 = Str1 * 2 + math.floor(Str1 * Str1 / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
66 local BaseAtk2 = Dex * 2 + math.floor(Dex * Dex / 100) + math.floor(Str / 5) + math.floor(Luk / 5)
67 local BaseAtk3 = Str * 2 + math.floor(Str * Str / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
68 local NoramlAtkAdd = 5 * Str
69 local profressionID = srcUser:GetProfressionID()
70 local WeaponType = srcUser:GetEquipedWeaponType()
71 if (profressionID == 92_ROGUE or profressionID == 93_STALKER or profressionID == 94_SHADOW_CHASER or profressionID == 95_PHANTOM_DANCER) and WeaponType == 210 then
72 BaseAtk1 = BaseAtk2
73 BaseAtk3 = BaseAtk2
74 NoramlAtkAdd = 3 * Dex
75 end
76 for k, v in pairs(GameConfig.Atkcalculate) do
77 if v == profressionID then
78 BaseAtk1 = BaseAtk2
79 BaseAtk3 = BaseAtk2
80 NoramlAtkAdd = 3 * Dex
81 end
82 end
83 local Num4 = srcUser:GetRunePoint(52013_AESIR_ACOLYTE_PRIEST_AND_HIGH_PRIEST_S_M_ATK_BONUS_INCREASES_BY_7_AUTO_ATTACK_INCREASES_BY)
84 local Num5 = srcUser:GetRunePoint(52014)
85 local Num6 = srcUser:GetRunePoint(52015)
86 local Num7 = srcUser:GetRunePoint(52016)
87 local Num8 = srcUser:GetRunePoint(52017)
88 local Num9 = srcUser:GetRunePoint(52018)
89 local RuneDamage1 = (Num4 + Num5 + Num6 + Num7 + Num8 + Num9) * 0.07
90 local Atk1 = srcUser:GetProperty("Atk")
91 local MAtk = srcUser:GetProperty("MAtk")
92 local MAtkPer = srcUser:GetProperty("MAtkPer")
93 local MonkAtk = 0
94 if srcUser:HasBuffID(100510_CRITICAL_EXPLOSION_:MAX_STACK_0) then
95 MonkAtk = 5 * Int
96 end
97 local AtkSpdAdd = 0
98 local skilllv_SpdAdd = srcUser:GetLernedSkillLevel(22_SWORDSMAN:ONE_HAND_QUICKEN)
99 if srcUser:HasBuffID(80082_INCREASE_SWORD_S_ATTACK_SPD_PEAK_:MAX_STACK_0) and 10 < skilllv_SpdAdd then
100 AtkSpdAdd = (skilllv_SpdAdd - 10) * 120
101 end
102 local skilllv_mfzr = srcUser:GetLernedSkillLevel(3002_BLACKSMITH:ABYSS_CONTRACT)
103 local Opening = srcUser:GetSkillOptByOption(17)
104 local MagicAtk = 0
105 if 0 < skilllv_mfzr and Opening == 0 then
106 local Sp = srcUser:GetProperty("Sp")
107 MagicAtk = Sp * skilllv_mfzr * 0.2
108 end
109 local skilllv_element = srcUser:GetLernedSkillLevel(127_KNIGHT:ELEMENTAL_ARROW)
110 local atk_element = 0
111 if 10 < skilllv_element then
112 atk_element = Dex * ((skilllv_element - 10) * 0.5)
113 end
114 local NormalAtk = srcUser:GetProperty("NormalAtk")
115 NormalAtk = NormalAtk + NoramlAtkAdd
116 local Atk = Atk1 + RuneDamage1 * MAtk * (1 + MAtkPer) + MonkAtk + AtkSpdAdd + MagicAtk + atk_element + NormalAtk
117 local Num10 = srcUser:GetRunePoint(11022_AESIR_SWORDSMAN_S_ATK_BONUS_INCREASES_BY_3_AUTO_ATTACK_INCREASES_BY)
118 local Num11 = srcUser:GetRunePoint(203024_AESIR_INCREASE_THE_WARRIOR_OF_WILDFIRE_S_AUTO_ATK_BONUS_BY_3_AUTO_ATTACK)
119 local Num12 = srcUser:GetRunePoint(11024)
120 local Num13 = srcUser:GetRunePoint(12004)
121 local Num14 = srcUser:GetRunePoint(12011)
122 local Num16 = srcUser:GetRunePoint(70010_AESIR_FOR_CRUSADER_AUTO_ATTACKS_ATK_INCREASES_BY_3_AUTO_ATTACK_INCREASES_BY)
123 local RuneDamage2 = (Num10 + Num11 + Num12 + Num13 + Num14 + Num16) * 0.03
124 local Num15 = srcUser:GetRunePoint(120020_AESIR_FOR_LAUNCHING_AUTO_ATTACKS_ATK_INCREASES_BY_3_AUTO_ATTACK_INCREASES_BY)
125 local RuneDamage3 = Num15 * 0.03
126 local AtkPer1 = srcUser:GetProperty("AtkPer")
127 local AtkPer = AtkPer1 + RuneDamage2 + RuneDamage3
128 local MAtkPer = srcUser:GetProperty("MAtkPer")
129 local Refine = srcUser:GetProperty("Refine")
130 local MRefine = srcUser:GetProperty("MRefine")
131 local Vit2 = targetUser:GetProperty("Vit")
132 local VitPer2 = targetUser:GetProperty("VitPer")
133 local DamReduc2 = CommonFun.calcDamReDuc(srcUser, targetUser)
134 local RefineDamReduc = CommonFun.calcRefineDamReduc(srcUser, targetUser)
135 local RealDamage = targetUser:GetProperty("RealDamage")
136 if targetUser:HasBuffID(96050_LEX_AETERNA_:MAX_STACK_0) and 1 <= RealDamage and skillID == 359_RUNE_KNIGHT:PRESSURE then
137 RealDamage = RealDamage - 1
138 end
139 local AttrEffect = srcUser:GetProperty("AttrEffect")
140 local bits = CommonFun.getBits(AttrEffect)
141 local AttrEffect2 = targetUser:GetProperty("AttrEffect")
142 local bits2 = CommonFun.getBits(AttrEffect2)
143 local StateEffect = targetUser:GetProperty("StateEffect")
144 local bits3 = CommonFun.getBits(StateEffect)
145 local Weapon = srcUser:GetEquipedID(7_WEAPON)
146 if skillParams.RollType == 1 then
147 if bits[CommonFun.AttrEffect.NextAttackIncrease] == 1 then
148 damage = (((Atk - BaseAtk1) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk3) * raceparam * bossparam * bossparam2 * (1 - DamReduc2) + Refine + SkillRealDamage - Vit2 * (1 + VitPer2)) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 - RefineDamReduc) * (1 + DamIncrease) * 2 * (1 + RealDamage) * (1 + skillLevel2 * 0.05)
149 if damage <= 0 then
150 damage = 0
151 end
152 elseif bits2[CommonFun.AttrEffect.NormalSkillDam] == 1 and (profressionID == 42_HUNTER_HUNTER or profressionID == 43_SNIPER_SNIPER or profressionID == 44_RANGER_RANGER or profressionID == 45_STELLAR_HUNTER_STELLAR_HUNTER or profressionID == 102_BARD_BARD or profressionID == 103_CLOWN_CLOWN or profressionID == 104_MINSTREL_MINSTREL or profressionID == 105_SOLAR_TROUVERE_SOLAR_TROUVERE or profressionID == 11_SWORDSMAN_SWORDSMAN2_DANCER_DANCER or profressionID == 11_SWORDSMAN_SWORDSMAN3_GYPSY_GYPSY or profressionID == 11_SWORDSMAN_SWORDSMAN4_WANDERER_WANDERER or profressionID == 11_SWORDSMAN_SWORDSMAN5_LUNA_DANSEUSE_LUNA_DANSEUSE) then
153 local targetid = targetUser:GetGuid()
154 local distance = srcUser:GetDistance(targetid)
155 local skilllv_1 = srcUser:GetLernedSkillLevel(133_KNIGHT:VULTURE_S_EYE)
156 local DisDam = 1
157 if 10 < skilllv_1 then
158 DisDam = 1 + distance / 7.5 * (skilllv_1 - 10) * 0.1
159 if srcUser:HasBuffID(131080_UNLIMITED_STARS_:MAX_STACK_0) then
160 DisDam = 1 + (skilllv_1 - 10) * 0.1
161 end
162 DisDam = math.min(DisDam, 2)
163 end
164 damage = (((Atk - BaseAtk1) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk3) * raceparam * bossparam * bossparam2 * (1 - DamReduc2) + Refine + SkillRealDamage - Vit2 * (1 + VitPer2)) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 - RefineDamReduc) * (1 + DamIncrease) * 1.3 * (1 + RealDamage) * (1 + skillLevel2 * 0.05) * DisDam
165 if damage <= 0 then
166 damage = 0
167 end
168 elseif bits3[CommonFun.StateEffect.Dizzy] == 1 and (Weapon == 40322_MURAMASA_1 or Weapon == 140322_MURAMASA_2) then
169 damage = (((Atk - BaseAtk1) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk3) * raceparam * bossparam * bossparam2 * (1 - DamReduc2) + Refine + SkillRealDamage - Vit2 * (1 + VitPer2)) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 - RefineDamReduc) * (1 + DamIncrease) * (1 + RealDamage) * (1 + skillLevel2 * 0.05) * 1.5
170 if damage <= 0 then
171 damage = 0
172 end
173 elseif skillID == 300_LORD_KNIGHT:STORM_GUST_LORD_KNIGHT:STORM_GUST or skillID == 469_RUNEMASTER:STORM_GUST or skillID == 1397_ASSASSIN_CROSS:STORM_GUST or skillID == 1446_ASSASSIN_CROSS:STORM_GUST or skillID == 252_LORD_KNIGHT:STORM_GUST_LORD_KNIGHT:STORM_GUST then
174 local targetid = targetUser:GetGuid()
175 local distance = srcUser:GetDistance(targetid)
176 local skilllv_1 = srcUser:GetLernedSkillLevel(133_KNIGHT:VULTURE_S_EYE)
177 local skilllv_2 = srcUser:GetLernedSkillLevel(478_RUNEMASTER:VULTURE_S_EYE)
178 local DisDam = 1
179 if 10 < skilllv_1 then
180 DisDam = 1 + distance / 7.5 * (skilllv_1 - 10) * 0.1
181 if srcUser:HasBuffID(131080_UNLIMITED_STARS_:MAX_STACK_0) then
182 DisDam = 1 + (skilllv_1 - 10) * 0.1
183 end
184 DisDam = math.min(DisDam, 2)
185 elseif 10 < skilllv_2 then
186 DisDam = 1 + distance / 7.5 * (skilllv_2 - 10) * 0.06
187 DisDam = math.min(DisDam, 1.6)
188 end
189 local fromid = targetUser:GetBuffFromID(116470_MARK_OF_DEATH_:MAX_STACK_0)
190 local guid = srcUser:GetGuid()
191 local BUffDam = 1
192 local skilllv_biaoji = srcUser:GetLernedSkillLevel(1147_ARCANE_MASTER:MARK_OF_DEATH)
193 local GemBiaoji = srcUser:GetGemValue(91121_MARK_OF_DEATH_DAMAGE_INCREASE_EFFECT_PERCENTAGE)
194 local Numxp = srcUser:GetRunePoint(94080_AESIR_MARK_OF_DEATH_EFFECT_2)
195 if fromid == guid then
196 BUffDam = 1 + skilllv_biaoji * 0.02 + Numxp * 0.02 + GemBiaoji / 100000
197 end
198 local SpAtk = 0
199 if srcUser:HasBuffID(131096_ATTACK_REDUCES_HP_AND_SP_:MAX_STACK_0) then
200 local Sp = srcUser:GetProperty("Sp")
201 SpAtk = Sp
202 end
203 damage = ((((Atk - BaseAtk1) * (1 + AtkPer) + SpAtk) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk3) * raceparam * bossparam * bossparam2 * (1 - DamReduc2) + Refine + SkillRealDamage - Vit2 * (1 + VitPer2)) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 - RefineDamReduc) * (1 + DamIncrease) * (1 + RealDamage) * (1 + skillLevel2 * 0.05) * DisDam * BUffDam
204 if damage <= 0 then
205 damage = 0
206 end
207 elseif skillID == 470_RUNEMASTER:STORM_GUST then
208 local Enemy = 1
209 local skilllv_zy = srcUser:GetLernedSkillLevel(1145_ARCANE_MASTER:PICK_EM_OFF)
210 if 0 < skilllv_zy and 1 >= srcUser:GetRangeEnemy(3) then
211 Enemy = 1 + skilllv_zy * 0.03
212 end
213 damage = (((Atk - BaseAtk1) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk3) * raceparam * bossparam * bossparam2 * (1 - DamReduc2) + Refine + SkillRealDamage - Vit2 * (1 + VitPer2)) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 - RefineDamReduc) * (1 + DamIncrease) * (1 + RealDamage) * (1 + skillLevel2 * 0.05) * Enemy
214 if damage <= 0 then
215 damage = 0
216 end
217 else
218 damage = (((Atk - BaseAtk1) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk3) * raceparam * bossparam * bossparam2 * (1 - DamReduc2) + Refine + SkillRealDamage - Vit2 * (1 + VitPer2)) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 - RefineDamReduc) * (1 + DamIncrease) * (1 + RealDamage) * (1 + skillLevel2 * 0.05)
219 if damage <= 0 then
220 damage = 0
221 end
222 end
223 elseif bits[CommonFun.AttrEffect.NextAttackIncrease] == 1 then
224 damage = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk + MRefine) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 + MDamIncrease) * 2 * (1 + RealDamage)
225 elseif bits2[CommonFun.AttrEffect.NormalSkillDam] == 1 and (profressionID == 42_HUNTER_HUNTER or profressionID == 43_SNIPER_SNIPER or profressionID == 44_RANGER_RANGER or profressionID == 45_STELLAR_HUNTER_STELLAR_HUNTER or profressionID == 102_BARD_BARD or profressionID == 103_CLOWN_CLOWN or profressionID == 104_MINSTREL_MINSTREL or profressionID == 105_SOLAR_TROUVERE_SOLAR_TROUVERE or profressionID == 11_SWORDSMAN_SWORDSMAN2_DANCER_DANCER or profressionID == 11_SWORDSMAN_SWORDSMAN3_GYPSY_GYPSY or profressionID == 11_SWORDSMAN_SWORDSMAN4_WANDERER_WANDERER or profressionID == 11_SWORDSMAN_SWORDSMAN5_LUNA_DANSEUSE_LUNA_DANSEUSE) then
226 local targetid = targetUser:GetGuid()
227 local distance = srcUser:GetDistance(targetid)
228 local skilllv_1 = srcUser:GetLernedSkillLevel(133_KNIGHT:VULTURE_S_EYE)
229 local DisDam = 1
230 if 10 < skilllv_1 then
231 DisDam = 1 + distance / 7.5 * (skilllv_1 - 10) * 0.1
232 if srcUser:HasBuffID(131080_UNLIMITED_STARS_:MAX_STACK_0) then
233 DisDam = 1 + (skilllv_1 - 10) * 0.1
234 end
235 DisDam = math.min(DisDam, 2)
236 end
237 damage = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk + MRefine) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 + MDamIncrease) * 1.3 * (1 + RealDamage) * DisDam
238 else
239 damage = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk + MRefine) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 + MDamIncrease) * (1 + RealDamage)
240 end
241 if targetUser:GetNpcID() == 30028_YEAR then
242 damage = 1
243 end
244 local elementDam = CommonFun.DoCalcElementDam(srcUser, targetUser, params, damageParam)
245 local stateDam = CommonFun.DoCalcStateEffectDam(srcUser, targetUser)
246 local fromid = targetUser:GetBuffFromID(45000120_REPENTANCE_:MAX_STACK_0)
247 local guid = srcUser:GetGuid()
248 local BUffDam = 1
249 if fromid == guid then
250 BUffDam = 1.3
251 end
252 local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
253 local HolyEquip = 1
254 if (Weapon == 40319_HOLY_AVENGER_1 or Weapon == 140319_HOLY_AVENGER_2) and (profressionID == 11_SWORDSMAN_SWORDSMAN or profressionID == 12_KNIGHT_KNIGHT or profressionID == 13_LORD_KNIGHT_LORD_KNIGHT or profressionID == 14_RUNE_KNIGHT_RUNE_KNIGHT or profressionID == 15_RUNEMASTER_RUNEMASTER or profressionID == 203_FLAMES_FLAMES or profressionID == 204_WARRIOR_OF_WILDFIRE_WARRIOR_OF_WILDFIRE or profressionID == 205_INFERNO_ARMOR_INFERNO_ARMOR or profressionID == 72_CRUSADER_CRUSADER or profressionID == 73_PALADIN_PALADIN or profressionID == 74_ROYAL_GUARD_ROYAL_GUARD or profressionID == 75_DIVINE_AVENGER_DIVINE_AVENGER or profressionID == 605_THANATOS_THANATOS or profressionID == 665_RATHGRICY_RATHGRICY or profressionID == 695_ANCIENT_ARTIFACT_USER_ANCIENT_ARTIFACT_USER) then
255 HolyEquip = 1 + 0.05 * RefineLv
256 end
257 if (Weapon == 40360_HEAVENS_1 or Weapon == 140360_HEAVENS_2) and (profressionID == 11_SWORDSMAN_SWORDSMAN or profressionID == 12_KNIGHT_KNIGHT or profressionID == 13_LORD_KNIGHT_LORD_KNIGHT or profressionID == 14_RUNE_KNIGHT_RUNE_KNIGHT or profressionID == 15_RUNEMASTER_RUNEMASTER or profressionID == 203_FLAMES_FLAMES or profressionID == 204_WARRIOR_OF_WILDFIRE_WARRIOR_OF_WILDFIRE or profressionID == 205_INFERNO_ARMOR_INFERNO_ARMOR or profressionID == 72_CRUSADER_CRUSADER or profressionID == 73_PALADIN_PALADIN or profressionID == 74_ROYAL_GUARD_ROYAL_GUARD or profressionID == 75_DIVINE_AVENGER_DIVINE_AVENGER or profressionID == 605_THANATOS_THANATOS or profressionID == 665_RATHGRICY_RATHGRICY or profressionID == 695_ANCIENT_ARTIFACT_USER_ANCIENT_ARTIFACT_USER) then
258 HolyEquip = 1 + 0.05 * RefineLv
259 end
260 local zhufu = 1
261 if srcUser:HasBuffID(129040_HAMMER_OF_BLESSINGS_:MAX_STACK_0) or srcUser:HasBuffID(129041_HAMMER_OF_BLESSINGS_SHORT_TERM_:MAX_STACK_0) then
262 local skilllv_zf = srcUser:GetLernedSkillLevel(3610_PALADIN:HAMMER_OF_BLESSINGS)
263 local GemValue = srcUser:GetGemValue(51161_BLESSING_HAMMER_S_INHERITED_AUTO_ATK_PERCENTAGE)
264 zhufu = 1 + skilllv_zf * 0.05 + GemValue / 100000
265 end
266 local hualiBuff = srcUser:HasBuffID(24441_BAZERALD_:MAX_STACK_0)
267 local huali = 1
268 if hualiBuff == true and srcUser:HasBuffID(90001903_BAZERALD_TIER_4_:MAX_STACK_0) then
269 huali = 1.25
270 elseif hualiBuff == true then
271 huali = 1.1
272 end
273 local Ninja = 1
274 local NinjaDamPer = 1
275 if skillID == 2010_SNIPER:FLOWING_BLADE or skillID == 2011_SNIPER:FLOWING_BLADE_II_SNIPER:FLOWING_BLADE_II or skillID == 2012_SNIPER:FLOWING_BLADE_III_SNIPER:FLOWING_BLADE_III or skillID == 2013_SNIPER:FLOWING_BLADE_IV_SNIPER:FLOWING_BLADE_IV then
276 local Agi = srcUser:GetProperty("Agi")
277 local AgiRune = srcUser:GetRunePoint(163012_AESIR_FOR_EVERY_10_POINTS_OF_AGI_AUTO_ATTACK_DMG_0_4)
278 local AgiDam = 1 + math.floor(Agi / 10) * AgiRune * 0.004
279 local Famous = 1
280 local RefineLv7 = srcUser:GetEquipedRefineLv(7_WEAPON)
281 if srcUser:HasBuffID(44360_RENOWNED_BLADE_MURAMASA_:MAX_STACK_0) then
282 Famous = Famous * (RefineLv7 * 0.01 + 1)
283 end
284 if srcUser:HasBuffID(44370_MONSTER_KNIFE_MURAMASA_:MAX_STACK_0) then
285 Famous = Famous * (RefineLv7 * 0.03 + 1)
286 end
287 Ninja = AgiDam * Famous
288 end
289 if skillID == 2011_SNIPER:FLOWING_BLADE_II_SNIPER:FLOWING_BLADE_II then
290 NinjaDamPer = 1.5
291 end
292 if skillID == 2012_SNIPER:FLOWING_BLADE_III_SNIPER:FLOWING_BLADE_III then
293 NinjaDamPer = 3
294 end
295 if skillID == 2013_SNIPER:FLOWING_BLADE_IV_SNIPER:FLOWING_BLADE_IV then
296 local Rune = srcUser:GetRunePoint(163021_AESIR_AUTO_ATTACK_FINAL_STYLE_FLOWING_BLADE_IV_DMG_5)
297 NinjaDamPer = 6 * (1 + Rune * 0.05)
298 end
299 if skillID == 2200_STELLAR_HUNTER:STORM_GUST and WeaponType == 320 then
300 damage = damage * 2
301 end
302 if skillID == 300_LORD_KNIGHT:STORM_GUST_LORD_KNIGHT:STORM_GUST or skillID == 113_KNIGHT:STORM_GUST or skillID == 252_LORD_KNIGHT:STORM_GUST_LORD_KNIGHT:STORM_GUST then
303 local guid = srcUser:GetGuid()
304 local Debuff_Layer_1 = targetUser:GetBuffLayerByIDAndFromID(96082, guid)
305 local Debuff_Layer_2 = targetUser:GetBuffLayerByIDAndFromID(96083, guid)
306 local sw_dam = math.max(Debuff_Layer_1, Debuff_Layer_2) * 0.06 + 1
307 damage = damage * sw_dam
308 end
309 if skillID == 173_KNIGHT:STORM_GUST then
310 local skilllv_qihei = srcUser:GetLernedSkillLevel(194_KNIGHT:FULLBLACK_CLAW)
311 if targetUser:GetBuffActive(95500) then
312 damage = damage * (1 + 0.15 * skilllv_qihei)
313 end
314 end
315 if skillID == 2822_SAINT:PIERCING_ARROW then
316 local skilllv_sy = srcUser:GetLernedSkillLevel(2811_SAINT:MOON_SHOT)
317 local ratio = 1
318 if targetUser:GetNpcID() ~= 0 and 7 <= skilllv_sy then
319 ratio = 2
320 end
321 local skilllv_xy = srcUser:GetLernedSkillLevel(2818_SAINT:BLOODMOON)
322 local Hp2 = targetUser:GetProperty("Hp")
323 local MaxHp2 = targetUser:GetProperty("MaxHp")
324 local HpRatio = 1 + (MaxHp2 - Hp2) / MaxHp2 * skilllv_xy * 0.2
325 damage = damage * (2 + skilllv_sy) * ratio * HpRatio
326 end
327 if skillID == 2809_SAINT:STORM_GUST or skillID == 2810_SAINT:STORM_GUST then
328 local skilllv_xy = srcUser:GetLernedSkillLevel(2818_SAINT:BLOODMOON)
329 local Hp2 = targetUser:GetProperty("Hp")
330 local MaxHp2 = targetUser:GetProperty("MaxHp")
331 local HpRatio = 1 + (MaxHp2 - Hp2) / MaxHp2 * skilllv_xy * 0.2
332 damage = damage * HpRatio
333 end
334 if skillID == 4733_SHADOW_CHASER:SONIC_ASSAULT_SHADOW_CHASER:SONIC_ASSAULT then
335 local skill_yinsu = srcUser:GetLernedSkillLevel(4733_SHADOW_CHASER:SONIC_ASSAULT)
336 local Master = srcUser:GetMasterUser()
337 local qianxi = srcUser:GetGemValue(218111_SONIC_ASSAULT_DMG_PERCENTAGE)
338 if Master ~= nil then
339 skill_yinsu = Master:GetLernedSkillLevel(4733_SHADOW_CHASER:SONIC_ASSAULT)
340 qianxi = Master:GetGemValue(218111_SONIC_ASSAULT_DMG_PERCENTAGE)
341 end
342 damage = damage * 7 * (skill_yinsu * 0.1 - 0.03) * (1 + qianxi / 100000)
343 end
344 if skillID == 4737_SHADOW_CHASER:DEADLY_SHADOW_SHADOW_CHASER:DEADLY_SHADOW then
345 local skill_yinsha = srcUser:GetLernedSkillLevel(4737_SHADOW_CHASER:DEADLY_SHADOW)
346 local yinsha = 0
347 if targetUser:HasBuffID(140143_DEADLY_SHADOW_MARK_:MAX_STACK_0) == false then
348 yinsha = srcUser:GetGemValue(218121_DMG_OF_DEADLY_SHADOW_S_FIRST_SLASH_TO_EACH_TARGET_PERCENTAGE)
349 end
350 damage = damage * (skill_yinsha * 0.4 + 2) * (1 + yinsha / 100000)
351 end
352 if skillID == 4737_SHADOW_CHASER:DEADLY_SHADOW_SHADOW_CHASER:DEADLY_SHADOW or skillID == 4733_SHADOW_CHASER:SONIC_ASSAULT_SHADOW_CHASER:SONIC_ASSAULT then
353 local SkillDam = srcUser:GetProperty("SkillDam")
354 local Master = srcUser:GetMasterUser()
355 local wudang = 0
356 if Master ~= nil and Master:HasBuffID(90006174_THE_NAMELESS_EQUIPMENT_USES_INFUSE_SHORT_SWORD_1_TIER_5_:MAX_STACK_0) then
357 wudang = 1
358 end
359 if srcUser:HasBuffID(90006174_THE_NAMELESS_EQUIPMENT_USES_INFUSE_SHORT_SWORD_1_TIER_5_:MAX_STACK_0) then
360 wudang = 1
361 end
362 damage = damage * (1 + wudang * SkillDam)
363 end
364 if skillID == 328_RUNE_KNIGHT:DIMENSION_SLASH then
365 local skill_ciyuan = srcUser:GetLernedSkillLevel(3020_BLACKSMITH:DIMENSION_SLASH_STAGNATION)
366 local ciyuan = 1 + skill_ciyuan * 0.08
367 damage = damage * ciyuan
368 end
369 if (skillID == 4778_PHANTOM_DANCER:AUTO_ATTACK_TRIGGER or skillID == 4779_PHANTOM_DANCER:AUTO_ATTACK_REPLACE or skillID == 4780_PHANTOM_DANCER:STORM_GUST) and srcUser:HasBuffID(90007034_BELL_EQUIPMENT_INFUSED_WEAPONS_TIER_5_:MAX_STACK_0) then
370 local shandian = srcUser:GetBuffLayer(140841_FIRE_BOLT_CHARGING_:MAX_STACK_0)
371 damage = damage * (1 + 0.1 * shandian)
372 end
373 damage = damage * elementDam * stateDam * BUffDam * HolyEquip * zhufu * Ninja * NinjaDamPer * huali
374 return damage
375endFormula Graph
Connected Archive Data
See which cards, equipment, headwears, buffs, and other archived records connect to this formula.
Loading graph filters
CommonFun.ModifyCriDamage
commonfun-modifycridamage
Nodes
0
Edges
0
Related Nodes
Select at least one node type.
