Commit c8210d562035141fd8b972cba8ac2cea7cec8f54
1 parent
badeee4e
boss 房有入口
Showing
3 changed files
with
31 additions
and
22 deletions
Show diff stats
src/adv/Adv.lua
@@ -1235,10 +1235,7 @@ function Adv:doActive(activeId, target) | @@ -1235,10 +1235,7 @@ function Adv:doActive(activeId, target) | ||
1235 | -- 8:翻开范围内的方格 | 1235 | -- 8:翻开范围内的方格 |
1236 | doActiveEffect[8] = function(_) | 1236 | doActiveEffect[8] = function(_) |
1237 | for _ , target in ipairs(targers) do | 1237 | for _ , target in ipairs(targers) do |
1238 | - if not target.isOpen then | ||
1239 | - target:open() | ||
1240 | - self:backBlockChange(target.room.roomId, target.blockId) | ||
1241 | - end | 1238 | + self:getCurMap():openBlock(target.room.roomId, target.blockId, true) |
1242 | end | 1239 | end |
1243 | return true | 1240 | return true |
1244 | end | 1241 | end |
src/adv/AdvMap.lua
@@ -100,7 +100,7 @@ function Map:addNewMonsterRand(monsterId, where) | @@ -100,7 +100,7 @@ function Map:addNewMonsterRand(monsterId, where) | ||
100 | end | 100 | end |
101 | 101 | ||
102 | -- 随机翻开 num 个 以开放的房间的 地块 | 102 | -- 随机翻开 num 个 以开放的房间的 地块 |
103 | -function Map:openBlockRand(num, isPlayer) | 103 | +function Map:openBlockRand(num, isPlayer, ignoreBack) |
104 | local pool = {} | 104 | local pool = {} |
105 | for _, room in pairs(self.rooms) do | 105 | for _, room in pairs(self.rooms) do |
106 | if room.isShow and not room.isPath then | 106 | if room.isShow and not room.isPath then |
@@ -113,12 +113,12 @@ function Map:openBlockRand(num, isPlayer) | @@ -113,12 +113,12 @@ function Map:openBlockRand(num, isPlayer) | ||
113 | end | 113 | end |
114 | if #pool <= num then | 114 | if #pool <= num then |
115 | for _, temp in ipairs(pool) do | 115 | for _, temp in ipairs(pool) do |
116 | - self:openBlock(temp[1], temp[2], isPlayer) | 116 | + self:openBlock(temp[1], temp[2], isPlayer, ignoreBack) |
117 | end | 117 | end |
118 | else | 118 | else |
119 | for i = 1, num do | 119 | for i = 1, num do |
120 | local idx = math.randomInt(1, #pool) | 120 | local idx = math.randomInt(1, #pool) |
121 | - self:openBlock(pool[idx][1], pool[idx][2], isPlayer) | 121 | + self:openBlock(pool[idx][1], pool[idx][2], isPlayer, ignoreBack) |
122 | table.remove(pool, idx) | 122 | table.remove(pool, idx) |
123 | end | 123 | end |
124 | end | 124 | end |
@@ -131,34 +131,39 @@ function Map:openBlock(roomId, blockId, isPlayer, ignoreBack) | @@ -131,34 +131,39 @@ function Map:openBlock(roomId, blockId, isPlayer, ignoreBack) | ||
131 | if not room then return end | 131 | if not room then return end |
132 | local block = room.blocks[blockId] | 132 | local block = room.blocks[blockId] |
133 | if not block then return end | 133 | if not block then return end |
134 | - room:openBlock(block) | ||
135 | - if isPlayer then | ||
136 | - self.adv.battle.player:triggerPassive(Passive.OPEN_BLOCK) | ||
137 | - end | ||
138 | - if not ignoreBack then | ||
139 | - self.adv:backBlockChange(roomId, blockId) | 134 | + local status = room:openBlock(block) |
135 | + | ||
136 | + if status then | ||
137 | + if isPlayer then | ||
138 | + self.adv.battle.player:triggerPassive(Passive.OPEN_BLOCK) | ||
139 | + self.map.adv:scoreChange(AdvScoreType.Block) | ||
140 | + end | ||
141 | + | ||
142 | + if not ignoreBack then | ||
143 | + self.adv:backBlockChange(roomId, blockId) | ||
144 | + end | ||
140 | end | 145 | end |
141 | end | 146 | end |
142 | 147 | ||
143 | -function Map:openBlockBySize(roomId, blockId, size, isPlayer) | 148 | +function Map:openBlocksBySize(roomId, blockId, size, isPlayer, ignoreBack) |
144 | local blocks = self:getBlocksBySize(roomId, blockId, size) | 149 | local blocks = self:getBlocksBySize(roomId, blockId, size) |
145 | for _, block in pairs(blocks) do | 150 | for _, block in pairs(blocks) do |
146 | - self:openBlock(block.room.roomId, block.blockId, isPlayer) | 151 | + self:openBlock(block.room.roomId, block.blockId, isPlayer, ignoreBack) |
147 | end | 152 | end |
148 | end | 153 | end |
149 | 154 | ||
150 | -function Map:openBlocksByRoom(roomId, isPlayer) | 155 | +function Map:openBlocksByRoom(roomId, isPlayer, ignoreBack) |
151 | local room = self.rooms[roomId] | 156 | local room = self.rooms[roomId] |
152 | - if not room then return end | 157 | + if not room then return end |
153 | 158 | ||
154 | for blockId, block in pairs(room.blocks) do | 159 | for blockId, block in pairs(room.blocks) do |
155 | - self:openBlock(roomId, blockId, isPlayer) | 160 | + self:openBlock(roomId, blockId, isPlayer, ignoreBack) |
156 | end | 161 | end |
157 | end | 162 | end |
158 | 163 | ||
159 | -function Map:openAllBlocks(isPlayer) | 164 | +function Map:openAllBlocks(isPlayer, ignoreBack) |
160 | for roomId, room in pairs(self.rooms) do | 165 | for roomId, room in pairs(self.rooms) do |
161 | - self:openBlocksByRoom(room.roomId, isPlayer) | 166 | + self:openBlocksByRoom(room.roomId, isPlayer, ignoreBack) |
162 | end | 167 | end |
163 | end | 168 | end |
164 | 169 |
src/adv/AdvRoom.lua
@@ -18,6 +18,7 @@ function Room:ctor(map, roomId, csvData, info, isPath) | @@ -18,6 +18,7 @@ function Room:ctor(map, roomId, csvData, info, isPath) | ||
18 | end | 18 | end |
19 | 19 | ||
20 | function Room:loadBlocks(csvData, info) | 20 | function Room:loadBlocks(csvData, info) |
21 | + local isFirstOpen = false | ||
21 | for blockId, _ in pairs(csvData["blocks"]) do | 22 | for blockId, _ in pairs(csvData["blocks"]) do |
22 | self.blocks[blockId] = Block.new(self, blockId, info.event[blockId], info.open == 1 or info.open[blockId], info.trap[blockId]) | 23 | self.blocks[blockId] = Block.new(self, blockId, info.event[blockId], info.open == 1 or info.open[blockId], info.trap[blockId]) |
23 | if self.map.adv.isRelay then -- 中继层全部开放 | 24 | if self.map.adv.isRelay then -- 中继层全部开放 |
@@ -33,11 +34,18 @@ function Room:loadBlocks(csvData, info) | @@ -33,11 +34,18 @@ function Room:loadBlocks(csvData, info) | ||
33 | if self.blocks[blockId]:getEventType() == AdvEventType.In or self.blocks[blockId]:getEventType() == AdvEventType.InOut then -- 开放 | 34 | if self.blocks[blockId]:getEventType() == AdvEventType.In or self.blocks[blockId]:getEventType() == AdvEventType.InOut then -- 开放 |
34 | self.isShow = true | 35 | self.isShow = true |
35 | self.blocks[blockId].isOpen = true | 36 | self.blocks[blockId].isOpen = true |
37 | + isFirstOpen = true | ||
36 | --入口房间只会在这里首次展示开放 --触发固有技 | 38 | --入口房间只会在这里首次展示开放 --触发固有技 |
37 | self.map.adv:triggerPassive(Passive.ROOM_SHOW, {roomId = self.roomId}) | 39 | self.map.adv:triggerPassive(Passive.ROOM_SHOW, {roomId = self.roomId}) |
38 | end | 40 | end |
39 | end | 41 | end |
40 | end | 42 | end |
43 | + -- boss 房间 开启一下所有的地块 | ||
44 | + if self.isBossRoom and self.isShow and isFirstOpen then | ||
45 | + for _, block in pairs(self.blocks) do | ||
46 | + self:openBlock(block) | ||
47 | + end | ||
48 | + end | ||
41 | end | 49 | end |
42 | 50 | ||
43 | function Room:getDB() | 51 | function Room:getDB() |
@@ -68,13 +76,12 @@ function Room:openBlock(block) | @@ -68,13 +76,12 @@ function Room:openBlock(block) | ||
68 | block:open() | 76 | block:open() |
69 | end | 77 | end |
70 | 78 | ||
71 | - self.map.adv:scoreChange(AdvScoreType.Block) | ||
72 | - | ||
73 | if not self.isShow then | 79 | if not self.isShow then |
74 | self.isShow = true | 80 | self.isShow = true |
75 | --首次展示房间 | 81 | --首次展示房间 |
76 | self.map.adv:triggerPassive(Passive.ROOM_SHOW, {roomId = self.roomId}) | 82 | self.map.adv:triggerPassive(Passive.ROOM_SHOW, {roomId = self.roomId}) |
77 | end | 83 | end |
84 | + return true | ||
78 | end | 85 | end |
79 | 86 | ||
80 | 87 |