diff --git a/game-server/app/servers/battle/handler/towerBattleHandler.ts b/game-server/app/servers/battle/handler/towerBattleHandler.ts index a5e68c37f..bc049c3d4 100644 --- a/game-server/app/servers/battle/handler/towerBattleHandler.ts +++ b/game-server/app/servers/battle/handler/towerBattleHandler.ts @@ -1,5 +1,5 @@ import { STATUS } from './../../../consts/statusCode'; -import { HANG_UP_CONSTS, GOLD_COST_RATIO, TOWER_TASK_CONST, REDIS_KEY } from './../../../consts'; +import { HANG_UP_CONSTS, GOLD_COST_RATIO, REDIS_KEY } from './../../../consts'; import { TowerTaskRecModel, TowerTaskRecType } from './../../../db/TowerTaskRec'; import { HangUpSpdUpRecModel } from './../../../db/HangUpSpdUpRec'; import { HangUpRecordModel } from './../../../db/HangUpRecord'; @@ -7,13 +7,14 @@ import { RoleModel } from './../../../db/Role'; import { TowerRecordModel } from './../../../db/TowerRecord'; import { Application, BackendSession } from 'pinus'; import { resResult, shouldRefresh, calculateNum, genCode } from '../../../pubUtils/util'; -import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, refreshTasks, treatTask, getRemainTime, getDoingOrWaitingTasks, getTowerStatus, getHungupRewards, getTasks, checkTaskRewards } from '../../../services/battleService'; +import { calcuHangUpReward, checkTaskConditions, checkHangUpSpdUpCnt, refreshTasks, treatTask, getRemainTime, getDoingOrWaitingTasks, getTowerStatus, getHungupRewards, getTasks, checkTaskRewards, getTowerTaskCostGold, getTowerTaskSpdUpCostGold } from '../../../services/battleService'; import { addItems, handleCost } from '../../../services/rewardService'; import { checkBattleHeroes } from '../../../services/normalBattleService'; import { getGoldObject } from '../../../pubUtils/itemUtils'; import { Rank } from '../../../services/rankService'; import { gameData } from '../../../pubUtils/data'; import { ItemInter } from '../../../pubUtils/interface'; +import { TOWER_SEARCH } from '../../../pubUtils/dicParam'; export default function(app: Application) { return new TowerBattleHandler(app); @@ -112,7 +113,7 @@ export class TowerBattleHandler { const goods = await addItems(roleId, roleName, sid, timeReward); 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); + let nextCostGold = getTowerTaskSpdUpCostGold(num); return resResult(STATUS.SUCCESS, { goods, hangUpSpdUpCnt, nextCostGold, hangUpPassTime: Math.floor(deltaTime/1000), rewardLv: endLv, costGold }); } @@ -122,7 +123,7 @@ export class TowerBattleHandler { for(let i = 1; i <= count; i++) { let num = HANG_UP_CONSTS.MAX_SPD_UP_CNT - originCnt + i; if(num < 0) num = i; - gold += calculateNum(GOLD_COST_RATIO.TOWER_HANG_SPDUP, {num}, 50); + gold += getTowerTaskSpdUpCostGold(num); } return gold } @@ -142,10 +143,10 @@ export class TowerBattleHandler { let roleName = session.get('roleName'); let curTime = new Date(); let { towerLv, towerTaskCnt = 0, towerTaskReCnt=0 } = await RoleModel.findByRoleId(roleId); - if(TOWER_TASK_CONST.MAX_TASK_REF_CNT <= towerTaskCnt) { // 每派遣一个任务加一,最多8个完成任务 + if(TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE <= towerTaskCnt) { // 付费刷新次数 return resResult(STATUS.TOWER_REF_CNT_NOT_ENOUGH); } - let costGold = calculateNum(GOLD_COST_RATIO.TOWER_TASK_REF, {num: towerTaskReCnt}, 50); + let costGold = getTowerTaskCostGold(towerTaskCnt + 1); let {gold} = await RoleModel.findByRoleId(roleId); if(costGold > gold) { return resResult(STATUS.TOWER_GOLD_NOT_ENOUGH); @@ -161,7 +162,7 @@ export class TowerBattleHandler { await RoleModel.increaseTowerRefCnt(roleId, 1); let refRemainTime = getRemainTime(curTime); - let nextCostGold = calculateNum(GOLD_COST_RATIO.TOWER_TASK_REF, {num: towerTaskReCnt + 1}, 50); + let nextCostGold = getTowerTaskCostGold(towerTaskReCnt + 1); return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), costGold, nextCostGold, refRemainTime}); } @@ -208,11 +209,11 @@ export class TowerBattleHandler { if (!recs || recs.length === 0) { return resResult(STATUS.TOWER_TASK_SEND_ERR); } - await RoleModel.increaseTowerCnt(roleId, tasks.length) + let role = await RoleModel.increaseTowerCnt(roleId, tasks.length) let refRemainTime = getRemainTime(curTime); curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务 - let costGold = TOWER_TASK_CONST.COST_GOLD; + let costGold = getTowerTaskCostGold(role.towerTaskCnt + 1); return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold: costGold }); } @@ -245,7 +246,8 @@ export class TowerBattleHandler { let refRemainTime = getRemainTime(curTime); let curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务 - let costGold = TOWER_TASK_CONST.COST_GOLD; + let role = await RoleModel.findByRoleId(roleId); + let costGold = getTowerTaskCostGold(role.towerTaskCnt + 1); return resResult(STATUS.SUCCESS, { curTasks: treatTask(curTasks, curTime), goods, refRemainTime, nextCostGold: costGold }); } } diff --git a/game-server/app/services/battleService.ts b/game-server/app/services/battleService.ts index 8d7c22956..f92d2a251 100644 --- a/game-server/app/services/battleService.ts +++ b/game-server/app/services/battleService.ts @@ -1,7 +1,7 @@ import { HeroModel } from './../db/Hero'; import { HangUpRecordModel } from './../db/HangUpRecord'; import { pinus } from 'pinus'; -import { HANG_UP_CONSTS, TOWER_TASK_CONST, REDIS_KEY, TASK_TYPE, TIME_OUTPUT_TYPE, GOLD_COST_RATIO, TOWER_TASK_STATUS, MAIL_TYPE } from './../consts'; +import { HANG_UP_CONSTS, REDIS_KEY, TASK_TYPE, TIME_OUTPUT_TYPE, GOLD_COST_RATIO, TOWER_TASK_STATUS, MAIL_TYPE } from './../consts'; import { BattleRecordModel } from './../db/BattleRecord'; import { TowerRecordModel } from './../db/TowerRecord'; import { RoleModel, RoleType } from './../db/Role'; @@ -18,6 +18,7 @@ import { getTimeFunM } from '../pubUtils/timeUtil'; import { ComRoleStatusHero } from '../db/ComBattleTeam'; import { sendMailByContent } from './mailService'; import { DicTowerTask } from '../pubUtils/dictionary/DicTowerTask'; +import { TOWER_SEARCH } from '../pubUtils/dicParam'; /** * 获取当前镇念塔状态 @@ -65,7 +66,7 @@ export async function getHungupRewards(roleId: string) { 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); + let nextCostGold = getTowerTaskSpdUpCostGold(num); return { status: 0, @@ -105,7 +106,7 @@ export async function getTasks(role: RoleType) { } let refRemainTime = getRemainTime(curTime); - let nextCostGold = calculateNum(GOLD_COST_RATIO.TOWER_TASK_REF, {num: towerTaskReCnt + 1}, 50); + let nextCostGold = getTowerTaskCostGold(towerTaskReCnt + 1); return {curTasks: treatTask(curTasks, curTime), refRemainTime, nextCostGold} } @@ -379,7 +380,7 @@ export async function refreshTasks(towerLv: number, batchCode: string, roleId: s let ridTaskIds: number[] = []; let positions = new Map (); // 需要创建或更新 - for(let i = 1; i <= TOWER_TASK_CONST.RAND_CNT; i++) { // TODO 改为系统参数表 + for(let i = 1; i <= TOWER_SEARCH.TOWER_SEARCH_LIMITED; i++) { positions.set(i, null); } for(let task of oldTasks) { @@ -573,3 +574,15 @@ export function transBossHpArr(source: Array<{ dataId: number, hp: number, actor }); return cloneDeep(desArr); } + +export function getTowerTaskCostGold(times: number) { + let cost = times * TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE_FEE; + if(cost > TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE_MAX) cost = TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE_MAX; + return cost; +} + +export function getTowerTaskSpdUpCostGold(times:number) { + let cost = times * TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE_FEE; // TODO 改成系统参数表 + if(cost > TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE_MAX) cost = TOWER_SEARCH.TOWER_SEARCH_REFRESHRULE_MAX; + return cost; +} \ No newline at end of file diff --git a/shared/consts/constModules/battleConst.ts b/shared/consts/constModules/battleConst.ts index b49de815e..a3da17fbd 100644 --- a/shared/consts/constModules/battleConst.ts +++ b/shared/consts/constModules/battleConst.ts @@ -87,18 +87,9 @@ export const HANG_UP_CONSTS = { UNIT_TIME: 10 * 60 * 1000, // 每几分钟能有一次收益 MAX_TIME: 24 * 60 * 60 * 1000, // 最多可储存24小时收益 MAX_SPD_UP_CNT: 2, // 每天可以收取多少次 - REFRESH_TIME: 5, // 每天的几点刷新 SPD_UP_REC_TIME: 6 * 60 * 60 * 1000 // 加速直接获得6小时收益 } -export const TOWER_TASK_CONST = { - REFRESH_TIME: 5, // 每天几点刷新 - RAND_CNT: 8, // 每次刷新多少个任务 - MAX_TASK_REF_CNT: 8, // 完成的派遣任务数最多多少个 - MAX_HEROES_NUM: 3, // 每个任务最大派遣武将数 - COST_GOLD: 50 // 每次刷新花费的元宝 -} - export const DAILY_CONST = { REFRESH_TIME: 5 // 每天加点刷新 } diff --git a/shared/consts/constModules/calcuConst.ts b/shared/consts/constModules/calcuConst.ts index f0c819380..b50a46d13 100644 --- a/shared/consts/constModules/calcuConst.ts +++ b/shared/consts/constModules/calcuConst.ts @@ -9,8 +9,6 @@ export const GONGSHI = { * 公式: A * num + B */ export const GOLD_COST_RATIO = { - "TOWER_HANG_SPDUP": { "A": 0, "B": 50 }, // 天梯挂机加速花费 - "TOWER_TASK_REF": { "A": 0, "B": 50 }, // 天梯派遣刷新花费 "DAILY_REF_NUM": { "A": 50, "B": 0 }, // 每日购买次数花费 "DUNGRON_BUY_NUM": { "A": 0, "B": 50 } // 秘境购买次数花费 }