Commit c0b7797ffc07c7aee96aaa1e2562028c4f0a461b
1 parent
1b35c0a2
陷阱、点击生效点
Showing
2 changed files
with
45 additions
and
0 deletions
Show diff stats
src/GlobalVar.lua
@@ -85,6 +85,8 @@ AdvEventType = { | @@ -85,6 +85,8 @@ AdvEventType = { | ||
85 | Monster = 3, -- 普通怪 | 85 | Monster = 3, -- 普通怪 |
86 | Trader = 4, --商人 | 86 | Trader = 4, --商人 |
87 | Build = 5, --建筑物 | 87 | Build = 5, --建筑物 |
88 | + Trap = 6, --陷阱 | ||
89 | + Click = 7, --点击生效 | ||
88 | } | 90 | } |
89 | 91 | ||
90 | AdvBackEventType = { | 92 | AdvBackEventType = { |
src/adv/Adv.lua
@@ -57,6 +57,8 @@ local function getEventLib(chapterId, level, needEventType) -- needEventType éœ | @@ -57,6 +57,8 @@ local function getEventLib(chapterId, level, needEventType) -- needEventType éœ | ||
57 | ["event_dropCsv"] = AdvEventType.Drop, | 57 | ["event_dropCsv"] = AdvEventType.Drop, |
58 | ["event_buildingCsv"] = AdvEventType.Build, | 58 | ["event_buildingCsv"] = AdvEventType.Build, |
59 | ["event_traderCsv"] = AdvEventType.Trader, | 59 | ["event_traderCsv"] = AdvEventType.Trader, |
60 | + ["event_trapCsv"] = AdvEventType.Trap, | ||
61 | + ["event_clickCsv"] = AdvEventType.Click, | ||
60 | 62 | ||
61 | } | 63 | } |
62 | local eventLib = {} | 64 | local eventLib = {} |
@@ -195,6 +197,11 @@ local function randomAdvMap(role, chapterId, level, notNotify) | @@ -195,6 +197,11 @@ local function randomAdvMap(role, chapterId, level, notNotify) | ||
195 | randomFunc[AdvEventType.Trader] = randomCommon | 197 | randomFunc[AdvEventType.Trader] = randomCommon |
196 | --å»ºç‘ | 198 | --å»ºç‘ |
197 | randomFunc[AdvEventType.Build] = randomCommon | 199 | randomFunc[AdvEventType.Build] = randomCommon |
200 | + --陷阱 | ||
201 | + randomFunc[AdvEventType.Trap] = randomCommon | ||
202 | + --点击生效 | ||
203 | + randomFunc[AdvEventType.Click] = randomCommon | ||
204 | + | ||
198 | 205 | ||
199 | if randomFunc[etype] then | 206 | if randomFunc[etype] then |
200 | if randomFunc[etype]() ~= false then | 207 | if randomFunc[etype]() ~= false then |
@@ -342,6 +349,13 @@ function Block:open(adv, room) | @@ -342,6 +349,13 @@ function Block:open(adv, room) | ||
342 | self.event.effect[3] = reward[2] | 349 | self.event.effect[3] = reward[2] |
343 | end | 350 | end |
344 | end | 351 | end |
352 | + randomFunc[AdvEventType.Trap] = function() | ||
353 | + local data = csvdb["event_trapCsv"][self.event.id] | ||
354 | + for _, buffId in ipairs(data.effect:toArray(true, "=")) do | ||
355 | + adv.battle.player:addBuff(buffId) | ||
356 | + end | ||
357 | + room:clearBEvent(self) | ||
358 | + end | ||
345 | if self.event then -- éšæœºå‡ºå…·ä½“的事件 | 359 | if self.event then -- éšæœºå‡ºå…·ä½“的事件 |
346 | if randomFunc[self.event.etype] then | 360 | if randomFunc[self.event.etype] then |
347 | randomFunc[self.event.etype]() | 361 | randomFunc[self.event.etype]() |
@@ -428,6 +442,10 @@ end | @@ -428,6 +442,10 @@ end | ||
428 | 442 | ||
429 | function Room:clearBEvent(block) | 443 | function Room:clearBEvent(block) |
430 | if self.blocks[block.blockId] ~= block then return end | 444 | if self.blocks[block.blockId] ~= block then return end |
445 | + if block.event.etype == AdvEventType.Trap then -- 记录陷阱ä½ç½® | ||
446 | + self.info.trap = self.info.trap or {} | ||
447 | + self.info.trap[block.blockId] = block.event.id | ||
448 | + end | ||
431 | block.event = nil | 449 | block.event = nil |
432 | self.info.event[block.blockId] = nil | 450 | self.info.event[block.blockId] = nil |
433 | end | 451 | end |
@@ -837,6 +855,30 @@ local function clickBuild(self, room, block, params) | @@ -837,6 +855,30 @@ local function clickBuild(self, room, block, params) | ||
837 | return true | 855 | return true |
838 | end | 856 | end |
839 | 857 | ||
858 | +local function clickClick(self, room, block, params) | ||
859 | + local clickData = csvdb["event_clickCsv"][block.event.id] | ||
860 | + if not clickData then return end | ||
861 | + local clearBlock = true | ||
862 | + local doEffect = { | ||
863 | + [1] = function() -- 技能 | ||
864 | + for _, skillId in ipairs(clickData.effect:toArray(true, "=")) do | ||
865 | + self.battle.player:releaseSkill(skillId) | ||
866 | + end | ||
867 | + end, | ||
868 | + [2] = function() -- dropId | ||
869 | + local reward = {} | ||
870 | + for _, dropId in ipairs(clickData.effect:toArray(true, "=")) do | ||
871 | + local item = csvdb["event_dropCsv"][dropId]["range"]:randWeight(true) | ||
872 | + reward[item[1]] = (reward[item[1]] or 0) + reward[item[2]] | ||
873 | + end | ||
874 | + self:backReward(self:award(reward, {})) | ||
875 | + end, | ||
876 | + } | ||
877 | + if clearBlock then | ||
878 | + room:clearBEvent(block) | ||
879 | + end | ||
880 | +end | ||
881 | + | ||
840 | local eventCallFunc = { | 882 | local eventCallFunc = { |
841 | [AdvEventType.Out] = clickOut, | 883 | [AdvEventType.Out] = clickOut, |
842 | [AdvEventType.BOSS] = clickMonster, | 884 | [AdvEventType.BOSS] = clickMonster, |
@@ -845,6 +887,7 @@ local eventCallFunc = { | @@ -845,6 +887,7 @@ local eventCallFunc = { | ||
845 | [AdvEventType.Drop] = clickDrop, | 887 | [AdvEventType.Drop] = clickDrop, |
846 | [AdvEventType.Trader] = clickTrader, | 888 | [AdvEventType.Trader] = clickTrader, |
847 | [AdvEventType.Build] = clickBuild, | 889 | [AdvEventType.Build] = clickBuild, |
890 | + [AdvEventType.Click] = clickClick, | ||
848 | } | 891 | } |
849 | 892 | ||
850 | --ç‚¹å‡»å¤„ç† roomId, blockId | 893 | --ç‚¹å‡»å¤„ç† roomId, blockId |