Commit be2bc68b492e6a3a91c94cb4292e23e0351dde9e
1 parent
32b5d614
看守周围的格子
Showing
3 changed files
with
31 additions
and
0 deletions
Show diff stats
src/adv/Adv.lua
| @@ -1877,6 +1877,18 @@ function Adv:clickBlock(roomId, blockId, params) | @@ -1877,6 +1877,18 @@ function Adv:clickBlock(roomId, blockId, params) | ||
| 1877 | return | 1877 | return |
| 1878 | end | 1878 | end |
| 1879 | 1879 | ||
| 1880 | + if not block:isMonster() then | ||
| 1881 | + for _, one in ipairs(map:getAroundBlocksPlus(room, block)) do | ||
| 1882 | + local _room, _block = one[1], one[2] | ||
| 1883 | + if _block:isMonster() then | ||
| 1884 | + local enemy = self.battle:getEnemy(_room.roomId, _block.blockId) | ||
| 1885 | + if enemy:hadBuff(Buff.OBSTACLE_PLUS) then | ||
| 1886 | + return | ||
| 1887 | + end | ||
| 1888 | + end | ||
| 1889 | + end | ||
| 1890 | + end | ||
| 1891 | + | ||
| 1880 | if block:isHinder() then | 1892 | if block:isHinder() then |
| 1881 | if not checkAroundBlocks(true) then return end | 1893 | if not checkAroundBlocks(true) then return end |
| 1882 | end | 1894 | end |
src/adv/AdvBuff.lua
| @@ -38,6 +38,7 @@ Buff.GET_PASSIVE = 34 -- 获得 passive -- 结束失效 | @@ -38,6 +38,7 @@ Buff.GET_PASSIVE = 34 -- 获得 passive -- 结束失效 | ||
| 38 | Buff.OBSTACLE_CHANGE = 35 -- 看守类型改变 -- 怪物使用 2 - 1 | 38 | Buff.OBSTACLE_CHANGE = 35 -- 看守类型改变 -- 怪物使用 2 - 1 |
| 39 | Buff.DISABLE_AURA = 36 -- 禁用光环 | 39 | Buff.DISABLE_AURA = 36 -- 禁用光环 |
| 40 | Buff.GET_AURA = 37 -- 获得光环 | 40 | Buff.GET_AURA = 37 -- 获得光环 |
| 41 | +Buff.OBSTACLE_PLUS = 38 -- 周围8格不能点击 | ||
| 41 | 42 | ||
| 42 | 43 | ||
| 43 | --角色一些属性的变化 | 44 | --角色一些属性的变化 |
src/adv/AdvMap.lua
| @@ -383,6 +383,24 @@ function Map:getAroundBlocks(room, block) | @@ -383,6 +383,24 @@ function Map:getAroundBlocks(room, block) | ||
| 383 | return blocks | 383 | return blocks |
| 384 | end | 384 | end |
| 385 | 385 | ||
| 386 | +function Map:getAroundBlocksPlus(room, block) | ||
| 387 | + local blocks = {} | ||
| 388 | + local range = {1, 0, -1} | ||
| 389 | + local col, row = room:tranLtoG(block.col, block.row) | ||
| 390 | + for _, c in ipairs(range) do | ||
| 391 | + for _, r in ipairs(range) do | ||
| 392 | + if c == 0 and r == 0 then | ||
| 393 | + else | ||
| 394 | + local rroom, rblock = self:getRBByPos(col + c, row + r) | ||
| 395 | + if rroom then | ||
| 396 | + table.insert(blocks, {rroom, rblock}) | ||
| 397 | + end | ||
| 398 | + end | ||
| 399 | + end | ||
| 400 | + end | ||
| 401 | + return blocks | ||
| 402 | +end | ||
| 403 | + | ||
| 386 | function Map:getBlocksBySize(roomId, blockId, size) | 404 | function Map:getBlocksBySize(roomId, blockId, size) |
| 387 | local blocks = {} | 405 | local blocks = {} |
| 388 | local room = self.rooms[roomId] | 406 | local room = self.rooms[roomId] |