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