Commit 6cd12079721e0eadf0692137d6d7a44eddde4c36
1 parent
e601f3cb
扣血buff立刻生效
Showing
1 changed file
with
43 additions
and
1 deletions
Show diff stats
src/adv/AdvBuff.lua
... | ... | @@ -16,6 +16,7 @@ Buff.CLEAR_BUFF = 12 -- 清除buff |
16 | 16 | Buff.CANT_SKILL = 13 -- 禁止技能 |
17 | 17 | Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合) |
18 | 18 | Buff.POWER_CHANGE = 15 -- MP变化(每回合) |
19 | +Buff.HP_CHANGE_NOW = 16 -- 生命变化(每回合生效,立刻生效) | |
19 | 20 | |
20 | 21 | --角色一些属性的变化 |
21 | 22 | local function commonAttr(_Buff, attrName) |
... | ... | @@ -196,7 +197,48 @@ local BuffFactory = { |
196 | 197 | _Buff._effectValue = function(self) |
197 | 198 | return self.buffData.effectValue1, self.buffData.effectValue2 |
198 | 199 | end |
199 | - end | |
200 | + end, | |
201 | + [Buff.HP_CHANGE_NOW] = function(_Buff) | |
202 | + _Buff._init = function(self, data) --初始化变化值 | |
203 | + self._changeV = 0 | |
204 | + if self.buffData.effectValue1 == 0 then --固定值 | |
205 | + self._changeV = self.buffData.effectValue2 | |
206 | + elseif self.buffData.effectValue1 == 1 then | |
207 | + local baseOwner = self.buffData.effectValue4 == 1 and self.owner or self.release | |
208 | + local attrs = {[0] = "hp", [1] = "hpMax", [2] = "atk"} | |
209 | + self._changeV = baseOwner[attrs[self.buffData.effectValue3]] * self.buffData.effectValue2 / 100 | |
210 | + end | |
211 | + if self._changeV < 0 then | |
212 | + self._changeV = -self.release:getHurtValue(-self._changeV) | |
213 | + end | |
214 | + self:afterTurn() | |
215 | + end | |
216 | + _Buff._initDB = function(self, data) | |
217 | + self._changeV = data.cv | |
218 | + end | |
219 | + _Buff._afterRound = function(self) | |
220 | + local value = self:effect() | |
221 | + if value > 0 then | |
222 | + self.owner:recover(value, self.release) | |
223 | + elseif value < 0 then | |
224 | + self.owner:hurt(-value, self.release, {hurtType = 2}) | |
225 | + end | |
226 | + end | |
227 | + _Buff._afterTurn = function(self) | |
228 | + local value = self:effect() | |
229 | + if value > 0 then | |
230 | + self.owner:recover(value, self.release) | |
231 | + elseif value < 0 then | |
232 | + self.owner:hurt(-value, self.release, {hurtType = 2}) | |
233 | + end | |
234 | + end | |
235 | + _Buff._effectValue = function(self) | |
236 | + return self._changeV | |
237 | + end | |
238 | + _Buff._getDB = function(self) | |
239 | + return {cv = self._changeV} | |
240 | + end | |
241 | + end, | |
200 | 242 | } |
201 | 243 | |
202 | 244 | function Buff:ctor(owner, id) | ... | ... |