2020-08-25 15:46:38 +08:00
|
|
|
|
Curse = Buff:New()
|
2020-05-09 13:31:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--初始化Buff,通过传入一些自定义参数控制成长相关的数值
|
|
|
|
|
function Curse:SetData(curseType, ...)
|
|
|
|
|
self.curseType = curseType
|
|
|
|
|
self.args = {...} --标记,结束回调
|
|
|
|
|
self.cover = true
|
|
|
|
|
|
|
|
|
|
-- 刷新排序等级
|
|
|
|
|
self.sort = 4
|
|
|
|
|
end
|
|
|
|
|
--
|
|
|
|
|
function Curse:ShareDamageTrigger(damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit, damageType)
|
|
|
|
|
if skill and defRole.camp == self.target.camp then
|
|
|
|
|
-- 没有此印记的队友收到伤害
|
|
|
|
|
if not BattleLogic.BuffMgr:HasBuff(defRole, BuffName.Curse, function(buff) return buff.curseType == CurseTypeName.ShareDamage end) then
|
|
|
|
|
-- 计算拥有此印记人的数量
|
|
|
|
|
local sdList = RoleManager.Query(function(role)
|
|
|
|
|
return role.camp == self.target.camp and BattleLogic.BuffMgr:HasBuff(role, BuffName.Curse, function(buff) return buff.curseType == CurseTypeName.ShareDamage end)
|
|
|
|
|
end)
|
|
|
|
|
if sdList and #sdList ~= 0 then
|
|
|
|
|
-- 计算收到的伤害
|
|
|
|
|
local f1 = self.args[1] --平分伤害的百分比
|
|
|
|
|
local sd = math.floor(BattleUtil.ErrorCorrection(damage * f1 / #sdList))
|
|
|
|
|
if sd ~= 0 then
|
2020-12-17 15:51:22 +08:00
|
|
|
|
BattleUtil.FinalDamage(nil, atkRole, self.target, sd)
|
2020-05-09 13:31:21 +08:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--初始化后调用一次
|
|
|
|
|
function Curse:OnStart()
|
|
|
|
|
if self.curseType == CurseTypeName.ShareDamage then
|
|
|
|
|
BattleLogic.Event:AddEvent(BattleEventName.FinalDamage, self.ShareDamageTrigger, self)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd
|
|
|
|
|
function Curse:OnTrigger()
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--效果结束时调用一次
|
|
|
|
|
function Curse:OnEnd()
|
|
|
|
|
if self.curseType == CurseTypeName.ShareDamage then
|
|
|
|
|
BattleLogic.Event:RemoveEvent(BattleEventName.FinalDamage, self.ShareDamageTrigger, self)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--只有当cover字段为true时触发,返回true则被新效果覆盖
|
|
|
|
|
function Curse:OnCover(newBuff)
|
|
|
|
|
return self.curseType == newBuff.curseType
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- 比较buff
|
|
|
|
|
function Curse:OnCompare(buff)
|
|
|
|
|
return self.curseType == newBuff.curseType
|
|
|
|
|
end
|
2020-06-23 18:36:24 +08:00
|
|
|
|
return Curse
|