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