Commit 35e2e3c4ea67e42d54efd8b2a98777ebaf199b53
1 parent
314ae3f4
优化 gm advt 增加感知buff 优化 冒险回合 触发
Showing
6 changed files
with
86 additions
and
38 deletions
Show diff stats
src/actions/AdvAction.lua
| ... | ... | @@ -161,8 +161,13 @@ function _M.startAdvRpc( agent, data ) |
| 161 | 161 | end |
| 162 | 162 | end |
| 163 | 163 | end |
| 164 | - | |
| 165 | - role:getAdvData():initByChapter(chapterId, layer, false, false, layer ~= 1, true, support) | |
| 164 | + role:getAdvData():initByChapter({ | |
| 165 | + chapterId = chapterId, | |
| 166 | + level = layer, | |
| 167 | + isRelay = layer ~= 1, | |
| 168 | + isEnter = true, | |
| 169 | + support = support, | |
| 170 | + }) | |
| 166 | 171 | role:checkTaskEnter("AdvStart", {id = chapterId}) |
| 167 | 172 | role:checkTaskEnter("AdvStartSelf", {id = chapterId}) |
| 168 | 173 | role:getAdvData():popBackEvents() -- 清一下事件 | ... | ... |
src/actions/GmAction.lua
| ... | ... | @@ -353,7 +353,7 @@ function _M.adv(role, pms) |
| 353 | 353 | local layer = tonum(pms.pm2) |
| 354 | 354 | |
| 355 | 355 | local advCsv = csvdb["adv_chapterCsv"][chapterId] |
| 356 | - if not advCsv then return end | |
| 356 | + if not advCsv then return "不存在的章节" end | |
| 357 | 357 | if math.floor(chapterId / 100) ~= 2 then |
| 358 | 358 | layer = math.min(layer, advCsv.limitlevel) |
| 359 | 359 | end |
| ... | ... | @@ -368,30 +368,29 @@ function _M.adv(role, pms) |
| 368 | 368 | return "成功" |
| 369 | 369 | end |
| 370 | 370 | |
| 371 | -table.insert(helpDes, {"冒险到达指定层", "advt", "章节id", "层数"}) | |
| 371 | +table.insert(helpDes, {"冒险到达指定层", "advt", "章节id", "层数", "地图id(选)"}) | |
| 372 | 372 | function _M.advt(role, pms) |
| 373 | 373 | local chapterId = tonum(pms.pm1) |
| 374 | 374 | local layer = tonum(pms.pm2) |
| 375 | + local mapId = tonum(pms.pm3) | |
| 375 | 376 | local advCsv = csvdb["adv_chapterCsv"][chapterId] |
| 376 | 377 | if not advCsv then return "不存在的章节" end |
| 377 | 378 | |
| 379 | + local status = _M.adv(role, {pm1 = chapterId, pm2 = layer - 1}) | |
| 380 | + if status ~= "成功" then return status end | |
| 381 | + | |
| 378 | 382 | local advData = role:getAdvData() |
| 379 | - if not advData.chapterId then | |
| 380 | - return "先随便开启一关" | |
| 381 | - end | |
| 382 | - if not advData:isEndless() then | |
| 383 | - layer = math.min(layer, advCsv.limitlevel) | |
| 383 | + if advData:isRunning() then | |
| 384 | + advData:forceOver() | |
| 384 | 385 | end |
| 385 | - | |
| 386 | - _M.adv(role, {pm1 = chapterId, pm2 = layer - 1}) | |
| 387 | - | |
| 388 | - | |
| 389 | - advData.chapterId = chapterId | |
| 390 | - advData.level = layer | |
| 391 | 386 | |
| 392 | - advData:saveDB() | |
| 387 | + advData:initByChapter({ | |
| 388 | + chapterId = chapterId, | |
| 389 | + level = layer, | |
| 390 | + isEnter = true, | |
| 391 | + debugMapId = mapId, | |
| 392 | + }) | |
| 393 | 393 | role:log("gm_action", {desc = "advt", int1 = chapterId, int2 = layer, key1 = pms.sender}) |
| 394 | - | |
| 395 | 394 | return "成功" |
| 396 | 395 | end |
| 397 | 396 | ... | ... |
src/adv/Adv.lua
| ... | ... | @@ -74,7 +74,16 @@ function Adv:isHaveRelay(level, chapterId) |
| 74 | 74 | end |
| 75 | 75 | |
| 76 | 76 | -- 随机新的地图 |
| 77 | -function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnter, support) | |
| 77 | +function Adv:initByChapter(params) | |
| 78 | + local chapterId = params.chapterId | |
| 79 | + local level = params.level | |
| 80 | + local isToNext = params.isToNext | |
| 81 | + local notNotify = params.notNotify | |
| 82 | + local isRelay = params.isRelay | |
| 83 | + local isEnter = params.isEnter | |
| 84 | + local support = params.support | |
| 85 | + local debugMapId = params.debugMapId | |
| 86 | + | |
| 78 | 87 | if not self.chapterId then -- 开始新的章节 |
| 79 | 88 | self.chapterId = chapterId |
| 80 | 89 | self:checkAchievement(Adv.AchievType.StartBattle, 1) |
| ... | ... | @@ -100,16 +109,22 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt |
| 100 | 109 | |
| 101 | 110 | -- 随机出地图 |
| 102 | 111 | local mapId, relayData |
| 103 | - if isRelay then | |
| 104 | - relayData = self:isHaveRelay(level, chapterId) | |
| 105 | - if relayData then | |
| 106 | - mapId = relayData.map | |
| 112 | + | |
| 113 | + if debugMapId and csvdb["mapCsv"][debugMapId] then | |
| 114 | + mapId = debugMapId | |
| 115 | + end | |
| 116 | + if not mapId then | |
| 117 | + if isRelay then | |
| 118 | + relayData = self:isHaveRelay(level, chapterId) | |
| 119 | + if relayData then | |
| 120 | + mapId = relayData.map | |
| 121 | + else | |
| 122 | + isRelay = false | |
| 123 | + mapId = self:randomMapId(chapterId, level) | |
| 124 | + end | |
| 107 | 125 | else |
| 108 | - isRelay = false | |
| 109 | 126 | mapId = self:randomMapId(chapterId, level) |
| 110 | 127 | end |
| 111 | - else | |
| 112 | - mapId = self:randomMapId(chapterId, level) | |
| 113 | 128 | end |
| 114 | 129 | |
| 115 | 130 | self.isRelay = isRelay |
| ... | ... | @@ -977,10 +992,21 @@ local function clickOut(self, room, block, params, isExit) |
| 977 | 992 | |
| 978 | 993 | self.owner:getProperty("advTeam").player = self.battle.player:getDB() -- 临时缓存住 battle 的player |
| 979 | 994 | if isHaveRelay and not self.isRelay then |
| 980 | - self:initByChapter(self.chapterId, self.level, true, true, true, false) | |
| 995 | + self:initByChapter({ | |
| 996 | + chapterId = self.chapterId, | |
| 997 | + level = self.level, | |
| 998 | + isToNext = true, | |
| 999 | + notNotify = true, | |
| 1000 | + isRelay = true, | |
| 1001 | + }) | |
| 981 | 1002 | else |
| 982 | 1003 | self:log({desc = "pass"}) |
| 983 | - self:initByChapter(self.chapterId, self.level + 1, true, true, false, false) | |
| 1004 | + self:initByChapter({ | |
| 1005 | + chapterId = self.chapterId, | |
| 1006 | + level = self.level + 1, | |
| 1007 | + isToNext = true, | |
| 1008 | + notNotify = true, | |
| 1009 | + }) | |
| 984 | 1010 | end |
| 985 | 1011 | self:backNext() --下一关 |
| 986 | 1012 | end | ... | ... |
src/adv/AdvBattle.lua
| ... | ... | @@ -65,7 +65,9 @@ function Battle:initPlayer() |
| 65 | 65 | player.level = 1 |
| 66 | 66 | if self.adv.level ~= 1 then |
| 67 | 67 | local relayData = self.adv:isHaveRelay() |
| 68 | - player.level = relayData.level | |
| 68 | + if relayData then | |
| 69 | + player.level = relayData.level | |
| 70 | + end | |
| 69 | 71 | end |
| 70 | 72 | player.exp = 0 |
| 71 | 73 | player.sp = getAdvLvAttrUp(advAddAttrs, "sp", 100) |
| ... | ... | @@ -249,16 +251,29 @@ end |
| 249 | 251 | --回合 |
| 250 | 252 | function Battle:afterRound() |
| 251 | 253 | local mapIdx = self.adv:getCurMapIdx() |
| 252 | - self.player:afterRound() | |
| 254 | + | |
| 253 | 255 | table.sort(self.enemys[mapIdx], function(e1, e2) |
| 254 | 256 | return e1.id < e2.id |
| 255 | 257 | end) |
| 258 | + | |
| 259 | + self.player:afterRound("passive") | |
| 256 | 260 | for _, enemy in ipairs(self.enemys[mapIdx]) do |
| 257 | - enemy:afterRound() | |
| 261 | + enemy:afterRound("passive") | |
| 258 | 262 | end |
| 259 | 263 | for _, build in ipairs(self.builds[mapIdx]) do |
| 260 | - build:afterRound() | |
| 264 | + build:afterRound("passive") | |
| 265 | + end | |
| 266 | + | |
| 267 | + self.player:afterRound("buff") | |
| 268 | + for _, enemy in ipairs(self.enemys[mapIdx]) do | |
| 269 | + enemy:afterRound("buff") | |
| 261 | 270 | end |
| 271 | + for _, build in ipairs(self.builds[mapIdx]) do | |
| 272 | + build:afterRound("buff") | |
| 273 | + end | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 262 | 277 | self.player:clearRound() |
| 263 | 278 | for _, enemy in ipairs(self.enemys[mapIdx]) do |
| 264 | 279 | enemy:clearRound() | ... | ... |
src/adv/AdvBuff.lua
| ... | ... | @@ -23,7 +23,7 @@ Buff.BATTLE_PASSIVE = 19 -- 切换为战斗中的被动技 |
| 23 | 23 | Buff.EXP_ADD = 20 -- 增加exp(每回合) |
| 24 | 24 | Buff.DONT_DEFEND = 21 -- 不看守地板 -- 怪周围点半可点击 |
| 25 | 25 | Buff.SHOW_DANGER = 22 -- 扫雷 展示地上怪物和陷阱数量的标记 |
| 26 | - | |
| 26 | +Buff.SHOW_MONSTER_POS = 23 -- 蓝臂章训练场 感知 | |
| 27 | 27 | Buff.EXP_UP = 24 -- 杀敌经验提高 |
| 28 | 28 | Buff.DISABLE_BUFF = 25 -- 禁用固有技 |
| 29 | 29 | Buff.ATTR_CHANGE_COND = 26 --属性变化(状态)有条件 | ... | ... |
src/adv/AdvPlayer.lua
| ... | ... | @@ -50,12 +50,15 @@ function BaseObject:reset(data) |
| 50 | 50 | self:initAfter(data) |
| 51 | 51 | end |
| 52 | 52 | |
| 53 | -function BaseObject:afterRound() | |
| 54 | - for _, passive in ipairs(self.passives) do | |
| 55 | - passive:afterRound(self) | |
| 56 | - end | |
| 57 | - for _, buff in ipairs(self.buffs) do | |
| 58 | - buff:afterRound() | |
| 53 | +function BaseObject:afterRound(roundType) | |
| 54 | + if roundType == "passive" then | |
| 55 | + for _, passive in ipairs(self.passives) do | |
| 56 | + passive:afterRound(self) | |
| 57 | + end | |
| 58 | + elseif roundType == "buff" then | |
| 59 | + for _, buff in ipairs(self.buffs) do | |
| 60 | + buff:afterRound() | |
| 61 | + end | |
| 59 | 62 | end |
| 60 | 63 | end |
| 61 | 64 | ... | ... |