Commit 0d405dc35916da85e18bd0cfa8c674caf0cdf820

Authored by suhongyang
1 parent 1a1a6375

Buff生命周期调整,被动加buff传入releaser

src/adv/AdvBattle.lua
... ... @@ -109,6 +109,11 @@ function Battle:playerAtk(roomId, blockId)
109 109 self:doBattleTurn(enemy, self.player)
110 110 end
111 111 end
  112 + if not self.player.isDead then
  113 + self.player:battleEnd()
  114 + elseif not enemy.isDead then
  115 + enemy:battleEnd()
  116 + end
112 117 end
113 118 end
114 119 --战斗内回合逻辑
... ...
src/adv/AdvBuff.lua
... ... @@ -3,7 +3,7 @@ local Buff = class("Buff")
3 3  
4 4 Buff.HP_CHANGE = 1 --生命变化(每回合生效)
5 5 Buff.HP_MAX_CHANGE = 2 --生命上限变化(状态)
6   -Buff.ATK_CHANGE = 3 --攻击变化(状态)
  6 +Buff.ATTR_CHANGE = 3 --属性变化(状态)
7 7 Buff.IMMNUE_ATK = 4 -- 免疫普通攻击
8 8 Buff.BACK_HURT = 5 -- 伤害反弹
9 9 Buff.HURT_CHANGE = 6 -- 伤害变化
... ... @@ -16,9 +16,6 @@ Buff.CLEAR_BUFF = 12 -- 清除buff
16 16 Buff.CANT_SKILL = 13 -- 禁止技能
17 17 Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合)
18 18 Buff.POWER_CHANGE = 15 -- 体力变化(每回合)
19   -Buff.HIT_CHANGE = 16 -- 命中变化(状态)
20   -Buff.MISS_CHANGE = 17 -- 闪避变化(状态)
21   -Buff.DEF_CHANGE = 18 -- 防御变化(状态)
22 19  
23 20 --角色一些属性的变化
24 21 local function commonAttr(_Buff, attrName)
... ... @@ -108,22 +105,10 @@ local BuffFactory = {
108 105 return {cv = self._changeV}
109 106 end
110 107 end,
111   - [Buff.ATK_CHANGE] = function(_Buff)
112   - commonAttr(_Buff, "atk")
  108 + [Buff.ATTR_CHANGE] = function(_Buff)
  109 + local attrName = AttsEnumEx[self.buffData.effectValue3]
  110 + commonAttr(_Buff, attrName)
113 111 end,
114   -
115   - [Buff.HIT_CHANGE] = function(_Buff)
116   - commonAttr(_Buff, "hit")
117   - end,
118   -
119   - [Buff.MISS_CHANGE] = function(_Buff)
120   - commonAttr(_Buff, "miss")
121   - end,
122   -
123   - [Buff.DEF_CHANGE] = function(_Buff)
124   - commonAttr(_Buff, "miss")
125   - end,
126   -
127 112 [Buff.BACK_HURT] = function(_Buff)
128 113 _Buff._effectValue = function(self)
129 114 return self.buffData.effectValue1, self.buffData.effectValue2, self.buffData.effectValue3
... ... @@ -219,7 +204,6 @@ function Buff:ctor(owner, id)
219 204 self.id = id
220 205 self.buffData = csvdb["adv_buffCsv"][self.id]
221 206 self.isDel = false
222   - self.ifRoundEnd = false
223 207 self.roundSpace = 0 --生效间隔
224 208 self.turnSpace = 0 --生效间隔
225 209 self.round = 0 --剩余的回合
... ... @@ -274,10 +258,10 @@ function Buff:initByDB(data)
274 258 end
275 259 end
276 260  
277   -function Buff:battleBegin()
278   - if self.isDel or self.owner.isDead or self.buffData.turn == 0 then return end
279   - self.turn = self.buffData.turn
280   - self.ifRoundEnd = true -- turn类型buff战斗结束后移除
  261 +function Buff:battleEnd()
  262 + if self.buffData.turn ~= 0 then
  263 + self.isDel = true -- turn类型buff战斗结束后移除
  264 + end
281 265 end
282 266  
283 267 function Buff:beforeTurn()
... ... @@ -326,10 +310,6 @@ function Buff:afterRound()
326 310 if self._afterRound then
327 311 self:_afterRound()
328 312 end
329   - if self.ifRoundEnd then -- turn类型buff战斗结束后移除
330   - self.isDel = true
331   - return
332   - end
333 313 if self.buffData.roundTime > 0 then
334 314 self.turnSpace = self.buffData.roundTime
335 315 end
... ...
src/adv/AdvPassive.lua
... ... @@ -202,7 +202,7 @@ function Passive:ctor(owner, data)
202 202 self.count = data.count or self.passiveData.count --触发剩余次数
203 203 self.delay = data.delay or self.passiveData.delayRound --触发延迟回合数
204 204 self.turn = 0 --战斗内回合数
205   - self.delayturn = 0 --战斗内延迟回合数
  205 + self.delayturn = self.passiveData.delayTurn --战斗内延迟回合数
206 206  
207 207 self.effects = self.passiveData.effect:toTableArray(true)
208 208 self.filters = {}
... ... @@ -342,12 +342,12 @@ function Passive:effect0(value)
342 342 end
343 343 --1=自身获得buff
344 344 function Passive:effect1(value)
345   - self.owner:addBuff(value)
  345 + self.owner:addBuff(value, self.owner)
346 346 end
347 347 --2=触发目标获得buff
348 348 function Passive:effect2(value, trigger)
349 349 if trigger then
350   - trigger:addBuff(value)
  350 + trigger:addBuff(value, self.owner)
351 351 end
352 352 end
353 353 --3=翻开自己所在格子
... ... @@ -363,7 +363,7 @@ end
363 363 function Passive:effect5(value)
364 364 local monsters = self.owner.battle.player:getTeam(2)
365 365 local randomId = math.random( 1, #monsters )
366   - monsters[randomId]:addBuff(value)
  366 + monsters[randomId]:addBuff(value, self.owner)
367 367 end
368 368 --6=给自己加一個被動技能
369 369 function Passive:effect6(value)
... ...
src/adv/AdvPlayer.lua
... ... @@ -60,7 +60,7 @@ function BaseObject:afterRound()
60 60 passive:afterRound(self)
61 61 end
62 62 for _, buff in ipairs(self.buffs) do
63   - buff:afterRound(self)
  63 + buff:afterRound()
64 64 end
65 65 end
66 66  
... ... @@ -98,8 +98,11 @@ function BaseObject:battleBegin()
98 98 for _, passive in ipairs(self.passives) do
99 99 passive:battleBegin()
100 100 end
  101 +end
  102 +
  103 +function BaseObject:battleEnd()
101 104 for _, buff in ipairs(self.buffs) do
102   - buff:battleBegin()
  105 + buff:battleEnd()
103 106 end
104 107 end
105 108  
... ...