Immune.lua 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. -- 免疫效果
  2. Immune = Buff:New()
  3. local immune0 = function(buff)
  4. return buff.type == BuffName.Control or buff.isDeBuff or buff.type == BuffName.DOT
  5. end
  6. local immune1 = function(buff)
  7. return buff.type == BuffName.Control
  8. end
  9. local immune2 = function(buff)
  10. return buff.type == BuffName.DOT
  11. end
  12. local immune3 = function(buff)
  13. return buff.type == BuffName.Shield and buff.shieldType == ShieldTypeName.AllReduce
  14. end
  15. --初始化Buff,通过传入一些自定义参数控制成长相关的数值
  16. function Immune:SetData(...)
  17. self.immuneType = ...
  18. self.isBuff = true
  19. -- 刷新排序等级
  20. self.sort = 4
  21. end
  22. --初始化后调用一次
  23. function Immune:OnStart()
  24. if self.immuneType == 0 then --免疫负面状态(控制状态、减益状态和持续伤害状态)
  25. self.target.buffFilter:Add(immune0)
  26. elseif self.immuneType == 1 then --免疫控制状态
  27. self.target.buffFilter:Add(immune1)
  28. elseif self.immuneType == 2 then --免疫dot
  29. self.target.buffFilter:Add(immune2)
  30. elseif self.immuneType == 3 then --免疫无敌盾
  31. self.target.buffFilter:Add(immune3)
  32. end
  33. end
  34. --间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd
  35. function Immune:OnTrigger()
  36. return true
  37. end
  38. --效果结束时调用一次
  39. function Immune:OnEnd()
  40. local immune
  41. if self.immuneType == 0 then --免疫负面状态(控制状态、减益状态和持续伤害状态)
  42. immune = immune0
  43. elseif self.immuneType == 1 then --免疫控制状态
  44. immune = immune1
  45. elseif self.immuneType == 2 then --免疫dot
  46. immune = immune2
  47. elseif self.immuneType == 3 then --免疫无敌盾
  48. immune = immune3
  49. end
  50. for i = 1, self.target.buffFilter.size do
  51. if self.target.buffFilter.buffer[i] == immune then
  52. self.target.buffFilter:Remove(i)
  53. break
  54. end
  55. end
  56. end
  57. --只有当cover字段为true时触发,返回true则被新效果覆盖
  58. function Immune:OnCover(newBuff)
  59. return true
  60. end
  61. -- 比较buff
  62. function Immune:OnCompare(buff)
  63. return buff.immuneType == self.immuneType
  64. end
  65. return Immune