装备:洗练修改

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']) });
}

View File

@@ -278,7 +278,8 @@ export const STATUS = {
EQUIP_LEVEL_LIMIT: { code: 30510, simStr: '装备穿戴等级限制' },
EQUIP_NOT_MATCH_JEWEL: { code: 30511, simStr: '装备不能镶嵌该宝石' },
EQUIP_QUENCH_ERR: { code: 30512, simStr: '该装备不能再淬火或材料不足' },
EQUIP_REFINE_ERR: { code: 30512, simStr: '该装备等级不足或材料不足' },
EQUIP_REFINE_ERR: { code: 30513, simStr: '该装备等级不足或材料不足' },
EQUIP_RESTRENGTHEN_NOT_PREVIEW: { code: 30514, simStr: '该装备未预览洗练值' },
//全局养成30600-30699
ROLE_REACH_MAX_TITLE_LEVEL: { code: 30600, simStr: '玩家已达到最高的爵位' },
ROLE_TERAPH_NOT_STRENGTHEN: { code: 30601, simStr: '玩家神像不能强化' },

View File

@@ -69,7 +69,7 @@ export default class Equip extends BaseModel {
randSe: RandSe[]; // 强化随机属性
@prop({ required: true, type: Holes, default: [], _id: false })
holes: Holes[];
@prop({ required: false, type: RandSe, default: [], _id: false, select: false })
@prop({ required: false, type: RandSe, default: [], _id: false })
previewRandSe: RandSe[]; // 强化随机属性预览