diff --git a/src/GlobalVar.lua b/src/GlobalVar.lua index a0da02e..e7a11a6 100644 --- a/src/GlobalVar.lua +++ b/src/GlobalVar.lua @@ -98,4 +98,5 @@ AdvBackEventType = { End = 8, -- 结束 BlockChange = 9, -- 块改变 PowerChange = 10, --体力改变 + Dead = 11, --怪死亡 } \ No newline at end of file diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 1ef21aa..1119366 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -471,7 +471,7 @@ function Adv:over(success) self.advTeam.player = nil --重置玩家的数据 self:clear() - self.owner:updateProperty({field = "advItems", ""}) + self.owner:updateProperty({field = "advItems", value = ""}) self:backEnd(score, reward) end @@ -1022,6 +1022,10 @@ function Adv:backAtk(enemyId, receiver) self:pushBackEvent(AdvBackEventType.Atk, {enemyId = enemyId, receiver = receiver}) end +function Adv:backDead(enemyId) + self:pushBackEvent(AdvBackEventType.Dead, {enemyId = enemyId}) +end + function Adv:popBackEvents() local events = self.backEvents diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index 2433714..f559f35 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -95,12 +95,14 @@ end function Battle:playerAtk(roomId, blockId) local enemy = self:getEnemy(roomId, blockId) if enemy then - self.adv:backAtk(nil, enemy.id) - enemy:hurt(self.player:getHurtValue(), self.player, {hurtType = 1}) - --是否无法反击 - if not enemy:hadBuff(Buff.CANT_BACK_ATK) then - self.adv:backAtk(enemy.id, nil) - self.player:hurt(enemy:getHurtValue(), enemy, {hurtType = 1}) + while not enemy.isDead and not self.player.isDead do + self.adv:backAtk(nil, enemy.id) + enemy:hurt(self.player:getHurtValue(), self.player, {hurtType = 1}) + --是否无法反击 + if not enemy.isDead and not enemy:hadBuff(Buff.CANT_BACK_ATK) then + self.adv:backAtk(enemy.id, nil) + self.player:hurt(enemy:getHurtValue(), enemy, {hurtType = 1}) + end end end end diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index a0ca639..ef34173 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -237,6 +237,7 @@ function BaseObject:hurt(value, releaser, params) end self.isDead = true + self.battle.adv:backDead(self.id) end self:triggerPassive(Passive.HURT_PERCENT_SELF, {value = value / self.hpMax}) for _, team in ipairs(self:getTeam(1, true)) do -- libgit2 0.21.2