装备:洗练修改

This commit is contained in:
luying
2021-07-30 11:42:23 +08:00
parent 07d63c61e1
commit e61d0d844c
3 changed files with 73 additions and 47 deletions

View File

@@ -13,7 +13,7 @@ import { EQUIP } from "../../../pubUtils/dicParam";
import { ITID, QUALITY_TYPE, equipTypeToSortAttr, IT_TYPE, QUENCH_TYPE, REFINE_TYPE } from "../../../consts";
import { changeEquip, dressEquip, checkMaterialEnough, takeOffEquipAndCalPlayerCe, checkEquipCanPut, quenchOnce, checkQuenchMaxByQualityAndGrade, getRandSeResult, refineOnce, checkRefineReachNextLv } from "../../../services/equipService";
import { findIndex } from 'underscore';
import { findIndex, pick } 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";
@@ -365,20 +365,50 @@ export class EquipHandler {
// 装备洗炼预览
public async previewStrengthen(msg: { eid: number }, session: BackendSession) {
let roleId: string = session.get('roleId');
// let roleName: string = session.get('roleName');
let sid: string = session.get('sid');
let { eid } = msg;
let equip = await EquipModel.findbySeqId(eid);
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
let { id, randSe } = equip;
if (!randSe || randSe.length <= 0) {
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
let { id, randSe, previewRandSe } = equip;
if(previewRandSe.length <= 0) {
if (!randSe || randSe.length <= 0) {
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
}
let previewRandSe = getRandSeResult(id, randSe);
if(!previewRandSe) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let lockNum = randSe.reduce((pre, cur) => {
return cur.locked? pre + 1: pre;
}, 0);
if (lockNum >= randSe.length) {
return resResult(STATUS.ROLE_EQUIP_CANNOT_RESTRENGTHEN);
}
// 消耗
let consumes: Array<{ id: number, count: number }> = [];
if (lockNum == 0) {
consumes = parseGoodStr(EQUIP.EQUIP_ONE_REFORGED);
} else if (lockNum == 1) {
consumes = parseGoodStr(EQUIP.EQUIP_TWO_REFORGED);
} else if (lockNum == 2) {
consumes = parseGoodStr(EQUIP.EQUIP_THREE_REFORGED);
} else {
consumes = parseGoodStr(EQUIP.EQUIP_FOUR_REFORGED);
}
let result = await handleCost(roleId, sid, consumes);
if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
equip = await EquipModel.updateEquipInfo(eid, { previewRandSe });
}
let previewRandSe = getRandSeResult(id, randSe);
if(!previewRandSe) return resResult(STATUS.DIC_DATA_NOT_FOUND);
await EquipModel.updateEquipInfo(eid, { previewRandSe });
return resResult(STATUS.SUCCESS, { randSe: previewRandSe });
return resResult(STATUS.SUCCESS, { curEquip: pick(equip, ['seqId', 'id', 'randSe', 'previewRandSe']) });
}
@@ -390,51 +420,23 @@ export class EquipHandler {
let funcs: number[] = session.get('funcs');
let { eid } = msg;
let equip = await EquipModel.findbySeqId(eid, '+previewRandSe');
let equip = await EquipModel.findbySeqId(eid);
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
let { id, randSe, hid, ePlaceId, previewRandSe } = equip;
let { randSe, hid, ePlaceId, previewRandSe } = equip;
if (!randSe || randSe.length <= 0) {
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
}
if(previewRandSe) { // 预览过
randSe = previewRandSe;
} else { // 没有预览数值,直接洗练
let randResult = getRandSeResult(id, randSe);
if(!randResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
randSe = randResult;
if(!previewRandSe) { // 预览过
return resResult(STATUS.EQUIP_RESTRENGTHEN_NOT_PREVIEW);
}
let { lockNum, removeSeidList } = randSe.reduce((pre, cur) => {
return { lockNum: cur.locked?pre.lockNum+1: pre.lockNum, removeSeidList: [...pre.removeSeidList, cur.seid] }
}, { lockNum: 0, removeSeidList: new Array<number>() });
let removeSeidList = randSe.reduce((pre, cur) => {
return [...pre, cur.seid];
}, <number[]>[]);
if (lockNum >= randSe.length) {
return resResult(STATUS.ROLE_EQUIP_CANNOT_RESTRENGTHEN);
}
// 消耗
let consumes: Array<{ id: number, count: number }> = [];
if (lockNum == 0) {
consumes = parseGoodStr(EQUIP.EQUIP_ONE_REFORGED);
} else if (lockNum == 1) {
consumes = parseGoodStr(EQUIP.EQUIP_TWO_REFORGED);
} else if (lockNum == 2) {
consumes = parseGoodStr(EQUIP.EQUIP_THREE_REFORGED);
} else {
consumes = parseGoodStr(EQUIP.EQUIP_FOUR_REFORGED);
}
let result = await handleCost(roleId, sid, consumes);
if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let equipResult = await EquipModel.updateEquipInfo(eid, { randSe, previewRandSe: [] })
let curEquip = {
seqId: equipResult.seqId,
id: equipResult.id,
randSe: equipResult.randSe
}
let equipResult = await EquipModel.updateEquipInfo(eid, { randSe: previewRandSe, previewRandSe: [] })
// 更新战力
if(hid > 0) {
@@ -443,7 +445,30 @@ export class EquipHandler {
}
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_RESTRENGTHEN, 1, true, {});
return resResult(STATUS.SUCCESS, { curEquip });
return resResult(STATUS.SUCCESS, { curEquip: pick(equipResult, ['seqId', 'id', 'randSe', 'previewRandSe']) });
}
// 放弃这条洗练
public async giveupStrengthen(msg: { eid: number }, session: BackendSession) {
let { eid } = msg;
let equip = await EquipModel.findbySeqId(eid);
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
let { randSe, previewRandSe } = equip;
if (!randSe || randSe.length <= 0) {
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
}
if(!previewRandSe) { // 没预览过
return resResult(STATUS.EQUIP_RESTRENGTHEN_NOT_PREVIEW);
}
let equipResult = await EquipModel.updateEquipInfo(eid, { previewRandSe: [] })
return resResult(STATUS.SUCCESS, { curEquip: pick(equipResult, ['seqId', 'id', 'randSe', 'previewRandSe']) });
}