战斗同步
parent
d69db99784
commit
83aaad0721
|
@ -412,21 +412,18 @@ local effectList = {
|
|||
local f1 = args[2]
|
||||
local f2 = args[3]
|
||||
BattleLogic.WaitForTrigger(interval, function ()
|
||||
local func = function(damage)
|
||||
if BattleLogic.BuffMgr:HasBuff(target, BuffName.DOT, function (buff) return dot == 0 or buff.damageType == dot end) then
|
||||
local trigger = function(defRole, damageFunc, damage)
|
||||
if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT, function (buff)
|
||||
return dot == 0 or buff.damageType == dot
|
||||
end) then
|
||||
damage = damage + floor(damage * f1)
|
||||
end
|
||||
return damage
|
||||
damageFunc(damage)
|
||||
end
|
||||
target.exCalDmgList:Add(func)
|
||||
target.Event:AddEvent(BattleEventName.RoleDamageAfter, trigger)
|
||||
if f2 > 0 then
|
||||
BattleLogic.WaitForTrigger(f2, function ()
|
||||
for i=1, target.exCalDmgList.size do
|
||||
if target.exCalDmgList.buffer[i] == func then
|
||||
target.exCalDmgList:Remove(i)
|
||||
break
|
||||
end
|
||||
end
|
||||
target.Event:RemoveEvent(BattleEventName.RoleDamageAfter, trigger)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
@ -591,21 +588,16 @@ local effectList = {
|
|||
local f1 = args[2]
|
||||
local f2 = args[3]
|
||||
BattleLogic.WaitForTrigger(interval, function ()
|
||||
local func = function(damage)
|
||||
if BattleLogic.BuffMgr:HasBuff(target, BuffName.Control, function (buff) return ct == 0 or buff.ctrlType == ct end) then
|
||||
local trigger = function(defRole, damageFunc, damage)
|
||||
if BattleLogic.BuffMgr:HasBuff(defRole, BuffName.Control, function (buff) return ct == 0 or buff.ctrlType == ct end) then
|
||||
damage = damage + floor(damage * f1)
|
||||
end
|
||||
return damage
|
||||
damageFunc(damage)
|
||||
end
|
||||
target.exCalDmgList:Add(func)
|
||||
target.Event:AddEvent(BattleEventName.RoleDamageAfter, trigger)
|
||||
if f2 > 0 then
|
||||
BattleLogic.WaitForTrigger(f2, function ()
|
||||
for i=1, target.exCalDmgList.size do
|
||||
if target.exCalDmgList.buffer[i] == func then
|
||||
target.exCalDmgList:Remove(i)
|
||||
break
|
||||
end
|
||||
end
|
||||
target.Event:RemoveEvent(BattleEventName.RoleDamageAfter, trigger)
|
||||
end)
|
||||
end
|
||||
end)
|
||||
|
@ -1324,9 +1316,10 @@ local effectList = {
|
|||
local remainCount = floor(remainFrame / buff.frameInterval)+1
|
||||
buff.disperse = true
|
||||
if buff.caster and not buff.caster.isTeam then
|
||||
buff.caster.exCalDmgList:Add(function(damage) return damage * remainCount end)
|
||||
local trigger = function(defRole, damageFunc, damage) damageFunc(damage * remainCount) end
|
||||
buff.caster.Event:AddEvent(BattleEventName.RoleDamageAfter, trigger)
|
||||
BattleUtil.CalDamage(buff.caster, buff.target, buff.damagePro, buff.damageFactor,0, true)
|
||||
buff.caster.exCalDmgList:Remove(buff.caster.exCalDmgList.size)
|
||||
buff.caster.Event:RemoveEvent(BattleEventName.RoleDamageAfter, trigger)
|
||||
end
|
||||
end
|
||||
return true
|
||||
|
|
|
@ -20,6 +20,8 @@ BattleEventName = {
|
|||
RoleDamage = indexAdd(),
|
||||
RoleBeDamagedBefore = indexAdd(),
|
||||
RoleDamageBefore = indexAdd(),
|
||||
RoleBeDamagedAfter = indexAdd(),
|
||||
RoleDamageAfter = indexAdd(),
|
||||
RoleBeTreated = indexAdd(),
|
||||
RoleTreat = indexAdd(),
|
||||
RoleBeHealed = indexAdd(),
|
||||
|
|
|
@ -287,10 +287,9 @@ function BattleUtil.CalDamage(atkRole, defRole, damageType, baseFactor, ignoreDe
|
|||
baseDamage = floor(max(baseDamage, BattleUtil.FP_Mul(0.1, attack)))
|
||||
end
|
||||
|
||||
for i=1, atkRole.exCalDmgList.size do
|
||||
local func = atkRole.exCalDmgList.buffer[i]
|
||||
baseDamage = func(baseDamage)
|
||||
end
|
||||
local damageFunc = function(damage) baseDamage = damage end
|
||||
atkRole.Event:DispatchEvent(BattleEventName.RoleDamageAfter, defRole, damageFunc, baseDamage)
|
||||
defRole.Event:DispatchEvent(BattleEventName.RoleBeDamagedAfter, atkRole, damageFunc, baseDamage)
|
||||
|
||||
baseDamage = BattleUtil.CalShield(atkRole, defRole, baseDamage)
|
||||
local finalDmg = 0 --计算实际造成的扣血
|
||||
|
|
Loading…
Reference in New Issue