diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 2042f16..bfa70bd 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -989,6 +989,9 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) end end, [3] = function() --发现怪物 + if block:getEventType() == AdvEventType.Build then + self.battle:removeBuildByPos(room.roomId, block.blockId) + end self:getCurMap():addNewMonsterRand(effect[2], {room, block}) self:pushBackEvent(AdvBackEventType.Monster, {id = effect[2]}) clearBlock = false @@ -1015,6 +1018,9 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) clearBlock = false end, [7] = function() -- 建筑 + if block:getEventType() == AdvEventType.Build then + self.battle:removeBuildByPos(room.roomId, block.blockId) + end block:updateEvent({ etype = AdvEventType.Build, id = effect[2] @@ -1023,6 +1029,9 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) clearBlock = false end, [8] = function() -- 选择 + if block:getEventType() == AdvEventType.Build then + self.battle:removeBuildByPos(room.roomId, block.blockId) + end block:updateEvent({ etype = AdvEventType.Choose, id = effect[2] @@ -1031,6 +1040,9 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) clearBlock = false end, [9] = function() -- click + if block:getEventType() == AdvEventType.Build then + self.battle:removeBuildByPos(room.roomId, block.blockId) + end block:updateEvent({ etype = AdvEventType.Click, id = effect[2] @@ -1039,6 +1051,9 @@ local function chooseCommon(self, room, block, chooseData, choose, tag) clearBlock = false end, [10] = function() -- 陷阱 + if block:getEventType() == AdvEventType.Build then + self.battle:removeBuildByPos(room.roomId, block.blockId) + end block:updateEvent({ etype = AdvEventType.Trap, id = effect[2] diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index 96ffef0..f463adb 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -234,6 +234,17 @@ function Battle:removeEnemyById(id) end end end +-- 只是从战斗中移除 从地图中移除 在外面操作 +function Battle:removeBuildByPos(roomId, blockId) + local mapIdx = self.adv:getCurMapIdx() + for i = #self.builds[mapIdx], 1, -1 do + if self.builds[mapIdx][i].roomId == roomId and self.builds[mapIdx][i].blockId == blockId then + local build = table.remove(self.builds[mapIdx], i) + build:clear() + break + end + end +end --回合 function Battle:afterRound() -- libgit2 0.21.2