装备:升品

This commit is contained in:
luying
2022-02-16 10:05:12 +08:00
parent f25d44e391
commit db31f3344f
12 changed files with 4187 additions and 50722 deletions
@@ -8,7 +8,7 @@ import { EquipModel, EquipType } from "../../../db/Equip";
import { HeroModel, EPlace, HeroType } from "../../../db/Hero";
import Role from "../../../db/Role";
import { calPlayerCeAndSave } from "../../../services/playerCeService";
import { getGoodById, gameData, getEquipByJobClassAndEPlace } from "../../../pubUtils/data";
import { getGoodById, gameData, getEquipByJobClassAndEPlace, getNextEquipQuality, getEquipQualityIdByEquipIdAndPoint } from "../../../pubUtils/data";
import { BAG, EQUIP } from "../../../pubUtils/dicParam";
import { ITID, QUALITY_TYPE, equipTypeToSortAttr, IT_TYPE, QUENCH_TYPE, REFINE_TYPE } from "../../../consts";
import { checkMaterialEnough, checkEquipCanPut, quenchOnce, checkQuenchMaxByQualityAndGrade, getRandSeResult, refineOnce, checkRefineReachNextLv, calEquipCe, updateEplace, updateEplaces } from "../../../services/equipService";
@@ -106,6 +106,58 @@ export class EquipHandler {
}
// 装备升品
public async qualityUp(msg: { hid: number, eplaceId: number, isOneClick: boolean }, session: BackendSession) {
let roleId: string = session.get('roleId');
// let roleName: string = session.get('roleName');
const serverId = session.get('serverId');
let sid: string = session.get('sid');
let { hid, eplaceId, isOneClick } = msg;
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if (!hero) return resResult(STATUS.HERO_NOT_FIND);
let curEquip = hero.ePlace?.find(cur => cur.id == eplaceId);
if(!curEquip) return resResult(STATUS.EQUIP_NOT_FIND);
let nextEquipQuality = getNextEquipQuality(curEquip.equipId, curEquip.quality, curEquip.qualityStage);
if(!nextEquipQuality) return resResult(STATUS.EQUIP_QUALITY_MAX);
let update = {
quality: curEquip.quality,
qualityStage: curEquip.qualityStage,
}
let check = new CheckMeterial(roleId);
if(isOneClick) {
while(nextEquipQuality) {
let isEnough = await check.decrease(nextEquipQuality.consume);
if(!isEnough) break; // 消耗不足
update.qualityStage++;
nextEquipQuality = getNextEquipQuality(curEquip.equipId, update.quality, update.qualityStage)
}
} else {
let isEnough = await check.decrease(nextEquipQuality.consume);
if(isEnough) {
update.quality = nextEquipQuality.quality;
update.qualityStage = nextEquipQuality.point;
}
}
if(update.quality == curEquip.quality && update.qualityStage == curEquip.qualityStage) {
return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
}
let { newEplace, updatedEplace } = updateEplace(hero.ePlace, eplaceId, update);
hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_QUALITY, sid, roleId, hero, { ePlace: newEplace }, [eplaceId]);
// TODO 任务
const curHero = {
hid,
ePlace: updatedEplace
}
return resResult(STATUS.SUCCESS, { curHero });
}
// 装备栏一键强化至相应等级
public async strengthenAll(msg: { hid: number, lv: number }, session: BackendSession) {