Commit edbc96d25f7a5a89f717a8d9526fa431891d9267

Authored by chenyueqi
2 parents 8ba57e2c f854f3a3

Merge branch 'tr/bugfix' into cn/develop

@@ -375,7 +375,20 @@ DrawCardType = { @@ -375,7 +375,20 @@ DrawCardType = {
375 TeamSystemType = { 375 TeamSystemType = {
376 Hang = 1, 376 Hang = 1,
377 BonusBattle = 2, 377 BonusBattle = 2,
378 - Tower = 3,  
379 Dinner = 4, 378 Dinner = 4,
380 FriendBattle = 5, 379 FriendBattle = 5,
381 -}  
382 \ No newline at end of file 380 \ No newline at end of file
  381 +}
  382 +
  383 +-- 某个功能对其他系统功能的加成类型
  384 +SystemBnousType = {
  385 + TowerBuff = 1, -- 电波塔内战斗开始时获得buff
  386 + CrusadeTask = 2, -- 讨伐电台任务加速
  387 + DinerGet = 3, -- 食材供应商获取速度
  388 + DinerLimit = 4, -- 食材供应商上限
  389 + DinerSell = 5, -- 料理贩卖速度
  390 + DinerPrice = 6, -- 齿轮价格
  391 + Adv = 7, -- 代理拾荒获得额外道具
  392 + HangTime = 8, -- 挂机时间上限
  393 + PvpTicket = 9, -- 每周额外获得竞技场门票数量
  394 + SweepReward = 10, -- 奖励关卡每次扫荡额外获得道具
  395 +}
src/ProtocolCode.lua
@@ -145,6 +145,7 @@ actionCodes = { @@ -145,6 +145,7 @@ actionCodes = {
145 Tower_rankRpc = 353, 145 Tower_rankRpc = 353,
146 Tower_bugCountRpc = 354, 146 Tower_bugCountRpc = 354,
147 Tower_rankInfoRpc = 355, 147 Tower_rankInfoRpc = 355,
  148 + Tower_activeTowerBonusRpc = 356,
148 149
149 Car_makePotionRpc = 400, 150 Car_makePotionRpc = 400,
150 Car_equipUpRpc = 401, 151 Car_equipUpRpc = 401,
@@ -26,6 +26,15 @@ RANK_TYPE = { @@ -26,6 +26,15 @@ RANK_TYPE = {
26 RANK_TOWER = "rank:tower" 26 RANK_TOWER = "rank:tower"
27 RANK_TOWER_INFO = "rank:tower:info" 27 RANK_TOWER_INFO = "rank:tower:info"
28 28
  29 +RANK_TOWER1 = "rank:tower1"
  30 +RANK_TOWER1_INFO = "rank:tower1:info"
  31 +
  32 +RANK_TOWER2 = "rank:tower2"
  33 +RANK_TOWER2_INFO = "rank:tower2:info"
  34 +
  35 +RANK_TOWER3 = "rank:tower3"
  36 +RANK_TOWER3_INFO = "rank:tower3:info"
  37 +
29 -- adv 38 -- adv
30 RANK_ADV = {"rank:adv1", "rank:adv2"} 39 RANK_ADV = {"rank:adv1", "rank:adv2"}
31 RANK_ADV_INFO = "rank:adv:info" 40 RANK_ADV_INFO = "rank:adv:info"
src/actions/AdvAction.lua
@@ -278,6 +278,7 @@ function _M.startHangRpc(agent, data) @@ -278,6 +278,7 @@ function _M.startHangRpc(agent, data)
278 end 278 end
279 adv_idle_time = adv_idle_time * 60 279 adv_idle_time = adv_idle_time * 60
280 280
  281 +
281 local advHang = role:getProperty("advHang") 282 local advHang = role:getProperty("advHang")
282 if advHang[chapterId] then return 3 end --正在挂机 283 if advHang[chapterId] then return 3 end --正在挂机
283 284
@@ -463,6 +464,15 @@ function _M.endHangRpc(agent, data) @@ -463,6 +464,15 @@ function _M.endHangRpc(agent, data)
463 for itemId, count in pairs(idleReward) do 464 for itemId, count in pairs(idleReward) do
464 idleReward[itemId] = count * adv_idle_reward_coef 465 idleReward[itemId] = count * adv_idle_reward_coef
465 end 466 end
  467 +
  468 + local bnousReward = role:getBnousAdv()
  469 + for time, set in pairs(bnousReward) do
  470 + local delta = math.floor(adv_idle_time / time)
  471 + for key, value in pairs(set) do
  472 + idleReward[key] = (idleReward[key] or 0) + value * delta
  473 + end
  474 + end
  475 +
466 reward, change = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}}) 476 reward, change = role:award(idleReward, {log = {desc = "advHang", int1 = chapterId}})
467 else 477 else
468 if cancel then 478 if cancel then
src/actions/DinerAction.lua
@@ -75,7 +75,8 @@ function _M.addSellRpc( agent, data ) @@ -75,7 +75,8 @@ function _M.addSellRpc( agent, data )
75 sells[slot].count = count 75 sells[slot].count = count
76 sells[slot].time = skynet.timex() - calSell.deltaTime 76 sells[slot].time = skynet.timex() - calSell.deltaTime
77 77
78 - local needTime = sells[slot].count * dishData.sell_time + sells[slot].time - skynet.timex() 78 + local timeSub = role:getBnousDiner(3,dishData.sell_time)
  79 + local needTime = sells[slot].count * (dishData.sell_time + timeSub) + sells[slot].time - skynet.timex()
79 role:pushMsg({type = "food", slot = slot, time = needTime}) 80 role:pushMsg({type = "food", slot = slot, time = needTime})
80 81
81 -- 检查解锁的顾客 82 -- 检查解锁的顾客
@@ -742,11 +743,15 @@ function _M.getGreenhouseRpc( agent, data ) @@ -742,11 +743,15 @@ function _M.getGreenhouseRpc( agent, data )
742 local now = skynet.timex() 743 local now = skynet.timex()
743 local gfood = role.dinerData:getProperty("gfood") 744 local gfood = role.dinerData:getProperty("gfood")
744 if not next(gfood) then return end 745 if not next(gfood) then return end
  746 +
  747 + local timeAdd = role:getBnousDiner(2,globalCsv.diner_get_food_time_max)
  748 +
745 for k , v in pairs(gfood) do 749 for k , v in pairs(gfood) do
746 local itemId = v.id 750 local itemId = v.id
747 local st = v.st 751 local st = v.st
748 local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100 752 local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100
749 - local endTime = st + globalCsv.diner_get_food_time_max 753 + speed = speed + role:getBnousDiner(1,speed)
  754 + local endTime = st + globalCsv.diner_get_food_time_max + timeAdd
750 local endTime2 = math.min(now, endTime) 755 local endTime2 = math.min(now, endTime)
751 reward[itemId] = math.floor((endTime2 - st) / speed) 756 reward[itemId] = math.floor((endTime2 - st) / speed)
752 if endTime2 == endTime then 757 if endTime2 == endTime then
src/actions/GmAction.lua
@@ -483,13 +483,25 @@ function _M.advit(role, pms) @@ -483,13 +483,25 @@ function _M.advit(role, pms)
483 end 483 end
484 484
485 485
486 -table.insert(helpDes, {"爬塔到指定层", "tower", "层数"}) 486 +table.insert(helpDes, {"爬塔到指定层", "tower", "塔id", "层数"})
487 function _M.tower(role, pms) 487 function _M.tower(role, pms)
488 - local level = tonum(pms.pm1, 1) 488 + local tType = tonum(pms.pm1, 1)
  489 + local level = tonum(pms.pm2, 1)
  490 + local layer = (tType - 1) * 10000 + level
489 if not csvdb["tower_battleCsv"][level] then return "不存在" end 491 if not csvdb["tower_battleCsv"][level] then return "不存在" end
490 - role:updateProperty({field = "towerInfo", value = {c = globalCsv.tower_count_limit, l = level}})  
491 -  
492 - role:mylog("gm_action", {desc = "tower", int1 = level, key1 = pms.sender}) 492 + local values = role:getProperty("towerInfo")
  493 + if tType == 1 then
  494 + values.l = layer
  495 + elseif tType == 2 then
  496 + values.l1 = layer
  497 + elseif tType == 3 then
  498 + values.l2 = layer
  499 + elseif tType == 4 then
  500 + values.l3 = layer
  501 + end
  502 + role:updateProperty({field = "towerInfo", value = values})
  503 +
  504 + role:mylog("gm_action", {desc = "tower", int1 = tType, int2 = layer, key1 = pms.sender})
493 505
494 return "成功" 506 return "成功"
495 end 507 end
src/actions/HangAction.lua
@@ -326,6 +326,7 @@ function _M.roleFormatRpc(agent , data) @@ -326,6 +326,7 @@ function _M.roleFormatRpc(agent , data)
326 local index = msg.index -- 阵容索引 326 local index = msg.index -- 阵容索引
327 local title = msg.title -- 阵容名称 327 local title = msg.title -- 阵容名称
328 local tactics = msg.tactics -- 战术 328 local tactics = msg.tactics -- 战术
  329 + local tower = msg.tower
329 local team = {} 330 local team = {}
330 for slot, heroId in pairs(msg.heros) do 331 for slot, heroId in pairs(msg.heros) do
331 if not role.heros[heroId] then 332 if not role.heros[heroId] then
@@ -361,7 +362,11 @@ function _M.roleFormatRpc(agent , data) @@ -361,7 +362,11 @@ function _M.roleFormatRpc(agent , data)
361 team.tactics = msg.tactics 362 team.tactics = msg.tactics
362 end 363 end
363 364
364 - role:setTeamFormat(index, team) 365 + if tower then
  366 + role:setTowerTeamFormat(index, team)
  367 + else
  368 + role:setTeamFormat(index, team)
  369 + end
365 370
366 SendPacket(actionCodes.Hang_roleFormatRpc, '') 371 SendPacket(actionCodes.Hang_roleFormatRpc, '')
367 return true 372 return true
@@ -376,8 +381,9 @@ function _M.getRewardRpc(agent , data) @@ -376,8 +381,9 @@ function _M.getRewardRpc(agent , data)
376 table.clear(items) 381 table.clear(items)
377 local hangInfo = role:getProperty("hangInfo") 382 local hangInfo = role:getProperty("hangInfo")
378 local nowTime = skynet.timex() 383 local nowTime = skynet.timex()
379 - hangInfo.endItemTime = nowTime + globalCsv.idle_producetime_max  
380 - hangInfo.endCoinTime = nowTime + globalCsv.idle_producetime_max 384 + local timeAdd = role:getBnousHangTime()
  385 + hangInfo.endItemTime = nowTime + globalCsv.idle_producetime_max + timeAdd
  386 + hangInfo.endCoinTime = nowTime + globalCsv.idle_producetime_max + timeAdd
381 hangInfo.coinTime = nowTime 387 hangInfo.coinTime = nowTime
382 hangInfo.itemTime = nowTime 388 hangInfo.itemTime = nowTime
383 role:updateProperty({field = "hangBag", value = items}) 389 role:updateProperty({field = "hangBag", value = items})
@@ -508,7 +514,7 @@ function _M.buyBonusCountRpc(agent, data) @@ -508,7 +514,7 @@ function _M.buyBonusCountRpc(agent, data)
508 return true 514 return true
509 end 515 end
510 516
511 -local function bonusWinReward(role, bonusData, rewardType, count) 517 +local function bonusWinReward(role, bonusData, rewardType, count, sweep)
512 count = count or 1 518 count = count or 1
513 519
514 local reward, change = {} 520 local reward, change = {}
@@ -548,6 +554,13 @@ local function bonusWinReward(role, bonusData, rewardType, count) @@ -548,6 +554,13 @@ local function bonusWinReward(role, bonusData, rewardType, count)
548 end 554 end
549 end 555 end
550 556
  557 + if sweep then
  558 + local bnousReward = role:getBnousSweep()
  559 + for key, value in pairs(bnousReward) do
  560 + reward[key] = (reward[key] or 0) + value * count
  561 + end
  562 + end
  563 +
551 reward, change = role:award(reward, {log = {desc = "bonusBattle", int1 = bonusData.id}}) 564 reward, change = role:award(reward, {log = {desc = "bonusBattle", int1 = bonusData.id}})
552 role:checkTaskEnter("BonusPass", {id = bonusData.id, count = count}) 565 role:checkTaskEnter("BonusPass", {id = bonusData.id, count = count})
553 return reward, change 566 return reward, change
@@ -589,7 +602,7 @@ function _M.startBonusBattleRpc(agent, data) @@ -589,7 +602,7 @@ function _M.startBonusBattleRpc(agent, data)
589 bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + count 602 bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + count
590 role.dailyData:updateProperty({field = "bonusC", value = bonusC}) 603 role.dailyData:updateProperty({field = "bonusC", value = bonusC})
591 604
592 - local reward, change = bonusWinReward(role, bonusData, 3, count) 605 + local reward, change = bonusWinReward(role, bonusData, 3, count, true)
593 SendPacket(actionCodes.Hang_startBonusBattleRpc, MsgPack.pack({reward = reward, change = change})) 606 SendPacket(actionCodes.Hang_startBonusBattleRpc, MsgPack.pack({reward = reward, change = change}))
594 607
595 role:checkTaskEnter("BonusQuick", {count = count}) 608 role:checkTaskEnter("BonusQuick", {count = count})
src/actions/RadioAction.lua
@@ -95,8 +95,9 @@ function _M.startQuestRpc(agent, data) @@ -95,8 +95,9 @@ function _M.startQuestRpc(agent, data)
95 return 5 95 return 5
96 end 96 end
97 -- start quest, set finish time 97 -- start quest, set finish time
  98 + local timeSub = role:getBnousCrusade(config.time)
98 local taskData = {} 99 local taskData = {}
99 - taskData["time"] = skynet.timex() + config.time 100 + taskData["time"] = skynet.timex() + config.time + timeSub
100 taskData["heros"] = heros 101 taskData["heros"] = heros
101 radioTask[id] = taskData 102 radioTask[id] = taskData
102 role:updateProperty({field="radioTask", value=radioTask, notNotify=true}) 103 role:updateProperty({field="radioTask", value=radioTask, notNotify=true})
src/actions/RoleAction.lua
@@ -745,6 +745,7 @@ function _M.openSpeedUpBoxRpc(agent, data) @@ -745,6 +745,7 @@ function _M.openSpeedUpBoxRpc(agent, data)
745 for k , v in pairs(gfood) do 745 for k , v in pairs(gfood) do
746 local itemId = v.id 746 local itemId = v.id
747 local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100 747 local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100
  748 + speed = speed + role:getBnousDiner(1,speed)
748 reward[itemId] = (reward[itemId] or 0) + math.floor((time / speed) * count) 749 reward[itemId] = (reward[itemId] or 0) + math.floor((time / speed) * count)
749 end 750 end
750 else 751 else
src/actions/TowerAction.lua
@@ -23,14 +23,32 @@ function _M.startBattleRpc(agent, data) @@ -23,14 +23,32 @@ function _M.startBattleRpc(agent, data)
23 local role = agent.role 23 local role = agent.role
24 local msg = MsgPack.unpack(data) 24 local msg = MsgPack.unpack(data)
25 local id = msg.id 25 local id = msg.id
26 -  
27 - if not role:isFuncUnlock(FuncUnlock.Tower) then return end 26 + local towerType = math.floor(id / 10000)
  27 +
  28 + if not id or towerType < 0 or towerType > 3 then return 0 end
  29 + if not role:isFuncUnlock(FuncUnlock.Tower) then return 1 end
28 30
29 local towerInfo = role:getProperty("towerInfo") 31 local towerInfo = role:getProperty("towerInfo")
30 32
31 - if towerInfo.l ~= id then return end -- 层数不对 33 + if towerType == 0 and (towerInfo.l or 1) ~= id then return 2 end -- 层数不对
  34 + if towerType == 1 and ((towerInfo.l1 or 10001) ~= id or (towerInfo.l or 1) <= globalCsv.tower_open[towerType]) then return 2 end -- 层数不对
  35 + if towerType == 2 and ((towerInfo.l2 or 20001) ~= id or (towerInfo.l or 1) <= globalCsv.tower_open[towerType]) then return 2 end -- 层数不对
  36 + if towerType == 3 and ((towerInfo.l3 or 30001) ~= id or (towerInfo.l or 1) <= globalCsv.tower_open[towerType]) then return 2 end -- 层数不对
  37 +
  38 + if not csvdb["tower_battleCsv"][id] then return 4 end
  39 +
  40 + local teams = role:getTowerTeamFormat(towerType + 1)
  41 + if not next(teams) then return 5 end
  42 +
  43 + if towerType ~= 0 then
  44 + for _, heroId in pairs(teams.heros) do
  45 + local hero = role.heros[heroId]
  46 + if not hero then return 6 end
  47 + local unit = csvdb["unitCsv"][hero:getProperty("type")]
  48 + if unit.camp ~= towerType then return 7 end
  49 + end
  50 + end
32 51
33 - if not csvdb["tower_battleCsv"][id] then return end  
34 local curCount, nextTime = getUpdateTime(towerInfo.c, towerInfo.t) 52 local curCount, nextTime = getUpdateTime(towerInfo.c, towerInfo.t)
35 --if curCount < 1 then return end -- 没有次数返回 53 --if curCount < 1 then return end -- 没有次数返回
36 54
@@ -57,18 +75,24 @@ function _M.endBattleRpc(agent, data) @@ -57,18 +75,24 @@ function _M.endBattleRpc(agent, data)
57 local key = msg.key 75 local key = msg.key
58 local passTime = msg.passTime 76 local passTime = msg.passTime
59 77
  78 + local curTower = csvdb["tower_battleCsv"][id]
  79 + if not curTower then return 2 end
  80 +
60 local towerInfo = role:getProperty("towerInfo") 81 local towerInfo = role:getProperty("towerInfo")
61 - if towerInfo.l ~= id or not towerInfo.k or towerInfo.k ~= key then 82 + local towerType = math.floor(id / 10000)
  83 + local towerLevel = {[0] = (towerInfo.l or 1), [1] = (towerInfo.l1 or 10001), [2] = (towerInfo.l2 or 20001), [3] = (towerInfo.l3 or 30001)}
  84 + local curLevel = towerLevel[towerType]
  85 +
  86 + if curLevel ~= id or not towerInfo.k or towerInfo.k ~= key then
62 SendPacket(actionCodes.Tower_endBattleRpc, MsgPack.pack({errorCode = 1})) 87 SendPacket(actionCodes.Tower_endBattleRpc, MsgPack.pack({errorCode = 1}))
63 return true 88 return true
64 end 89 end
65 - local curTower = csvdb["tower_battleCsv"][id]  
66 - if not curTower then return 2 end  
67 90
68 -- 防作弊 91 -- 防作弊
69 if not role:checkBattleCheat("tower", { 92 if not role:checkBattleCheat("tower", {
70 isWin = msg.starNum and msg.starNum > 0, 93 isWin = msg.starNum and msg.starNum > 0,
71 - info = msg.info 94 + info = msg.info,
  95 + tower = towerType + 1
72 }) then 96 }) then
73 SendPacket(actionCodes.Tower_endBattleRpc, MsgPack.pack({errorCode = 1})) 97 SendPacket(actionCodes.Tower_endBattleRpc, MsgPack.pack({errorCode = 1}))
74 return true 98 return true
@@ -81,11 +105,21 @@ function _M.endBattleRpc(agent, data) @@ -81,11 +105,21 @@ function _M.endBattleRpc(agent, data)
81 if msg.starNum and msg.starNum > 0 then --win 105 if msg.starNum and msg.starNum > 0 then --win
82 curCount = math.min(curCount + 1, globalCsv.tower_count_limit) -- 返还次数 106 curCount = math.min(curCount + 1, globalCsv.tower_count_limit) -- 返还次数
83 --排行榜 107 --排行榜
84 - role:setTowerRank(towerInfo.l) 108 + role:setTowerRank(curLevel % 10000, towerType + 1)
85 109
86 - towerInfo.l = towerInfo.l + 1 110 + curLevel = curLevel + 1
87 reward, change = role:award(curTower.reward, {log = {desc = "towerBattle", int1 = id}}) 111 reward, change = role:award(curTower.reward, {log = {desc = "towerBattle", int1 = id}})
88 - role:checkTaskEnter("TowerPass", {level = towerInfo.l - 1}) 112 + role:checkTaskEnter("TowerPass", {count = 1, type = towerType + 1})
  113 + end
  114 +
  115 + if towerType == 0 then
  116 + towerInfo.l = curLevel
  117 + elseif towerType == 1 then
  118 + towerInfo.l1 = curLevel
  119 + elseif towerType == 2 then
  120 + towerInfo.l2 = curLevel
  121 + elseif towerType == 3 then
  122 + towerInfo.l3 = curLevel
89 end 123 end
90 124
91 towerInfo.c = curCount 125 towerInfo.c = curCount
@@ -93,8 +127,9 @@ function _M.endBattleRpc(agent, data) @@ -93,8 +127,9 @@ function _M.endBattleRpc(agent, data)
93 towerInfo.k = nil 127 towerInfo.k = nil
94 role:updateProperty({field = "towerInfo", value = towerInfo}) 128 role:updateProperty({field = "towerInfo", value = towerInfo})
95 129
96 -  
97 - local rank = redisproxy:ZREVRANK(RANK_TOWER, role:getProperty("id")) 130 + local RankTower = {[0] = RANK_TOWER,[1] = RANK_TOWER1,[2] = RANK_TOWER2,[3] = RANK_TOWER3}
  131 + local rankName = RankTower[towerType]
  132 + local rank = redisproxy:ZREVRANK(rankName, role:getProperty("id"))
98 if not rank then 133 if not rank then
99 rank = -1 134 rank = -1
100 else 135 else
@@ -106,6 +141,7 @@ function _M.endBattleRpc(agent, data) @@ -106,6 +141,7 @@ function _M.endBattleRpc(agent, data)
106 info = msg.info, 141 info = msg.info,
107 reward = reward, 142 reward = reward,
108 rank = rank, 143 rank = rank,
  144 + tower = towerType + 1
109 }) 145 })
110 role:mylog("tower_action", {desc = "endBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = id}) 146 role:mylog("tower_action", {desc = "endBattle", short1 = msg.starNum > 0 and 1 or 0, int1 = id})
111 147
@@ -143,7 +179,9 @@ end @@ -143,7 +179,9 @@ end
143 179
144 function _M.rankRpc(agent , data) 180 function _M.rankRpc(agent , data)
145 local role = agent.role 181 local role = agent.role
146 - SendPacket(actionCodes.Tower_rankRpc, MsgPack.pack(role:getTowerRank())) 182 + local msg = MsgPack.unpack(data)
  183 + local towerType = msg.tower or 1
  184 + SendPacket(actionCodes.Tower_rankRpc, MsgPack.pack(role:getTowerRank(towerType)))
147 return true 185 return true
148 end 186 end
149 187
@@ -151,7 +189,43 @@ function _M.rankInfoRpc(agent , data) @@ -151,7 +189,43 @@ function _M.rankInfoRpc(agent , data)
151 local role = agent.role 189 local role = agent.role
152 local msg = MsgPack.unpack(data) 190 local msg = MsgPack.unpack(data)
153 local roleId = msg.roleId 191 local roleId = msg.roleId
154 - SendPacket(actionCodes.Tower_rankInfoRpc, MsgPack.pack({format = role:getTowerRankOneInfo(roleId)})) 192 + local towerType = msg.tower or 1
  193 + SendPacket(actionCodes.Tower_rankInfoRpc, MsgPack.pack({format = role:getTowerRankOneInfo(roleId, towerType)}))
  194 + return true
  195 +end
  196 +
  197 +function _M.activeTowerBonusRpc(agent, data)
  198 + local role = agent.role
  199 + local msg = MsgPack.unpack(data)
  200 + local tType = msg.tower
  201 + local id = msg.id
  202 +
  203 + local bnousCsv = csvdb["tower_battle_additionCsv"]
  204 +
  205 + if not tType or not id or not bnousCsv[tType] then return 0 end
  206 + local bnousData = bnousCsv[tType][id]
  207 + if not bnousData then return 1 end
  208 +
  209 + local towerInfo = role:getProperty("towerInfo")
  210 + local towerBnous = role:getProperty("towerBnous")
  211 +
  212 + if towerBnous[tType] and towerBnous[tType][id] then return 2 end
  213 + local towerLevel = {[1] = (towerInfo.l or 1), [2] = (towerInfo.l1 or 10001), [3] = (towerInfo.l2 or 20001), [4] = (towerInfo.l3 or 30001)}
  214 + local curLevel = towerLevel[tType]
  215 +
  216 + if tType ~= 1 then
  217 + if curLevel <= globalCsv.tower_open[tType - 1] then return 4 end
  218 + end
  219 +
  220 + if (curLevel % 10000) <= bnousData.floor then return 3 end
  221 +
  222 + if not towerBnous[tType] then
  223 + towerBnous[tType] = {}
  224 + end
  225 + towerBnous[tType][id] = 1
  226 + role:updateProperty({field = "towerBnous", value = towerBnous})
  227 + role:getTowerBnousActive(true)
  228 + SendPacket(actionCodes.Tower_activeTowerBonusRpc, '')
155 return true 229 return true
156 end 230 end
157 231
src/models/Activity.lua
@@ -489,7 +489,7 @@ activityFunc[Activity.ActivityType.CalendaTask] = { @@ -489,7 +489,7 @@ activityFunc[Activity.ActivityType.CalendaTask] = {
489 role:checkTaskEnter("RoleLevelUp", {level = rLevel}) 489 role:checkTaskEnter("RoleLevelUp", {level = rLevel})
490 490
491 local towerInfo = role:getProperty("towerInfo") 491 local towerInfo = role:getProperty("towerInfo")
492 - role:checkTaskEnter("TowerPass", {level = towerInfo.l}) 492 + role:checkTaskEnter("TowerPass", {count = towerInfo.l, type = 1})
493 --"PvpWin" 493 --"PvpWin"
494 --role:checkTaskEnter("HangPass", {id = 0}) 494 --role:checkTaskEnter("HangPass", {id = 0})
495 role:checkCalendaTask(true, 15, 3) 495 role:checkCalendaTask(true, 15, 3)
@@ -557,7 +557,7 @@ activityFunc[Activity.ActivityType.BattleCommandTask] = { @@ -557,7 +557,7 @@ activityFunc[Activity.ActivityType.BattleCommandTask] = {
557 role:checkTaskEnter("RoleLevelUp", {level = rLevel}) 557 role:checkTaskEnter("RoleLevelUp", {level = rLevel})
558 558
559 local towerInfo = role:getProperty("towerInfo") 559 local towerInfo = role:getProperty("towerInfo")
560 - role:checkTaskEnter("TowerPass", {level = towerInfo.l}) 560 + role:checkTaskEnter("TowerPass", {count = towerInfo.l, type = 1})
561 --"PvpWin" 561 --"PvpWin"
562 --role:checkTaskEnter("HangPass", {id = 0}) 562 --role:checkTaskEnter("HangPass", {id = 0})
563 role:checkCalendaTask(true, 15, 3) 563 role:checkCalendaTask(true, 15, 3)
src/models/Diner.lua
@@ -179,8 +179,13 @@ function Diner:checkDinerTask(typ, count, param1, param2, notNotify) @@ -179,8 +179,13 @@ function Diner:checkDinerTask(typ, count, param1, param2, notNotify)
179 return dirty 179 return dirty
180 end 180 end
181 181
182 -function Diner:calSellReward(sell, delta, dishData) 182 +function Diner:calSellReward(sell, delta, dishData, isExpedite)
183 local reward = sell.reward or "" 183 local reward = sell.reward or ""
  184 +
  185 + if isExpedite then
  186 + reward = ""
  187 + end
  188 +
184 local popular = 0 189 local popular = 0
185 if delta <= 0 then 190 if delta <= 0 then
186 return reward, popular 191 return reward, popular
@@ -225,10 +230,16 @@ function Diner:calSellReward(sell, delta, dishData) @@ -225,10 +230,16 @@ function Diner:calSellReward(sell, delta, dishData)
225 end 230 end
226 upValue[-1] = (upValue[-1] or 0) + collectAdd 231 upValue[-1] = (upValue[-1] or 0) + collectAdd
227 232
  233 + -- 电波塔加成
  234 + local goldCount = self.owner:getBnousDiner(4,addReward[ItemId.Gold])
  235 +
228 for id, count in pairs(addReward) do 236 for id, count in pairs(addReward) do
229 addReward[id] = math.floor(count * (1 + (upValue[id] or 0) / 100)) 237 addReward[id] = math.floor(count * (1 + (upValue[id] or 0) / 100))
230 reward = reward:incrv(id, addReward[id]) 238 reward = reward:incrv(id, addReward[id])
231 end 239 end
  240 +
  241 + reward = reward:incrv(ItemId.Gold, goldCount)
  242 +
232 popular = math.floor(popular * (1 + (upValue[-1] or 0) / 100)) 243 popular = math.floor(popular * (1 + (upValue[-1] or 0) / 100))
233 244
234 return reward, popular 245 return reward, popular
@@ -245,7 +256,7 @@ function Diner:updateSell(slot, calOnly) @@ -245,7 +256,7 @@ function Diner:updateSell(slot, calOnly)
245 local deltaTime = 0 256 local deltaTime = 0
246 local deltaCount = 0 257 local deltaCount = 0
247 local timePass = skynet.timex() - sell.time 258 local timePass = skynet.timex() - sell.time
248 - local sellTime = dishData.sell_time 259 + local sellTime = dishData.sell_time + self.owner:getBnousDiner(3, dishData.sell_time)
249 260
250 deltaCount = math.floor(timePass / sellTime) 261 deltaCount = math.floor(timePass / sellTime)
251 if deltaCount < sell.count then 262 if deltaCount < sell.count then
@@ -284,11 +295,11 @@ function Diner:expediteSell(slot) @@ -284,11 +295,11 @@ function Diner:expediteSell(slot)
284 local dishData = csvdb["diner_dishCsv"][sell.dish][sell.level] 295 local dishData = csvdb["diner_dishCsv"][sell.dish][sell.level]
285 local expediteCount = 0 296 local expediteCount = 0
286 local expediteTime = globalCsv.diner_sell_expediteTime 297 local expediteTime = globalCsv.diner_sell_expediteTime
287 - local sellTime = dishData.sell_time 298 + local sellTime = dishData.sell_time + self.owner:getBnousDiner(3,dishData.sell_time)
288 expediteCount = math.floor(expediteTime / sellTime) 299 expediteCount = math.floor(expediteTime / sellTime)
289 expediteCount = math.min(expediteCount, sell.count) 300 expediteCount = math.min(expediteCount, sell.count)
290 local lastCount = sell.count - expediteCount 301 local lastCount = sell.count - expediteCount
291 - local reward, popular = self:calSellReward(sell, expediteCount, dishData) 302 + local reward, popular = self:calSellReward(sell, expediteCount, dishData, true)
292 local deltaTime = math.floor(expediteTime - sellTime * expediteCount) 303 local deltaTime = math.floor(expediteTime - sellTime * expediteCount)
293 if expediteCount > 0 then 304 if expediteCount > 0 then
294 sells[slot].time = sell.time - deltaTime 305 sells[slot].time = sell.time - deltaTime
src/models/Role.lua
@@ -116,6 +116,7 @@ Role.schema = { @@ -116,6 +116,7 @@ Role.schema = {
116 hangTeams = {"table", {}}, -- pve自选编队 116 hangTeams = {"table", {}}, -- pve自选编队
117 teamIndex = {"table", {}}, -- 各个系统使用的编队索引 type->index 见TeamSystemType 117 teamIndex = {"table", {}}, -- 各个系统使用的编队索引 type->index 见TeamSystemType
118 advTeams = {"table", {}}, -- 拾荒自选编队 118 advTeams = {"table", {}}, -- 拾荒自选编队
  119 + towerTeams = {"table", {}}, -- 四个电波塔的队伍
119 120
120 bonusStar = {"table", {}}, -- 奖励关卡 通关星星 {[id] = 1} 三个二进制位 表示三个星 从低到高 (1 << 0) (1 << 1) (1 << 2) 满星 (1 << 3) - 1 121 bonusStar = {"table", {}}, -- 奖励关卡 通关星星 {[id] = 1} 三个二进制位 表示三个星 从低到高 (1 << 0) (1 << 1) (1 << 2) 满星 (1 << 3) - 1
121 122
@@ -147,7 +148,8 @@ Role.schema = { @@ -147,7 +148,8 @@ Role.schema = {
147 148
148 boxL = {"table", {}}, -- boxList 正开启的箱子 -- {[1] = {id = 1010, gem = 101, time = 1313}} 149 boxL = {"table", {}}, -- boxList 正开启的箱子 -- {[1] = {id = 1010, gem = 101, time = 1313}}
149 150
150 - towerInfo = {"table", {c = globalCsv.tower_count_limit, l = 1}}, -- 当天爬塔消耗的次数 -- {t = time, c = count, l = layer, k = battleKey} 151 + towerInfo = {"table", {c = globalCsv.tower_count_limit, l = 1, l1 = 10001, l2 = 20001, l3 = 30001}}, -- 当天爬塔消耗的次数 -- {t = time, c = count, l = layer, k = battleKey}
  152 + towerBnous = {"table", {}}, -- 电波塔加成 {[1] = {[1] = 1, [2] = 1}, [2] = {}, [3] = {}, [4] = {}}
151 153
152 spTask = {"table", {}}, -- 特殊任务 -- {id = status} 154 spTask = {"table", {}}, -- 特殊任务 -- {id = status}
153 155
@@ -369,6 +371,7 @@ function Role:data() @@ -369,6 +371,7 @@ function Role:data()
369 hangTeams = self:getProperty("hangTeams"), 371 hangTeams = self:getProperty("hangTeams"),
370 teamIndex = self:getProperty("teamIndex"), 372 teamIndex = self:getProperty("teamIndex"),
371 advTeams = self:getProperty("advTeams"), 373 advTeams = self:getProperty("advTeams"),
  374 + towerTeams = self:getProperty("towerTeams"),
372 375
373 bonusStar = self:getProperty("bonusStar"), 376 bonusStar = self:getProperty("bonusStar"),
374 377
@@ -386,6 +389,7 @@ function Role:data() @@ -386,6 +389,7 @@ function Role:data()
386 equips = self:getProperty("equips"), 389 equips = self:getProperty("equips"),
387 boxL = self:getProperty("boxL"), 390 boxL = self:getProperty("boxL"),
388 towerInfo = self:getProperty("towerInfo"), 391 towerInfo = self:getProperty("towerInfo"),
  392 + towerBnous = self:getProperty("towerBnous"),
389 spTask = self:getProperty("spTask"), 393 spTask = self:getProperty("spTask"),
390 dTask = self:getProperty("dTask"), 394 dTask = self:getProperty("dTask"),
391 wTask = self:getProperty("wTask"), 395 wTask = self:getProperty("wTask"),
src/models/RoleBattle.lua
@@ -104,7 +104,7 @@ function Role:checkBattleCheat(battleType, params) @@ -104,7 +104,7 @@ function Role:checkBattleCheat(battleType, params)
104 -- enemyServer = packBattleEnemyCommon(carbonData) 104 -- enemyServer = packBattleEnemyCommon(carbonData)
105 end 105 end
106 cheat["tower"] = function() 106 cheat["tower"] = function()
107 - local team = self:getTeamBattleInfo(self:getTeamFormatByType(TeamSystemType.Tower)) 107 + local team = self:getTeamBattleInfo(self:getTowerTeamFormat(params.tower))
108 for slot, hero in pairs(team.heros) do 108 for slot, hero in pairs(team.heros) do
109 local temp = {} 109 local temp = {}
110 for arr, _ in pairs(checkCheatAttrs) do 110 for arr, _ in pairs(checkCheatAttrs) do
@@ -198,7 +198,7 @@ function Role:checkBattle(battleType, params) @@ -198,7 +198,7 @@ function Role:checkBattle(battleType, params)
198 end 198 end
199 end, 199 end,
200 tower = function() 200 tower = function()
201 - local towerF = self:getTeamFormatByType(TeamSystemType.Tower) 201 + local towerF = self:getTowerTeamFormat(params.tower)
202 for slot, hero in pairs(self:getTeamHerosInfo(towerF).heros) do 202 for slot, hero in pairs(self:getTeamHerosInfo(towerF).heros) do
203 selflist[slot] = hero.type 203 selflist[slot] = hero.type
204 end 204 end
src/models/RoleLog.lua
@@ -57,6 +57,7 @@ local ItemReason = { @@ -57,6 +57,7 @@ local ItemReason = {
57 actBuyBpLevel = 141, -- 购买活动战令等级 57 actBuyBpLevel = 141, -- 购买活动战令等级
58 newSign = 142,-- 新的活动签到 58 newSign = 142,-- 新的活动签到
59 advLevelStage = 143, -- 拾荒活动阶段奖励 59 advLevelStage = 143, -- 拾荒活动阶段奖励
  60 + towerBnous = 144, -- 爬塔到一定层数对某些功能的奖励
60 61
61 62
62 advHang = 301, -- 拾荒挂机 63 advHang = 301, -- 拾荒挂机
src/models/RolePlugin.lua
@@ -312,7 +312,6 @@ function RolePlugin.bind(Role) @@ -312,7 +312,6 @@ function RolePlugin.bind(Role)
312 end 312 end
313 313
314 function Role:addPotion(params) 314 function Role:addPotion(params)
315 - dump(params)  
316 local pId = globalCsv.adv_item_potion[params.id] 315 local pId = globalCsv.adv_item_potion[params.id]
317 local potionBag = self:getProperty("potionBag") 316 local potionBag = self:getProperty("potionBag")
318 local origin = potionBag[pId] or 0 317 local origin = potionBag[pId] or 0
@@ -1285,11 +1284,21 @@ function RolePlugin.bind(Role) @@ -1285,11 +1284,21 @@ function RolePlugin.bind(Role)
1285 end 1284 end
1286 1285
1287 local StdTowerRankTime = toUnixtime("2019010100") 1286 local StdTowerRankTime = toUnixtime("2019010100")
1288 - function Role:setTowerRank(level) 1287 + local TowerRankInfo = {
  1288 + [1] = {rank = RANK_TOWER, rankInfo = RANK_TOWER_INFO},
  1289 + [2] = {rank = RANK_TOWER1, rankInfo = RANK_TOWER1_INFO},
  1290 + [3] = {rank = RANK_TOWER2, rankInfo = RANK_TOWER2_INFO},
  1291 + [4] = {rank = RANK_TOWER3, rankInfo = RANK_TOWER3_INFO},
  1292 + }
  1293 + function Role:setTowerRank(level,tType)
  1294 + tType = tType or 1
1289 local now = skynet.timex() 1295 local now = skynet.timex()
1290 local ct = math.ceil((now - StdTowerRankTime) / 86400) --按天计算 365 * 27 < 10000 可以维持 27 年 1296 local ct = math.ceil((now - StdTowerRankTime) / 86400) --按天计算 365 * 27 < 10000 可以维持 27 年
1291 local ct = 10000 - ct -- 越早的排名越靠前 1297 local ct = 10000 - ct -- 越早的排名越靠前
1292 - local towerTeam = self:getTeamFormatByType(TeamSystemType.Tower) 1298 +
  1299 +
  1300 + local info = TowerRankInfo[tType]
  1301 + local towerTeam = self:getTowerTeamFormat(tostring(tType))
1293 local battleV = self:getTeamBattleValue(towerTeam.heros) 1302 local battleV = self:getTeamBattleValue(towerTeam.heros)
1294 local score = (level * 10000 + ct) * 10000000 + battleV 1303 local score = (level * 10000 + ct) * 10000000 + battleV
1295 1304
@@ -1303,21 +1312,23 @@ function RolePlugin.bind(Role) @@ -1303,21 +1312,23 @@ function RolePlugin.bind(Role)
1303 } 1312 }
1304 local roleId = self:getProperty("id") 1313 local roleId = self:getProperty("id")
1305 redisproxy:pipelining(function (red) 1314 redisproxy:pipelining(function (red)
1306 - red:zadd(RANK_TOWER, score, roleId) --更新分数  
1307 - red:hset(RANK_TOWER_INFO, roleId, MsgPack.pack(curInfo)) 1315 + red:zadd(info.rank, score, roleId) --更新分数
  1316 + red:hset(info.rankInfo, roleId, MsgPack.pack(curInfo))
1308 end) 1317 end)
1309 end 1318 end
1310 1319
1311 - function Role:getTowerRank() 1320 + function Role:getTowerRank(tType)
  1321 + tType = tType or 1
  1322 + local info = TowerRankInfo[tType]
1312 local list = {} 1323 local list = {}
1313 - local ids = redisproxy:zrevrange(RANK_TOWER, 0 , 99) 1324 + local ids = redisproxy:zrevrange(info.rank, 0 , 99)
1314 local redret = {} 1325 local redret = {}
1315 if ids and next(ids) then 1326 if ids and next(ids) then
1316 redret = redisproxy:pipelining(function (red) 1327 redret = redisproxy:pipelining(function (red)
1317 for i = 1, #ids do 1328 for i = 1, #ids do
1318 local roleId = ids[i] 1329 local roleId = ids[i]
1319 table.insert(list, {roleId = tonumber(roleId)}) 1330 table.insert(list, {roleId = tonumber(roleId)})
1320 - red:hget(RANK_TOWER_INFO, roleId) 1331 + red:hget(info.rankInfo, roleId)
1321 end 1332 end
1322 end) 1333 end)
1323 end 1334 end
@@ -1326,7 +1337,7 @@ function RolePlugin.bind(Role) @@ -1326,7 +1337,7 @@ function RolePlugin.bind(Role)
1326 player.format = nil 1337 player.format = nil
1327 list[i].player = player 1338 list[i].player = player
1328 end 1339 end
1329 - local rank = redisproxy:ZREVRANK(RANK_TOWER, self:getProperty("id")) 1340 + local rank = redisproxy:ZREVRANK(info.rank, self:getProperty("id"))
1330 if not rank then 1341 if not rank then
1331 rank = -1 1342 rank = -1
1332 else 1343 else
@@ -1335,8 +1346,10 @@ function RolePlugin.bind(Role) @@ -1335,8 +1346,10 @@ function RolePlugin.bind(Role)
1335 return {list = list, rank = rank} 1346 return {list = list, rank = rank}
1336 end 1347 end
1337 1348
1338 - function Role:getTowerRankOneInfo(roleId)  
1339 - local data = redisproxy:hget(RANK_TOWER_INFO, roleId) 1349 + function Role:getTowerRankOneInfo(roleId,tType)
  1350 + tType = tType or 1
  1351 + local info = TowerRankInfo[tType]
  1352 + local data = redisproxy:hget(info.rankInfo, roleId)
1340 if data then 1353 if data then
1341 local player = MsgPack.unpack(data) 1354 local player = MsgPack.unpack(data)
1342 return player.format 1355 return player.format
@@ -1556,6 +1569,19 @@ function RolePlugin.bind(Role) @@ -1556,6 +1569,19 @@ function RolePlugin.bind(Role)
1556 }) 1569 })
1557 end 1570 end
1558 1571
  1572 + -- 设置电波塔阵容
  1573 + function Role:getTowerTeamFormat(teamIdx)
  1574 + local teams = self:getProperty("towerTeams") or {}
  1575 + local team = teams[tostring(teamIdx)] or {}
  1576 + return team
  1577 + end
  1578 +
  1579 + function Role:setTowerTeamFormat(teamIdx, team)
  1580 + local teams = self:getProperty("towerTeams") or {}
  1581 + teams[tostring(teamIdx)] = team
  1582 + self:updateProperty({field = "towerTeams", value = teams, notNotify = false})
  1583 + end
  1584 +
1559 -- update 1585 -- update
1560 function Role:onRecoverTimer(now) 1586 function Role:onRecoverTimer(now)
1561 self:updateTimeReset(now, true) 1587 self:updateTimeReset(now, true)
@@ -2264,6 +2290,110 @@ function RolePlugin.bind(Role) @@ -2264,6 +2290,110 @@ function RolePlugin.bind(Role)
2264 end 2290 end
2265 return result.data.content 2291 return result.data.content
2266 end 2292 end
  2293 +
  2294 + function Role:getTowerBnousActive(update)
  2295 + if not update and self.towerBnousActive then
  2296 + return self.towerBnousActive
  2297 + end
  2298 + local towerInfo = self:getProperty("towerInfo")
  2299 + local towerLevel = {towerInfo.l or 1, towerInfo.l1 or 10001, towerInfo.l2 or 20001, towerInfo.l3 or 30001}
  2300 + local towerBnous = self:getProperty("towerBnous")
  2301 + local bnousCsv = csvdb["tower_battle_additionCsv"]
  2302 + self.towerBnousActive = {}
  2303 +
  2304 + for towerIdx, Set in pairs(towerBnous) do
  2305 + for id, _ in pairs(Set) do
  2306 + local data = bnousCsv[towerIdx][id]
  2307 + if data then
  2308 + local effects = data.effect:toTableArraySec()
  2309 + for _, effect in pairs(effects) do
  2310 + local pm1, pm2, pm3, pm4 = tonumber(effect[1]), tonumber(effect[2]), tonumber(effect[3]), tonumber(effect[4])
  2311 + if not self.towerBnousActive[pm1] then
  2312 + self.towerBnousActive[pm1] = {}
  2313 + end
  2314 + if pm1 == SystemBnousType.TowerBuff then
  2315 + if not self.towerBnousActive[pm1][pm2] then
  2316 + self.towerBnousActive[pm1][pm2] = {}
  2317 + end
  2318 + table.insert(self.towerBnousActive[pm1][pm2],pm3)
  2319 + elseif pm1 == SystemBnousType.Adv then
  2320 + if not self.towerBnousActive[pm1][pm4] then
  2321 + self.towerBnousActive[pm1][pm4] = {}
  2322 + end
  2323 + self.towerBnousActive[pm1][pm4][pm2] = (self.towerBnousActive[pm1][pm4][pm2] or 0) + pm3
  2324 + elseif pm1 == SystemBnousType.HangTime then
  2325 + if type(self.towerBnousActive[pm1]) == "table" then
  2326 + self.towerBnousActive[pm1] = 0
  2327 + end
  2328 + self.towerBnousActive[pm1] = self.towerBnousActive[pm1] + pm2
  2329 + else
  2330 + self.towerBnousActive[pm1][pm2] = (self.towerBnousActive[pm1][pm2] or 0) + pm3
  2331 + end
  2332 + end
  2333 + end
  2334 + end
  2335 + end
  2336 +
  2337 + return self.towerBnousActive
  2338 + end
  2339 +
  2340 + function Role:getDeltaValue(result, value)
  2341 + if not result then return 0 end
  2342 + local delta = 0
  2343 + if result[1] and value then
  2344 + delta = math.floor(value * result[1] / 100)
  2345 + end
  2346 + if result[0] then
  2347 + delta = delta + result[0]
  2348 + end
  2349 + return delta
  2350 + end
  2351 +
  2352 + function Role:getBnousBattleBuff()
  2353 + local towerBnous = self:getTowerBnousActive()
  2354 + return towerBnous[SystemBnousType.TowerBuff]
  2355 + end
  2356 +
  2357 + function Role:getBnousCrusade(value)
  2358 + local towerBnous = self:getTowerBnousActive()
  2359 + return self:getDeltaValue(towerBnous[SystemBnousType.CrusadeTask], value)
  2360 + end
  2361 +
  2362 + function Role:getBnousDiner(type, value)
  2363 + local towerBnous = self:getTowerBnousActive()
  2364 + type = type or 1
  2365 + local result
  2366 + if type == 1 then
  2367 + result = towerBnous[SystemBnousType.DinerGet]
  2368 + elseif type == 2 then
  2369 + result = towerBnous[SystemBnousType.DinerLimit]
  2370 + elseif type == 3 then
  2371 + result = towerBnous[SystemBnousType.DinerSell]
  2372 + elseif type == 4 then
  2373 + result = towerBnous[SystemBnousType.DinerPrice]
  2374 + end
  2375 + return self:getDeltaValue(result, value)
  2376 + end
  2377 +
  2378 + function Role:getBnousAdv()
  2379 + local towerBnous = self:getTowerBnousActive()
  2380 + return towerBnous[SystemBnousType.Adv] or {}
  2381 + end
  2382 +
  2383 + function Role:getBnousHangTime()
  2384 + local towerBnous = self:getTowerBnousActive()
  2385 + return towerBnous[SystemBnousType.HangTime] or 0
  2386 + end
  2387 +
  2388 + function Role:getBnousPvpTicket()
  2389 + local towerBnous = self:getTowerBnousActive()
  2390 + return towerBnous[SystemBnousType.PvpTicket] or {}
  2391 + end
  2392 +
  2393 + function Role:getBnousSweep()
  2394 + local towerBnous = self:getTowerBnousActive()
  2395 + return towerBnous[SystemBnousType.SweepReward] or {}
  2396 + end
2267 2397
2268 end 2398 end
2269 2399
src/models/RoleTask.lua
@@ -191,7 +191,7 @@ local AchievListener = { @@ -191,7 +191,7 @@ local AchievListener = {
191 [TaskType.OverOderTask] = {{14}}, 191 [TaskType.OverOderTask] = {{14}},
192 [TaskType.FoodSellGold] = {{15, f("count")}}, 192 [TaskType.FoodSellGold] = {{15, f("count")}},
193 [TaskType.DinerPopular] = {{16, f("count")}}, 193 [TaskType.DinerPopular] = {{16, f("count")}},
194 - [TaskType.TowerPass] = {{17, f("level")}}, 194 + [TaskType.TowerPass] = {{17, f("count"), f("type")}},
195 [TaskType.OpenBox] = {{18, f("count")}}, 195 [TaskType.OpenBox] = {{18, f("count")}},
196 [TaskType.DinerLevelUp] = {{19, f("level"), f("type")}}, 196 [TaskType.DinerLevelUp] = {{19, f("level"), f("type")}},
197 [TaskType.DinerTalentUp] = {{20, 1, f("type")}}, 197 [TaskType.DinerTalentUp] = {{20, 1, f("type")}},
@@ -249,6 +249,7 @@ local ActivityListener = { @@ -249,6 +249,7 @@ local ActivityListener = {
249 [TaskType.Pay] = {{Activity.ActivityType.PayBack, f("twd")}}, 249 [TaskType.Pay] = {{Activity.ActivityType.PayBack, f("twd")}},
250 [TaskType.AdvMineKill] = {{Activity.ActivityType.Crisis, 1}}, 250 [TaskType.AdvMineKill] = {{Activity.ActivityType.Crisis, 1}},
251 [TaskType.AdvMineLayer] = {{Activity.ActivityType.Crisis, 2}}, 251 [TaskType.AdvMineLayer] = {{Activity.ActivityType.Crisis, 2}},
  252 + [TaskType.AdvCostPower] = {{Activity.ActivityType.Crisis, 3, f("count")}},
252 [TaskType.DailyTask] = {{Activity.ActivityType.CommonSignIn, f("pre"), f("cur")}}, 253 [TaskType.DailyTask] = {{Activity.ActivityType.CommonSignIn, f("pre"), f("cur")}},
253 [TaskType.AddItem] = {{Activity.ActivityType.BattleCommand, f("id"), f("count")}}, 254 [TaskType.AddItem] = {{Activity.ActivityType.BattleCommand, f("id"), f("count")}},
254 } 255 }
@@ -492,7 +493,6 @@ function RoleTask.bind(Role) @@ -492,7 +493,6 @@ function RoleTask.bind(Role)
492 [6] = true, 493 [6] = true,
493 [7] = true, 494 [7] = true,
494 [16] = true, 495 [16] = true,
495 - [17] = true,  
496 [19] = true, 496 [19] = true,
497 [22] = true, 497 [22] = true,
498 [23] = true, 498 [23] = true,
src/models/RoleTimeReset.lua
@@ -48,6 +48,12 @@ ResetFunc[&quot;CrossWeek&quot;] = function(self, notify, response) @@ -48,6 +48,12 @@ ResetFunc[&quot;CrossWeek&quot;] = function(self, notify, response)
48 response.dinerS = {} 48 response.dinerS = {}
49 49
50 self.activity:refreshWeekData(notify) 50 self.activity:refreshWeekData(notify)
  51 +
  52 + -- 跨周送一些道具
  53 + local BnousReward = self:getBnousPvpTicket()
  54 + if next(BnousReward) then
  55 + local reward, change = self:award(BnousReward, {log = {desc = "towerBnous"}})
  56 + end
51 end 57 end
52 58
53 59