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) | ... | ... |