diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index f2b9ede..58792eb 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -525,11 +525,11 @@ function Adv:getAroundBlocks(room, block) end --随机一个空的位置生成怪, 如果没有就没有 -function Adv:addNewMonsterRand() +function Adv:addNewMonsterRand(monsterId) local pool = {} for _, room in pairs(self.rooms) do - for _, block in pairs(self.blocks) do - if not block.event then + for _, block in pairs(room.blocks) do + if block.isOpen and not block.event then table.insert(pool, {room, block}) end end @@ -538,13 +538,14 @@ function Adv:addNewMonsterRand() local idx = math.randomInt(1, #pool) local room, block = pool[idx][1], pool[idx][2] - local event = {mId = self.advInfo.enemyId} + local event = {etype = AdvEventType.Monster, mId = self.advInfo.enemyId} self.advInfo.enemyId = self.advInfo.enemyId + 1 - - local eventLib = getEventLib(self.advInfo.chapter, self.advInfo.level, AdvEventType.Monster) - if not next(eventLib[AdvEventType.Monster]) then return false end - event.id = math.randWeight(eventLib[AdvEventType.Monster], "showup") - + if not monsterId then + local eventLib = getEventLib(self.advInfo.chapter, self.advInfo.level, AdvEventType.Monster) + if not next(eventLib[AdvEventType.Monster]) then return false end + monsterId = math.randWeight(eventLib[AdvEventType.Monster], "showup") + end + event.id = monsterId block.event = event room.info.event[block.blockId] = event self.battle:addEnemy(room, block) @@ -604,6 +605,7 @@ function Adv:award(gift, params) items = items:incrv(itemId, count) end end + self.owner:updateProperty({field = "advItems", value = items, notNotify = params.notNotify}) return tgift end @@ -692,8 +694,8 @@ local function clickChoose(self, room, block, params) end end, } - assert(checkCond[cond[1]], "error cond, event_chooseCsv id :" .. block.event.id) - if not checkCond[cond[1]]() then return end + assert(not cond[1] or checkCond[cond[1]], "error cond, event_chooseCsv id :" .. block.event.id) + if cond[1] and not checkCond[cond[1]]() then return end local effect = block.event.effect[choose] local doEffect = { @@ -704,8 +706,10 @@ local function clickChoose(self, room, block, params) self.battle.player:addBuff(effect[2]) end, [3] = function() --发现怪物 - local r, b = self:addNewMonsterRand() - self:backBlockChange(r.roomId, b.blockId) + local r, b = self:addNewMonsterRand(effect[2]) + if r then + self:backBlockChange(r.roomId, b.blockId) + end end, [4] = function() --无事发生 end @@ -755,8 +759,8 @@ local function clickBuild(self, room, block, params) self.battle.player:addBuff(effect[2]) end, [3] = function() --发现怪物 - local r, b = self:addNewMonsterRand() - self:backBlockChange(r.roomId, b.blockId) + local r, b = self:addNewMonsterRand(effect[2]) + if r then self:backBlockChange(r.roomId, b.blockId) end end, [4] = function() --无事发生 end -- libgit2 0.21.2