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,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
@@ -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