天梯调整

This commit is contained in:
luying
2020-11-11 20:51:09 +08:00
parent 7ad1b703d3
commit 2b4fec3127
3 changed files with 37 additions and 24 deletions
@@ -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} }) });
}
}
+2 -4
View File
@@ -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<number>) {
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}]);
}