Formula
CommonFun.CheckMissAndBlock
function CommonFun.CheckMissAndBlock(srcUser, targetUser, params, skillParams, iscrit, damage)
if damage <= 0 then
return
end
if (targetUser.boss or targetUser.mini or targetUser.changelinepunish) and (targetUser.zoneType == 1 or targetUser.zoneType == 22) and targetUser.noPunishBoss == false then
local AttrFunction = srcUser:GetProperty("AttrFunction")
local bitfunc = CommonFun.getBits(AttrFunction)
if bitfunc[CommonFun.AttrFunction.JustInViceZone] == 1 and targetUser.isBossFromBranch == false then
return 0, CommonFun.DamageType.Miss
end
end
if CommonFun.checkAttrFunctionMiss(targetUser, srcUser) then
return 0, CommonFun.DamageType.Miss
end
if targetUser.boss and targetUser.zoneType == 22 and CommonFun.CheckStormBossMiss(targetUser, srcUser) then
return 0, CommonFun.DamageType.Miss
end
if CommonFun.RollType.Attack == skillParams.RollType then
if srcUser:IsAttackSkill(params.skillIDAndLevel) then
if iscrit == false and CommonFun.IsMiss(srcUser, targetUser, skillParams) == true then
return 0, CommonFun.DamageType.Miss
end
elseif not srcUser:IsAttackSkill(params.skillIDAndLevel) and CommonFun.IsMiss(srcUser, targetUser, skillParams) == true then
return 0, CommonFun.DamageType.Miss
end
end
local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
local DefAttr2 = targetUser:GetProperty("DefAttr")
local AttrEffect2 = targetUser:GetProperty("AttrEffect")
local bits2 = CommonFun.getBits(AttrEffect2)
local AttrEffect3 = targetUser:GetProperty("AttrEffect2")
local bits3 = CommonFun.getBits(AttrEffect3)
if targetUser:IsImmuneSkill(skillID) then
return 0, CommonFun.DamageType.Miss
end
if skillID == 160_KNIGHT:TURN_UNDEAD and DefAttr2 == CommonFun.Nature.Undead and targetUser.boss == false and targetUser.mini == false and targetUser:GetNpcID() ~= 18143_TIME_KEEPER_PAST and targetUser:GetNpcID() ~= 18144_TIME_KEEPER_PRESENT and targetUser:GetNpcID() ~= 18145_TIME_KEEPER_FUTURE and targetUser:HasBuffID(160000_BOSS_IMMUNE_EFFECT_:MAX_STACK_0) == false then
local Luk = srcUser:GetProperty("Luk")
local Int = srcUser:GetProperty("Int")
local BaseLv = srcUser.BaseLv
local Hp = targetUser:GetProperty("Hp")
local MaxHp = targetUser:GetProperty("MaxHp")
local rate = (20 * skillLevel + Luk + Int + BaseLv + (1 - Hp / MaxHp) * 200) / 10
if 70 <= rate then
rate = 70
end
if CommonFun.IsInRate(rate, srcUser:GetRandom()) then
return targetUser:GetProperty("MaxHp"), CommonFun.DamageType.Normal
end
end
if bits2[CommonFun.AttrEffect.NoMagicDamage] == 1 and CommonFun.RollType.Magic == skillParams.RollType then
return 0, CommonFun.DamageType.WeaponBlock
end
if bits2[CommonFun.AttrEffect.NoPhysicalDamage] == 1 and CommonFun.RollType.Attack == skillParams.RollType then
return 0, CommonFun.DamageType.WeaponBlock
end
if bits2[CommonFun.AttrEffect.IgnoreNearNormalSkill] == 1 and nil ~= skillParams.Launch_Type and CommonFun.LaunchType.CloseAttack == skillParams.Launch_Type then
return 0, CommonFun.DamageType.WeaponBlock
end
local isCanBlock = CommonFun.IsCanBlock(srcUser, targetUser)
if bits2[CommonFun.AttrEffect.IgnoreNearPhysicalSkill] == 1 and skillParams.Launch_Range ~= nil and CommonFun.IsLongSkill(skillParams.Launch_Range) == false and skillParams.RollType == 1 and skillID == 319_LORD_KNIGHT:PALM_PUSH_STRIKE and skillID == 4717_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and skillID == 4718_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and skillID == 4702_SHADOW_CHASER:SCORCHING_REALM and skillID == 4714_SHADOW_CHASER:SOLAR_AURA and isCanBlock == true then
return 0, CommonFun.DamageType.Barrier
end
if bits2[CommonFun.AttrEffect.IgnoreFarSkill] == 1 and skillParams.Launch_Range ~= nil and CommonFun.IsLongSkill(skillParams.Launch_Range) == true and skillParams.RollType == 1 and skillID == 2227_STELLAR_HUNTER:CRACK_SHOT and skillID == 2243_STELLAR_HUNTER:ABSOLUTE_PENETRATION and skillID == 2251_STELLAR_HUNTER:FORCED_DISPEL and skillID == 2741_SAINT:FIRE_STRIKE and skillID == 4717_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and skillID == 4718_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and skillID == 4702_SHADOW_CHASER:SCORCHING_REALM and skillID == 4714_SHADOW_CHASER:SOLAR_AURA and isCanBlock == true then
return 0, CommonFun.DamageType.Barrier
end
if skillParams.Launch_Range ~= nil and skillParams.RollType == 1 and skillParams.Logic == "SkillLockedTarget" and isCanBlock == true and targetUser:HasBuffID(132080_DARK_NIGHT_HUNTER_:MAX_STACK_0) then
local Bufflv = targetUser:GetBuffLevel(132080_DARK_NIGHT_HUNTER_:MAX_STACK_0)
local WeaponType = targetUser:GetEquipedWeaponType()
local ShadowNum = targetUser:GetPetCount("ShadowNpc")
local Rate = Bufflv * ShadowNum * 2
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) and WeaponType == 210 then
return 0, CommonFun.DamageType.Miss
end
end
if skillParams.Launch_Range ~= nil and CommonFun.IsLongSkill(skillParams.Launch_Range) == true and skillParams.RollType == 1 and skillParams.Logic == "SkillLockedTarget" and isCanBlock == true then
local Rate = 0
if targetUser:HasBuffID(118172_FOG_WALL_FLEE_:MAX_STACK_0) then
local Bufflv = targetUser:GetBuffLevel(118172_FOG_WALL_FLEE_:MAX_STACK_0)
Rate = Bufflv * 10 + 20
end
if targetUser:HasBuffID(90160_WIND_WALK_SPEED_SHIFT_:MAX_STACK_0) or targetUser:HasBuffID(123280_HISS_:MAX_STACK_0) then
local Value = targetUser:GetProperty("LongFleeRate")
Rate = Rate + Value
end
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) and srcUser:HasBuffID(49120_GOLDEN_SPIRIT_BOAT_:MAX_STACK_0) == false then
return 0, CommonFun.DamageType.Miss
end
end
if skillParams.Launch_Range ~= nil and CommonFun.IsLongSkill(skillParams.Launch_Range) == true and skillParams.RollType == 1 and isCanBlock == true then
local Rate = 0
if targetUser:HasBuffID(133644_TAKE_COVER_ATTRIBUTE_:MAX_STACK_0) or targetUser:HasBuffID(136010_FALLING_:MAX_STACK_0) or targetUser:HasBuffID(136011_FALLING_PEAK_:MAX_STACK_0) then
Rate = targetUser:GetProperty("LongFleeRate")
end
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) and srcUser:HasBuffID(49120_GOLDEN_SPIRIT_BOAT_:MAX_STACK_0) == false then
return 0, CommonFun.DamageType.Miss
end
end
if targetUser:HasBuffID(20910160_VANISHED_AVOIDS_AOE_MAGIC_:MAX_STACK_0) and targetUser:HasBuffID(106100_VANISHED_:MAX_STACK_0) and CommonFun.RollType.Magic == skillParams.RollType and skillParams.Logic ~= "SkillLockedTarget" and isCanBlock == true and 0 < damage then
return 0, CommonFun.DamageType.Miss
end
if srcUser:HasBuffID(136780_11105_:MAX_STACK_0) and targetUser:HasBuffID(136781_11106_:MAX_STACK_0) == false then
return 0, CommonFun.DamageType.Miss
end
if srcUser:HasBuffID(136781_11106_:MAX_STACK_0) == false and targetUser:HasBuffID(136780_11105_:MAX_STACK_0) then
return 0, CommonFun.DamageType.Miss
end
if CommonFun.RollType.Magic == skillParams.RollType and isCanBlock == true and 0 < damage then
local Flee = targetUser:GetProperty("Flee")
local Rate = 0
if targetUser:HasBuffID(32980_BAPHOMET_JR_S_SUMMER_:MAX_STACK_0) then
Rate = Rate + 5 + math.min(Flee / 50, 15)
end
local CardSP = targetUser:GetBuffLayer(53550_SPASHIRE_CARD_:MAX_STACK_0)
if 0 < CardSP then
Rate = Rate + CardSP * 5
end
local CardNumH1 = targetUser:GetBuffLayer(56900_HEATER_CARD_:MAX_STACK_0)
Rate = Rate + CardNumH1 * 3
local CardNumH3 = targetUser:GetBuffLayer(58640_MASTER_MAGICIAN_CARD_:MAX_STACK_0)
Rate = Rate + CardNumH3 * 5
local CardNumMY = targetUser:GetBuffLayer(57850_23338_ROAMING_DANCER_PROFESSION_CARD_:MAX_STACK_0)
Rate = Rate + CardNumMY * 5
if targetUser:HasBuffID(90004954_23_:MAX_STACK_0) then
Rate = Rate + 10
end
if targetUser:HasBuffID(90005054_23_:MAX_STACK_0) then
Rate = Rate + 5
end
local MemoryBufflvlayer = targetUser:GetBuffLayer(29250_ELEMENTS_CARE_:MAX_STACK_0)
if targetUser:HasBuffID(29250_ELEMENTS_CARE_:MAX_STACK_0) then
Rate = Rate + MemoryBufflvlayer * 1
end
if targetUser:HasBuffID(118250_MAGIC_ROD_:MAX_STACK_0) or targetUser:HasBuffID(128100_DARK_NIGHT_S_DANCE_YOURSELF_:MAX_STACK_0) or targetUser:HasBuffID(128101_DARK_NIGHT_S_DANCE_ALLY_:MAX_STACK_0) or targetUser:HasBuffID(135200_KAUPE_:MAX_STACK_0) or targetUser:HasBuffID(100038250_DISPELLING_SCALE_MASTER_:MAX_STACK_0) or targetUser:HasBuffID(135353_SOUL_OF_THE_SAGE_MAGIC_FLEE_:MAX_STACK_0) or targetUser:HasBuffID(136011_FALLING_PEAK_:MAX_STACK_0) then
local MagicFlee = targetUser:GetProperty("MagicFleeRate")
Rate = Rate + MagicFlee
end
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) then
if srcUser.isServerCall then
targetUser:OnDodgeMagic()
end
return 0, CommonFun.DamageType.Miss
end
end
if targetUser:HasBuffID(159620_MAGNETIC_FIELD_:MAX_STACK_0) and 0 < damage and isCanBlock == true then
local targetid = targetUser:GetGuid()
local distance = srcUser:GetDistance(targetid)
if 5 <= distance then
return 0, CommonFun.DamageType.None
end
end
if targetUser:HasBuffID(138050_23_:MAX_STACK_0) and srcUser:GetNpcID() ~= 0 then
local Bufflv = targetUser:GetBuffLevel(138050_23_:MAX_STACK_0)
local Rate = Bufflv * 10 + 30
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) then
return 0, CommonFun.DamageType.Miss
end
end
if targetUser:HasBuffID(138831_DARK_TALISMAN_:MAX_STACK_0) and 0 < damage and isCanBlock == true and (CommonFun.RollType.Attack == skillParams.RollType and srcUser:HasBuffID(49120_GOLDEN_SPIRIT_BOAT_:MAX_STACK_0)) == false then
local Bufflv = targetUser:GetBuffLevel(138835_DARK_TALISMAN_EVASION_:MAX_STACK_0)
local Rate = Bufflv * 9
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) then
return 0, CommonFun.DamageType.Miss
end
end
if targetUser:HasBuffID(139630__:MAX_STACK_0) and 0 < damage and isCanBlock == true and (CommonFun.RollType.Attack == skillParams.RollType and srcUser:HasBuffID(49120_GOLDEN_SPIRIT_BOAT_:MAX_STACK_0)) == false then
local Rate = 50
if CommonFun.IsInRate(Rate, srcUser:GetRandom()) then
return 0, CommonFun.DamageType.Miss
end
end
if bits2[CommonFun.AttrEffect.BaXieZhiZhen] == 1 then
local dam, damtype = CommonFun.ModifyBaxieDamage(srcUser, targetUser, skillParams, damage, skillID, isCanBlock)
if damtype ~= nil then
if targetUser.isServerCall then
targetUser:SetBaxieBlock(true)
end
return dam, damtype
end
if targetUser.isServerCall then
targetUser:SetBaxieBlock(false)
end
end
if bits2[CommonFun.AttrEffect.InGodStatus] == 1 and 0 < damage then
return 0, CommonFun.DamageType.Miss
end
if (targetUser:HasBuffID(121030_EDEN_TEAM_BLESSING_:MAX_STACK_0) == true or targetUser:HasBuffID(55693_10353_:MAX_STACK_0) == true or targetUser:HasBuffID(90003955_DEERSKIN_MANTEAU_T5_EFFECT_:MAX_STACK_0) == true or targetUser:HasBuffID(90005555_23_:MAX_STACK_0) == true) and CommonFun.RollType.Magic == skillParams.RollType and 0 < damage and isCanBlock == true then
return 0, CommonFun.DamageType.DefMagic
end
if (targetUser:HasBuffID(90003975_MERLIN_S_TIME_SPACE_ROBE_T5_EFFECT_:MAX_STACK_0) == true or targetUser:HasBuffID(90005405_23_:MAX_STACK_0) == true) and CommonFun.RollType.Attack == skillParams.RollType and 0 < damage and isCanBlock == true then
return 0, CommonFun.DamageType.DefPhysics
end
if srcUser:IsAttackSkill(params.skillIDAndLevel) == false and targetUser:GetBuffActive(107330) and isCanBlock == true and 0 < damage then
local Bufflv = targetUser:GetBuffLevel(107330_COMBAT_PROFICIENT_:MAX_STACK_0)
if CommonFun.IsInRate(Bufflv * 3, srcUser:GetRandom()) then
return 0, CommonFun.DamageType.WeaponBlock
end
end
if srcUser:HasBuffID(166450_BANDAGE_HURT_ONLY_BY_PUGONG_:MAX_STACK_0) == true and srcUser:IsAttackSkill(params.skillIDAndLevel) == false and skillID == 151_KNIGHT:SANCTUARY then
return 0, CommonFun.DamageType.Miss
end
local judu = true
if skillID == 187_KNIGHT:VENOM_DART and srcUser:HasBuffID(20310010_VENOM_DART_IGNORES_KYRIE_ELEISON_:MAX_STACK_0) then
judu = false
end
if skillID == 2227_STELLAR_HUNTER:CRACK_SHOT or skillID == 2243_STELLAR_HUNTER:ABSOLUTE_PENETRATION or skillID == 2251_STELLAR_HUNTER:FORCED_DISPEL then
judu = false
end
if isCanBlock == false then
judu = false
end
local HarmImmune = targetUser:GetProperty("HarmImmune")
if nil ~= HarmImmune and 0 < HarmImmune then
local harmImmuneInfo = Table_BuffStateOdds[HarmImmune]
if nil ~= harmImmuneInfo then
local rate = harmImmuneInfo.Odds * 100
if params.pvpMap then
local Dex = srcUser:GetProperty("Dex")
local Agi = targetUser:GetProperty("Agi")
local rate1 = math.min(Dex * 0.1 - Agi * 0.1, 20)
if rate1 < 0 then
rate1 = 0
end
rate = rate - rate1
if rate < 0 then
rate = 0
end
end
local WeaponType = targetUser:GetEquipedWeaponType()
if targetUser:HasBuffID(20110040_CAN_USE_SWORD_PARRY_WITH_SPEARS_:MAX_STACK_0) and WeaponType == 180 then
rate = rate + 5
end
if CommonFun.IsInRate(rate, srcUser:GetRandom()) and math.floor(params.skillIDAndLevel / 1000) ~= 306_LORD_KNIGHT:ASURA_STRIKE_LORD_KNIGHT:ASURA_STRIKE_LORD_KNIGHT:ASURA_STRIKE and math.floor(params.skillIDAndLevel / 1000) ~= 422_RUNE_KNIGHT:IMPROVED_ACID_DEMONSTRATION_RUNE_KNIGHT:IMPROVED_ACID_DEMONSTRATION and math.floor(params.skillIDAndLevel / 1000) ~= 1122_ARCANE_MASTER:FIRE_EXPANSION_ARCANE_MASTER:FIRE_EXPANSION and math.floor(params.skillIDAndLevel / 1000) ~= 1164_THIEF:TETRA_VORTEX_THIEF:TETRA_VORTEX and judu == true and math.floor(params.skillIDAndLevel / 1000) ~= 3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST and math.floor(params.skillIDAndLevel / 1000) ~= 819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST and math.floor(params.skillIDAndLevel / 1000) ~= 3706_ROYAL_GUARD:CRAZY_THROWING_ROYAL_GUARD:CRAZY_THROWING and math.floor(params.skillIDAndLevel / 1000) ~= 1809_HUNTER:ONE_HIT_KILL_SOARING_DRAGON_SWORD_HUNTER:ONE_HIT_KILL_SOARING_DRAGON_SWORD and math.floor(params.skillIDAndLevel / 1000) ~= 1835_HUNTER:ONE_HIT_KILL_PHOENIX_DRAGON_SWORD_HUNTER:ONE_HIT_KILL_PHOENIX_DRAGON_SWORD and math.floor(params.skillIDAndLevel / 1000) ~= 1915_HUNTER:RAGNA_BLADE_HUNTER:RAGNA_BLADE and math.floor(params.skillIDAndLevel / 1000) ~= 1941_SNIPER:DIVINE_DESTRUCTION_SLASH_LIGHTNING_BOLT_SMASH_SNIPER:DIVINE_DESTRUCTION_SLASH_LIGHTNING_BOLT_SMASH and math.floor(params.skillIDAndLevel / 1000) ~= 2741_SAINT:FIRE_STRIKE_SAINT:FIRE_STRIKE_SAINT:FIRE_STRIKE and math.floor(params.skillIDAndLevel / 1000) ~= 4717_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and math.floor(params.skillIDAndLevel / 1000) ~= 4718_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and math.floor(params.skillIDAndLevel / 1000) ~= 4714_SHADOW_CHASER:SOLAR_AURA_SHADOW_CHASER:SOLAR_AURA_SHADOW_CHASER:SOLAR_AURA and math.floor(params.skillIDAndLevel / 1000) ~= 4702_SHADOW_CHASER:SCORCHING_REALM_SHADOW_CHASER:SCORCHING_REALM_SHADOW_CHASER:SCORCHING_REALM then
return 0, CommonFun.DamageType.Block
end
end
end
if bits3[CommonFun.AttrEffect2.AutoDef] == 1 then
local rate = targetUser:GetProperty("AutoBlockRate")
rate = math.min(rate, 60)
if CommonFun.IsInRate(rate, srcUser:GetRandom()) and math.floor(params.skillIDAndLevel / 1000) ~= 306_LORD_KNIGHT:ASURA_STRIKE_LORD_KNIGHT:ASURA_STRIKE_LORD_KNIGHT:ASURA_STRIKE and math.floor(params.skillIDAndLevel / 1000) ~= 411_RUNE_KNIGHT:ACID_TERROR and math.floor(params.skillIDAndLevel / 1000) ~= 422_RUNE_KNIGHT:IMPROVED_ACID_DEMONSTRATION_RUNE_KNIGHT:IMPROVED_ACID_DEMONSTRATION and math.floor(params.skillIDAndLevel / 1000) ~= 1122_ARCANE_MASTER:FIRE_EXPANSION_ARCANE_MASTER:FIRE_EXPANSION and math.floor(params.skillIDAndLevel / 1000) ~= 1164_THIEF:TETRA_VORTEX_THIEF:TETRA_VORTEX and judu == true and math.floor(params.skillIDAndLevel / 1000) ~= 3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST and math.floor(params.skillIDAndLevel / 1000) ~= 819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST and math.floor(params.skillIDAndLevel / 1000) ~= 3706_ROYAL_GUARD:CRAZY_THROWING_ROYAL_GUARD:CRAZY_THROWING and math.floor(params.skillIDAndLevel / 1000) ~= 1809_HUNTER:ONE_HIT_KILL_SOARING_DRAGON_SWORD_HUNTER:ONE_HIT_KILL_SOARING_DRAGON_SWORD and math.floor(params.skillIDAndLevel / 1000) ~= 1835_HUNTER:ONE_HIT_KILL_PHOENIX_DRAGON_SWORD_HUNTER:ONE_HIT_KILL_PHOENIX_DRAGON_SWORD and math.floor(params.skillIDAndLevel / 1000) ~= 1915_HUNTER:RAGNA_BLADE_HUNTER:RAGNA_BLADE and math.floor(params.skillIDAndLevel / 1000) ~= 1941_SNIPER:DIVINE_DESTRUCTION_SLASH_LIGHTNING_BOLT_SMASH_SNIPER:DIVINE_DESTRUCTION_SLASH_LIGHTNING_BOLT_SMASH and math.floor(params.skillIDAndLevel / 1000) ~= 2741_SAINT:FIRE_STRIKE_SAINT:FIRE_STRIKE_SAINT:FIRE_STRIKE and math.floor(params.skillIDAndLevel / 1000) ~= 4717_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and math.floor(params.skillIDAndLevel / 1000) ~= 4714_SHADOW_CHASER:SOLAR_AURA_SHADOW_CHASER:SOLAR_AURA_SHADOW_CHASER:SOLAR_AURA and math.floor(params.skillIDAndLevel / 1000) ~= 4718_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and math.floor(params.skillIDAndLevel / 1000) ~= 4702_SHADOW_CHASER:SCORCHING_REALM_SHADOW_CHASER:SCORCHING_REALM_SHADOW_CHASER:SCORCHING_REALM then
local skilllv_weiw = targetUser:GetLernedSkillLevel(1190_THIEF:PRESTIGE)
if 0 < skilllv_weiw and srcUser.isServerCall then
targetUser:AddBuff(116700_PRESTIGE_:MAX_STACK_0, srcUser:GetGuid())
end
local skilllv_ss = targetUser:GetLernedSkillLevel(3806_ROYAL_GUARD:GLORIOUS_GUARDIAN)
if 0 < skilllv_ss and srcUser.isServerCall then
targetUser:AddBuff(130080_TRIGGER_HOLY_SHIELD_:MAX_STACK_0, targetUser:GetGuid())
end
return 0, CommonFun.DamageType.AutoBlock
end
end
if bits3[CommonFun.AttrEffect2.WeaponBlock] == 1 and isCanBlock == true then
local rate = targetUser:GetProperty("WeaponBlockRate")
local GemValue2 = targetUser:GetGemValue(31012_COUNTER_ATTACK_TRIGGER_CHANCE_PERCENTAGE)
if CommonFun.IsInRate(rate, srcUser:GetRandom()) and skillParams.Launch_Range ~= nil and CommonFun.IsLongSkill(skillParams.Launch_Range) == false and skillParams.RollType == 1 and math.floor(params.skillIDAndLevel / 1000) ~= 306_LORD_KNIGHT:ASURA_STRIKE_LORD_KNIGHT:ASURA_STRIKE_LORD_KNIGHT:ASURA_STRIKE and math.floor(params.skillIDAndLevel / 1000) ~= 3303_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST_LIGHTBRINGER:SKY_BREAKING_DRAGON_FIST and math.floor(params.skillIDAndLevel / 1000) ~= 819_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST_HIGH_WIZARD:SKY_BREAKING_DRAGON_FIST then
local RuneNum = targetUser:GetRunePoint(34030_AESIR_TRIGGERED_WEAPON_BLOCKING_HAS_A_15_CHANCE_TO_COUNTER_THE_ATTACKER_WITH_CROSS_IMPACT_LV_5)
if 0 < RuneNum then
local RuneRate = RuneNum * 15 + GemValue2 / 1000
if srcUser.isServerCall and CommonFun.IsInRate(RuneRate, srcUser:GetRandom()) then
targetUser:AddBuff(116041_CROSS_IMPACT_COUNTER_CUT_:MAX_STACK_0, srcUser:GetGuid())
end
end
return 0, CommonFun.DamageType.WeaponBlock
end
if CommonFun.IsInRate(rate, srcUser:GetRandom()) and targetUser:HasBuffID(20310020_WEAPON_BLOCKING_CAN_BLOCK_RANGED_PHYSICAL_ATTACKS_:MAX_STACK_0) and skillParams.Launch_Range ~= nil and CommonFun.IsLongSkill(skillParams.Launch_Range) == true and skillParams.RollType == 1 and math.floor(params.skillIDAndLevel / 1000) ~= 2227_STELLAR_HUNTER:CRACK_SHOT and math.floor(params.skillIDAndLevel / 1000) ~= 2243_STELLAR_HUNTER:ABSOLUTE_PENETRATION and math.floor(params.skillIDAndLevel / 1000) ~= 2251_STELLAR_HUNTER:FORCED_DISPEL and math.floor(params.skillIDAndLevel / 1000) ~= 2741_SAINT:FIRE_STRIKE_SAINT:FIRE_STRIKE_SAINT:FIRE_STRIKE and math.floor(params.skillIDAndLevel / 1000) ~= 4702_SHADOW_CHASER:SCORCHING_REALM_SHADOW_CHASER:SCORCHING_REALM_SHADOW_CHASER:SCORCHING_REALM and math.floor(params.skillIDAndLevel / 1000) ~= 4714_SHADOW_CHASER:SOLAR_AURA_SHADOW_CHASER:SOLAR_AURA_SHADOW_CHASER:SOLAR_AURA and math.floor(params.skillIDAndLevel / 1000) ~= 4717_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE and math.floor(params.skillIDAndLevel / 1000) ~= 4718_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE_SHADOW_CHASER:SOLAR_AURA_SKYFIRE then
return 0, CommonFun.DamageType.WeaponBlock
end
end
local buff2MissAtkAttr = {
[90005525] = {
6,
7,
8,
10
},
[90005545] = {
1,
2,
3,
4
},
[30031304] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
},
[30031305] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
},
[30031306] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
},
[30031307] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
}
}
local srcAtkElement = CommonFun.GetUserAtkAttrByList(srcUser, targetUser, params, skillParams.Damage)
for buff, atkAttrs in pairs(buff2MissAtkAttr) do
if targetUser:HasBuffID(buff) and CommonFun.isInArray(atkAttrs, srcAtkElement) and isCanBlock == true then
if srcUser.isServerCall then
targetUser:AddBuffCount(buff)
end
return 0, CommonFun.DamageType.Miss
end
end
if targetUser:IsFly() and CommonFun.TableHasValue(NpcFeatures.Flight.ImmuneSkill, skillID) then
return 0, CommonFun.DamageType.Miss
end
end