Commit 1cb78a242303bedc8bccb94a7bceb3f118011640
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 | ... | ... |