Commit 1cb78a242303bedc8bccb94a7bceb3f118011640

Authored by suhongyang
1 parent c8ade4f6

passive的筛选

Showing 2 changed files with 38 additions and 0 deletions   Show diff stats
src/adv/AdvPassive.lua
1 1 local Filter = class("Filter")
2 2  
3 3 Filter.HP_UP_WITH_EQUAL = 1 -- 血量>=value%
  4 +Filter.HP_UP = 2 -- 血量>value%
  5 +Filter.HP_LOW_WITH_EQUAL = 3 -- 血量<=value%
  6 +Filter.HP_LOW = 4 -- 血量<value%
  7 +Filter.BUFF_BY_TYPE = 5 -- 指定类型buff
  8 +Filter.BUFF_BY_ID = 6 -- 指定id的buff
4 9  
5 10 local FilterFactory = {}
6 11 FilterFactory[Filter.HP_UP_WITH_EQUAL] = function (_Filter)
... ... @@ -8,6 +13,31 @@ FilterFactory[Filter.HP_UP_WITH_EQUAL] = function (_Filter)
8 13 return target.hp >= self.value * target.hpMax / 100
9 14 end
10 15 end
  16 +FilterFactory[Filter.HP_UP] = function (_Filter)
  17 + _Filter._execute = function (self, target)
  18 + return target.hp > self.value * target.hpMax / 100
  19 + end
  20 +end
  21 +FilterFactory[Filter.HP_LOW_WITH_EQUAL] = function (_Filter)
  22 + _Filter._execute = function (self, target)
  23 + return target.hp <= self.value * target.hpMax / 100
  24 + end
  25 +end
  26 +FilterFactory[Filter.HP_LOW] = function (_Filter)
  27 + _Filter._execute = function (self, target)
  28 + return target.hp < self.value * target.hpMax / 100
  29 + end
  30 +end
  31 +FilterFactory[Filter.BUFF_BY_TYPE] = function (_Filter)
  32 + _Filter._execute = function (self, target)
  33 + return target:hadBuff(self.value)
  34 + end
  35 +end
  36 +FilterFactory[Filter.BUFF_BY_ID] = function (_Filter)
  37 + _Filter._execute = function (self, target)
  38 + return target:hadBuffById(self.value)
  39 + end
  40 +end
11 41  
12 42 function Filter:ctor(params)
13 43 self.owner = params.owner
... ...
src/adv/AdvPlayer.lua
... ... @@ -105,6 +105,14 @@ function BaseObject:hadBuff(bType)
105 105 end
106 106 end
107 107  
  108 +function BaseObject:hadBuffById(bId)
  109 + for _, buff in ipairs(self.buffs) do
  110 + if not buff.isDel and buff.id == bId then
  111 + return true
  112 + end
  113 + end
  114 +end
  115 +
108 116 -- 通用的buff 效果汇总 -- 0 固定 1百分比 两种分类
109 117 function BaseObject:getCommonBuffEffect(bType)
110 118 local effect, count = {[0] = 0, [1] = 0}, 0
... ...