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