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,8 +161,13 @@ function _M.startAdvRpc( agent, data ) | ||
161 | end | 161 | end |
162 | end | 162 | end |
163 | end | 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 | role:checkTaskEnter("AdvStart", {id = chapterId}) | 171 | role:checkTaskEnter("AdvStart", {id = chapterId}) |
167 | role:checkTaskEnter("AdvStartSelf", {id = chapterId}) | 172 | role:checkTaskEnter("AdvStartSelf", {id = chapterId}) |
168 | role:getAdvData():popBackEvents() -- 清一下事件 | 173 | role:getAdvData():popBackEvents() -- 清一下事件 |
src/actions/GmAction.lua
@@ -353,7 +353,7 @@ function _M.adv(role, pms) | @@ -353,7 +353,7 @@ function _M.adv(role, pms) | ||
353 | local layer = tonum(pms.pm2) | 353 | local layer = tonum(pms.pm2) |
354 | 354 | ||
355 | local advCsv = csvdb["adv_chapterCsv"][chapterId] | 355 | local advCsv = csvdb["adv_chapterCsv"][chapterId] |
356 | - if not advCsv then return end | 356 | + if not advCsv then return "不存在的章节" end |
357 | if math.floor(chapterId / 100) ~= 2 then | 357 | if math.floor(chapterId / 100) ~= 2 then |
358 | layer = math.min(layer, advCsv.limitlevel) | 358 | layer = math.min(layer, advCsv.limitlevel) |
359 | end | 359 | end |
@@ -368,30 +368,29 @@ function _M.adv(role, pms) | @@ -368,30 +368,29 @@ function _M.adv(role, pms) | ||
368 | return "成功" | 368 | return "成功" |
369 | end | 369 | end |
370 | 370 | ||
371 | -table.insert(helpDes, {"冒险到达指定层", "advt", "章节id", "层数"}) | 371 | +table.insert(helpDes, {"冒险到达指定层", "advt", "章节id", "层数", "地图id(选)"}) |
372 | function _M.advt(role, pms) | 372 | function _M.advt(role, pms) |
373 | local chapterId = tonum(pms.pm1) | 373 | local chapterId = tonum(pms.pm1) |
374 | local layer = tonum(pms.pm2) | 374 | local layer = tonum(pms.pm2) |
375 | + local mapId = tonum(pms.pm3) | ||
375 | local advCsv = csvdb["adv_chapterCsv"][chapterId] | 376 | local advCsv = csvdb["adv_chapterCsv"][chapterId] |
376 | if not advCsv then return "不存在的章节" end | 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 | local advData = role:getAdvData() | 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 | end | 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 | role:log("gm_action", {desc = "advt", int1 = chapterId, int2 = layer, key1 = pms.sender}) | 393 | role:log("gm_action", {desc = "advt", int1 = chapterId, int2 = layer, key1 = pms.sender}) |
394 | - | ||
395 | return "成功" | 394 | return "成功" |
396 | end | 395 | end |
397 | 396 |
src/adv/Adv.lua
@@ -74,7 +74,16 @@ function Adv:isHaveRelay(level, chapterId) | @@ -74,7 +74,16 @@ function Adv:isHaveRelay(level, chapterId) | ||
74 | end | 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 | if not self.chapterId then -- 开始新的章节 | 87 | if not self.chapterId then -- 开始新的章节 |
79 | self.chapterId = chapterId | 88 | self.chapterId = chapterId |
80 | self:checkAchievement(Adv.AchievType.StartBattle, 1) | 89 | self:checkAchievement(Adv.AchievType.StartBattle, 1) |
@@ -100,16 +109,22 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt | @@ -100,16 +109,22 @@ function Adv:initByChapter(chapterId, level, isToNext, notNotify, isRelay, isEnt | ||
100 | 109 | ||
101 | -- 随机出地图 | 110 | -- 随机出地图 |
102 | local mapId, relayData | 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 | else | 125 | else |
108 | - isRelay = false | ||
109 | mapId = self:randomMapId(chapterId, level) | 126 | mapId = self:randomMapId(chapterId, level) |
110 | end | 127 | end |
111 | - else | ||
112 | - mapId = self:randomMapId(chapterId, level) | ||
113 | end | 128 | end |
114 | 129 | ||
115 | self.isRelay = isRelay | 130 | self.isRelay = isRelay |
@@ -977,10 +992,21 @@ local function clickOut(self, room, block, params, isExit) | @@ -977,10 +992,21 @@ local function clickOut(self, room, block, params, isExit) | ||
977 | 992 | ||
978 | self.owner:getProperty("advTeam").player = self.battle.player:getDB() -- 临时缓存住 battle 的player | 993 | self.owner:getProperty("advTeam").player = self.battle.player:getDB() -- 临时缓存住 battle 的player |
979 | if isHaveRelay and not self.isRelay then | 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 | else | 1002 | else |
982 | self:log({desc = "pass"}) | 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 | end | 1010 | end |
985 | self:backNext() --下一关 | 1011 | self:backNext() --下一关 |
986 | end | 1012 | end |
src/adv/AdvBattle.lua
@@ -65,7 +65,9 @@ function Battle:initPlayer() | @@ -65,7 +65,9 @@ function Battle:initPlayer() | ||
65 | player.level = 1 | 65 | player.level = 1 |
66 | if self.adv.level ~= 1 then | 66 | if self.adv.level ~= 1 then |
67 | local relayData = self.adv:isHaveRelay() | 67 | local relayData = self.adv:isHaveRelay() |
68 | - player.level = relayData.level | 68 | + if relayData then |
69 | + player.level = relayData.level | ||
70 | + end | ||
69 | end | 71 | end |
70 | player.exp = 0 | 72 | player.exp = 0 |
71 | player.sp = getAdvLvAttrUp(advAddAttrs, "sp", 100) | 73 | player.sp = getAdvLvAttrUp(advAddAttrs, "sp", 100) |
@@ -249,16 +251,29 @@ end | @@ -249,16 +251,29 @@ end | ||
249 | --回合 | 251 | --回合 |
250 | function Battle:afterRound() | 252 | function Battle:afterRound() |
251 | local mapIdx = self.adv:getCurMapIdx() | 253 | local mapIdx = self.adv:getCurMapIdx() |
252 | - self.player:afterRound() | 254 | + |
253 | table.sort(self.enemys[mapIdx], function(e1, e2) | 255 | table.sort(self.enemys[mapIdx], function(e1, e2) |
254 | return e1.id < e2.id | 256 | return e1.id < e2.id |
255 | end) | 257 | end) |
258 | + | ||
259 | + self.player:afterRound("passive") | ||
256 | for _, enemy in ipairs(self.enemys[mapIdx]) do | 260 | for _, enemy in ipairs(self.enemys[mapIdx]) do |
257 | - enemy:afterRound() | 261 | + enemy:afterRound("passive") |
258 | end | 262 | end |
259 | for _, build in ipairs(self.builds[mapIdx]) do | 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 | end | 270 | end |
271 | + for _, build in ipairs(self.builds[mapIdx]) do | ||
272 | + build:afterRound("buff") | ||
273 | + end | ||
274 | + | ||
275 | + | ||
276 | + | ||
262 | self.player:clearRound() | 277 | self.player:clearRound() |
263 | for _, enemy in ipairs(self.enemys[mapIdx]) do | 278 | for _, enemy in ipairs(self.enemys[mapIdx]) do |
264 | enemy:clearRound() | 279 | enemy:clearRound() |
src/adv/AdvBuff.lua
@@ -23,7 +23,7 @@ Buff.BATTLE_PASSIVE = 19 -- 切换为战斗中的被动技 | @@ -23,7 +23,7 @@ Buff.BATTLE_PASSIVE = 19 -- 切换为战斗中的被动技 | ||
23 | Buff.EXP_ADD = 20 -- 增加exp(每回合) | 23 | Buff.EXP_ADD = 20 -- 增加exp(每回合) |
24 | Buff.DONT_DEFEND = 21 -- 不看守地板 -- 怪周围点半可点击 | 24 | Buff.DONT_DEFEND = 21 -- 不看守地板 -- 怪周围点半可点击 |
25 | Buff.SHOW_DANGER = 22 -- 扫雷 展示地上怪物和陷阱数量的标记 | 25 | Buff.SHOW_DANGER = 22 -- 扫雷 展示地上怪物和陷阱数量的标记 |
26 | - | 26 | +Buff.SHOW_MONSTER_POS = 23 -- 蓝臂章训练场 感知 |
27 | Buff.EXP_UP = 24 -- 杀敌经验提高 | 27 | Buff.EXP_UP = 24 -- 杀敌经验提高 |
28 | Buff.DISABLE_BUFF = 25 -- 禁用固有技 | 28 | Buff.DISABLE_BUFF = 25 -- 禁用固有技 |
29 | Buff.ATTR_CHANGE_COND = 26 --属性变化(状态)有条件 | 29 | Buff.ATTR_CHANGE_COND = 26 --属性变化(状态)有条件 |
src/adv/AdvPlayer.lua
@@ -50,12 +50,15 @@ function BaseObject:reset(data) | @@ -50,12 +50,15 @@ function BaseObject:reset(data) | ||
50 | self:initAfter(data) | 50 | self:initAfter(data) |
51 | end | 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 | end | 62 | end |
60 | end | 63 | end |
61 | 64 |