🐞 fix(gm): 武将装备补全
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user