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