From 17cfeec11ad36a15bbb2d71aa5086cc86a41e5ab Mon Sep 17 00:00:00 2001 From: luying Date: Thu, 5 May 2022 13:05:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A6=E5=B0=86=EF=BC=9A=E8=A7=89=E9=86=92?= =?UTF-8?q?=E6=B6=88=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/heroHandler.ts | 21 +++++++++++++------ game-server/app/services/roleService.ts | 13 ++++++++++-- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index 903066e71..3ebcf0aa7 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -274,21 +274,30 @@ export class HeroHandler { if (!curDicHeroStar) return resResult(STATUS.DIC_DATA_NOT_FOUND); let newColorStarStage = oldColorStarStage; - let max = isOneClick ? ABI_STAGE.END : oldColorStarStage + 1; + let isWakeUp = oldColorStar == 0; let check = new CheckMeterial(roleId); - for (let i = oldColorStarStage; i < max; i++) { + if(isWakeUp) { let { fragmentNum, consume } = curDicHeroStar; let isEnough = await check.decrease([{ id: pieceId, count: fragmentNum }, ...consume]); - if(!isEnough) break; // 消耗不足 - newColorStarStage++; + if(!isEnough) { + return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + }; + } else { + let max = isOneClick ? ABI_STAGE.END : oldColorStarStage + 1; + for (let i = oldColorStarStage; i < max; i++) { + let { fragmentNum, consume } = curDicHeroStar; + let isEnough = await check.decrease([{ id: pieceId, count: fragmentNum }, ...consume]); + if(!isEnough) break; // 消耗不足 + newColorStarStage++; + } + if (newColorStarStage == oldColorStarStage) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); } - if (newColorStarStage == oldColorStarStage) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); let consumes = check.getConsume(); + console.log('&&&&&&&&7', JSON.stringify(consumes)) let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.HERO_WAKE_UP); if (!result) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - let isWakeUp = oldColorStar == 0; let isUpStar = isWakeUp || newColorStarStage == ABI_STAGE.END; let update = { diff --git a/game-server/app/services/roleService.ts b/game-server/app/services/roleService.ts index 0b0f94128..6f4658187 100644 --- a/game-server/app/services/roleService.ts +++ b/game-server/app/services/roleService.ts @@ -1,7 +1,6 @@ -import { ChannelUser } from './../domain/ChannelUser'; import { Channel, pinus } from 'pinus'; import { getRandValueByMinMax, getRandEelm, decodeIdCntArrayStr } from '../pubUtils/util'; -import { DEFAULT_HEROES, LINEUP_NUM, ROLE_SELECT, TALENT_RELATION_TYPE, TERAPH_RANDOM } from "../consts"; +import { DEFAULT_HEROES, LINEUP_NUM, ROLE_SELECT, TALENT_RELATION_TYPE, TERAPH_RANDOM, SYSTEM_OPEN_ID, GuideUnloadNum } from "../consts"; import { DicTeraph } from '../pubUtils/dictionary/DicTeraph'; import { Teraph, RoleModel, RoleType, RoleUpdate } from '../db/Role'; import { SCHOOL } from '../pubUtils/dicParam'; @@ -244,3 +243,13 @@ export function initSkinTalent(skins: HeroSkin[], isAll = false) { } return newSkins } + +export function checkSystemIsOpen(role: RoleType, id: SYSTEM_OPEN_ID) { + if(!role || !role.hasInit || !role.guide) return false; + + let dicSystemOpenTime = gameData.sysOpenTime.get(id); + if(!dicSystemOpenTime) return false; + + let guideId = dicSystemOpenTime.warId > 0? GuideUnloadNum.GkNewFuncNum + dicSystemOpenTime.warId: GuideUnloadNum.LvUpNum + dicSystemOpenTime.lv; + return role.guide.indexOf(guideId) != -1; +} \ No newline at end of file