diff --git a/game-server/app/servers/battle/handler/towerBattleHandler.ts b/game-server/app/servers/battle/handler/towerBattleHandler.ts index d2eb9f7d7..be28c9797 100644 --- a/game-server/app/servers/battle/handler/towerBattleHandler.ts +++ b/game-server/app/servers/battle/handler/towerBattleHandler.ts @@ -42,6 +42,9 @@ export class TowerBattleHandler { // return { code: 201, data: '天梯记录异常' }; } const data = { + canHungUp: towerLv >= HANG_UP_CONSTS.ENABLE_LV, + hungUpEnableLv: HANG_UP_CONSTS.ENABLE_LV, + canSendTask: true, curLv: towerLv, usedHeroes: towerRec.heroes, progress: towerRec.warStatus @@ -74,7 +77,15 @@ export class TowerBattleHandler { return result.resResult } let {timeReward, startTime, deltaTime} = result.data; - return resResult(STATUS.SUCCESS, {startTime, hangUpPassTime: deltaTime, rewards: timeReward.map(cur => {return {id: cur.gid, count: cur.count}})}); + let {hangUpSpdUpCnt, lastSpdUpTime} = await RoleModel.findByRoleId(roleId); + let curTime = new Date(); + if (!lastSpdUpTime || (shouldRefresh(lastSpdUpTime, curTime, HANG_UP_CONSTS.REFRESH_TIME, 1) && hangUpSpdUpCnt <= HANG_UP_CONSTS.MAX_SPD_UP_CNT)) { + hangUpSpdUpCnt = HANG_UP_CONSTS.MAX_SPD_UP_CNT; + } + let num = HANG_UP_CONSTS.MAX_SPD_UP_CNT - hangUpSpdUpCnt + 1; + let nextCostGold = calculateNum(GOLD_COST_RATIO.TOWER_HANG_SPDUP, {num}, 50); + + return resResult(STATUS.SUCCESS, {startTime, hangUpPassTime: Math.floor(deltaTime/1000), hangUpSpdUpCnt, nextCostGold, rewards: timeReward.map(cur => {return {id: cur.gid, count: cur.count}})}); } async recHangUpRewards(msg: {}, session: BackendSession) { @@ -89,7 +100,7 @@ export class TowerBattleHandler { const goods = await handleReward(roleId, roleName, timeReward); await HangUpRecordModel.updateRec(roleId, roleName, endLv, endTime, needReceiveGoods); - return resResult(STATUS.SUCCESS, { endTime, hangUpPassTime: deltaTime%HANG_UP_CONSTS.MAX_TIME, ...goods }); + return resResult(STATUS.SUCCESS, { endTime, hangUpPassTime: Math.floor((deltaTime%HANG_UP_CONSTS.MAX_TIME)/1000), ...goods }); } async hangUpSpeedUp(msg: {speedUpCnt: number}, session: BackendSession) { @@ -121,7 +132,11 @@ export class TowerBattleHandler { } const spdUpRec = await HangUpSpdUpRecModel.updateRec(roleId, roleName, msg.speedUpCnt, endLv, needReceiveGoods); const goods = await handleReward(roleId, roleName, timeReward); - return resResult(STATUS.SUCCESS, { ...goods, hangUpPassTime: deltaTime, rewardLv: endLv, costGold }); + hangUpSpdUpCnt -= msg.speedUpCnt; + let num = HANG_UP_CONSTS.MAX_SPD_UP_CNT - hangUpSpdUpCnt + 1; + let nextCostGold = calculateNum(GOLD_COST_RATIO.TOWER_HANG_SPDUP, {num}, 50); + + return resResult(STATUS.SUCCESS, { ...goods, hangUpSpdUpCnt, nextCostGold, hangUpPassTime: Math.floor(deltaTime/1000), rewardLv: endLv, costGold }); } getHangUpCost(originCnt: number, count: number) { @@ -280,7 +295,7 @@ export class TowerBattleHandler { async getTowerRank(msg: {}, session: BackendSession) { let ranks = await RoleModel.getRank('tower', ['roleId', 'roleName', 'towerLv', 'lv', 'vLv']); - - return resResult(STATUS.SUCCESS, { ranks }); + + return resResult(STATUS.SUCCESS, { ranks: ranks.map((cur, index) => { return {rank: index+1, ...cur} }) }); } } diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index 3c83c7006..880000f94 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -10,9 +10,7 @@ import { decodeArrayStr, shouldRefresh, resResult, decodeStr, cal, getRandomWith import { handleFixedReward } from './rewardService'; import { STATUS } from '../consts/statusCode'; import { HangUpSpdUpRecModel } from '../db/HangUpSpdUpRec'; -import TowerTaskRec, { TowerTaskRecModel } from '../db/TowerTaskRec'; -import { PvpDefenseModel } from '../db/PvpDefense'; -import { Document } from 'mongoose'; +import { TowerTaskRecModel } from '../db/TowerTaskRec'; export async function checkTowerWar(roleId: string, battleId: number, heroes: Array) { const battleIdStr = `${battleId}`; @@ -83,7 +81,7 @@ export async function towerBattleEnd(channelService: ChannelService, sid: string let result = await handleFixedReward(roleId, roleName, reward, 1); towerReward = result.goods; } - if (towerLv + 1 >= HANG_UP_CONSTS.ENABLE_LV) { + if (towerLv + 1 == HANG_UP_CONSTS.ENABLE_LV) { await startHangUp(roleId, roleName); channelService.pushMessageByUids('hangUpEnable', {code: 200, data: {enable: true}}, [{uid: roleId, sid}]); } diff --git a/shared/resource/jsons/dic_zyz_search.json b/shared/resource/jsons/dic_zyz_search.json index 51c38b65d..533d1f466 100644 --- a/shared/resource/jsons/dic_zyz_search.json +++ b/shared/resource/jsons/dic_zyz_search.json @@ -5,7 +5,7 @@ "quality": 1, "reward": "31001&50|31002&100", "additionalReward": "10201&5|10202&10", - "termsForAdd": "1&2&2|2&2&1|3&1&1", + "termsForAdd": "1&8&2|2&2&1|3&1&1", "actorNeeded": 2, "completeTime": 60, "suitFloor": "1&", @@ -53,7 +53,7 @@ "quality": 2, "reward": "17007&50|17008&100", "additionalReward": "10501&5|10502&10", - "termsForAdd": "1&1&1|2&4&1|3&5&1", + "termsForAdd": "1&9&1|2&4&1|3&5&1", "actorNeeded": 2, "completeTime": 60, "suitFloor": "1&", @@ -92,7 +92,7 @@ "termsForAdd": "3&8&2", "actorNeeded": 3, "completeTime": 60, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -104,7 +104,7 @@ "termsForAdd": "1&1&1|2&1&1|3&1&1", "actorNeeded": 3, "completeTime": 60, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -116,7 +116,7 @@ "termsForAdd": "1&2&1|2&2&1|3&2&1", "actorNeeded": 3, "completeTime": 120, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -125,10 +125,10 @@ "quality": 4, "reward": "10105&50|10201&100", "additionalReward": "10703&5|10704&10", - "termsForAdd": "1&1&1|2&3&1|3&3&1", + "termsForAdd": "1&3&1|2&3&1|3&3&1", "actorNeeded": 3, "completeTime": 120, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -137,10 +137,10 @@ "quality": 4, "reward": "10202&50|10203&100", "additionalReward": "10705&5|12001&10", - "termsForAdd": "1&2&1|2&4&1|3&4&1", + "termsForAdd": "1&4&1|2&4&1|3&4&1", "actorNeeded": 3, "completeTime": 120, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -149,10 +149,10 @@ "quality": 5, "reward": "10204&50|10205&100", "additionalReward": "12002&5|12003&10", - "termsForAdd": "1&1&1|2&1&1|3&5&1", + "termsForAdd": "1&5&1|2&1&1|3&5&1", "actorNeeded": 3, "completeTime": 120, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -161,10 +161,10 @@ "quality": 5, "reward": "10301&50|10302&100", "additionalReward": "12004&5|12005&10", - "termsForAdd": "1&2&1|2&2&1|3&6&1", + "termsForAdd": "1&6&1|2&2&1|3&6&1", "actorNeeded": 3, "completeTime": 120, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 }, { @@ -173,10 +173,10 @@ "quality": 5, "reward": "10303&50|10304&100", "additionalReward": "12006&5|12007&10", - "termsForAdd": "1&1&1|2&3&1|3&7&1", + "termsForAdd": "1&7&1|2&3&1|3&7&1", "actorNeeded": 3, "completeTime": 120, - "suitFloor": "10&", + "suitFloor": "5&", "weight": 1 } ] \ No newline at end of file