武将:一键训练

This commit is contained in:
luying
2021-08-14 17:57:46 +08:00
parent 8fd9aeb25b
commit e86e51c456
2 changed files with 26 additions and 22 deletions

View File

@@ -8,7 +8,7 @@ import { CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYST
import { RoleModel } from '../../../db/Role';
import { ItemModel } from '../../../db/Item';
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById, getFavourLvByExp, reloadDicParam } from '../../../pubUtils/data';
import { RewardInter } from '../../../pubUtils/interface';
import { ItemInter, RewardInter } from '../../../pubUtils/interface';
import { getDropItems, FIGURE_UNLOCK_CONDITION } from '../../../consts/constModules/itemConst'
import { pushComposeOrangeHero, pushHeroQualityUpMsg, pushHeroStarMax, pushHeroWakeUp } from '../../../services/chatService';
import { calculatetopLineup } from '../../../pubUtils/playerCe';
@@ -396,12 +396,12 @@ export class HeroHandler {
}
//训练
async heroJobTrain(msg: { hid: number }, session: BackendSession) {
async heroJobTrain(msg: { hid: number, isOneClick: boolean }, session: BackendSession) {
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let funcs: number[] = session.get('funcs');
const serverId = session.get('serverId');
let { hid } = msg;
let { hid, isOneClick } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
@@ -413,18 +413,21 @@ export class HeroHandler {
if (hero.job >= getMaxGradeByjobClass(dicJob.job_class))
return resResult(STATUS.HERO_JOB_REACH_MAX_STAGE);
let consume = new Array<RewardInter>();
if (dicJob.trainingConsume[hero.jobStage]) {
consume.push(dicJob.trainingConsume[hero.jobStage]);
}
let result = await handleCost(roleId, sid, consume);
if (!result) {
return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH);
let newJobStage = 0;
let max = isOneClick ? dicJob.maxStage: hero.jobStage + 1;
for(let i = 0; i < max; i++) {
let singleConsume = dicJob.trainingConsume[hero.jobStage];
if(!singleConsume) break; // 每天消耗不可训练
let result = await handleCost(roleId, sid, [singleConsume]);
if (!result) break; // 材料不足
newJobStage ++;
}
if (newJobStage == 0) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
//重算战力并下发
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.TRAIN, sid, roleId, hero, {
jobStage: hero.jobStage + 1
jobStage: newJobStage
});
// 任务
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.HERO_TRAIN, hero);