From cc39eaf2c1aef5f9a9871a0ccbd8a27aa41fda0d Mon Sep 17 00:00:00 2001 From: dingchaolin Date: Thu, 23 Feb 2023 20:55:02 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9E=20fix(gm):=20=E6=AD=A6=E5=B0=86?= =?UTF-8?q?=E8=A3=85=E5=A4=87=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/gm/handler/gmRoleHandler.ts | 69 +++++++++++++++---- 1 file changed, 56 insertions(+), 13 deletions(-) diff --git a/game-server/app/servers/gm/handler/gmRoleHandler.ts b/game-server/app/servers/gm/handler/gmRoleHandler.ts index 694a07c7c..562a5fbae 100644 --- a/game-server/app/servers/gm/handler/gmRoleHandler.ts +++ b/game-server/app/servers/gm/handler/gmRoleHandler.ts @@ -4,7 +4,7 @@ import { STATUS } from '../../../consts/statusCode'; import { getRoleOnlineInfo, updateUserInfo } from '../../../services/redisService'; import { addItems } from '../../../services/role/rewardService'; import { RewardInter } from '../../../pubUtils/interface'; -import { gameData, getExpByLv, getHeroExpByLv, getHeroLvByExp, getLvByExp } from '../../../pubUtils/data'; +import { gameData, getExpByLv, getHeroExpByLv, getHeroLvByExp, getLvByExp, getEquipByJobClassAndEPlace } from '../../../pubUtils/data'; import { RoleModel, RoleType, WarStar } from '../../../db/Role'; import { BLOCK_TYPE, DEFAULT_HEROES, GUILD_AUTH, GUILD_DISMISS_WAY, GUILD_JOB, GUILD_MASTER_CHANGE_WAY, GUILD_STATUS, GUILD_STRUCTURE, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, MAIL_TYPE, MEMORY_LOG_TYPE, PUSH_ROUTE, REDIS_KEY, TA_EVENT, WAR_TYPE } from '../../../consts'; import { GuildFormParam, SetHeroParam } from '../../../domain/backEndField/params'; @@ -139,24 +139,67 @@ export class GmRoleHandler { * 限制: * 装备等级不能超过hero等级 * maxQuality限制等级最大值: 金 最大lv 100 + * + * 装备信息: + * dic_zyz_equip.json */ const MAX_LV = 100; const MAX_STAR = 12; const MAX_QUALITY = 5; + // EPLACE_ID 分别代表4个部位 + const EPLACE_IDS = [1, 2, 3, 4]; // 装备升级、升星、升品(注意升级限制) let ePlaceIds: number[] = []; - hero.ePlace.forEach((ePlaceItem) => { - // 升级 - 最大等级100 - ePlaceItem.lv = hero.lv; // 英雄等级肯定小于MAX_LV - // 升品 - 金 - ePlaceItem.quality = MAX_QUALITY; - ePlaceItem.qualityStage = 0; - // 生星 - 最高12 - ePlaceItem.star = MAX_STAR; - ePlaceItem.starStage = 0; - ePlaceIds.push(ePlaceItem.id); - }); + // 装备未满 - 补全 - 并升至满级 + let doNotGetEPlaceIds = new Set(EPLACE_IDS); + for (let ePlaceId of EPLACE_IDS) { + hero.ePlace.forEach((ePlaceItem) => { + if (ePlaceItem.id === ePlaceId) { + doNotGetEPlaceIds.delete(ePlaceId); + // 该装备已拥有 - 升级、品、星 + // 升级 - 最大等级100 + ePlaceItem.lv = hero.lv; // 英雄等级肯定小于MAX_LV + // 升品 - 金 + ePlaceItem.quality = MAX_QUALITY; + ePlaceItem.qualityStage = 0; + // 生星 - 最高12 + ePlaceItem.star = MAX_STAR; + ePlaceItem.starStage = 0; + } + }); + } + // 装备补全 + let dicHero = gameData.hero.get(hero.skinId); + doNotGetEPlaceIds.forEach((ePlaceId) => { + let dicEquip = getEquipByJobClassAndEPlace(dicHero?.jobClass, ePlaceId); + if (dicEquip) { + hero.ePlace.push({ + lv: hero.lv, + quality: MAX_QUALITY, + qualityStage: 0, + star: MAX_STAR, + starStage: 0, + jewel: 0, + id: ePlaceId, + equipId: dicEquip.id, + stones: [ + { + id: 1, + stone: 0 + }, + { + id: 2, + stone: 0 + }, + { + id: 3, + stone: 0 + } + ] + }) + } + }) // 战力重算 let { sid } = await getRoleOnlineInfo(roleId); @@ -167,7 +210,7 @@ export class GmRoleHandler { await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_STAR, roleId, hero.serverId, sid, hid, { ePlace: hero.ePlace }, { ePlaceId: ePlaceItem.id, skinId: hero.skinId }); }); // 装备强化 - const { curHero } = await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_STRENGTH, roleId, hero.serverId, sid, hid, { ePlace: hero.ePlace }, { ePlaceIds }); + const { curHero } = await calculateCeWithHero(HERO_SYSTEM_TYPE.EQUIP_STRENGTH, roleId, hero.serverId, sid, hid, { ePlace: hero.ePlace }, { ePlaceIds: EPLACE_IDS }); // 返回强化,升星,升品后的hero数据 return resResult(STATUS.SUCCESS, { curHero }); }