NoDead.lua 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. NoDead = Buff:New()
  2. --初始化Buff,通过传入一些自定义参数控制成长相关的数值
  3. function NoDead:SetData(...)
  4. self.damageFactor,
  5. self.factorCT,
  6. self.isCanRelive = ... -- buff期间的增伤系数
  7. self.cover = true --控制效果可被覆盖
  8. -- 刷新排序等级
  9. self.sort = 4
  10. end
  11. -- 伤害降低
  12. function NoDead:onPassiveDamaging(func, target, damage, skill)
  13. if skill and skill.type == BattleSkillType.Special then
  14. local dd = BattleUtil.CountValue(damage, self.damageFactor, self.factorCT) - damage
  15. if func then func(-math.floor(BattleUtil.ErrorCorrection(dd))) end
  16. end
  17. end
  18. --初始化后调用一次
  19. function NoDead:OnStart()
  20. --
  21. self.target.Event:AddEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self)
  22. self.target:SetDeadFilter(false)
  23. self.target:SetReliveFilter(self.isCanRelive)
  24. self.target:SetIsCanAddSkill(false)
  25. end
  26. --间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd
  27. function NoDead:OnTrigger()
  28. return true
  29. end
  30. --效果结束时调用一次
  31. function NoDead:OnEnd()
  32. self.target.Event:AddEvent(BattleEventName.PassiveDamaging, self.onPassiveDamaging, self)
  33. self.target:SetDeadFilter(true)
  34. -- self.target:SetIsCanAddSkill(false)
  35. end
  36. --只有当cover字段为true时触发,返回true则被新效果覆盖
  37. function NoDead:OnCover(newBuff)
  38. return true
  39. end
  40. -- 比较buff
  41. function NoDead:OnCompare(buff)
  42. return true
  43. end
  44. return NoDead