装备:升品
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user