From c0b7797ffc07c7aee96aaa1e2562028c4f0a461b Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Sat, 27 Jul 2019 10:28:50 +0800 Subject: [PATCH] 陷阱、点击生效点 --- src/GlobalVar.lua | 2 ++ src/adv/Adv.lua | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 0 deletions(-) diff --git a/src/GlobalVar.lua b/src/GlobalVar.lua index ead17b8..30ca276 100644 --- a/src/GlobalVar.lua +++ b/src/GlobalVar.lua @@ -85,6 +85,8 @@ AdvEventType = { Monster = 3, -- 普通怪 Trader = 4, --商人 Build = 5, --建筑物 + Trap = 6, --陷阱 + Click = 7, --点击生效 } AdvBackEventType = { diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index ff0e567..e410fbb 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -57,6 +57,8 @@ local function getEventLib(chapterId, level, needEventType) -- needEventType ["event_dropCsv"] = AdvEventType.Drop, ["event_buildingCsv"] = AdvEventType.Build, ["event_traderCsv"] = AdvEventType.Trader, + ["event_trapCsv"] = AdvEventType.Trap, + ["event_clickCsv"] = AdvEventType.Click, } local eventLib = {} @@ -195,6 +197,11 @@ local function randomAdvMap(role, chapterId, level, notNotify) randomFunc[AdvEventType.Trader] = randomCommon --建筑 randomFunc[AdvEventType.Build] = randomCommon + --陷阱 + randomFunc[AdvEventType.Trap] = randomCommon + --点击生效 + randomFunc[AdvEventType.Click] = randomCommon + if randomFunc[etype] then if randomFunc[etype]() ~= false then @@ -342,6 +349,13 @@ function Block:open(adv, room) self.event.effect[3] = reward[2] end end + randomFunc[AdvEventType.Trap] = function() + local data = csvdb["event_trapCsv"][self.event.id] + for _, buffId in ipairs(data.effect:toArray(true, "=")) do + adv.battle.player:addBuff(buffId) + end + room:clearBEvent(self) + end if self.event then -- 随机出具体的事件 if randomFunc[self.event.etype] then randomFunc[self.event.etype]() @@ -428,6 +442,10 @@ end function Room:clearBEvent(block) if self.blocks[block.blockId] ~= block then return end + if block.event.etype == AdvEventType.Trap then -- 记录陷阱位置 + self.info.trap = self.info.trap or {} + self.info.trap[block.blockId] = block.event.id + end block.event = nil self.info.event[block.blockId] = nil end @@ -837,6 +855,30 @@ local function clickBuild(self, room, block, params) return true end +local function clickClick(self, room, block, params) + local clickData = csvdb["event_clickCsv"][block.event.id] + if not clickData then return end + local clearBlock = true + local doEffect = { + [1] = function() -- 技能 + for _, skillId in ipairs(clickData.effect:toArray(true, "=")) do + self.battle.player:releaseSkill(skillId) + end + end, + [2] = function() -- dropId + local reward = {} + for _, dropId in ipairs(clickData.effect:toArray(true, "=")) do + local item = csvdb["event_dropCsv"][dropId]["range"]:randWeight(true) + reward[item[1]] = (reward[item[1]] or 0) + reward[item[2]] + end + self:backReward(self:award(reward, {})) + end, + } + if clearBlock then + room:clearBEvent(block) + end +end + local eventCallFunc = { [AdvEventType.Out] = clickOut, [AdvEventType.BOSS] = clickMonster, @@ -845,6 +887,7 @@ local eventCallFunc = { [AdvEventType.Drop] = clickDrop, [AdvEventType.Trader] = clickTrader, [AdvEventType.Build] = clickBuild, + [AdvEventType.Click] = clickClick, } --点击处理 roomId, blockId -- libgit2 0.21.2