Brand.lua 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. Brand = Buff:New()
  2. --初始化Buff,通过传入一些自定义参数控制成长相关的数值
  3. function Brand:SetData(...)
  4. self.flag, self.endFunc = ... --标记,结束回调
  5. self.cover = true
  6. self.layer = 1
  7. self.maxLayer = 0
  8. -- 刷新排序等级
  9. self.sort = 4
  10. self.isBuff = true
  11. self.isDeBuff = false
  12. --触发函数
  13. self.TriggerFunc = nil
  14. self.clear = false
  15. -- debuff:暗杀 诅咒 禁止复活 征服 具体数字涵义查找battledefine
  16. if self.flag == 8 or self.flag == 10 or self.flag == 12 or self.flag == 5 then
  17. self.isBuff = false
  18. self.isDeBuff = true
  19. end
  20. --不可驱散
  21. if self.flag == 1 or self.flag == 3 or self.flag == 4 or self.flag == 5 or self.flag == 6 or self.flag == 11 or self.flag == 12 then
  22. self.clear = false
  23. end
  24. if self.flag == 2 or self.flag == 10 then
  25. self.clear = true
  26. end
  27. end
  28. --初始化后调用一次
  29. function Brand:OnStart()
  30. if self.startFunc then
  31. self.startFunc()
  32. self.startFunc = nil
  33. end
  34. end
  35. --间隔N帧触发,返回true时表示继续触发,返回false立刻触发OnEnd
  36. function Brand:OnTrigger()
  37. -- if self.TriggerFunc then
  38. -- --LogError("trigger brand")
  39. -- self.TriggerFunc()
  40. -- end
  41. return true
  42. end
  43. --效果结束时调用一次
  44. function Brand:OnEnd()
  45. if self.endFunc then
  46. self.endFunc()
  47. self.endFunc = nil
  48. end
  49. self.coverFunc = nil
  50. self.TriggerFunc = nil
  51. end
  52. --只有当cover字段为true时触发,返回true则被新效果覆盖
  53. function Brand:OnCover(newBuff)
  54. local b = newBuff.flag == self.flag
  55. if b then
  56. if newBuff.maxLayer == 0 then
  57. newBuff.layer = newBuff.layer + self.layer
  58. else
  59. newBuff.layer = math.min(newBuff.layer + self.layer, newBuff.maxLayer)
  60. end
  61. if newBuff.coverFunc then
  62. newBuff.coverFunc(self)
  63. end
  64. end
  65. return b
  66. end
  67. -- 比较buff
  68. function Brand:OnCompare(buff)
  69. return buff.flag == self.flag
  70. end
  71. return Brand