Formula
CommonFun.ModifyCriDamage
function CommonFun.ModifyCriDamage(srcUser, targetUser, params, logger, skillParams, damage)
local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
local damageParam = skillParams.Damage
if damageParam ~= nil and damageParam[1] ~= nil then
damageParam = damageParam[1]
end
local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger)
local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger)
local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger)
local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
local Str1 = srcUser:GetProperty("Str")
local Num1 = srcUser:GetRunePoint(62080_AESIR_INCREASE_AUTO_ATTACK_BY_20_WHEN_USING_NORMAL_ATTACKS_ATK_QUALITY_FROM_STR_1)
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)
local Num3 = srcUser:GetRunePoint(120010_AESIR_MONK_AND_CHAMPION_S_AUTO_ATTACK_BONUS_CONVERTED_FROM_STRENGTH_INCREASES_BY_5_AUTO_ATTACK_INCREASES_BY)
local Numlianj = srcUser:GetRunePoint(130110_AESIR_ATTRIBUTE_ATTACK_FROM_STR_3_WHEN_USING_AUTO_ATTACK_INCREASE_AUTO_ATTACK_BY)
local RuneDamage = Num1 * 0.01 + Num2 * 0.05 + Num3 * 0.05 + Numlianj * 0.03 + 1
local Str = Str1 * RuneDamage
local Dex = srcUser:GetProperty("Dex")
local Luk = srcUser:GetProperty("Luk")
local Int = srcUser:GetProperty("Int")
local Agi = srcUser:GetProperty("Agi")
local DamIncrease = srcUser:GetProperty("DamIncrease")
local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
local race2 = targetUser.race
if targetUser:HasBuffID(139410_TWO_FACE_DEMON_KING_HUMAN_:MAX_STACK_0) then
race2 = 3
end
if srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) and srcUser:HasBuffID(49325_RACIAL_ANCIENT_RELICS_CD_:MAX_STACK_0) then
elseif srcUser:HasBuffID(49320_RACIAL_ANCIENT_RELICS_PERMANENT_:MAX_STACK_0) then
race2 = 2
end
local DefAttr2 = targetUser:GetProperty("DefAttr")
local skillLevel = srcUser:GetLernedSkillLevel(29_SWORDSMAN:AURA_BLADE)
local skillLevel1 = srcUser:GetLernedSkillLevel(1701_BLADE_SOUL:FIRE_SWORD)
local skillLevel2 = 0
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
skillLevel2 = srcUser:GetLernedSkillLevel(234_LORD_KNIGHT:DEMON_BANE)
if 10 < skillLevel2 then
skillLevel2 = 10
end
end
local SkillRealDamage1 = 0
if skillLevel <= 5 then
SkillRealDamage1 = skillLevel * 20
elseif 5 < skillLevel and skillLevel <= 10 then
SkillRealDamage1 = 100 + math.floor(Agi / 5) * ((skillLevel - 5) * 0.5 + 0.5)
else
SkillRealDamage1 = 100 + (skillLevel - 10) * 20 + math.floor(Agi / 5) * 3 + Luk * 2
end
local Numliehuo = srcUser:GetRunePoint(203003_AESIR_BOOST_SWORDS_OF_WILDFIRE_S_ALL_TRUE_DMG_BY_5)
local liehuo = 1 + Numliehuo * 0.05
local SkillRealDamage2 = 0
if skillLevel1 <= 10 then
SkillRealDamage2 = skillLevel1 * 20 * liehuo
else
SkillRealDamage2 = 200 * liehuo
end
local SkillRealDamage = SkillRealDamage1 + SkillRealDamage2
local BaseAtk = 0
local BaseMAtk = Int * 2 + math.floor(Int * Int / 100)
local BaseAtk1 = Str1 * 2 + math.floor(Str1 * Str1 / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
local BaseAtk2 = Dex * 2 + math.floor(Dex * Dex / 100) + math.floor(Str / 5) + math.floor(Luk / 5)
local BaseAtk3 = Str * 2 + math.floor(Str * Str / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
local NoramlAtkAdd = 5 * Str
local profressionID = srcUser:GetProfressionID()
local WeaponType = srcUser:GetEquipedWeaponType()
if (profressionID == 92_ROGUE or profressionID == 93_STALKER or profressionID == 94_SHADOW_CHASER or profressionID == 95_PHANTOM_DANCER) and WeaponType == 210 then
BaseAtk1 = BaseAtk2
BaseAtk3 = BaseAtk2
NoramlAtkAdd = 3 * Dex
end
for k, v in pairs(GameConfig.Atkcalculate) do
if v == profressionID then
BaseAtk1 = BaseAtk2
BaseAtk3 = BaseAtk2
NoramlAtkAdd = 3 * Dex
end
end
local Num4 = srcUser:GetRunePoint(52013_AESIR_ACOLYTE_PRIEST_AND_HIGH_PRIEST_S_M_ATK_BONUS_INCREASES_BY_7_AUTO_ATTACK_INCREASES_BY)
local Num5 = srcUser:GetRunePoint(52014)
local Num6 = srcUser:GetRunePoint(52015)
local Num7 = srcUser:GetRunePoint(52016)
local Num8 = srcUser:GetRunePoint(52017)
local Num9 = srcUser:GetRunePoint(52018)
local RuneDamage1 = (Num4 + Num5 + Num6 + Num7 + Num8 + Num9) * 0.07
local Atk1 = srcUser:GetProperty("Atk")
local MAtk = srcUser:GetProperty("MAtk")
local MAtkPer = srcUser:GetProperty("MAtkPer")
local MonkAtk = 0
if srcUser:HasBuffID(100510_CRITICAL_EXPLOSION_:MAX_STACK_0) then
MonkAtk = 5 * Int
end
local AtkSpdAdd = 0
local skilllv_SpdAdd = srcUser:GetLernedSkillLevel(22_SWORDSMAN:ONE_HAND_QUICKEN)
if srcUser:HasBuffID(80082_INCREASE_SWORD_S_ATTACK_SPD_PEAK_:MAX_STACK_0) and 10 < skilllv_SpdAdd then
AtkSpdAdd = (skilllv_SpdAdd - 10) * 120
end
local skilllv_mfzr = srcUser:GetLernedSkillLevel(3002_BLACKSMITH:ABYSS_CONTRACT)
local Opening = srcUser:GetSkillOptByOption(17)
local MagicAtk = 0
if 0 < skilllv_mfzr and Opening == 0 then
local Sp = srcUser:GetProperty("Sp")
MagicAtk = Sp * skilllv_mfzr * 0.2
end
local skilllv_element = srcUser:GetLernedSkillLevel(127_KNIGHT:ELEMENTAL_ARROW)
local atk_element = 0
if 10 < skilllv_element then
atk_element = Dex * ((skilllv_element - 10) * 0.5)
end
local NormalAtk = srcUser:GetProperty("NormalAtk")
NormalAtk = NormalAtk + NoramlAtkAdd
local Atk = Atk1 + RuneDamage1 * MAtk * (1 + MAtkPer) + MonkAtk + AtkSpdAdd + MagicAtk + atk_element + NormalAtk
local Num10 = srcUser:GetRunePoint(11022_AESIR_SWORDSMAN_S_ATK_BONUS_INCREASES_BY_3_AUTO_ATTACK_INCREASES_BY)
local Num11 = srcUser:GetRunePoint(203024_AESIR_INCREASE_THE_WARRIOR_OF_WILDFIRE_S_AUTO_ATK_BONUS_BY_3_AUTO_ATTACK)
local Num12 = srcUser:GetRunePoint(11024)
local Num13 = srcUser:GetRunePoint(12004)
local Num14 = srcUser:GetRunePoint(12011)
local Num16 = srcUser:GetRunePoint(70010_AESIR_FOR_CRUSADER_AUTO_ATTACKS_ATK_INCREASES_BY_3_AUTO_ATTACK_INCREASES_BY)
local RuneDamage2 = (Num10 + Num11 + Num12 + Num13 + Num14 + Num16) * 0.03
local Num15 = srcUser:GetRunePoint(120020_AESIR_FOR_LAUNCHING_AUTO_ATTACKS_ATK_INCREASES_BY_3_AUTO_ATTACK_INCREASES_BY)
local RuneDamage3 = Num15 * 0.03
local AtkPer1 = srcUser:GetProperty("AtkPer")
local AtkPer = AtkPer1 + RuneDamage2 + RuneDamage3
local MAtkPer = srcUser:GetProperty("MAtkPer")
local Refine = srcUser:GetProperty("Refine")
local MRefine = srcUser:GetProperty("MRefine")
local Vit2 = targetUser:GetProperty("Vit")
local VitPer2 = targetUser:GetProperty("VitPer")
local DamReduc2 = CommonFun.calcDamReDuc(srcUser, targetUser)
local RefineDamReduc = targetUser:GetProperty("RefineDamReduc")
local RealDamage = targetUser:GetProperty("RealDamage")
if targetUser:HasBuffID(96050_LEX_AETERNA_:MAX_STACK_0) and 1 <= RealDamage and skillID == 359_RUNE_KNIGHT:PRESSURE then
RealDamage = RealDamage - 1
end
local AttrEffect = srcUser:GetProperty("AttrEffect")
local bits = CommonFun.getBits(AttrEffect)
local AttrEffect2 = targetUser:GetProperty("AttrEffect")
local bits2 = CommonFun.getBits(AttrEffect2)
local StateEffect = targetUser:GetProperty("StateEffect")
local bits3 = CommonFun.getBits(StateEffect)
local Weapon = srcUser:GetEquipedID(7_WEAPON)
if skillParams.RollType == 1 then
if bits[CommonFun.AttrEffect.NextAttackIncrease] == 1 then
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)
if damage <= 0 then
damage = 0
end
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
local targetid = targetUser:GetGuid()
local distance = srcUser:GetDistance(targetid)
local skilllv_1 = srcUser:GetLernedSkillLevel(133_KNIGHT:VULTURE_S_EYE)
local DisDam = 1
if 10 < skilllv_1 then
DisDam = 1 + distance / 7.5 * (skilllv_1 - 10) * 0.1
if srcUser:HasBuffID(131080_UNLIMITED_STARS_:MAX_STACK_0) then
DisDam = 1 + (skilllv_1 - 10) * 0.1
end
DisDam = math.min(DisDam, 2)
end
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
if damage <= 0 then
damage = 0
end
elseif bits3[CommonFun.StateEffect.Dizzy] == 1 and (Weapon == 40322_MURAMASA_1 or Weapon == 140322_MURAMASA_2) then
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
if damage <= 0 then
damage = 0
end
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
local targetid = targetUser:GetGuid()
local distance = srcUser:GetDistance(targetid)
local skilllv_1 = srcUser:GetLernedSkillLevel(133_KNIGHT:VULTURE_S_EYE)
local skilllv_2 = srcUser:GetLernedSkillLevel(478_RUNEMASTER:VULTURE_S_EYE)
local DisDam = 1
if 10 < skilllv_1 then
DisDam = 1 + distance / 7.5 * (skilllv_1 - 10) * 0.1
if srcUser:HasBuffID(131080_UNLIMITED_STARS_:MAX_STACK_0) then
DisDam = 1 + (skilllv_1 - 10) * 0.1
end
DisDam = math.min(DisDam, 2)
elseif 10 < skilllv_2 then
DisDam = 1 + distance / 7.5 * (skilllv_2 - 10) * 0.06
DisDam = math.min(DisDam, 1.6)
end
local fromid = targetUser:GetBuffFromID(116470_MARK_OF_DEATH_:MAX_STACK_0)
local guid = srcUser:GetGuid()
local BUffDam = 1
local skilllv_biaoji = srcUser:GetLernedSkillLevel(1147_ARCANE_MASTER:MARK_OF_DEATH)
local GemBiaoji = srcUser:GetGemValue(91121_MARK_OF_DEATH_DAMAGE_INCREASE_EFFECT_PERCENTAGE)
local Numxp = srcUser:GetRunePoint(94080_AESIR_MARK_OF_DEATH_EFFECT_2)
if fromid == guid then
BUffDam = 1 + skilllv_biaoji * 0.02 + Numxp * 0.02 + GemBiaoji / 100000
end
local SpAtk = 0
if srcUser:HasBuffID(131096_ATTACK_REDUCES_HP_AND_SP_:MAX_STACK_0) then
local Sp = srcUser:GetProperty("Sp")
SpAtk = Sp
end
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
if damage <= 0 then
damage = 0
end
elseif skillID == 470_RUNEMASTER:STORM_GUST then
local Enemy = 1
local skilllv_zy = srcUser:GetLernedSkillLevel(1145_ARCANE_MASTER:PICK_EM_OFF)
if 0 < skilllv_zy and 1 >= srcUser:GetRangeEnemy(3) then
Enemy = 1 + skilllv_zy * 0.03
end
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
if damage <= 0 then
damage = 0
end
else
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)
if damage <= 0 then
damage = 0
end
end
elseif bits[CommonFun.AttrEffect.NextAttackIncrease] == 1 then
damage = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk + MRefine) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 + MDamIncrease) * 2 * (1 + RealDamage)
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
local targetid = targetUser:GetGuid()
local distance = srcUser:GetDistance(targetid)
local skilllv_1 = srcUser:GetLernedSkillLevel(133_KNIGHT:VULTURE_S_EYE)
local DisDam = 1
if 10 < skilllv_1 then
DisDam = 1 + distance / 7.5 * (skilllv_1 - 10) * 0.1
if srcUser:HasBuffID(131080_UNLIMITED_STARS_:MAX_STACK_0) then
DisDam = 1 + (skilllv_1 - 10) * 0.1
end
DisDam = math.min(DisDam, 2)
end
damage = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk + MRefine) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 + MDamIncrease) * 1.3 * (1 + RealDamage) * DisDam
else
damage = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk + MRefine) * CommonFun.CalcCrit(srcUser, targetUser, skillParams) * (1 + MDamIncrease) * (1 + RealDamage)
end
if targetUser:GetNpcID() == 30028_YEAR then
damage = 1
end
local elementDam = CommonFun.DoCalcElementDam(srcUser, targetUser, params, damageParam)
local stateDam = CommonFun.DoCalcStateEffectDam(srcUser, targetUser)
local fromid = targetUser:GetBuffFromID(45000120_REPENTANCE_:MAX_STACK_0)
local guid = srcUser:GetGuid()
local BUffDam = 1
if fromid == guid then
BUffDam = 1.3
end
local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
local HolyEquip = 1
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
HolyEquip = 1 + 0.05 * RefineLv
end
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
HolyEquip = 1 + 0.05 * RefineLv
end
local zhufu = 1
if srcUser:HasBuffID(129040_HAMMER_OF_BLESSINGS_:MAX_STACK_0) or srcUser:HasBuffID(129041_HAMMER_OF_BLESSINGS_SHORT_TERM_:MAX_STACK_0) then
local skilllv_zf = srcUser:GetLernedSkillLevel(3610_PALADIN:HAMMER_OF_BLESSINGS)
local GemValue = srcUser:GetGemValue(51161_BLESSING_HAMMER_S_INHERITED_AUTO_ATK_PERCENTAGE)
zhufu = 1 + skilllv_zf * 0.05 + GemValue / 100000
end
local Ninja = 1
local NinjaDamPer = 1
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
local Agi = srcUser:GetProperty("Agi")
local AgiRune = srcUser:GetRunePoint(163012_AESIR_FOR_EVERY_10_POINTS_OF_AGI_AUTO_ATTACK_DMG_0_4)
local AgiDam = 1 + math.floor(Agi / 10) * AgiRune * 0.004
local Famous = 1
local RefineLv7 = srcUser:GetEquipedRefineLv(7_WEAPON)
if srcUser:HasBuffID(44360_RENOWNED_BLADE_MURAMASA_:MAX_STACK_0) then
Famous = Famous * (RefineLv7 * 0.01 + 1)
end
if srcUser:HasBuffID(44370_MONSTER_KNIFE_MURAMASA_:MAX_STACK_0) then
Famous = Famous * (RefineLv7 * 0.03 + 1)
end
Ninja = AgiDam * Famous
end
if skillID == 2011_SNIPER:FLOWING_BLADE_II_SNIPER:FLOWING_BLADE_II then
NinjaDamPer = 1.5
end
if skillID == 2012_SNIPER:FLOWING_BLADE_III_SNIPER:FLOWING_BLADE_III then
NinjaDamPer = 3
end
if skillID == 2013_SNIPER:FLOWING_BLADE_IV_SNIPER:FLOWING_BLADE_IV then
local Rune = srcUser:GetRunePoint(163021_AESIR_AUTO_ATTACK_FINAL_STYLE_FLOWING_BLADE_IV_DMG_5)
NinjaDamPer = 6 * (1 + Rune * 0.05)
end
if skillID == 2200_STELLAR_HUNTER:STORM_GUST and WeaponType == 320 then
damage = damage * 2
end
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
local guid = srcUser:GetGuid()
local Debuff_Layer_1 = targetUser:GetBuffLayerByIDAndFromID(96082, guid)
local Debuff_Layer_2 = targetUser:GetBuffLayerByIDAndFromID(96083, guid)
local sw_dam = math.max(Debuff_Layer_1, Debuff_Layer_2) * 0.06 + 1
damage = damage * sw_dam
end
if skillID == 173_KNIGHT:STORM_GUST then
local skilllv_qihei = srcUser:GetLernedSkillLevel(194_KNIGHT:FULLBLACK_CLAW)
if targetUser:GetBuffActive(95500) then
damage = damage * (1 + 0.15 * skilllv_qihei)
end
end
if skillID == 2822_SAINT:PIERCING_ARROW then
local skilllv_sy = srcUser:GetLernedSkillLevel(2811_SAINT:MOON_SHOT)
local ratio = 1
if targetUser:GetNpcID() ~= 0 and 7 <= skilllv_sy then
ratio = 2
end
local skilllv_xy = srcUser:GetLernedSkillLevel(2818_SAINT:BLOODMOON)
local Hp2 = targetUser:GetProperty("Hp")
local MaxHp2 = targetUser:GetProperty("MaxHp")
local HpRatio = 1 + (MaxHp2 - Hp2) / MaxHp2 * skilllv_xy * 0.2
damage = damage * (2 + skilllv_sy) * ratio * HpRatio
end
if skillID == 2809_SAINT:STORM_GUST or skillID == 2810_SAINT:STORM_GUST then
local skilllv_xy = srcUser:GetLernedSkillLevel(2818_SAINT:BLOODMOON)
local Hp2 = targetUser:GetProperty("Hp")
local MaxHp2 = targetUser:GetProperty("MaxHp")
local HpRatio = 1 + (MaxHp2 - Hp2) / MaxHp2 * skilllv_xy * 0.2
damage = damage * HpRatio
end
damage = damage * elementDam * stateDam * BUffDam * HolyEquip * zhufu * Ninja * NinjaDamPer
return damage
end