Commit b6a2b78b45cbcccf4acd6a14658c13af03c41371
1 parent
e1b238dd
冒险 buff 类型 34 35
Showing
4 changed files
with
48 additions
and
1 deletions
Show diff stats
src/adv/AdvBlock.lua
@@ -209,6 +209,13 @@ function Block:randomEvent() | @@ -209,6 +209,13 @@ function Block:randomEvent() | ||
209 | e:addBuff(buffId) | 209 | e:addBuff(buffId) |
210 | end | 210 | end |
211 | end | 211 | end |
212 | + elseif data.target == 4 then | ||
213 | + local enemys = self.room.map.adv:getCurMap():openBlocksIsMonsterByRoom(self.room.roomId) | ||
214 | + for _, e in ipairs(enemys) do | ||
215 | + for _, buffId in ipairs(buffs) do | ||
216 | + e:addBuff(buffId) | ||
217 | + end | ||
218 | + end | ||
212 | end | 219 | end |
213 | 220 | ||
214 | if data.specialEff ~= "" then | 221 | if data.specialEff ~= "" then |
@@ -279,6 +286,10 @@ function Block:quickDrop() | @@ -279,6 +286,10 @@ function Block:quickDrop() | ||
279 | end | 286 | end |
280 | 287 | ||
281 | function Block:getObstacle() | 288 | function Block:getObstacle() |
289 | + if self:isMonster() then | ||
290 | + local enemy = self.room.map.adv.battle:getEnemy(self.room.roomId, self.blockId) | ||
291 | + return enemy:getObstacle() | ||
292 | + end | ||
282 | local data = self:getEventData() | 293 | local data = self:getEventData() |
283 | if not data then return 0 end | 294 | if not data then return 0 end |
284 | return data.obstacle or 0 | 295 | return data.obstacle or 0 |
src/adv/AdvBuff.lua
@@ -34,6 +34,8 @@ Buff.Buff_EFFECT_CHANGE = 30 -- 改变 buff 效果 | @@ -34,6 +34,8 @@ Buff.Buff_EFFECT_CHANGE = 30 -- 改变 buff 效果 | ||
34 | Buff.Buff_NO_PASSIVE_MONSTER = 31 -- 地图被动刷新不出来怪物 | 34 | Buff.Buff_NO_PASSIVE_MONSTER = 31 -- 地图被动刷新不出来怪物 |
35 | Buff.SNEAK = 32 --潜行 | 35 | Buff.SNEAK = 32 --潜行 |
36 | Buff.DROP_BUFF_BY_ENEMY = 33 -- 怪物掉落加成 -- 怪物使用 | 36 | Buff.DROP_BUFF_BY_ENEMY = 33 -- 怪物掉落加成 -- 怪物使用 |
37 | +Buff.GET_PASSIVE = 34 -- 获得 passive -- 结束失效 | ||
38 | +Buff.OBSTACLE_CHANGE = 35 -- 看守类型改变 -- 怪物使用 0 - 1 | ||
37 | 39 | ||
38 | 40 | ||
39 | --角色一些属性的变化 | 41 | --角色一些属性的变化 |
@@ -378,6 +380,14 @@ local BuffFactory = { | @@ -378,6 +380,14 @@ local BuffFactory = { | ||
378 | self.layer = self.buffData.effectValue1 | 380 | self.layer = self.buffData.effectValue1 |
379 | end | 381 | end |
380 | end, | 382 | end, |
383 | + [Buff.GET_PASSIVE] = function( _Buff ) | ||
384 | + _Buff._init = function(self) | ||
385 | + self.owner:addPassive({id = self.buffData.effectValue1}) | ||
386 | + end | ||
387 | + _Buff._endBuff = function(self) | ||
388 | + self.owner:delPassiveById(self.buffData.effectValue1) | ||
389 | + end | ||
390 | + end | ||
381 | } | 391 | } |
382 | 392 | ||
383 | -- 同样的返回 effectValue1, effectValue2 * self.layer 类型的buff | 393 | -- 同样的返回 effectValue1, effectValue2 * self.layer 类型的buff |
src/adv/AdvMap.lua
@@ -272,8 +272,8 @@ function Map:openBlock(roomId, blockId, isPlayer, ignoreBack) | @@ -272,8 +272,8 @@ function Map:openBlock(roomId, blockId, isPlayer, ignoreBack) | ||
272 | if not ignoreBack then | 272 | if not ignoreBack then |
273 | self.adv:backBlockChange(roomId, blockId) | 273 | self.adv:backBlockChange(roomId, blockId) |
274 | end | 274 | end |
275 | - | ||
276 | end | 275 | end |
276 | + return status | ||
277 | end | 277 | end |
278 | 278 | ||
279 | function Map:openBlocksBySize(roomId, blockId, size, isPlayer, ignoreBack) | 279 | function Map:openBlocksBySize(roomId, blockId, size, isPlayer, ignoreBack) |
@@ -292,6 +292,24 @@ function Map:openBlocksByRoom(roomId, isPlayer, ignoreBack) | @@ -292,6 +292,24 @@ function Map:openBlocksByRoom(roomId, isPlayer, ignoreBack) | ||
292 | end | 292 | end |
293 | end | 293 | end |
294 | 294 | ||
295 | +function Map:openBlocksIsMonsterByRoom(roomId, isPlayer, ignoreBack) | ||
296 | + local room = self.rooms[roomId] | ||
297 | + if not room then return end | ||
298 | + | ||
299 | + local enemys = {} | ||
300 | + for blockId, block in pairs(room.blocks) do | ||
301 | + if block:isMonster() then | ||
302 | + if self:openBlock(roomId, blockId, isPlayer, ignoreBack) then | ||
303 | + local e = self.adv.battle:getEnemy(block.room.roomId, block.blockId) | ||
304 | + if e then | ||
305 | + table.insert(enemys, e) | ||
306 | + end | ||
307 | + end | ||
308 | + end | ||
309 | + end | ||
310 | + return enemys | ||
311 | +end | ||
312 | + | ||
295 | function Map:openAllBlocks(isPlayer, ignoreBack) | 313 | function Map:openAllBlocks(isPlayer, ignoreBack) |
296 | for roomId, room in pairs(self.rooms) do | 314 | for roomId, room in pairs(self.rooms) do |
297 | self:openBlocksByRoom(room.roomId, isPlayer, ignoreBack) | 315 | self:openBlocksByRoom(room.roomId, isPlayer, ignoreBack) |
src/adv/AdvPlayer.lua
@@ -557,6 +557,14 @@ function Enemy:isEnemy() | @@ -557,6 +557,14 @@ function Enemy:isEnemy() | ||
557 | return true | 557 | return true |
558 | end | 558 | end |
559 | 559 | ||
560 | +function Enemy:getObstacle() | ||
561 | + local obstacle = csvdb["event_monsterCsv"][self.monsterId].obstacle | ||
562 | + if obstacle == 0 and self:hadBuff(Buff.OBSTACLE_CHANGE) then | ||
563 | + obstacle = 1 | ||
564 | + end | ||
565 | + return obstacle | ||
566 | +end | ||
567 | + | ||
560 | function Enemy:kill() | 568 | function Enemy:kill() |
561 | self:hurt(self.hp, self.battle.player, {hurtType = 5}) | 569 | self:hurt(self.hp, self.battle.player, {hurtType = 5}) |
562 | end | 570 | end |