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 | ... | ... |