装备:天晶继承

This commit is contained in:
陆莹
2022-03-16 17:21:29 +08:00
parent 47d79df0b5
commit 535d588192
10 changed files with 930 additions and 45 deletions

View File

@@ -8,10 +8,10 @@ import { HeroModel, EPlace } from "../../../db/Hero";
import { calPlayerCeAndSave } from "../../../services/playerCeService";
import { gameData, getEquipByJobClassAndEPlace, getNextEquipQuality, getEquipStarIdByEquipId, getNextEquipStar } from "../../../pubUtils/data";
import { BAG, EQUIP } from "../../../pubUtils/dicParam";
import { getRandSeResult, updateEplace, updateEplaces, checkJewelCanPutOnEquip, updateStone, checkStoneCanPutOnEquip, checkTaskInComposeEquip, checkTaskInEquipLvUp, checkTaskInComposeStone, checkTaskInEquipReset, checkTaskInEquipQuench } from "../../../services/equipService";
import { getRandSeResult, updateEplace, updateEplaces, checkJewelCanPutOnEquip, updateStone, checkStoneCanPutOnEquip, checkTaskInComposeEquip, checkTaskInEquipLvUp, checkTaskInComposeStone, checkTaskInEquipReset, checkTaskInEquipQuench, isLocked } from "../../../services/equipService";
import { isNumber, pick } from 'underscore';
import { JewelModel } from "../../../db/Jewel";
import { JewelModel, RandSe } from "../../../db/Jewel";
import { getJewelRandSe } from "../../../pubUtils/itemUtils";
import { checkTaskInEquipQualityUp, checkTaskInEquipStarUp, checkTaskInPutJewel, checkTaskInPutStone } from '../../../services/equipService';
import { pushEquipQualityMax, pushEquipStarMax } from "../../../services/sysChatService";
@@ -723,4 +723,46 @@ export class EquipHandler {
return resResult(STATUS.SUCCESS, { goods });
}
public async inheritJewel(msg: { originJewel: number, targetJewel: number }, session: BackendSession) {
let { originJewel: originJewelId, targetJewel: targetJewelId } = msg;
let roleId: string = session.get('roleId');
let sid: string = session.get('sid');
let serverId: number = session.get('serverId');
let originJewel = await JewelModel.findbySeqId(originJewelId);
if(!originJewel || originJewel.roleId != roleId) return resResult(STATUS.JEWEL_IS_NOT_FIND);
if(originJewel.hid > 0) return resResult(STATUS.JEWEL_HAS_EQUPED);
let targetJewel = await JewelModel.findbySeqId(targetJewelId);
if(!targetJewel || targetJewel.roleId != roleId) return resResult(STATUS.JEWEL_IS_NOT_FIND);
if(isLocked(targetJewel.randSe)) return resResult(STATUS.JEWEL_LOCKED_CANNOT_INHERIT);
let dicOldJewel = gameData.jewel.get(originJewel.id);
if(!dicOldJewel) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let dicJewel = gameData.jewel.get(targetJewel.id);
if(!dicJewel) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if(dicJewel.eplaceId != dicOldJewel.eplaceId || dicJewel.lv < dicOldJewel.lv) {
return resResult(STATUS.JEWEL_CANNOT_INHERIT);
}
// 消耗
let consumeResult = await handleCost(roleId, sid, [
{ id: originJewel.id, seqId: originJewel.seqId},
...dicJewel.inheritConsume
], ITEM_CHANGE_REASON.ACT_DAILY_GK_BATTLE_END);
if(!consumeResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
let newRandSe = getRandSeResult(targetJewel.id, targetJewel.randSe, originJewel.randSe, originJewel.id);
let newJewel = await JewelModel.updateInfo(targetJewel.seqId, { previewRandSe: [], randSe: newRandSe });
// 更新战力
if(targetJewel.hid > 0) {
const hero = await HeroModel.findByHidAndRole(targetJewel.hid, roleId);
await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_RESET_RANDSE, sid, roleId, hero, {}, [targetJewel.ePlaceId], { oldJewel: originJewel, newJewel });
}
await checkTaskInEquipReset(serverId, roleId, sid);
return resResult(STATUS.SUCCESS, { curJewel: pick(newJewel, ['seqId', 'id', 'hid', 'ePlaceId', 'randSe', 'previewRandSe']) });
}
}