Commit c0b7797ffc07c7aee96aaa1e2562028c4f0a461b
1 parent
1b35c0a2
陷阱、点击生效点
Showing
2 changed files
with
45 additions
and
0 deletions
Show diff stats
src/GlobalVar.lua
src/adv/Adv.lua
... | ... | @@ -57,6 +57,8 @@ local function getEventLib(chapterId, level, needEventType) -- needEventType éœ |
57 | 57 | ["event_dropCsv"] = AdvEventType.Drop, |
58 | 58 | ["event_buildingCsv"] = AdvEventType.Build, |
59 | 59 | ["event_traderCsv"] = AdvEventType.Trader, |
60 | + ["event_trapCsv"] = AdvEventType.Trap, | |
61 | + ["event_clickCsv"] = AdvEventType.Click, | |
60 | 62 | |
61 | 63 | } |
62 | 64 | local eventLib = {} |
... | ... | @@ -195,6 +197,11 @@ local function randomAdvMap(role, chapterId, level, notNotify) |
195 | 197 | randomFunc[AdvEventType.Trader] = randomCommon |
196 | 198 | --å»ºç‘ |
197 | 199 | randomFunc[AdvEventType.Build] = randomCommon |
200 | + --陷阱 | |
201 | + randomFunc[AdvEventType.Trap] = randomCommon | |
202 | + --点击生效 | |
203 | + randomFunc[AdvEventType.Click] = randomCommon | |
204 | + | |
198 | 205 | |
199 | 206 | if randomFunc[etype] then |
200 | 207 | if randomFunc[etype]() ~= false then |
... | ... | @@ -342,6 +349,13 @@ function Block:open(adv, room) |
342 | 349 | self.event.effect[3] = reward[2] |
343 | 350 | end |
344 | 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 | 359 | if self.event then -- éšæœºå‡ºå…·ä½“的事件 |
346 | 360 | if randomFunc[self.event.etype] then |
347 | 361 | randomFunc[self.event.etype]() |
... | ... | @@ -428,6 +442,10 @@ end |
428 | 442 | |
429 | 443 | function Room:clearBEvent(block) |
430 | 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 | 449 | block.event = nil |
432 | 450 | self.info.event[block.blockId] = nil |
433 | 451 | end |
... | ... | @@ -837,6 +855,30 @@ local function clickBuild(self, room, block, params) |
837 | 855 | return true |
838 | 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 | 882 | local eventCallFunc = { |
841 | 883 | [AdvEventType.Out] = clickOut, |
842 | 884 | [AdvEventType.BOSS] = clickMonster, |
... | ... | @@ -845,6 +887,7 @@ local eventCallFunc = { |
845 | 887 | [AdvEventType.Drop] = clickDrop, |
846 | 888 | [AdvEventType.Trader] = clickTrader, |
847 | 889 | [AdvEventType.Build] = clickBuild, |
890 | + [AdvEventType.Click] = clickClick, | |
848 | 891 | } |
849 | 892 | |
850 | 893 | --ç‚¹å‡»å¤„ç† roomId, blockId | ... | ... |