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,6 +16,7 @@ Buff.CLEAR_BUFF = 12 -- 清除buff | ||
16 | Buff.CANT_SKILL = 13 -- 禁止技能 | 16 | Buff.CANT_SKILL = 13 -- 禁止技能 |
17 | Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合) | 17 | Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合) |
18 | Buff.POWER_CHANGE = 15 -- MP变化(每回合) | 18 | Buff.POWER_CHANGE = 15 -- MP变化(每回合) |
19 | +Buff.HP_CHANGE_NOW = 16 -- 生命变化(每回合生效,立刻生效) | ||
19 | 20 | ||
20 | --角色一些属性的变化 | 21 | --角色一些属性的变化 |
21 | local function commonAttr(_Buff, attrName) | 22 | local function commonAttr(_Buff, attrName) |
@@ -196,7 +197,48 @@ local BuffFactory = { | @@ -196,7 +197,48 @@ local BuffFactory = { | ||
196 | _Buff._effectValue = function(self) | 197 | _Buff._effectValue = function(self) |
197 | return self.buffData.effectValue1, self.buffData.effectValue2 | 198 | return self.buffData.effectValue1, self.buffData.effectValue2 |
198 | end | 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 | function Buff:ctor(owner, id) | 244 | function Buff:ctor(owner, id) |