时空猪八戒被动提交

dev_chengFeng
yuanshuai 2023-05-15 17:38:51 +08:00
parent de787a85f7
commit 8005fbe6d7
3 changed files with 62 additions and 0 deletions

View File

@ -12315,5 +12315,52 @@ local passivityList = {
end
role.Event:AddEvent(BattleEventName.SkillCastEnd, onSkillEnd,nil,nil,role)
end,
-- 受到致命伤害后伤害转移给a神将每场战斗每个武将限1次
[467] = function(role, args)
local triggerList={}
local onDamShift = function(func,atkRole,damage,defRole,skill)
if BattleUtil.ChecklistIsContainValue(triggerList,defRole.position) then
return
end
if role:IsDead() or role.camp~=defRole.camp or skill==nil then
return
end
local curHp = defRole:GetRoleData(RoleDataName.Hp)
if damage > curHp then
table.insert(triggerList,defRole.position)
BattleUtil.ApplyDamage(skill, atkRole, role, damage)
func(true)
end
end
BattleLogic.Event:AddEvent(BattleEventName.CheckDamShift, onDamShift,nil,nil,role)
end,
-- 没有受到控制时,每[a]回合清空身上的减益buff,回复[b]属性[c]%生命值,并添加[d]属性[e]%御甲
-- a[int]b[属性]c[float]d[属性]e[float]
[468] = function(role, args)
local a=args[1]
local b=args[2]
local c=args[3]
local d=args[4]
local e=args[5]
BattleLogic.Event:AddEvent(BattleEventName.BattleRoundChange, function(curRound)
if curRound%a==0 then
--如果处于眩晕 沉默 嘲讽 混乱 放逐状态下不生效
if BattleLogic.BuffMgr:HasBuff(role, BuffName.Control, function (buff) return buff.ctrlType == 1 or buff.ctrlType == 3 or buff.ctrlType == 8 end) then
return
end
if role.isExile then
return
end
BattleLogic.BuffMgr:ClearBuff(role, function (buff)
return buff.target.camp ~= role.camp
end)
local tv = floor(BattleUtil.ErrorCorrection(role:GetRoleData(BattlePropList[b]) * c))
BattleUtil.AddBlood(role,tv)
local treat = floor(BattleUtil.FP_Mul(role:GetRoleData(BattlePropList[d]), e))
BattleUtil.CalTreat(role, role, treat)
end
end,nil,nil,role)
end,
}
return passivityList

View File

@ -205,6 +205,7 @@ BattleEventName = {
WeaponSkillCast = indexAdd(), --神兵技能释放
CheckFalseNoDead = indexAdd(), --检测伪不灭
CheckTreatVoid = indexAdd(), --检测治疗是否无效
CheckDamShift=indexAdd(), --检测伤害转移
}
BattleMaxFrame = 1000000

View File

@ -921,6 +921,20 @@ function BattleUtil.FinalDamage(skill, atkRole, defRole, damage, bCrit, damageTy
damage=realDamage
end
defRole.Event:DispatchEvent(BattleEventName.CheckFalseNoDead, damagingFunc, atkRole, realDamage, skill, dotType, bCrit, damageType,isDirect)
local isToDied=false
--检测时空猪八戒格挡致死伤害
local checkDamageShift = function(isDead)
isToDied=isDead
end
BattleLogic.Event:DispatchEvent(BattleEventName.CheckDamShift, checkDamageShift, atkRole, realDamage, defRole,skill)
--格挡成功
if isToDied then
return
end
--御甲过滤后的伤害只会处理扣血 by: wangzhenxing shihongyi 2021/09/27
local finalDmg = defRole.data:SubValue(RoleDataName.Hp,realDamage)
if finalDmg >= 0 then