装备:淬火

This commit is contained in:
luying
2021-07-29 14:21:51 +08:00
parent dc832da60a
commit 972abb7d07
19 changed files with 805 additions and 68 deletions
@@ -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;