镇念塔:消耗使用系统参数表

This commit is contained in:
luying
2021-08-17 20:24:21 +08:00
parent 4c2cc5ead3
commit e3c54fe354
4 changed files with 29 additions and 25 deletions

View File

@@ -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 });
}
}

View File

@@ -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<number, TowerTaskRecType> (); // 需要创建或更新
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;
}

View File

@@ -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 // 每天加点刷新
}

View File

@@ -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 } // 秘境购买次数花费
}