装备:洗练修改
This commit is contained in:
@@ -13,7 +13,7 @@ import { EQUIP } from "../../../pubUtils/dicParam";
|
|||||||
import { ITID, QUALITY_TYPE, equipTypeToSortAttr, IT_TYPE, QUENCH_TYPE, REFINE_TYPE } from "../../../consts";
|
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 { 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 { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService";
|
||||||
import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkTaskConditionEquipSuitJewelStage, checkActivityTask } from "../../../services/taskService";
|
import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkTaskConditionEquipSuitJewelStage, checkActivityTask } from "../../../services/taskService";
|
||||||
import { Attribute } from "../../../domain/roleField/attribute";
|
import { Attribute } from "../../../domain/roleField/attribute";
|
||||||
@@ -365,20 +365,50 @@ export class EquipHandler {
|
|||||||
// 装备洗炼预览
|
// 装备洗炼预览
|
||||||
public async previewStrengthen(msg: { eid: number }, session: BackendSession) {
|
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 { eid } = msg;
|
||||||
let equip = await EquipModel.findbySeqId(eid);
|
let equip = await EquipModel.findbySeqId(eid);
|
||||||
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
|
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
|
||||||
|
|
||||||
let { id, randSe } = equip;
|
let { id, randSe, previewRandSe } = equip;
|
||||||
if (!randSe || randSe.length <= 0) {
|
if(previewRandSe.length <= 0) {
|
||||||
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
|
|
||||||
|
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 funcs: number[] = session.get('funcs');
|
||||||
|
|
||||||
let { eid } = msg;
|
let { eid } = msg;
|
||||||
let equip = await EquipModel.findbySeqId(eid, '+previewRandSe');
|
let equip = await EquipModel.findbySeqId(eid);
|
||||||
if (!equip) return resResult(STATUS.EQUIP_NOT_FIND);
|
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) {
|
if (!randSe || randSe.length <= 0) {
|
||||||
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
|
return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(previewRandSe) { // 预览过
|
if(!previewRandSe) { // 没预览过
|
||||||
randSe = previewRandSe;
|
return resResult(STATUS.EQUIP_RESTRENGTHEN_NOT_PREVIEW);
|
||||||
} else { // 没有预览数值,直接洗练
|
|
||||||
let randResult = getRandSeResult(id, randSe);
|
|
||||||
if(!randResult) return resResult(STATUS.DIC_DATA_NOT_FOUND);
|
|
||||||
randSe = randResult;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let { lockNum, removeSeidList } = randSe.reduce((pre, cur) => {
|
let removeSeidList = randSe.reduce((pre, cur) => {
|
||||||
return { lockNum: cur.locked?pre.lockNum+1: pre.lockNum, removeSeidList: [...pre.removeSeidList, cur.seid] }
|
return [...pre, cur.seid];
|
||||||
}, { lockNum: 0, removeSeidList: new Array<number>() });
|
}, <number[]>[]);
|
||||||
|
|
||||||
if (lockNum >= randSe.length) {
|
let equipResult = await EquipModel.updateEquipInfo(eid, { randSe: previewRandSe, previewRandSe: [] })
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
// 更新战力
|
// 更新战力
|
||||||
if(hid > 0) {
|
if(hid > 0) {
|
||||||
@@ -443,7 +445,30 @@ export class EquipHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
await checkTask(roleId, sid, funcs, TASK_TYPE.EQUIP_RESTRENGTHEN, 1, true, {});
|
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']) });
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -278,7 +278,8 @@ export const STATUS = {
|
|||||||
EQUIP_LEVEL_LIMIT: { code: 30510, simStr: '装备穿戴等级限制' },
|
EQUIP_LEVEL_LIMIT: { code: 30510, simStr: '装备穿戴等级限制' },
|
||||||
EQUIP_NOT_MATCH_JEWEL: { code: 30511, simStr: '装备不能镶嵌该宝石' },
|
EQUIP_NOT_MATCH_JEWEL: { code: 30511, simStr: '装备不能镶嵌该宝石' },
|
||||||
EQUIP_QUENCH_ERR: { code: 30512, 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
|
//全局养成30600-30699
|
||||||
ROLE_REACH_MAX_TITLE_LEVEL: { code: 30600, simStr: '玩家已达到最高的爵位' },
|
ROLE_REACH_MAX_TITLE_LEVEL: { code: 30600, simStr: '玩家已达到最高的爵位' },
|
||||||
ROLE_TERAPH_NOT_STRENGTHEN: { code: 30601, simStr: '玩家神像不能强化' },
|
ROLE_TERAPH_NOT_STRENGTHEN: { code: 30601, simStr: '玩家神像不能强化' },
|
||||||
|
|||||||
+1
-1
@@ -69,7 +69,7 @@ export default class Equip extends BaseModel {
|
|||||||
randSe: RandSe[]; // 强化随机属性
|
randSe: RandSe[]; // 强化随机属性
|
||||||
@prop({ required: true, type: Holes, default: [], _id: false })
|
@prop({ required: true, type: Holes, default: [], _id: false })
|
||||||
holes: Holes[];
|
holes: Holes[];
|
||||||
@prop({ required: false, type: RandSe, default: [], _id: false, select: false })
|
@prop({ required: false, type: RandSe, default: [], _id: false })
|
||||||
previewRandSe: RandSe[]; // 强化随机属性预览
|
previewRandSe: RandSe[]; // 强化随机属性预览
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user