From e1b26027f2079cdbf4af03839cc088dd981ca614 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Tue, 9 Jun 2020 16:15:53 +0800 Subject: [PATCH] 增加移除项目排除功能 --- src/adv/AdvMap.lua | 10 ++++++---- src/adv/AdvPassive.lua | 6 +++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/adv/AdvMap.lua b/src/adv/AdvMap.lua index 72a9e2b..e3ea44c 100644 --- a/src/adv/AdvMap.lua +++ b/src/adv/AdvMap.lua @@ -188,14 +188,16 @@ function Map:eventChangeToOther(eventTypeF, eventIdF, eventTypeT, eventIdT, coun return change end -function Map:clearEventById(eventType, eventId, count) +function Map:clearEventById(eventType, eventId, count, exclude) count = count or 0 eventId = eventId or 0 + exclude = exclude or {} local pool = {} - for _, room_ in pairs(self.rooms) do - for _, block_ in pairs(room_.blocks) do - if block_.isOpen and block_:getEventType() == eventType and (eventId == 0 or block_.event.id == eventId) then + for roomId, room_ in pairs(self.rooms) do + exclude[roomId] = exclude[roomId] or {} + for blockId, block_ in pairs(room_.blocks) do + if not exclude[roomId][blockId] and block_.isOpen and block_:getEventType() == eventType and (eventId == 0 or block_.event.id == eventId) then table.insert(pool, {room_, block_}) end end diff --git a/src/adv/AdvPassive.lua b/src/adv/AdvPassive.lua index 6213df9..0e2b12c 100644 --- a/src/adv/AdvPassive.lua +++ b/src/adv/AdvPassive.lua @@ -497,7 +497,11 @@ end -- 移除指定项目 function Passive:effect13(eventType, triggerPms, eventId, count) - local change = self.owner.battle.adv:getCurMap():clearEventById(eventType, eventId, count) + local exclude = {} + if self.owner:is("Enemy") then + exclude[self.owner.roomId] = {[self.owner.blockId] = 1} + end + local change = self.owner.battle.adv:getCurMap():clearEventById(eventType, eventId, count, exclude) for _, one in ipairs(change) do self.owner.battle.adv:backBlockChange(one[1].roomId, one[2].blockId) end -- libgit2 0.21.2