diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index 71cc9f3..77f1e64 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -109,6 +109,11 @@ function Battle:playerAtk(roomId, blockId) self:doBattleTurn(enemy, self.player) end end + if not self.player.isDead then + self.player:battleEnd() + elseif not enemy.isDead then + enemy:battleEnd() + end end end --战斗内回合逻辑 diff --git a/src/adv/AdvBuff.lua b/src/adv/AdvBuff.lua index 3c172f1..e67f2ec 100644 --- a/src/adv/AdvBuff.lua +++ b/src/adv/AdvBuff.lua @@ -3,7 +3,7 @@ local Buff = class("Buff") Buff.HP_CHANGE = 1 --生命变化(每回合生效) Buff.HP_MAX_CHANGE = 2 --生命上限变化(状态) -Buff.ATK_CHANGE = 3 --攻击变化(状态) +Buff.ATTR_CHANGE = 3 --属性变化(状态) Buff.IMMNUE_ATK = 4 -- 免疫普通攻击 Buff.BACK_HURT = 5 -- 伤害反弹 Buff.HURT_CHANGE = 6 -- 伤害变化 @@ -16,9 +16,6 @@ Buff.CLEAR_BUFF = 12 -- 清除buff Buff.CANT_SKILL = 13 -- 禁止技能 Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合) Buff.POWER_CHANGE = 15 -- 体力变化(每回合) -Buff.HIT_CHANGE = 16 -- 命中变化(状态) -Buff.MISS_CHANGE = 17 -- 闪避变化(状态) -Buff.DEF_CHANGE = 18 -- 防御变化(状态) --角色一些属性的变化 local function commonAttr(_Buff, attrName) @@ -108,22 +105,10 @@ local BuffFactory = { return {cv = self._changeV} end end, - [Buff.ATK_CHANGE] = function(_Buff) - commonAttr(_Buff, "atk") + [Buff.ATTR_CHANGE] = function(_Buff) + local attrName = AttsEnumEx[self.buffData.effectValue3] + commonAttr(_Buff, attrName) end, - - [Buff.HIT_CHANGE] = function(_Buff) - commonAttr(_Buff, "hit") - end, - - [Buff.MISS_CHANGE] = function(_Buff) - commonAttr(_Buff, "miss") - end, - - [Buff.DEF_CHANGE] = function(_Buff) - commonAttr(_Buff, "miss") - end, - [Buff.BACK_HURT] = function(_Buff) _Buff._effectValue = function(self) return self.buffData.effectValue1, self.buffData.effectValue2, self.buffData.effectValue3 @@ -219,7 +204,6 @@ function Buff:ctor(owner, id) self.id = id self.buffData = csvdb["adv_buffCsv"][self.id] self.isDel = false - self.ifRoundEnd = false self.roundSpace = 0 --生效间隔 self.turnSpace = 0 --生效间隔 self.round = 0 --剩余的回合 @@ -274,10 +258,10 @@ function Buff:initByDB(data) end end -function Buff:battleBegin() - if self.isDel or self.owner.isDead or self.buffData.turn == 0 then return end - self.turn = self.buffData.turn - self.ifRoundEnd = true -- turn类型buff战斗结束后移除 +function Buff:battleEnd() + if self.buffData.turn ~= 0 then + self.isDel = true -- turn类型buff战斗结束后移除 + end end function Buff:beforeTurn() @@ -326,10 +310,6 @@ function Buff:afterRound() if self._afterRound then self:_afterRound() end - if self.ifRoundEnd then -- turn类型buff战斗结束后移除 - self.isDel = true - return - end if self.buffData.roundTime > 0 then self.turnSpace = self.buffData.roundTime end diff --git a/src/adv/AdvPassive.lua b/src/adv/AdvPassive.lua index 45e5246..432d60f 100644 --- a/src/adv/AdvPassive.lua +++ b/src/adv/AdvPassive.lua @@ -202,7 +202,7 @@ function Passive:ctor(owner, data) self.count = data.count or self.passiveData.count --触发剩余次数 self.delay = data.delay or self.passiveData.delayRound --触发延迟回合数 self.turn = 0 --战斗内回合数 - self.delayturn = 0 --战斗内延迟回合数 + self.delayturn = self.passiveData.delayTurn --战斗内延迟回合数 self.effects = self.passiveData.effect:toTableArray(true) self.filters = {} @@ -342,12 +342,12 @@ function Passive:effect0(value) end --1=自身获得buff function Passive:effect1(value) - self.owner:addBuff(value) + self.owner:addBuff(value, self.owner) end --2=触发目标获得buff function Passive:effect2(value, trigger) if trigger then - trigger:addBuff(value) + trigger:addBuff(value, self.owner) end end --3=翻开自己所在格子 @@ -363,7 +363,7 @@ end function Passive:effect5(value) local monsters = self.owner.battle.player:getTeam(2) local randomId = math.random( 1, #monsters ) - monsters[randomId]:addBuff(value) + monsters[randomId]:addBuff(value, self.owner) end --6=给自己加一個被動技能 function Passive:effect6(value) diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 9a42c84..a7c7fc1 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -60,7 +60,7 @@ function BaseObject:afterRound() passive:afterRound(self) end for _, buff in ipairs(self.buffs) do - buff:afterRound(self) + buff:afterRound() end end @@ -98,8 +98,11 @@ function BaseObject:battleBegin() for _, passive in ipairs(self.passives) do passive:battleBegin() end +end + +function BaseObject:battleEnd() for _, buff in ipairs(self.buffs) do - buff:battleBegin() + buff:battleEnd() end end -- libgit2 0.21.2