🐞 fix(gm): 武将装备补全

This commit is contained in:
dingchaolin
2023-02-23 20:55:02 +08:00
parent c3d86076ec
commit cc39eaf2c1

View File

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