Commit 6cd12079721e0eadf0692137d6d7a44eddde4c36

Authored by suhongyang
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)
... ...