装备:淬火
This commit is contained in:
@@ -10,13 +10,14 @@ import Role from "../../../db/Role";
|
||||
import { calPlayerCeAndSave } from "../../../services/playerCeService";
|
||||
import { getGoodById, gameData } from "../../../pubUtils/data";
|
||||
import { EQUIP } from "../../../pubUtils/dicParam";
|
||||
import { ITID, SPEICAL_ITEM, QUALITY_TYPE, equipTypeToSortAttr, IT_TYPE } from "../../../consts/constModules/itemConst";
|
||||
import { changeEquip, dressEquip, checkMaterialEnough, takeOffEquipAndCalPlayerCe, checkEquipCanPut } from "../../../services/equipService";
|
||||
import { ITID, SPEICAL_ITEM, QUALITY_TYPE, equipTypeToSortAttr, IT_TYPE, QUENCH_TYPE } from "../../../consts";
|
||||
import { changeEquip, dressEquip, checkMaterialEnough, takeOffEquipAndCalPlayerCe, checkEquipCanPut, quenchOnce, checkQuenchMaxByQualityAndGrade } from "../../../services/equipService";
|
||||
|
||||
import { findIndex } from 'underscore';
|
||||
import { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService";
|
||||
import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkTaskConditionEquipSuitJewelStage, checkActivityTask } from "../../../services/taskService";
|
||||
import { Attribute } from "../../../domain/roleField/attribute";
|
||||
import { QuenchLogParam } from "../../../domain/roleField/equip";
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -459,6 +460,58 @@ export class EquipHandler {
|
||||
|
||||
}
|
||||
|
||||
|
||||
// 淬火
|
||||
public async quench(msg: { eid: number, type: QUENCH_TYPE }, session: BackendSession) {
|
||||
let roleId: string = session.get('roleId');
|
||||
// let roleName: string = session.get('roleName');
|
||||
let sid: string = session.get('sid');
|
||||
let funcs: number[] = session.get('funcs');
|
||||
|
||||
let { eid, type } = msg;
|
||||
let equip = await EquipModel.findbySeqId(eid);
|
||||
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
|
||||
|
||||
let { id, randMain, grade, hid, ePlaceId } = equip;
|
||||
|
||||
let dicGoods = gameData.goods.get(id);
|
||||
if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
let dicQuench = gameData.quench.get(grade);
|
||||
if (!dicQuench) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
||||
|
||||
let logs: QuenchLogParam[] = [], times = 0;
|
||||
while(
|
||||
(type == QUENCH_TYPE.ONCE && times < 1 && !checkQuenchMaxByQualityAndGrade(dicGoods.quality, 0, randMain)) || // 淬火一次,保证不超出该品质上限
|
||||
(type == QUENCH_TYPE.ONE_GRADE && !checkQuenchMaxByQualityAndGrade(dicGoods.quality, grade, randMain)) // 淬火一品,在品相上限内淬火
|
||||
) {
|
||||
let result = await quenchOnce(roleId, sid, randMain, dicQuench, dicGoods);
|
||||
if(!result) break;
|
||||
result.log.setTimes(++times);
|
||||
logs.push(result.log);
|
||||
grade = result.grade;
|
||||
randMain = result.randMain;
|
||||
}
|
||||
|
||||
if (times == 0) return resResult(STATUS.EQUIP_QUENCH_ERR);
|
||||
|
||||
let equipResult = await EquipModel.updateEquipInfo(eid, { randMain, grade })
|
||||
let curEquip = {
|
||||
seqId: equipResult.seqId,
|
||||
id: equipResult.id,
|
||||
randMain: equipResult.randMain,
|
||||
grade: equipResult.grade,
|
||||
}
|
||||
|
||||
// 更新战力
|
||||
if(hid > 0) { // 装备中的时候
|
||||
const hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId);
|
||||
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { });
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { logs, curEquip });
|
||||
|
||||
}
|
||||
|
||||
//分解装备
|
||||
public async decomposeEquip(msg: { originalEquip: Array<number> }, session: BackendSession) {
|
||||
let { originalEquip } = msg;
|
||||
|
||||
Reference in New Issue
Block a user