Commit 35e2e3c4ea67e42d54efd8b2a98777ebaf199b53

Authored by zhouhaihai
1 parent 314ae3f4

优化 gm advt 增加感知buff 优化 冒险回合 触发

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