diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index 926dc0ba1..b9e722390 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -15,7 +15,7 @@ import { checkMaterialEnough, checkEquipCanPut, quenchOnce, checkQuenchMaxByQual import { findIndex, pick } from 'underscore'; import { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService"; -import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkTaskConditionEquipSuitJewelStage, checkActivityTask } from "../../../services/taskService"; +import { checkTaskWithHero, checkTaskWithEquip, checkTask, checkTaskWithArgs, checkActivityTask } from "../../../services/taskService"; import { QuenchLogParam } from "../../../domain/roleField/equip"; import { calEquipSeids } from "../../../pubUtils/playerCe"; @@ -30,1097 +30,1097 @@ export class EquipHandler { } - // test接口添加任意道具 - public async addItem(msg: { id: number, count: number }, session: BackendSession) { - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - let { id, count } = msg; - let goods = await addItems(roleId, roleName, sid, [{ id, count }], ITEM_CHANGE_REASON.DEBUG); - return resResult(STATUS.SUCCESS, { goods }); - } + // // test接口添加任意道具 + // public async addItem(msg: { id: number, count: number }, session: BackendSession) { + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // let { id, count } = msg; + // let goods = await addItems(roleId, roleName, sid, [{ id, count }], ITEM_CHANGE_REASON.DEBUG); + // return resResult(STATUS.SUCCESS, { goods }); + // } - // 合成装备 - public async composeEquip(msg: { gid: number, originalEquip: number[] }, session: BackendSession) { - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - const serverId: number = session.get('serverId'); - // 消耗材料 - // 获得装备 - let { gid, originalEquip } = msg; + // // 合成装备 + // public async composeEquip(msg: { gid: number, originalEquip: number[] }, session: BackendSession) { + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // const serverId: number = session.get('serverId'); + // // 消耗材料 + // // 获得装备 + // let { gid, originalEquip } = msg; - let targetGood = gameData.goods.get(gid); - if (!targetGood) return resResult(STATUS.DIC_DATA_NOT_FOUND); + // let targetGood = gameData.goods.get(gid); + // if (!targetGood) return resResult(STATUS.DIC_DATA_NOT_FOUND); - let cost: ItemInter[] = []; - let jewels: ItemInter[] = []; // 需要返还的镶嵌在装备上的宝石 - if (targetGood.suitId > 0) { // 套装 - cost = cost.concat(targetGood.composeMaterial); - let specialMaterial = targetGood.specialMaterial; - let costCount = 0; - let equips = await EquipModel.getEquips(roleId, originalEquip); - for (let equip of equips) { - let { id, seqId, holes } = equip; - if (specialMaterial.ids.includes(id)) { - costCount++; - cost.push({ id, seqId, count: 1 }); - for (let { jewel } of holes) { - if (jewel > 0) jewels.push({ id: jewel, count: 1 }); - } - } - } - if (specialMaterial.count > costCount) { - return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - } + // let cost: ItemInter[] = []; + // let jewels: ItemInter[] = []; // 需要返还的镶嵌在装备上的宝石 + // if (targetGood.suitId > 0) { // 套装 + // cost = cost.concat(targetGood.composeMaterial); + // let specialMaterial = targetGood.specialMaterial; + // let costCount = 0; + // let equips = await EquipModel.getEquips(roleId, originalEquip); + // for (let equip of equips) { + // let { id, seqId, holes } = equip; + // if (specialMaterial.ids.includes(id)) { + // costCount++; + // cost.push({ id, seqId, count: 1 }); + // for (let { jewel } of holes) { + // if (jewel > 0) jewels.push({ id: jewel, count: 1 }); + // } + // } + // } + // if (specialMaterial.count > costCount) { + // return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // } - } else { // 普通装备 - cost.push({ - id: targetGood.pieceId, - count: targetGood.pieces - }); - } - let result = await handleCost(roleId, sid, cost, ITEM_CHANGE_REASON.EQUIP_COMPOSE); - if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // } else { // 普通装备 + // cost.push({ + // id: targetGood.pieceId, + // count: targetGood.pieces + // }); + // } + // let result = await handleCost(roleId, sid, cost, ITEM_CHANGE_REASON.EQUIP_COMPOSE); + // if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - await addItems(roleId, roleName, sid, jewels, ITEM_CHANGE_REASON.EQUIP_DEL_RETURN_JEWEL); // 宝石返还 - let items = [{ id: gid, count: 1 }]; - let goods = await addItems(roleId, roleName, sid, items, ITEM_CHANGE_REASON.EQUIP_COMPOSE); - if (targetGood.suitId) { - pushNormalEquipMsg(roleId, roleName, serverId, MSG_SOURCE.EQUIP_COMPOSE_SUIT, gid, targetGood.name, targetGood.quality); - } - if (targetGood.quality >= QUALITY_TYPE.ORANGE) { - pushNormalEquipMsg(roleId, roleName, serverId, MSG_SOURCE.EQUIP_COMPOSE_ORANGE, gid, targetGood.name, targetGood.quality); - } - return resResult(STATUS.SUCCESS, { goods }); - } + // await addItems(roleId, roleName, sid, jewels, ITEM_CHANGE_REASON.EQUIP_DEL_RETURN_JEWEL); // 宝石返还 + // let items = [{ id: gid, count: 1 }]; + // let goods = await addItems(roleId, roleName, sid, items, ITEM_CHANGE_REASON.EQUIP_COMPOSE); + // if (targetGood.suitId) { + // pushNormalEquipMsg(roleId, roleName, serverId, MSG_SOURCE.EQUIP_COMPOSE_SUIT, gid, targetGood.name, targetGood.quality); + // } + // if (targetGood.quality >= QUALITY_TYPE.ORANGE) { + // pushNormalEquipMsg(roleId, roleName, serverId, MSG_SOURCE.EQUIP_COMPOSE_ORANGE, gid, targetGood.name, targetGood.quality); + // } + // return resResult(STATUS.SUCCESS, { goods }); + // } - // 装备栏强化 - public async strengthen(msg: { hid: number, ePlaceId: number, type: number }, session: BackendSession) { - let roleId: string = session.get('roleId'); - // let roleName: string = session.get('roleName'); - const serverId = session.get('serverId'); - let sid: string = session.get('sid'); + // // 装备栏强化 + // public async strengthen(msg: { hid: number, ePlaceId: number, type: number }, session: BackendSession) { + // let roleId: string = session.get('roleId'); + // // let roleName: string = session.get('roleName'); + // const serverId = session.get('serverId'); + // let sid: string = session.get('sid'); - let { hid, ePlaceId, type } = msg; - let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); - if (!hero) return resResult(STATUS.HERO_NOT_FIND); + // let { hid, ePlaceId, type } = msg; + // let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); + // if (!hero) return resResult(STATUS.HERO_NOT_FIND); - let changeData = [];//变化的等级数据 - let { ePlace, lv: playerLv } = hero; // 装备栏 - let oldLvs = ePlace.map(cur => cur.lv); - let strengthenArr = new Array(); - if (type == EQUIP_STRENGTHEN_TYPE.SINGLE || type == EQUIP_STRENGTHEN_TYPE.SINGLE_QUICK) { // 单装备强化 - strengthenArr = ePlace.filter(cur => cur.id == ePlaceId && cur.equip); - } else if (type == EQUIP_STRENGTHEN_TYPE.ALL_QUICK) { // 全六件(装备中)的强化 - strengthenArr = ePlace.filter(cur => cur.equip); - } - if (strengthenArr.length <= 0) { - return resResult(STATUS.ROLE_EQUIP_PLACE_NOT_ENOUGH); - } - let minLv = strengthenArr[0].lv; // 从最低装备的等级开始 - for (let { lv, id } of strengthenArr) { - changeData.push({ - hid: hid, - id: id, - oldLv: lv, - lv: lv, - }) - if (lv < minLv) minLv = lv; - } + // let changeData = [];//变化的等级数据 + // let { ePlace, lv: playerLv } = hero; // 装备栏 + // let oldLvs = ePlace.map(cur => cur.lv); + // let strengthenArr = new Array(); + // if (type == EQUIP_STRENGTHEN_TYPE.SINGLE || type == EQUIP_STRENGTHEN_TYPE.SINGLE_QUICK) { // 单装备强化 + // strengthenArr = ePlace.filter(cur => cur.id == ePlaceId && cur.equip); + // } else if (type == EQUIP_STRENGTHEN_TYPE.ALL_QUICK) { // 全六件(装备中)的强化 + // strengthenArr = ePlace.filter(cur => cur.equip); + // } + // if (strengthenArr.length <= 0) { + // return resResult(STATUS.ROLE_EQUIP_PLACE_NOT_ENOUGH); + // } + // let minLv = strengthenArr[0].lv; // 从最低装备的等级开始 + // for (let { lv, id } of strengthenArr) { + // changeData.push({ + // hid: hid, + // id: id, + // oldLv: lv, + // lv: lv, + // }) + // if (lv < minLv) minLv = lv; + // } - let { coin } = await Role.findByRoleId(roleId); - let maxLv = type == EQUIP_STRENGTHEN_TYPE.SINGLE ? minLv + 1 : playerLv; - if (maxLv > playerLv) maxLv = playerLv; - if (minLv >= maxLv) { - return resResult(STATUS.ROLE_EQUIP_REACH_MAX); - } - let costCoin = 0; // 消耗铜币 - let flag = false; // 铜币不足 - for (let i = minLv; i < maxLv; i++) { - for (let s of strengthenArr) { - if (s.lv == i) { - let cost = gameData.strengthenCost.get(i + 1); - if (!cost) { flag = true; break; } - if (coin < costCoin + cost) { flag = true; break; } - costCoin += cost; - s.lv++; - {//记录等级变化 - let index = changeData.findIndex(obj => { return obj && obj.id == s.id }) - if (index != -1) { - changeData[index].lv = s.lv; - } - } - } - } - if (flag) break; - } + // let { coin } = await Role.findByRoleId(roleId); + // let maxLv = type == EQUIP_STRENGTHEN_TYPE.SINGLE ? minLv + 1 : playerLv; + // if (maxLv > playerLv) maxLv = playerLv; + // if (minLv >= maxLv) { + // return resResult(STATUS.ROLE_EQUIP_REACH_MAX); + // } + // let costCoin = 0; // 消耗铜币 + // let flag = false; // 铜币不足 + // for (let i = minLv; i < maxLv; i++) { + // for (let s of strengthenArr) { + // if (s.lv == i) { + // let cost = gameData.strengthenCost.get(i + 1); + // if (!cost) { flag = true; break; } + // if (coin < costCoin + cost) { flag = true; break; } + // costCoin += cost; + // s.lv++; + // {//记录等级变化 + // let index = changeData.findIndex(obj => { return obj && obj.id == s.id }) + // if (index != -1) { + // changeData[index].lv = s.lv; + // } + // } + // } + // } + // if (flag) break; + // } - if (costCoin <= 0) { // 连一级都不够升 - return resResult(STATUS.ROLE_COIN_NOT_ENOUGH); - } + // if (costCoin <= 0) { // 连一级都不够升 + // return resResult(STATUS.ROLE_COIN_NOT_ENOUGH); + // } - let result = await handleCost(roleId, sid, [{ - id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN), - count: costCoin - }], ITEM_CHANGE_REASON.EQUIP_STRENTHEN); - if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // let result = await handleCost(roleId, sid, [{ + // id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN), + // count: costCoin + // }], ITEM_CHANGE_REASON.EQUIP_STRENTHEN); + // if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - hero.ePlace = ePlace; + // hero.ePlace = ePlace; - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); - // 任务 - await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs); - //成长任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_STRENGTHEN, 1, changeData) + // // 任务 + // await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs); + // //成长任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_STRENGTHEN, 1, changeData) - const curHero = { - hid, - ePlace: strengthenArr - } - return resResult(STATUS.SUCCESS, { curHero }); + // const curHero = { + // hid, + // ePlace: strengthenArr + // } + // return resResult(STATUS.SUCCESS, { curHero }); - } + // } - // 装备栏一键强化至相应等级 - public async strengthenAll(msg: { hid: number, lv: number }, session: BackendSession) { - let roleId: string = session.get('roleId'); - // let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); + // // 装备栏一键强化至相应等级 + // public async strengthenAll(msg: { hid: number, lv: number }, session: BackendSession) { + // let roleId: string = session.get('roleId'); + // // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); - const serverId = session.get('serverId'); + // const serverId = session.get('serverId'); - let changeData = [];//变化的等级数据 - let { hid, lv: maxLv } = msg; // lv: 升到哪一级 - let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); - if (!hero) return resResult(STATUS.HERO_NOT_FIND); + // let changeData = [];//变化的等级数据 + // let { hid, lv: maxLv } = msg; // lv: 升到哪一级 + // let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); + // if (!hero) return resResult(STATUS.HERO_NOT_FIND); - let { ePlace, lv: playerLv } = hero; // 装备栏 - let oldLvs = ePlace.map(cur => cur.lv); - let strengthenArr = ePlace.filter(cur => cur.equip); + // let { ePlace, lv: playerLv } = hero; // 装备栏 + // let oldLvs = ePlace.map(cur => cur.lv); + // let strengthenArr = ePlace.filter(cur => cur.equip); - if (strengthenArr.length <= 0) { - return resResult(STATUS.ROLE_EQUIP_PLACE_NOT_ENOUGH); - } - let minLv = strengthenArr[0].lv; // 从最低装备的等级开始 - for (let { lv, id } of strengthenArr) { - changeData.push({ - hid: hid, - id: id, - oldLv: lv, - lv: lv, - }) - if (lv < minLv) minLv = lv; + // if (strengthenArr.length <= 0) { + // return resResult(STATUS.ROLE_EQUIP_PLACE_NOT_ENOUGH); + // } + // let minLv = strengthenArr[0].lv; // 从最低装备的等级开始 + // for (let { lv, id } of strengthenArr) { + // changeData.push({ + // hid: hid, + // id: id, + // oldLv: lv, + // lv: lv, + // }) + // if (lv < minLv) minLv = lv; - } + // } - let { coin } = await Role.findByRoleId(roleId); + // let { coin } = await Role.findByRoleId(roleId); - if (maxLv > playerLv) { - return resResult(STATUS.ROLE_EQUIP_REACH_MAX); - } - let costCoin = 0; // 消耗铜币 - for (let i = minLv; i < maxLv; i++) { - for (let s of strengthenArr) { - if (s.lv == i) { - let cost = gameData.strengthenCost.get(i + 1); - costCoin += cost; + // if (maxLv > playerLv) { + // return resResult(STATUS.ROLE_EQUIP_REACH_MAX); + // } + // let costCoin = 0; // 消耗铜币 + // for (let i = minLv; i < maxLv; i++) { + // for (let s of strengthenArr) { + // if (s.lv == i) { + // let cost = gameData.strengthenCost.get(i + 1); + // costCoin += cost; - s.lv++; - {//记录等级变化 - let index = changeData.findIndex(obj => { return obj && obj.id == s.id }) - if (index != -1) { - changeData[index].lv = s.lv; - } - } - } - } - } + // s.lv++; + // {//记录等级变化 + // let index = changeData.findIndex(obj => { return obj && obj.id == s.id }) + // if (index != -1) { + // changeData[index].lv = s.lv; + // } + // } + // } + // } + // } - if (costCoin > coin) { - return resResult(STATUS.ROLE_COIN_NOT_ENOUGH); - } + // if (costCoin > coin) { + // return resResult(STATUS.ROLE_COIN_NOT_ENOUGH); + // } - let result = await handleCost(roleId, sid, [{ - id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN), - count: costCoin - }], ITEM_CHANGE_REASON.EQUIP_STRENTHEN); - if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // let result = await handleCost(roleId, sid, [{ + // id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.COIN), + // count: costCoin + // }], ITEM_CHANGE_REASON.EQUIP_STRENTHEN); + // if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - hero.ePlace = ePlace; + // hero.ePlace = ePlace; - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); - // 任务 - await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs); - //成长任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_STRENGTHEN, 1, changeData) + // // 任务 + // await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_STRENGTHEN, hero, oldLvs); + // //成长任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_STRENGTHEN, 1, changeData) - const curHero = { - hid, - ePlace: strengthenArr - } - return resResult(STATUS.SUCCESS, { curHero }); + // const curHero = { + // hid, + // ePlace: strengthenArr + // } + // return resResult(STATUS.SUCCESS, { curHero }); - } - // 装备栏精炼 - public async refine(msg: { hid: number, ePlaceId: number, type: REFINE_TYPE }, session: BackendSession) { - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let serverId = session.get('serverId'); - let sid: string = session.get('sid'); + // } + // // 装备栏精炼 + // public async refine(msg: { hid: number, ePlaceId: number, type: REFINE_TYPE }, session: BackendSession) { + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let serverId = session.get('serverId'); + // let sid: string = session.get('sid'); - let { hid, ePlaceId, type } = msg; + // let { hid, ePlaceId, type } = msg; - let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); - if (!hero) return resResult(STATUS.HERO_NOT_FIND); - let { ePlace } = hero; // 装备栏 + // let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); + // if (!hero) return resResult(STATUS.HERO_NOT_FIND); + // let { ePlace } = hero; // 装备栏 - let curEplace = ePlace.find(cur => cur.id == ePlaceId); - if (!curEplace) { - return resResult(STATUS.ROLE_EQUIP_PLACE_NOT_ENOUGH); - } - let { lv, refineLv: oldRefineLv, equip } = curEplace; // 强化等级,精炼等级,精炼次数 + // let curEplace = ePlace.find(cur => cur.id == ePlaceId); + // if (!curEplace) { + // return resResult(STATUS.ROLE_EQUIP_PLACE_NOT_ENOUGH); + // } + // let { lv, refineLv: oldRefineLv, equip } = curEplace; // 强化等级,精炼等级,精炼次数 - let check = new CheckMeterial(roleId); - let refineLv = oldRefineLv, times = 0; - while( - (type == REFINE_TYPE.ONCE && times == 0) || - (type == REFINE_TYPE.ONE_LEVEL && !checkRefineReachNextLv(oldRefineLv, refineLv) ) - ) { - let result = await refineOnce(lv, refineLv); - if(!result) break; + // let check = new CheckMeterial(roleId); + // let refineLv = oldRefineLv, times = 0; + // while( + // (type == REFINE_TYPE.ONCE && times == 0) || + // (type == REFINE_TYPE.ONE_LEVEL && !checkRefineReachNextLv(oldRefineLv, refineLv) ) + // ) { + // let result = await refineOnce(lv, refineLv); + // if(!result) break; - let isEnough = await check.decrease(result.consumes); - if(!isEnough) break; // 消耗不足 - refineLv = result.refineLv; - times ++; - } - if(times == 0) { - return resResult(STATUS.EQUIP_REFINE_ERR); - } - let consumes = check.getConsume(); - let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_REFINE); - if (!result) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // let isEnough = await check.decrease(result.consumes); + // if(!isEnough) break; // 消耗不足 + // refineLv = result.refineLv; + // times ++; + // } + // if(times == 0) { + // return resResult(STATUS.EQUIP_REFINE_ERR); + // } + // let consumes = check.getConsume(); + // let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_REFINE); + // if (!result) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - curEplace.refineLv = refineLv; + // curEplace.refineLv = refineLv; - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP_BASE, sid, roleId, hero, { ePlace }); - const curHero = { - hid, - ePlace: [curEplace] - } + // const curHero = { + // hid, + // ePlace: [curEplace] + // } - let curEquip = equip; - pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip ? curEquip.quality : 0); - await checkTask(roleId, sid, TASK_TYPE.EQUIP_REFINE, times, true, {}); - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE, times); - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE_LV, times, { lv: curEplace.refineLv }); - return resResult(STATUS.SUCCESS, { curHero }); - } + // let curEquip = equip; + // pushEquipRefineSucMsg(roleId, roleName, serverId, curEplace, curEquip ? curEquip.quality : 0); + // await checkTask(roleId, sid, TASK_TYPE.EQUIP_REFINE, times, true, {}); + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE, times); + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_REFINE_LV, times, { lv: curEplace.refineLv }); + // return resResult(STATUS.SUCCESS, { curHero }); + // } - // 装备洗炼锁定 - public async lockRandSe(msg: { eid: number, id: number, lock: boolean }, session: BackendSession) { - let roleId: string = session.get('roleId'); - // let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); + // // 装备洗炼锁定 + // public async lockRandSe(msg: { eid: number, id: number, lock: boolean }, session: BackendSession) { + // let roleId: string = session.get('roleId'); + // // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); - let { eid, id, lock } = msg; - let equip = await EquipModel.findbySeqId(eid); - if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); + // let { eid, id, lock } = msg; + // let equip = await EquipModel.findbySeqId(eid); + // if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); - let { randSe } = equip; - if (!randSe || randSe.length <= 0) { - return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE); - } - let curSe = randSe.find(cur => cur.id == id); - if (!curSe || lock == curSe.locked) { - return resResult(STATUS.ROLE_EQUIP_DUPLICATE_LOCK); - } + // let { randSe } = equip; + // if (!randSe || randSe.length <= 0) { + // return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE); + // } + // let curSe = randSe.find(cur => cur.id == id); + // if (!curSe || lock == curSe.locked) { + // return resResult(STATUS.ROLE_EQUIP_DUPLICATE_LOCK); + // } - if (lock) { // 仅在上锁时消耗,根据已有的锁的数量判断消耗 - let lockNum = randSe.filter(cur => cur.locked).length; - let consumes: Array<{ id: number, count: number }> = []; - if (lockNum == 0) { - consumes = parseGoodStr(EQUIP.EQUIP_ONE_LOCKED); - } else if (lockNum == 1) { - consumes = parseGoodStr(EQUIP.EQUIP_TWO_LOCKED); - } else if (lockNum == 2) { - consumes = parseGoodStr(EQUIP.EQUIP_THREE_LOCKED); - } else { - return resResult(STATUS.ROLE_ALL_SE_LOCK); - } - let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_LOCK_RANDSE); - if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - } + // if (lock) { // 仅在上锁时消耗,根据已有的锁的数量判断消耗 + // let lockNum = randSe.filter(cur => cur.locked).length; + // let consumes: Array<{ id: number, count: number }> = []; + // if (lockNum == 0) { + // consumes = parseGoodStr(EQUIP.EQUIP_ONE_LOCKED); + // } else if (lockNum == 1) { + // consumes = parseGoodStr(EQUIP.EQUIP_TWO_LOCKED); + // } else if (lockNum == 2) { + // consumes = parseGoodStr(EQUIP.EQUIP_THREE_LOCKED); + // } else { + // return resResult(STATUS.ROLE_ALL_SE_LOCK); + // } + // let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_LOCK_RANDSE); + // if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // } - let result = await EquipModel.lock(roleId, eid, id, lock); - if (!result) { - return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE); - } - return resResult(STATUS.SUCCESS, { curEquip: result }); + // let result = await EquipModel.lock(roleId, eid, id, lock); + // if (!result) { + // return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE); + // } + // return resResult(STATUS.SUCCESS, { curEquip: result }); - } + // } - // 装备洗炼预览 - 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 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 { eid } = msg; + // let equip = await EquipModel.findbySeqId(eid); + // if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); - let { id, randSe, previewRandSe } = equip; - if(previewRandSe.length <= 0) { + // 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); + // 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); + // 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); - } + // 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, ITEM_CHANGE_REASON.EQUIP_RESTRENGTHEN); - if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_RESTRENGTHEN); + // if (!result) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - equip = await EquipModel.updateEquipInfo(eid, { previewRandSe }); - } + // equip = await EquipModel.updateEquipInfo(eid, { previewRandSe }); + // } - return resResult(STATUS.SUCCESS, { curEquip: pick(equip, ['seqId', 'id', 'randSe', 'previewRandSe']) }); + // return resResult(STATUS.SUCCESS, { curEquip: pick(equip, ['seqId', 'id', 'randSe', 'previewRandSe']) }); - } + // } - // 装备洗炼 - public async reStrengthen(msg: { eid: number }, session: BackendSession) { - let roleId: string = session.get('roleId'); - // let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); + // // 装备洗炼 + // public async reStrengthen(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 { eid } = msg; + // let equip = await EquipModel.findbySeqId(eid); + // if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); - let { randSe, hid, ePlaceId, previewRandSe } = equip; - if (!randSe || randSe.length <= 0) { - return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE); - } + // let { randSe, hid, ePlaceId, previewRandSe } = equip; + // if (!randSe || randSe.length <= 0) { + // return resResult(STATUS.ROLE_EQUIP_HAVE_NO_RANDSE); + // } - if(!previewRandSe) { // 没预览过 - return resResult(STATUS.EQUIP_RESTRENGTHEN_NOT_PREVIEW); - } + // if(!previewRandSe) { // 没预览过 + // return resResult(STATUS.EQUIP_RESTRENGTHEN_NOT_PREVIEW); + // } - let removeSeidList = randSe.reduce((pre, cur) => { - return [...pre, cur.seid]; - }, []); + // let removeSeidList = randSe.reduce((pre, cur) => { + // return [...pre, cur.seid]; + // }, []); - let equipResult = await EquipModel.updateEquipInfo(eid, { randSe: previewRandSe, previewRandSe: [] }) + // let equipResult = await EquipModel.updateEquipInfo(eid, { randSe: previewRandSe, previewRandSe: [] }) - // 更新战力 - if(hid > 0) { - const hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.RESTRENGTHEN, sid, roleId, hero, {}, [ePlaceId, ...removeSeidList]); - } + // // 更新战力 + // if(hid > 0) { + // const hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.RESTRENGTHEN, sid, roleId, hero, {}, [ePlaceId, ...removeSeidList]); + // } - await checkTask(roleId, sid, TASK_TYPE.EQUIP_RESTRENGTHEN, 1, true, {}); + // await checkTask(roleId, sid, TASK_TYPE.EQUIP_RESTRENGTHEN, 1, true, {}); - return resResult(STATUS.SUCCESS, { curEquip: pick(equipResult, ['seqId', 'id', 'randSe', 'previewRandSe']) }); + // return resResult(STATUS.SUCCESS, { curEquip: pick(equipResult, ['seqId', 'id', 'randSe', 'previewRandSe']) }); - } + // } - // 放弃这条洗练 - public async giveupStrengthen(msg: { eid: number }, session: BackendSession) { + // // 放弃这条洗练 + // 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 { 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); - } + // 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); - } + // if(!previewRandSe) { // 没预览过 + // return resResult(STATUS.EQUIP_RESTRENGTHEN_NOT_PREVIEW); + // } - let equipResult = await EquipModel.updateEquipInfo(eid, { previewRandSe: [] }) + // let equipResult = await EquipModel.updateEquipInfo(eid, { previewRandSe: [] }) - return resResult(STATUS.SUCCESS, { curEquip: pick(equipResult, ['seqId', 'id', 'randSe', 'previewRandSe']) }); + // return resResult(STATUS.SUCCESS, { curEquip: pick(equipResult, ['seqId', 'id', 'randSe', 'previewRandSe']) }); - } + // } - // 淬火 - 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'); + // // 淬火 + // 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 { eid, type } = msg; - let equip = await EquipModel.findbySeqId(eid); - if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); + // 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 { id, randMain, grade, hid, ePlaceId } = equip; - let dicGoods = gameData.goods.get(id); - if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND); - let dicQuench = gameData.quenchByQuality.get(dicGoods.quality)?.get(grade); - // console.log(dicQuench, dicGoods.quality, grade) - if (!dicQuench) return resResult(STATUS.EQUIP_QUENCH_MAX); + // let dicGoods = gameData.goods.get(id); + // if (!dicGoods) return resResult(STATUS.DIC_DATA_NOT_FOUND); + // let dicQuench = gameData.quenchByQuality.get(dicGoods.quality)?.get(grade); + // // console.log(dicQuench, dicGoods.quality, grade) + // if (!dicQuench) return resResult(STATUS.EQUIP_QUENCH_MAX); - let check = new CheckMeterial(roleId); - 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(randMain, dicQuench, dicGoods); - if(!result) break; + // let check = new CheckMeterial(roleId); + // 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(randMain, dicQuench, dicGoods); + // if(!result) break; - let isEnough = await check.decrease(result.consumes); - if(!isEnough) break; // 消耗不足 + // let isEnough = await check.decrease(result.consumes); + // if(!isEnough) break; // 消耗不足 - result.log.setTimes(++times); - logs.push(result.log); - grade = result.grade; - randMain = result.randMain; - } + // result.log.setTimes(++times); + // logs.push(result.log); + // grade = result.grade; + // randMain = result.randMain; + // } - if (times == 0) return resResult(STATUS.EQUIP_QUENCH_ERR); - let consumes = check.getConsume(); - let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_QUENCH); - if (!result) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // if (times == 0) return resResult(STATUS.EQUIP_QUENCH_ERR); + // let consumes = check.getConsume(); + // let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_QUENCH); + // if (!result) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - let equipResult = await EquipModel.updateEquipInfo(eid, { randMain, grade }) - let curEquip = { - seqId: equipResult.seqId, - id: equipResult.id, - randMain: equipResult.randMain, - grade: equipResult.grade, - } + // 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, { }); - } + // // 更新战力 + // 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 }); + // return resResult(STATUS.SUCCESS, { logs, curEquip }); - } + // } - //分解装备 - public async decomposeEquip(msg: { originalEquip: Array }, session: BackendSession) { - let { originalEquip } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - if(originalEquip.length > BAG.BAG_RESOLVE_UPLIMITED) { - return resResult(STATUS.EQUIP_DECOMPOSE_IS_UPLIMIT); - } - let equips = await EquipModel.getEquips(roleId, originalEquip); - if (equips.length < originalEquip.length) - return resResult(STATUS.EQUIP_NOT_FIND); - let goods: Array<{ id: number, count: number }> = []; - let cost: ItemInter[] = []; - let jewels: ItemInter[] = []; // 宝石返还 - for (let equip of equips) { - if (!!equip.hid) - return resResult(STATUS.EQUIP_IS_EQUIPED_NOT_DECOMPOSE); - let goodInfo = getGoodById(equip.id); - if (!goodInfo) - return resResult(STATUS.EQUIP_NOT_FIND); + // //分解装备 + // public async decomposeEquip(msg: { originalEquip: Array }, session: BackendSession) { + // let { originalEquip } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // if(originalEquip.length > BAG.BAG_RESOLVE_UPLIMITED) { + // return resResult(STATUS.EQUIP_DECOMPOSE_IS_UPLIMIT); + // } + // let equips = await EquipModel.getEquips(roleId, originalEquip); + // if (equips.length < originalEquip.length) + // return resResult(STATUS.EQUIP_NOT_FIND); + // let goods: Array<{ id: number, count: number }> = []; + // let cost: ItemInter[] = []; + // let jewels: ItemInter[] = []; // 宝石返还 + // for (let equip of equips) { + // if (!!equip.hid) + // return resResult(STATUS.EQUIP_IS_EQUIPED_NOT_DECOMPOSE); + // let goodInfo = getGoodById(equip.id); + // if (!goodInfo) + // return resResult(STATUS.EQUIP_NOT_FIND); - let holes = equip.holes || []; - for (let { jewel } of holes) { - if(jewel) { - jewels.push({ id: jewel, count: 1 }); - } - } - goods = goods.concat(goodInfo.decomposeItem); - cost.push({ seqId: equip.seqId, id: equip.id, count: 1 }); - } - let costResult = await handleCost(roleId, sid, cost, ITEM_CHANGE_REASON.EQUIP_DECOMPOSE); // 删掉装备 - if(!costResult) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // let holes = equip.holes || []; + // for (let { jewel } of holes) { + // if(jewel) { + // jewels.push({ id: jewel, count: 1 }); + // } + // } + // goods = goods.concat(goodInfo.decomposeItem); + // cost.push({ seqId: equip.seqId, id: equip.id, count: 1 }); + // } + // let costResult = await handleCost(roleId, sid, cost, ITEM_CHANGE_REASON.EQUIP_DECOMPOSE); // 删掉装备 + // if(!costResult) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - await addItems(roleId, roleName, sid, jewels, ITEM_CHANGE_REASON.EQUIP_DEL_RETURN_JEWEL); // 把原本镶嵌在装备上的宝石返还了 - let result = await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.EQUIP_DECOMPOSE); - return resResult(STATUS.SUCCESS, { goods: combineItems(result) }); - } + // await addItems(roleId, roleName, sid, jewels, ITEM_CHANGE_REASON.EQUIP_DEL_RETURN_JEWEL); // 把原本镶嵌在装备上的宝石返还了 + // let result = await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.EQUIP_DECOMPOSE); + // return resResult(STATUS.SUCCESS, { goods: combineItems(result) }); + // } - public async decomposeEquipPiece(msg: { originalPiece: { id: number, count: number }[] }, session: BackendSession) { - let { originalPiece } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - let goods: ItemInter[] = []; + // public async decomposeEquipPiece(msg: { originalPiece: { id: number, count: number }[] }, session: BackendSession) { + // let { originalPiece } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // let goods: ItemInter[] = []; - for (let { id, count } of originalPiece) { - let goodInfo = getGoodById(id); - if (!goodInfo) return resResult(STATUS.DIC_DATA_NOT_FOUND); - let dicItid = ITID.get(goodInfo.itid); - if(!dicItid || dicItid.type != CONSUME_TYPE.PIECE) { - return resResult(STATUS.CONSUME_TYPE_ERR); - } - for(let result of goodInfo.decomposeItem) { - goods.push({ id: result.id, count: result.count * count }); - } - } + // for (let { id, count } of originalPiece) { + // let goodInfo = getGoodById(id); + // if (!goodInfo) return resResult(STATUS.DIC_DATA_NOT_FOUND); + // let dicItid = ITID.get(goodInfo.itid); + // if(!dicItid || dicItid.type != CONSUME_TYPE.PIECE) { + // return resResult(STATUS.CONSUME_TYPE_ERR); + // } + // for(let result of goodInfo.decomposeItem) { + // goods.push({ id: result.id, count: result.count * count }); + // } + // } - let costResult = await handleCost(roleId, sid, originalPiece, ITEM_CHANGE_REASON.EQUIP_PIECE_DECOMPOSE); - if(!costResult) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - let result = await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.EQUIP_PIECE_DECOMPOSE); - return resResult(STATUS.SUCCESS, { goods: combineItems(result) }); - } + // let costResult = await handleCost(roleId, sid, originalPiece, ITEM_CHANGE_REASON.EQUIP_PIECE_DECOMPOSE); + // if(!costResult) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // let result = await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.EQUIP_PIECE_DECOMPOSE); + // return resResult(STATUS.SUCCESS, { goods: combineItems(result) }); + // } - //穿戴或卸载装备 1-穿上装备(包括替换) 2-脱下装备 - public async putOnOrOff(msg: { eid: number, hid: number, type: number }, session: BackendSession) { - let { eid, hid, type } = msg; - let roleId: string = session.get('roleId'); - let serverId: number = session.get('serverId'); - let sid: string = session.get('sid'); + // //穿戴或卸载装备 1-穿上装备(包括替换) 2-脱下装备 + // public async putOnOrOff(msg: { eid: number, hid: number, type: number }, session: BackendSession) { + // let { eid, hid, type } = msg; + // let roleId: string = session.get('roleId'); + // let serverId: number = session.get('serverId'); + // let sid: string = session.get('sid'); - // 原武将:heroA,原武将穿戴着的装备a,将要穿戴的装备b,装备b被装备着的武将B - let heroA = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); - if (!heroA) return resResult(STATUS.HERO_NOT_FIND); - let oldCountA = heroA.ePlace.filter(cur => cur.equip).length; - let oldCountB = 0; + // // 原武将:heroA,原武将穿戴着的装备a,将要穿戴的装备b,装备b被装备着的武将B + // let heroA = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); + // if (!heroA) return resResult(STATUS.HERO_NOT_FIND); + // let oldCountA = heroA.ePlace.filter(cur => cur.equip).length; + // let oldCountB = 0; - let equip = await EquipModel.getEquip(eid); // 装备:1-equipB 2-equipA - if(!equip) return resResult(STATUS.EQUIP_NOT_FIND); + // let equip = await EquipModel.getEquip(eid); // 装备:1-equipB 2-equipA + // if(!equip) return resResult(STATUS.EQUIP_NOT_FIND); - let argsA = calEquipSeids(heroA); - let heroB: HeroType, equipA: EquipType, equipB: EquipType, argsB: number[] = []; - let heroAPutNum = 0, heroBPutTNum = 0; // 1:多一件 0:没变化 -1:少一件 + // let argsA = calEquipSeids(heroA); + // let heroB: HeroType, equipA: EquipType, equipB: EquipType, argsB: number[] = []; + // let heroAPutNum = 0, heroBPutTNum = 0; // 1:多一件 0:没变化 -1:少一件 - let goodInfo = getGoodById(equip.id); - let obj = ITID.get(goodInfo.itid); - let eplaceId = obj.type; // 位置 + // let goodInfo = getGoodById(equip.id); + // let obj = ITID.get(goodInfo.itid); + // let eplaceId = obj.type; // 位置 - if (type == 1) { - equipB = equip; // 要穿上的装备 - if (equipB.hid == hid) return resResult(STATUS.WRONG_PARMS); - if(!checkEquipCanPut(heroA, equipB.id)) return resResult(STATUS.EQUIP_NOT_EQUIPED_HERO); + // if (type == 1) { + // equipB = equip; // 要穿上的装备 + // if (equipB.hid == hid) return resResult(STATUS.WRONG_PARMS); + // if(!checkEquipCanPut(heroA, equipB.id)) return resResult(STATUS.EQUIP_NOT_EQUIPED_HERO); - let index = heroA.ePlace.findIndex(cur => cur.id == eplaceId); - if (index == -1) return resResult(STATUS.WRONG_PARMS); - equipA = heroA.ePlace[index].equip; // 要脱下的装备 + // let index = heroA.ePlace.findIndex(cur => cur.id == eplaceId); + // if (index == -1) return resResult(STATUS.WRONG_PARMS); + // equipA = heroA.ePlace[index].equip; // 要脱下的装备 - if(equipB.hid > 0) { - heroB = await HeroModel.findByHidAndRoleWithEquip(equipB.hid, roleId); - argsB = calEquipSeids(heroB); - oldCountB = heroB.ePlace.filter(cur => cur.equip).length; - } + // if(equipB.hid > 0) { + // heroB = await HeroModel.findByHidAndRoleWithEquip(equipB.hid, roleId); + // argsB = calEquipSeids(heroB); + // oldCountB = heroB.ePlace.filter(cur => cur.equip).length; + // } - if(equipA) { - if(equipB.hid > 0) { - if(checkEquipCanPut(heroB, equipA.id)) { // A=>b & B=>a - equipA = await EquipModel.putOnOrOff(equipA._id, equipB.hid); - heroB = await HeroModel.addEquip(roleId, heroB.hid, eplaceId, equipA._id); - } else { // A=>b & B=>0 & 0=>a - equipA = await EquipModel.putOnOrOff(equipA._id, 0); - heroB = await HeroModel.removeEquip(roleId, equipB.hid, eplaceId); - heroBPutTNum = -1; - } - } else { // A=>b & 0=>a - equipA = await EquipModel.putOnOrOff(equipA._id, 0); - } - } else { - if(equipB.hid > 0) { // A=>b & B=>0 - heroB = await HeroModel.removeEquip(roleId, equipB.hid, eplaceId); - heroBPutTNum = -1; - } - // A=>b - heroAPutNum = 1; - } + // if(equipA) { + // if(equipB.hid > 0) { + // if(checkEquipCanPut(heroB, equipA.id)) { // A=>b & B=>a + // equipA = await EquipModel.putOnOrOff(equipA._id, equipB.hid); + // heroB = await HeroModel.addEquip(roleId, heroB.hid, eplaceId, equipA._id); + // } else { // A=>b & B=>0 & 0=>a + // equipA = await EquipModel.putOnOrOff(equipA._id, 0); + // heroB = await HeroModel.removeEquip(roleId, equipB.hid, eplaceId); + // heroBPutTNum = -1; + // } + // } else { // A=>b & 0=>a + // equipA = await EquipModel.putOnOrOff(equipA._id, 0); + // } + // } else { + // if(equipB.hid > 0) { // A=>b & B=>0 + // heroB = await HeroModel.removeEquip(roleId, equipB.hid, eplaceId); + // heroBPutTNum = -1; + // } + // // A=>b + // heroAPutNum = 1; + // } - heroA = await HeroModel.addEquip(roleId, heroA.hid, eplaceId, equipB._id); - equipB = await EquipModel.putOnOrOff(equipB._id, heroA.hid); + // heroA = await HeroModel.addEquip(roleId, heroA.hid, eplaceId, equipB._id); + // equipB = await EquipModel.putOnOrOff(equipB._id, heroA.hid); - } else if (type == 2) { // A=>0 & 0=>a - if (!equip.hid) return resResult(STATUS.EQUIP_NOT_EQUIPED); - equipA = await EquipModel.putOnOrOff(equip._id, 0); - heroA = await HeroModel.removeEquip(roleId, heroA.hid, eplaceId); - heroAPutNum = -1; - } + // } else if (type == 2) { // A=>0 & 0=>a + // if (!equip.hid) return resResult(STATUS.EQUIP_NOT_EQUIPED); + // equipA = await EquipModel.putOnOrOff(equip._id, 0); + // heroA = await HeroModel.removeEquip(roleId, heroA.hid, eplaceId); + // heroAPutNum = -1; + // } - if(heroA) { - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, heroA, {}, argsA); - if(heroAPutNum != 0) { - await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, heroA, [heroAPutNum, oldCountA]); - } - } - if(heroB) { - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, heroB, {}, argsB); - if(heroBPutTNum != 0) await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, heroA, [heroBPutTNum, oldCountB]); - } - if(heroAPutNum + heroBPutTNum != 0) { - await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, heroAPutNum + heroBPutTNum, true, {}); - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, heroAPutNum + heroBPutTNum) - } + // if(heroA) { + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, heroA, {}, argsA); + // if(heroAPutNum != 0) { + // await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, heroA, [heroAPutNum, oldCountA]); + // } + // } + // if(heroB) { + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, heroB, {}, argsB); + // if(heroBPutTNum != 0) await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, heroA, [heroBPutTNum, oldCountB]); + // } + // if(heroAPutNum + heroBPutTNum != 0) { + // await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, heroAPutNum + heroBPutTNum, true, {}); + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, heroAPutNum + heroBPutTNum) + // } - let curEquips: Array<{ seqId: number, hid: number }> = []; - if(equipA) { - curEquips.push(pick(equipA, ['seqId', 'hid'])); - if(equipA.hid == 0) { - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equipA, [-1]); // equipA必然是脱,如果hid不为0说明从一个人穿到另一个人,不算任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equipA.quality }); - } - } - if(equipB) { - curEquips.push(pick(equipB, ['seqId', 'hid'])); - if(equipB.hid != 0) { - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equipB, [1]); // equipB必然是穿,如果hid为0说明没有变化,不算任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equipB.quality }); - } - } + // let curEquips: Array<{ seqId: number, hid: number }> = []; + // if(equipA) { + // curEquips.push(pick(equipA, ['seqId', 'hid'])); + // if(equipA.hid == 0) { + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equipA, [-1]); // equipA必然是脱,如果hid不为0说明从一个人穿到另一个人,不算任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equipA.quality }); + // } + // } + // if(equipB) { + // curEquips.push(pick(equipB, ['seqId', 'hid'])); + // if(equipB.hid != 0) { + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equipB, [1]); // equipB必然是穿,如果hid为0说明没有变化,不算任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equipB.quality }); + // } + // } - if(type == 1) { - let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(heroA)//英雄满装备且都镶嵌相同阶数的宝石 - if (isTask) { - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) - } - } + // if(type == 1) { + // let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(heroA)//英雄满装备且都镶嵌相同阶数的宝石 + // if (isTask) { + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) + // } + // } - return resResult(STATUS.SUCCESS, { curEquips: curEquips }); - } + // return resResult(STATUS.SUCCESS, { curEquips: curEquips }); + // } - // 一次性装备上 - public async putOnOnce(msg: { hid: number }, session: BackendSession) { - let { hid } = msg; - let roleId: string = session.get('roleId'); - const serverId = session.get('serverId'); - let sid: string = session.get('sid'); + // // 一次性装备上 + // public async putOnOnce(msg: { hid: number }, session: BackendSession) { + // let { hid } = msg; + // let roleId: string = session.get('roleId'); + // const serverId = session.get('serverId'); + // let sid: string = session.get('sid'); - let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); - if (!hero) return resResult(STATUS.HERO_NOT_FIND); - let args = calEquipSeids(hero); + // let hero = await HeroModel.findByHidAndRoleWithEquip(hid, roleId); + // if (!hero) return resResult(STATUS.HERO_NOT_FIND); + // let args = calEquipSeids(hero); - let dicHero = gameData.hero.get(hid); - if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND); - let dicJob = gameData.job.get(dicHero.jobid); + // let dicHero = gameData.hero.get(hid); + // if (!dicHero) return resResult(STATUS.DIC_DATA_NOT_FOUND); + // let dicJob = gameData.job.get(dicHero.jobid); - let allEquips = await EquipModel.findNotWearEquips(roleId); - let sortEquips = allEquips.map(equip => { - let { id, quality, ePlaceId, randMain } = equip; - let { goodsAbility, lvLimited } = gameData.goods.get(id); - let ce = calEquipCe(goodsAbility, randMain); - return { id, quality, ce, equip, goodsAbility, lvLimited, ePlaceId } - }); - let { ePlace, lv } = hero; - let oldCount = ePlace.filter(cur => cur.equip).length; + // let allEquips = await EquipModel.findNotWearEquips(roleId); + // let sortEquips = allEquips.map(equip => { + // let { id, quality, ePlaceId, randMain } = equip; + // let { goodsAbility, lvLimited } = gameData.goods.get(id); + // let ce = calEquipCe(goodsAbility, randMain); + // return { id, quality, ce, equip, goodsAbility, lvLimited, ePlaceId } + // }); + // let { ePlace, lv } = hero; + // let oldCount = ePlace.filter(cur => cur.equip).length; - let curEquips: Array<{ seqId: number, hid: number }> = []; - let equips: EquipType[] = []; - for (let curEPlace of ePlace) { - if (!curEPlace.equip) { // 未装备 - let sortAttrId = equipTypeToSortAttr.get(curEPlace.id); - let sortedAndSuitEquips = sortEquips.filter(equipInfos => { // 筛选可穿的 - let { id, lvLimited, ePlaceId } = equipInfos; - return lv >= lvLimited && checkEquipCanPut(hero, id) && curEPlace.id == ePlaceId; - }); - // console.log('sortedAndSuitEquips', JSON.stringify(sortedAndSuitEquips, null, 4)) - sortedAndSuitEquips = sortedAndSuitEquips.sort((a, b) => { // 排序按:战力 => 根据位置看个别属性 => 品质 - if (b.ce - a.ce != 0) return b.ce - a.ce; - let abilityA = a.goodsAbility.get(sortAttrId) || 0; - let abilityB = b.goodsAbility.get(sortAttrId) || 0; - if (abilityA - abilityB != 0) return abilityB - abilityA; - return b.quality - a.quality; - }); + // let curEquips: Array<{ seqId: number, hid: number }> = []; + // let equips: EquipType[] = []; + // for (let curEPlace of ePlace) { + // if (!curEPlace.equip) { // 未装备 + // let sortAttrId = equipTypeToSortAttr.get(curEPlace.id); + // let sortedAndSuitEquips = sortEquips.filter(equipInfos => { // 筛选可穿的 + // let { id, lvLimited, ePlaceId } = equipInfos; + // return lv >= lvLimited && checkEquipCanPut(hero, id) && curEPlace.id == ePlaceId; + // }); + // // console.log('sortedAndSuitEquips', JSON.stringify(sortedAndSuitEquips, null, 4)) + // sortedAndSuitEquips = sortedAndSuitEquips.sort((a, b) => { // 排序按:战力 => 根据位置看个别属性 => 品质 + // if (b.ce - a.ce != 0) return b.ce - a.ce; + // let abilityA = a.goodsAbility.get(sortAttrId) || 0; + // let abilityB = b.goodsAbility.get(sortAttrId) || 0; + // if (abilityA - abilityB != 0) return abilityB - abilityA; + // return b.quality - a.quality; + // }); - if (sortedAndSuitEquips.length > 0) { - let { equip } = sortedAndSuitEquips.shift(); - hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id); - equip = await EquipModel.putOnOrOff(equip._id, hero.hid); - if (!!equip) { - curEquips.push(pick(equip, ['seqId', 'hid'])); - equips.push(equip); - } - } + // if (sortedAndSuitEquips.length > 0) { + // let { equip } = sortedAndSuitEquips.shift(); + // hero = await HeroModel.addEquip(roleId, hero.hid, equip.ePlaceId, equip._id); + // equip = await EquipModel.putOnOrOff(equip._id, hero.hid); + // if (!!equip) { + // curEquips.push(pick(equip, ['seqId', 'hid'])); + // equips.push(equip); + // } + // } - } - } - if (curEquips.length > 0) { - //任务 - await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [1, oldCount]); - await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, curEquips.length, true, {}); - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, curEquips.length); - for(let equip of equips) { - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equip, [1]); // equipA必然是脱,如果hid不为0说明从一个人穿到另一个人,不算任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality }); - } - //英雄满装备且都镶嵌相同阶数的宝石 - let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) - if (isTask) { - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) - } + // } + // } + // if (curEquips.length > 0) { + // //任务 + // await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [1, oldCount]); + // await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, curEquips.length, true, {}); + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, curEquips.length); + // for(let equip of equips) { + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_QUALITY, equip, [1]); // equipA必然是脱,如果hid不为0说明从一个人穿到另一个人,不算任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality }); + // } + // //英雄满装备且都镶嵌相同阶数的宝石 + // let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) + // if (isTask) { + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) + // } - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args); - } + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args); + // } - return resResult(STATUS.SUCCESS, { curEquips }); - } + // return resResult(STATUS.SUCCESS, { curEquips }); + // } - //装备打孔 - public async digHole(msg: { eid: number, id: number }, session: BackendSession) { - let { eid, id } = msg; - let roleId: string = session.get('roleId'); - let sid: string = session.get('sid'); - let equip = await EquipModel.getEquip(eid); - let index = findIndex(equip.holes, { id }); - if (index < 0) - return resResult(STATUS.EQUIP_HOLE_NOT_FIND); - if (equip.holes[index].isOpen) - return resResult(STATUS.EQUIP_HOLE_IS_DUG); - let consumes: Array<{ id: number, count: number }> = []; - if (id == 1) { - consumes = parseGoodStr(EQUIP.EQUIP_ONE_HOLE); - } else if (id == 2) { - consumes = parseGoodStr(EQUIP.EQUIP_TWO_HOLE); - } else if (id == 3) { - consumes = parseGoodStr(EQUIP.EQUIP_THREE_HOLE); - } - let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_DIG_HOLE); - if (!result) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - equip.holes[index].isOpen = true; - await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); - return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); - } + // //装备打孔 + // public async digHole(msg: { eid: number, id: number }, session: BackendSession) { + // let { eid, id } = msg; + // let roleId: string = session.get('roleId'); + // let sid: string = session.get('sid'); + // let equip = await EquipModel.getEquip(eid); + // let index = findIndex(equip.holes, { id }); + // if (index < 0) + // return resResult(STATUS.EQUIP_HOLE_NOT_FIND); + // if (equip.holes[index].isOpen) + // return resResult(STATUS.EQUIP_HOLE_IS_DUG); + // let consumes: Array<{ id: number, count: number }> = []; + // if (id == 1) { + // consumes = parseGoodStr(EQUIP.EQUIP_ONE_HOLE); + // } else if (id == 2) { + // consumes = parseGoodStr(EQUIP.EQUIP_TWO_HOLE); + // } else if (id == 3) { + // consumes = parseGoodStr(EQUIP.EQUIP_THREE_HOLE); + // } + // let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_DIG_HOLE); + // if (!result) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // equip.holes[index].isOpen = true; + // await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); + // return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); + // } - //宝石镶嵌 - public async fillHole(msg: { eid: number, id: number, jewel: number }, session: BackendSession) { - let { eid, id, jewel } = msg; - let roleId: string = session.get('roleId'); - const serverId = session.get('serverId'); - let sid: string = session.get('sid'); + // //宝石镶嵌 + // public async fillHole(msg: { eid: number, id: number, jewel: number }, session: BackendSession) { + // let { eid, id, jewel } = msg; + // let roleId: string = session.get('roleId'); + // const serverId = session.get('serverId'); + // let sid: string = session.get('sid'); - let consumes: Array<{ id: number, count: number }> = []; - let goods: Array<{ id: number, count: number }> = []; - let equip = await EquipModel.getEquip(eid); - let oldJewelCount = equip.holes.filter(cur => cur.jewel > 0).length; + // let consumes: Array<{ id: number, count: number }> = []; + // let goods: Array<{ id: number, count: number }> = []; + // let equip = await EquipModel.getEquip(eid); + // let oldJewelCount = equip.holes.filter(cur => cur.jewel > 0).length; - let { itid } = getGoodById(equip.id); - let { equipJewel } = ITID.get(itid); - let jewelInfo = getGoodById(jewel); - if (jewelInfo.itid != equipJewel) - return resResult(STATUS.EQUIP_NOT_MATCH_JEWEL); - let index = findIndex(equip.holes, { id }); - if (index < 0) - return resResult(STATUS.EQUIP_HOLE_NOT_FIND); - if (!equip.holes[index].isOpen) - return resResult(STATUS.EQUIP_HOLE_IS_NOT_DUG); - let oldJewel = equip.holes[index].jewel; - if (!!oldJewel) - goods.push({ id: oldJewel, count: 1 }); - consumes.push({ id: jewel, count: 1 }); - let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_FILL_HOLE); - if (!result) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - equip.holes[index].jewel = jewel; - await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); - let roleName: string = session.get('roleName'); - if (goods.length) - await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.TAKE_OUT_JEWEL); - if (!!equip.hid) { - let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId); - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]); - //任务 - //英雄满装备且都镶嵌相同阶数的宝石 - let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) - if (isTask) { - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) - } - } + // let { itid } = getGoodById(equip.id); + // let { equipJewel } = ITID.get(itid); + // let jewelInfo = getGoodById(jewel); + // if (jewelInfo.itid != equipJewel) + // return resResult(STATUS.EQUIP_NOT_MATCH_JEWEL); + // let index = findIndex(equip.holes, { id }); + // if (index < 0) + // return resResult(STATUS.EQUIP_HOLE_NOT_FIND); + // if (!equip.holes[index].isOpen) + // return resResult(STATUS.EQUIP_HOLE_IS_NOT_DUG); + // let oldJewel = equip.holes[index].jewel; + // if (!!oldJewel) + // goods.push({ id: oldJewel, count: 1 }); + // consumes.push({ id: jewel, count: 1 }); + // let result = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.EQUIP_FILL_HOLE); + // if (!result) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // equip.holes[index].jewel = jewel; + // await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); + // let roleName: string = session.get('roleName'); + // if (goods.length) + // await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.TAKE_OUT_JEWEL); + // if (!!equip.hid) { + // let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]); + // //任务 + // //英雄满装备且都镶嵌相同阶数的宝石 + // let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) + // if (isTask) { + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) + // } + // } - // 任务 - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); - await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]); - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); - //成长任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1) - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1, { stage: jewelInfo.lvLimited }) + // // 任务 + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); + // await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]); + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); + // //成长任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, 1) + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_STAGE, 1, { stage: jewelInfo.lvLimited }) - return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); - } + // return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); + // } - //宝石合成(一键放入type:1, 合成type:2) - public async composeJewel(msg: { jewel: number, count: number, consumes: Array<{ id: number, count: number }>, type: number }, session: BackendSession) { - let { count, consumes, jewel, type } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let serverId: number = session.get('serverId'); - let sid: string = session.get('sid'); - let goodInfo = getGoodById(jewel); - let good = ITID.get(goodInfo.itid); - if (good.type != CONSUME_TYPE.JEWEL) - return resResult(STATUS.WRONG_PARMS); - let needConsumes = checkMaterialEnough(consumes, jewel, count);//检查是否可以合成,并返回最终需要消耗的材料 - if (!needConsumes) - return resResult(STATUS.WRONG_PARMS); - let res = await handleCost(roleId, sid, needConsumes, ITEM_CHANGE_REASON.JEWEL_COMPOSE); - if (!res) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - let result = await addItems(roleId, roleName, sid, [{ id: jewel, count: count }], ITEM_CHANGE_REASON.JEWEL_COMPOSE); + // //宝石合成(一键放入type:1, 合成type:2) + // public async composeJewel(msg: { jewel: number, count: number, consumes: Array<{ id: number, count: number }>, type: number }, session: BackendSession) { + // let { count, consumes, jewel, type } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let serverId: number = session.get('serverId'); + // let sid: string = session.get('sid'); + // let goodInfo = getGoodById(jewel); + // let good = ITID.get(goodInfo.itid); + // if (good.type != CONSUME_TYPE.JEWEL) + // return resResult(STATUS.WRONG_PARMS); + // let needConsumes = checkMaterialEnough(consumes, jewel, count);//检查是否可以合成,并返回最终需要消耗的材料 + // if (!needConsumes) + // return resResult(STATUS.WRONG_PARMS); + // let res = await handleCost(roleId, sid, needConsumes, ITEM_CHANGE_REASON.JEWEL_COMPOSE); + // if (!res) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // let result = await addItems(roleId, roleName, sid, [{ id: jewel, count: count }], ITEM_CHANGE_REASON.JEWEL_COMPOSE); - if (goodInfo.lvLimited >= JEWEL_PUSH_LV) { - pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.JEWEL_COMPOSE, jewel, goodInfo.name); - } - if (type == 1) - return resResult(STATUS.SUCCESS, { goods: result }); + // if (goodInfo.lvLimited >= JEWEL_PUSH_LV) { + // pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.JEWEL_COMPOSE, jewel, goodInfo.name); + // } + // if (type == 1) + // return resResult(STATUS.SUCCESS, { goods: result }); - return resResult(STATUS.SUCCESS); - } + // return resResult(STATUS.SUCCESS); + // } - //宝石卸下 - public async putOffHole(msg: { eid: number, id: number }, session: BackendSession) { - let { eid, id } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); + // //宝石卸下 + // public async putOffHole(msg: { eid: number, id: number }, session: BackendSession) { + // let { eid, id } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - let goods: Array<{ id: number, count: number }> = []; - let equip = await EquipModel.getEquip(eid); - let oldJewelCount = equip.holes.filter(cur => cur.jewel > 0).length; - let index = findIndex(equip.holes, { id }); - if (index < 0) - return resResult(STATUS.EQUIP_HOLE_NOT_FIND); - let jewel = equip.holes[index].jewel; - if (!jewel) - return resResult(STATUS.EQUIP_NOT_FILL_HOLE); - goods.push({ id: jewel, count: 1 }); - equip.holes[index].jewel = 0; - await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); - await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.TAKE_OUT_JEWEL); - if (!!equip.hid) { - let hero = await HeroModel.findByHidAndRole(equip.hid, roleId); - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_OFF, sid, roleId, hero, {}, [jewel]); - } + // let sid: string = session.get('sid'); + // let goods: Array<{ id: number, count: number }> = []; + // let equip = await EquipModel.getEquip(eid); + // let oldJewelCount = equip.holes.filter(cur => cur.jewel > 0).length; + // let index = findIndex(equip.holes, { id }); + // if (index < 0) + // return resResult(STATUS.EQUIP_HOLE_NOT_FIND); + // let jewel = equip.holes[index].jewel; + // if (!jewel) + // return resResult(STATUS.EQUIP_NOT_FILL_HOLE); + // goods.push({ id: jewel, count: 1 }); + // equip.holes[index].jewel = 0; + // await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); + // await addItems(roleId, roleName, sid, goods, ITEM_CHANGE_REASON.TAKE_OUT_JEWEL); + // if (!!equip.hid) { + // let hero = await HeroModel.findByHidAndRole(equip.hid, roleId); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_OFF, sid, roleId, hero, {}, [jewel]); + // } - // 任务 - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); - await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [0, jewel]); - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); - return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); - } + // // 任务 + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); + // await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [0, jewel]); + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); + // return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); + // } - //宝石购买并合成 - public async composeAndPurchaseJewel(msg: { jewel: number, count: number, consumes: Array<{ id: number, count: number }>, purchaseGoods: Array<{ id: number, count: number }> }, session: BackendSession) { - let { count, consumes, jewel, purchaseGoods } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - const serverId = session.get('serverId'); - let goodInfo = getGoodById(jewel); - let good = ITID.get(goodInfo.itid); - if (good.type != CONSUME_TYPE.JEWEL) - return resResult(STATUS.WRONG_PARMS); - if (!purchaseGoods) //需要购买才可进行合成的物品 - purchaseGoods = []; - if (!consumes) - consumes = []; - let needConsumes = checkMaterialEnough(consumes.concat(purchaseGoods), jewel, count);//检查是否可以合成,并返回最终需要消耗的材料 - if (!needConsumes) - return resResult(STATUS.WRONG_PARMS); - let items: ItemInter[] = []; - for (let item of purchaseGoods) { - items.push({ id: item.id, count: item.count })//加上购买的数量 - } - items = items.concat(needConsumes); - let costResult = await handleCost(roleId, sid, items, ITEM_CHANGE_REASON.JEWEL_COMPOSE);//合并消耗是否足够 - if (!costResult) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - await addItems(roleId, roleName, sid, [{ id: jewel, count: count }], ITEM_CHANGE_REASON.JEWEL_COMPOSE); - if (goodInfo.lvLimited >= JEWEL_PUSH_LV) { - pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.JEWEL_COMPOSE, jewel, goodInfo.name); - } - return resResult(STATUS.SUCCESS); - } - /** - * 临时使用的购买物品,后应该在商店中购买 - * @param msg - * @param session - */ - public async purchaseGoods(msg: { purchaseGoods: Array<{ id: number, count: number }> }, session: BackendSession) { - let { purchaseGoods } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - let result = await addItems(roleId, roleName, sid, purchaseGoods, ITEM_CHANGE_REASON.DEBUG); - if (!result) { - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - } - return resResult(STATUS.SUCCESS); - } - /** - * 合成下一级宝石并穿戴(装备镶嵌界面) - * @param msg - * @param session - */ - public async composeNextLevelJewel(msg: { jewel: number, count: number, eid: number, id: number }, session: BackendSession) { - let { count, jewel, eid, id } = msg; - let roleId: string = session.get('roleId'); - let roleName: string = session.get('roleName'); - let sid: string = session.get('sid'); - let serverId = session.get('serverId'); + // //宝石购买并合成 + // public async composeAndPurchaseJewel(msg: { jewel: number, count: number, consumes: Array<{ id: number, count: number }>, purchaseGoods: Array<{ id: number, count: number }> }, session: BackendSession) { + // let { count, consumes, jewel, purchaseGoods } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // const serverId = session.get('serverId'); + // let goodInfo = getGoodById(jewel); + // let good = ITID.get(goodInfo.itid); + // if (good.type != CONSUME_TYPE.JEWEL) + // return resResult(STATUS.WRONG_PARMS); + // if (!purchaseGoods) //需要购买才可进行合成的物品 + // purchaseGoods = []; + // if (!consumes) + // consumes = []; + // let needConsumes = checkMaterialEnough(consumes.concat(purchaseGoods), jewel, count);//检查是否可以合成,并返回最终需要消耗的材料 + // if (!needConsumes) + // return resResult(STATUS.WRONG_PARMS); + // let items: ItemInter[] = []; + // for (let item of purchaseGoods) { + // items.push({ id: item.id, count: item.count })//加上购买的数量 + // } + // items = items.concat(needConsumes); + // let costResult = await handleCost(roleId, sid, items, ITEM_CHANGE_REASON.JEWEL_COMPOSE);//合并消耗是否足够 + // if (!costResult) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // await addItems(roleId, roleName, sid, [{ id: jewel, count: count }], ITEM_CHANGE_REASON.JEWEL_COMPOSE); + // if (goodInfo.lvLimited >= JEWEL_PUSH_LV) { + // pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.JEWEL_COMPOSE, jewel, goodInfo.name); + // } + // return resResult(STATUS.SUCCESS); + // } + // /** + // * 临时使用的购买物品,后应该在商店中购买 + // * @param msg + // * @param session + // */ + // public async purchaseGoods(msg: { purchaseGoods: Array<{ id: number, count: number }> }, session: BackendSession) { + // let { purchaseGoods } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // let result = await addItems(roleId, roleName, sid, purchaseGoods, ITEM_CHANGE_REASON.DEBUG); + // if (!result) { + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // } + // return resResult(STATUS.SUCCESS); + // } + // /** + // * 合成下一级宝石并穿戴(装备镶嵌界面) + // * @param msg + // * @param session + // */ + // public async composeNextLevelJewel(msg: { jewel: number, count: number, eid: number, id: number }, session: BackendSession) { + // let { count, jewel, eid, id } = msg; + // let roleId: string = session.get('roleId'); + // let roleName: string = session.get('roleName'); + // let sid: string = session.get('sid'); + // let serverId = session.get('serverId'); - let goodInfo = getGoodById(jewel); - let good = ITID.get(goodInfo.itid); - let needUpdate = false; - let oldJewel: number; - let consumes: Array<{ id: number, count: number }> = []; - if (good.type != CONSUME_TYPE.JEWEL || !eid || eid < 0) - return resResult(STATUS.WRONG_PARMS); - let equip = await EquipModel.getEquip(eid); - if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); + // let goodInfo = getGoodById(jewel); + // let good = ITID.get(goodInfo.itid); + // let needUpdate = false; + // let oldJewel: number; + // let consumes: Array<{ id: number, count: number }> = []; + // if (good.type != CONSUME_TYPE.JEWEL || !eid || eid < 0) + // return resResult(STATUS.WRONG_PARMS); + // let equip = await EquipModel.getEquip(eid); + // if (!equip) return resResult(STATUS.EQUIP_NOT_FIND); - let oldJewelCount = equip.holes.filter(cur => cur.jewel > 0).length; + // let oldJewelCount = equip.holes.filter(cur => cur.jewel > 0).length; - let index = findIndex(equip.holes, { id }); - //装备上该位置有穿戴该宝石,且在合成的材料中 - if (!!equip.holes[index] && equip.holes[index].jewel == goodInfo.composeMaterial[0].id) { - oldJewel = equip.holes[index].jewel; - equip.holes[index].jewel = jewel;//合成后的新宝石穿戴到装备上 - needUpdate = true; - consumes.push({ id: goodInfo.composeMaterial[0].id, count: 1 });//ratio:1表示可以释放掉一颗宝石 - } + // let index = findIndex(equip.holes, { id }); + // //装备上该位置有穿戴该宝石,且在合成的材料中 + // if (!!equip.holes[index] && equip.holes[index].jewel == goodInfo.composeMaterial[0].id) { + // oldJewel = equip.holes[index].jewel; + // equip.holes[index].jewel = jewel;//合成后的新宝石穿戴到装备上 + // needUpdate = true; + // consumes.push({ id: goodInfo.composeMaterial[0].id, count: 1 });//ratio:1表示可以释放掉一颗宝石 + // } - consumes = consumes.concat(goodInfo.composeMaterial); - if (goodInfo.specialMaterial.count) { - consumes.push({ id: goodInfo.specialMaterial.ids[0], count: goodInfo.specialMaterial.count }) - } - let costResult = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.JEWEL_COMPOSE);//检查是消耗是否足够 - if (!costResult) - return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + // consumes = consumes.concat(goodInfo.composeMaterial); + // if (goodInfo.specialMaterial.count) { + // consumes.push({ id: goodInfo.specialMaterial.ids[0], count: goodInfo.specialMaterial.count }) + // } + // let costResult = await handleCost(roleId, sid, consumes, ITEM_CHANGE_REASON.JEWEL_COMPOSE);//检查是消耗是否足够 + // if (!costResult) + // return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); - if (goodInfo.lvLimited >= JEWEL_PUSH_LV) { - pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.JEWEL_COMPOSE, jewel, goodInfo.name); - } + // if (goodInfo.lvLimited >= JEWEL_PUSH_LV) { + // pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.JEWEL_COMPOSE, jewel, goodInfo.name); + // } - let result = {}; - if (needUpdate) { - //穿戴宝石 - equip = await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); - if (!!equip.hid) { - let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId); - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]); + // let result = {}; + // if (needUpdate) { + // //穿戴宝石 + // equip = await EquipModel.updateEquipInfo(eid, { holes: equip.holes }); + // if (!!equip.hid) { + // let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId); + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.JEWEL_ON, sid, roleId, hero, {}, [jewel, oldJewel]); - //任务 - //英雄满装备且都镶嵌相同阶数的宝石 - let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) - if (isTask) { - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) - } - } + // //任务 + // //英雄满装备且都镶嵌相同阶数的宝石 + // let { isTask, jewelLevel } = await checkTaskConditionEquipSuitJewelStage(hero) + // if (isTask) { + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE, 1, { stage: jewelLevel }) + // } + // } - // 任务 - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); - await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]); - await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); - //成长任务 - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, count) + // // 任务 + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL, equip, [oldJewelCount]); + // await checkTaskWithArgs(roleId, sid, TASK_TYPE.EQUIP_JEWEL_STAGE, [jewel, oldJewel]); + // await checkTaskWithEquip(roleId, sid, TASK_TYPE.EQUIP_JEWEL_SUM, equip, [oldJewelCount]); + // //成长任务 + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_JEWEL_SUM, count) - return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); - } else { - result = await addItems(roleId, roleName, sid, [{ id: jewel, count: count }], ITEM_CHANGE_REASON.JEWEL_COMPOSE); - return resResult(STATUS.SUCCESS, { goods: [{ id: jewel, count }] }); - } - } + // return resResult(STATUS.SUCCESS, { curEquip: { seqId: eid, holes: equip.holes } }); + // } else { + // result = await addItems(roleId, roleName, sid, [{ id: jewel, count: count }], ITEM_CHANGE_REASON.JEWEL_COMPOSE); + // return resResult(STATUS.SUCCESS, { goods: [{ id: jewel, count }] }); + // } + // } - /** - * @description 藏宝图合成 - * @param {{target: number, original: Array<{id: number, count: number}>}} msg - * @param {BackendSession} session - * @returns - * @memberof ComBattleHandler - */ - async composeBlueprt(msg: { target: number, original: Array<{ id: number, count: number }> }, session: BackendSession) { - const roleId = session.get('roleId'); - const roleName = session.get('roleName'); - const sid = session.get('sid'); - const serverId = session.get('serverId'); + // /** + // * @description 藏宝图合成 + // * @param {{target: number, original: Array<{id: number, count: number}>}} msg + // * @param {BackendSession} session + // * @returns + // * @memberof ComBattleHandler + // */ + // async composeBlueprt(msg: { target: number, original: Array<{ id: number, count: number }> }, session: BackendSession) { + // const roleId = session.get('roleId'); + // const roleName = session.get('roleName'); + // const sid = session.get('sid'); + // const serverId = session.get('serverId'); - const { target, original } = msg; + // const { target, original } = msg; - // 原材料检查 - let originalQuality: number, originalSum: number = 0; - for (let { id, count } of original) { - const goodInfo = gameData.goods.get(id); - if (!originalQuality) originalQuality = goodInfo.quality; - if (originalQuality != goodInfo.quality) { - return resResult(STATUS.COM_BLUEPRT_QUALITY_ERROR); - } + // // 原材料检查 + // let originalQuality: number, originalSum: number = 0; + // for (let { id, count } of original) { + // const goodInfo = gameData.goods.get(id); + // if (!originalQuality) originalQuality = goodInfo.quality; + // if (originalQuality != goodInfo.quality) { + // return resResult(STATUS.COM_BLUEPRT_QUALITY_ERROR); + // } - if (goodInfo.itid == IT_TYPE.BLUEPRT) { - originalSum += count; - } - } + // if (goodInfo.itid == IT_TYPE.BLUEPRT) { + // originalSum += count; + // } + // } - const dicCompose = gameData.blurprtCompose.get(originalQuality); - if (!dicCompose) { - return resResult(STATUS.COM_BLUEPRT_QUALITY_CANNOT_COMPOSE); - } - if (originalSum != dicCompose.blueprtNum) { - return resResult(STATUS.COM_BLUEPRT_COUNT_ERROR); - } + // const dicCompose = gameData.blurprtCompose.get(originalQuality); + // if (!dicCompose) { + // return resResult(STATUS.COM_BLUEPRT_QUALITY_CANNOT_COMPOSE); + // } + // if (originalSum != dicCompose.blueprtNum) { + // return resResult(STATUS.COM_BLUEPRT_COUNT_ERROR); + // } - let dicTargetInfo = gameData.goods.get(target); - if (!dicTargetInfo) return resResult(STATUS.WRONG_PARMS); - if (dicTargetInfo.quality != dicCompose.targetQuality) return resResult(STATUS.COM_BLUEPRT_QUALITY_ERROR); + // let dicTargetInfo = gameData.goods.get(target); + // if (!dicTargetInfo) return resResult(STATUS.WRONG_PARMS); + // if (dicTargetInfo.quality != dicCompose.targetQuality) return resResult(STATUS.COM_BLUEPRT_QUALITY_ERROR); - // 消耗藏宝图和寻宝币 + // // 消耗藏宝图和寻宝币 - let costResult = await handleCost(roleId, sid, [...original, ...dicCompose.coinNum], ITEM_CHANGE_REASON.BLUEPRT_COMPOSE); - if (!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); + // let costResult = await handleCost(roleId, sid, [...original, ...dicCompose.coinNum], ITEM_CHANGE_REASON.BLUEPRT_COMPOSE); + // if (!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH); - const reward = [{ id: target, count: 1 }]; - const goods = await addItems(roleId, roleName, sid, reward, ITEM_CHANGE_REASON.BLUEPRT_COMPOSE); - if (dicCompose.targetQuality >= QUALITY_TYPE.ORANGE) { - const { name } = gameData.goods.get(target); - pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.ORANGE_BLUEPRT_COMPOSE, target, name); - } - await checkTask(roleId, sid, TASK_TYPE.COM_BATTLE_BLUEPRT, 1, true, { quality: dicCompose.targetQuality }); - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.COM_BATTLE_BLUEPRT, 1, { quality: dicCompose.targetQuality }) - return resResult(STATUS.SUCCESS, { goods, costGold: 0 }); - } + // const reward = [{ id: target, count: 1 }]; + // const goods = await addItems(roleId, roleName, sid, reward, ITEM_CHANGE_REASON.BLUEPRT_COMPOSE); + // if (dicCompose.targetQuality >= QUALITY_TYPE.ORANGE) { + // const { name } = gameData.goods.get(target); + // pushNormalItemMsg(roleId, roleName, serverId, MSG_SOURCE.ORANGE_BLUEPRT_COMPOSE, target, name); + // } + // await checkTask(roleId, sid, TASK_TYPE.COM_BATTLE_BLUEPRT, 1, true, { quality: dicCompose.targetQuality }); + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.COM_BATTLE_BLUEPRT, 1, { quality: dicCompose.targetQuality }) + // return resResult(STATUS.SUCCESS, { goods, costGold: 0 }); + // } } \ No newline at end of file diff --git a/game-server/app/servers/role/handler/friendHandler.ts b/game-server/app/servers/role/handler/friendHandler.ts index 76a9858c8..b62fa6c2e 100644 --- a/game-server/app/servers/role/handler/friendHandler.ts +++ b/game-server/app/servers/role/handler/friendHandler.ts @@ -731,22 +731,22 @@ export class FriendHandler { if (heroList.length <= 0) return resResult(STATUS.HERO_NOT_FIND); let list = new Array(); - for (let { roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, skinId, attr: heroAttrs, ePlace } of heroList) { + // for (let { roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, skinId, attr: heroAttrs, ePlace } of heroList) { - let equips = await EquipModel.findListByHidAndRole(hisRoleId, hid, EQUIP_SELECT.HERO_DETAIL); + // let equips = await EquipModel.findListByHidAndRole(hisRoleId, hid, EQUIP_SELECT.HERO_DETAIL); - let attributes = getPlayerMainAttribute(heroAttrs, role.attr); + // let attributes = getPlayerMainAttribute(heroAttrs, role.attr); - list.push({ - roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, skinId, - equips: equips.map(cur => { - let curEplace = ePlace.find(ccur => cur.ePlaceId == ccur.id) || new EPlace(); - let { lv = 0, refineLv = 0 } = curEplace; - return { ...cur, lv, refineLv } - }), attributes - }); + // list.push({ + // roleId, roleName, hid, hName, ce, lv, star, colorStar, quality, job, skinId, + // equips: equips.map(cur => { + // let curEplace = ePlace.find(ccur => cur.ePlaceId == ccur.id) || new EPlace(); + // let { lv = 0, refineLv = 0 } = curEplace; + // return { ...cur, lv, refineLv } + // }), attributes + // }); - } + // } return resResult(STATUS.SUCCESS, { list }); diff --git a/game-server/app/servers/role/handler/heroHandler.ts b/game-server/app/servers/role/handler/heroHandler.ts index 484ff83c5..641b44da2 100644 --- a/game-server/app/servers/role/handler/heroHandler.ts +++ b/game-server/app/servers/role/handler/heroHandler.ts @@ -569,7 +569,6 @@ export class HeroHandler { if (!dicSkin) return resResult(STATUS.HERO_SKIN_NOT_FIND); let hero = await HeroModel.findByHidAndRoleWithEquip(dicSkin.actorId, roleId); if (!hero) return resResult(STATUS.HERO_NOT_FIND); - let oldCount = hero.ePlace.filter(cur => cur.equip).length; let newHeroSkins: HeroSkin[] = []; let result = false; @@ -591,34 +590,34 @@ export class HeroHandler { if (!result) { return resResult(STATUS.HERO_SKIN_NOT_FIND); } - let oldEquipSeids = calEquipSeids(hero); + let dicHero = gameData.hero.get(dicSkin.heroId); let dicMyJob = gameData.job.get(hero.job); let dicNewJob = getJobByGradeAndClass(dicHero.jobClass, dicMyJob.grade); - let newEplace: EPlace[] = [], heroPutNum = 0, curEquips: {seqId: number, id: number, hid: number, ePlaceId: number}[] = []; - for(let { id, equip, lv, refineLv } of hero.ePlace) { - let e = equip; - if(equip && !checkEquipCanPut({...hero, skinId: dicSkin.heroId}, e.id)) { - await EquipModel.putOnOrOff(e._id, 0); - heroPutNum -= 1; - newEplace.push({ id, equip: null, lv, refineLv}); - curEquips.push({ seqId: e.seqId, id: e.id, hid: 0, ePlaceId: id }); - } else { - newEplace.push({ id, equip: e?e._id: null, lv, refineLv}); - } - } + // let newEplace: EPlace[] = [], heroPutNum = 0, curEquips: {seqId: number, id: number, hid: number, ePlaceId: number}[] = []; + // for(let { id, equip, lv, refineLv } of hero.ePlace) { + // let e = equip; + // if(equip && !checkEquipCanPut({...hero, skinId: dicSkin.heroId}, e.id)) { + // await EquipModel.putOnOrOff(e._id, 0); + // heroPutNum -= 1; + // newEplace.push({ id, equip: null, lv, refineLv}); + // curEquips.push({ seqId: e.seqId, id: e.id, hid: 0, ePlaceId: id }); + // } else { + // newEplace.push({ id, equip: e?e._id: null, lv, refineLv}); + // } + // } - if(heroPutNum < 0) { - hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, oldEquipSeids); - await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, heroPutNum, true, {}); - await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, heroPutNum); - await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [heroPutNum, oldCount]); - } + // if(heroPutNum < 0) { + // hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, oldEquipSeids); + // await checkTask(roleId, sid, TASK_TYPE.EQUIP_SUM, heroPutNum, true, {}); + // await checkActivityTask(serverId, sid, roleId, TASK_TYPE.EQUIP_SUM, heroPutNum); + // await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [heroPutNum, oldCount]); + // } - hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SKIN, sid, roleId, hero, { skins: newHeroSkins, skinId: dicSkin.heroId, job: dicNewJob.jobid, ePlace: newEplace }); - return resResult(STATUS.SUCCESS, { curHero: pick(hero, ['hid', 'skins', 'skinId', 'job']), curEquips }); + hero = await calPlayerCeAndSave(HERO_SYSTEM_TYPE.SKIN, sid, roleId, hero, { skins: newHeroSkins, skinId: dicSkin.heroId, job: dicNewJob.jobid }); + return resResult(STATUS.SUCCESS, { curHero: pick(hero, ['hid', 'skins', 'skinId', 'job']) }); } // ! debug接口 一键全武将 diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index 6b20f5d63..83d5baa72 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -125,33 +125,33 @@ export async function handleCost(roleId: string, sid: string, goods: Array 0) { - let heroMap = new Map(); - for(let equip of resEquips) { - if(equip.hid > 0) { - if(!heroMap.has(equip.hid)) { - let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId); - heroMap.set(equip.hid, { hero, equips: [] }); - } - heroMap.get(equip.hid).equips.push(equip); - } - } - for(let [_hid, {hero, equips} ] of heroMap) { - let oldCount = hero.ePlace.filter(cur => cur.equip).length; - let args = calEquipSeids(hero); - for(let equip of equips) { - hero = await HeroModel.removeEquip(roleId, hero.hid, equip.ePlaceId, equip._id); - } + // if (resEquips.length > 0) { + // let heroMap = new Map(); + // for(let equip of resEquips) { + // if(equip.hid > 0) { + // if(!heroMap.has(equip.hid)) { + // let hero = await HeroModel.findByHidAndRoleWithEquip(equip.hid, roleId); + // heroMap.set(equip.hid, { hero, equips: [] }); + // } + // heroMap.get(equip.hid).equips.push(equip); + // } + // } + // for(let [_hid, {hero, equips} ] of heroMap) { + // let oldCount = hero.ePlace.filter(cur => cur.equip).length; + // let args = calEquipSeids(hero); + // for(let equip of equips) { + // hero = await HeroModel.removeEquip(roleId, hero.hid, equip.ePlaceId, equip._id); + // } - await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args); - await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [-1, oldCount]); - } + // await calPlayerCeAndSave(HERO_SYSTEM_TYPE.EQUIP, sid, roleId, hero, {}, args); + // await checkTaskWithHero(roleId, sid, TASK_TYPE.EQUIP_BY_HERO, hero, [-1, oldCount]); + // } - let equips = await EquipModel.deleteEquips(roleId, equipSeqIds); - saveItemChangeLog(roleId, equips.map(equip => ({ id: equip.id, count: equip.count, inc: -1 })), reason); - pinus.app.get('channelService').pushMessageByUids('onEquipDel', resResult(STATUS.SUCCESS, { equipInfos: equips.map(equip => ({ seqId: equip.seqId, id: equip.id, inc: -1, reason })) }), uids); - } + // let equips = await EquipModel.deleteEquips(roleId, equipSeqIds); + // saveItemChangeLog(roleId, equips.map(equip => ({ id: equip.id, count: equip.count, inc: -1 })), reason); + // pinus.app.get('channelService').pushMessageByUids('onEquipDel', resResult(STATUS.SUCCESS, { equipInfos: equips.map(equip => ({ seqId: equip.seqId, id: equip.id, inc: -1, reason })) }), uids); + // } //消耗玩家货币 if (gold.length > 0 || coin.length > 0) { diff --git a/game-server/app/services/sysChatService.ts b/game-server/app/services/sysChatService.ts index 0ff037338..434937445 100644 --- a/game-server/app/services/sysChatService.ts +++ b/game-server/app/services/sysChatService.ts @@ -91,13 +91,13 @@ export async function pushGuildBossSucMsg(roleId: string, roleName: string, guil } export async function pushEquipRefineSucMsg(roleId: string, roleName: string, serverId: number, eplace: Partial, quality: number) { - const { id, lv, refineLv, equip } = eplace; - const { id: equipId } = equip as EquipType; - const data = { id, lv, refineLv, equipId, quality }; - const content = JSON.stringify({ roleId, roleName, eplace: data, equip: pick(equip, ['id', 'name', 'eplaceId', 'quality', 'holes', 'randMain', 'randSe', 'grade', 'hid']) }); - const msgData = await createGroupMsg(roleId, roleName, CHANNEL_PREFIX.SYS, `${serverId}`, MSG_TYPE.RICH_TEXT, MSG_SOURCE.EQUIP_REFINE_SUC, content, null, null); - await pushGroupMsgToRoom(msgData); - return msgData; + // const { id, lv, refineLv, equip } = eplace; + // const { id: equipId } = equip as EquipType; + // const data = { id, lv, refineLv, equipId, quality }; + // const content = JSON.stringify({ roleId, roleName, eplace: data, equip: pick(equip, ['id', 'name', 'eplaceId', 'quality', 'holes', 'randMain', 'randSe', 'grade', 'hid']) }); + // const msgData = await createGroupMsg(roleId, roleName, CHANNEL_PREFIX.SYS, `${serverId}`, MSG_TYPE.RICH_TEXT, MSG_SOURCE.EQUIP_REFINE_SUC, content, null, null); + // await pushGroupMsgToRoom(msgData); + // return msgData; } export async function pushNormalEquipMsg(roleId: string, roleName: string, serverId: number, source: number, id: number, name: string, quality: number) { diff --git a/game-server/app/services/taskService.ts b/game-server/app/services/taskService.ts index 9e06f22d0..59e2c0306 100644 --- a/game-server/app/services/taskService.ts +++ b/game-server/app/services/taskService.ts @@ -329,37 +329,4 @@ export async function refDailyTaskBox(roleId: string, sid: string, debug = false point, weeklyPoint, box }), uids); } -} - -//任务条件 -//英雄满装备且都镶嵌相同阶数的宝石 -export async function checkTaskConditionEquipSuitJewelStage(hero: HeroType) { - let isTask = true;//是否满足任务条件 - let jewelLevel = -1;//宝石阶数 - for (let i = 0; i < hero.ePlace.length; i++) { - let equipObj = hero.ePlace[i].equip; - if (equipObj) { - let equipObjInfo = getGoodById(equipObj.id); - if (equipObj.holes.length == equipObjInfo.hole && equipObjInfo.hole > 0) { - for (let j = 0; j < equipObj.holes.length; j++) { - let jewel = equipObj.holes[j].jewel; - let jewelInfo = getGoodById(jewel); - if (jewelInfo) { - if (jewelLevel == -1) { - jewelLevel = jewelInfo.lvLimited; - } else if (jewelInfo.lvLimited != jewelLevel) { - //宝石阶数不同 - isTask = false; - break; - } - } - } - } else { - //宝石没有镶满 - isTask = false; - break; - } - } - } - return { isTask, jewelLevel }; } \ No newline at end of file diff --git a/shared/db/Hero.ts b/shared/db/Hero.ts index 8415657d2..9ff2c7d72 100644 --- a/shared/db/Hero.ts +++ b/shared/db/Hero.ts @@ -1,8 +1,8 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, Ref, mongoose, DocumentType } from '@typegoose/typegoose'; -import Equip, { } from './Equip'; +// import Equip, { } from './Equip'; import { CounterModel } from './Counter'; -import { COUNTER, EQUIP_TYPE, HERO_CE_RATIO } from '../consts'; +import { COUNTER, HERO_CE_RATIO } from '../consts'; import { reduceCe } from '../pubUtils/util'; import Skin from './Skin'; import { SearchHeroParam } from '../domain/backEndField/search'; @@ -71,30 +71,30 @@ export class HeroSkin { enable: boolean; } +export class Stone { + @prop({ required: true }) + id: number; + @prop({ required: true }) + stone: number; +} + export class EPlace { @prop({ required: true }) id: number; - @prop({ ref: Equip, type: mongoose.Schema.Types.ObjectId }) - equip: Ref; @prop({ required: true }) lv: number; @prop({ required: true }) - refineLv: number; -} - -// 初始化 -function getInitialEplace() { - let ePlace = new Array(); - for (let i = EQUIP_TYPE.START; i <= EQUIP_TYPE.END; i++) { - let p = new EPlace(); - p.id = i; - p.equip = null; - p.lv = 0; - p.refineLv = 1; - - ePlace.push(p); - } - return ePlace; + quality: number; + @prop({ required: true }) + qualityStage: number; + @prop({ required: true }) + star: number; + @prop({ required: true }) + starStage: number; + @prop({ required: true, type: Stone, _id: false }) + stones: Stone[]; + @prop({ required: true }) + jewel: number; } @index({ roleId: 1, hid: 1 }) @@ -167,7 +167,7 @@ export default class Hero extends BaseModel { @prop({ required: true, type: HeroSkin, default: [], _id: false }) skins: HeroSkin[]; // 皮肤 - @prop({ required: true, type: EPlace, default: getInitialEplace(), _id: false }) + @prop({ required: true, type: EPlace, default: [], _id: false }) ePlace: EPlace[]; // 武将装备引用数组 public static async findByRole(roleId: string, sort: { field: string, sortBy: number }[] = [], select?: string, getters = false) { diff --git a/shared/db/Jewel.ts b/shared/db/Jewel.ts new file mode 100644 index 000000000..95b6820b2 --- /dev/null +++ b/shared/db/Jewel.ts @@ -0,0 +1,104 @@ +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; +// import { COUNTER } from '../consts'; +// import { CounterModel } from './Counter'; +import { SearchJewelParam } from '../domain/backEndField/search'; + +export class RandSe { + @prop({ required: true }) + id: number; // 随机属性位置id + @prop({ required: true }) + seid: number; // 随机属性池id + @prop({ required: true }) + rand: number; // 随机属性内需要随机的值 + @prop({ required: true }) + locked: boolean; // 洗炼是否锁定 +} + +@index({ roleId: 1, hid: 1, id: 1 }) +@index({ seqId: 1 }) +@modelOptions({ schemaOptions: { id: false } }) +export default class Equip extends BaseModel { + + @prop({ required: true }) + roleId: string; // 角色 id + @prop({ required: true }) + roleName: string; // 角色名称 + + @prop({ required: true }) + seqId: number; // 装备表自增 id + @prop({ required: true }) + id: number; // 装备 id + @prop({ required: true }) + name: string; // 装备名称 + @prop({ required: false, default: 0 }) + hid: number; // 装备此装备的武将 id + @prop({ required: false, default: 0 }) + ePlaceId: number; // 武将装备的部位 + + + @prop({ required: false, default: 0 }) + quenchId: number; // 选择淬炼的那一条,未选择时为0 + @prop({ required: false, default: 0 }) + quenchCnt: number; // 淬火成功次数,到了保底就绝对成功 + + @prop({ required: false, type: RandSe, default: [], _id: false }) + randSe: RandSe[]; // 强化随机属性 + @prop({ required: false, type: RandSe, default: [], _id: false }) + previewRandSe: RandSe[]; // 强化随机属性预览 + + + public static async findbyRole(roleId: string, lean = true) { + const jewels: JewelType[] = await JewelModel.find({ roleId }).lean(lean); + return jewels; + } + + public static async findbySeqId(seqId: number, select?: string ) { + const jewel: JewelType = await JewelModel.findOne({ seqId }).select(select).lean(); + return jewel; + } + + + public static async deleteAccount(roleId: string) { + let result = await JewelModel.deleteMany({ roleId }); + return result; + } + + private static getSearchObj(form: SearchJewelParam) { + let searchObj = {}; + if(form.roleId) searchObj['roleId'] = form.roleId; + if(form.roleName) searchObj['roleName'] = { $regex: new RegExp(form.roleName.toString(), 'i') }; + if(form.id) searchObj['id'] = form.id; + return searchObj + } + + public static async findByCondition(page: number, pageSize: number, sortField: string = 'updatedAt', sortOrder: string = 'descend', form: SearchJewelParam = {}) { + + let searchObj = this.getSearchObj(form); + let sort = {}; + if(sortField && sortOrder) { + if(sortOrder == 'ascend') { + sort[sortField] = 1; + } else if (sortOrder == 'descend') { + sort[sortField] = -1; + } + } + const result: JewelType[] = await JewelModel.find(searchObj).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true }); + return result; + + } + + public static async countByCondition(form: SearchJewelParam = {}) { + + let searchObj = this.getSearchObj(form); + const result = await JewelModel.count(searchObj); + return result; + } +} + +export const JewelModel = getModelForClass(Equip); + +export interface JewelType extends Pick, keyof Equip> { + id: number; +}; +export type jewelUpdate = Partial; // 将所有字段变成可选项 \ No newline at end of file diff --git a/shared/domain/backEndField/search.ts b/shared/domain/backEndField/search.ts index 04d7dad82..fd8c99cda 100644 --- a/shared/domain/backEndField/search.ts +++ b/shared/domain/backEndField/search.ts @@ -24,6 +24,12 @@ export interface SearchEquipParam { id?: number; } +export interface SearchJewelParam { + roleId?: string; + roleName?: string; + id?: number; +} + export interface SearchItemParam { roleId?: string; roleName?: string; diff --git a/shared/pubUtils/playerCe.ts b/shared/pubUtils/playerCe.ts index aab78c4b0..b404b9931 100644 --- a/shared/pubUtils/playerCe.ts +++ b/shared/pubUtils/playerCe.ts @@ -631,54 +631,54 @@ export function calEquipPutOnOffIncAttr(hero: HeroType, seids: Array, ad * 计算一个武将身上的所有被动seid * @param {HeroType} hero 武将,equip需要populate */ -export function calEquipSeids(hero: HeroType) { +export function calEquipSeids(_hero: HeroType) { let seids: number[] = []; - // 计算被动技能 - let { ePlace } = hero; - let suits = new Map>(); // suitType => starLevel => DicSuit + // // 计算被动技能 + // let { ePlace } = hero; + // let suits = new Map>(); // suitType => starLevel => DicSuit - for (let { equip } of ePlace) { - if (equip) { - let e = equip; - if (!!e.randSe) { - for (let { seid, rand } of e.randSe) { - seids.push(seid, rand); - } - } - if (e.suitId > 0) { - let { suitType, starLevel } = gameData.suit.get(e.suitId); - if (!suits.has(suitType)) { - suits.set(suitType, new Map()); - } - for(let lv = 1; lv <= starLevel; lv++) { - let dicSuit = getDicSuitByTypeAndLv(suitType, lv); // 计算同type的低阶套装 - if(dicSuit) { - if(!suits.get(suitType).has(lv)) { - suits.get(suitType).set(lv, { dic: dicSuit, count: 0 }); - } - suits.get(suitType).get(lv).count ++; - } - } + // for (let { equip } of ePlace) { + // if (equip) { + // let e = equip; + // if (!!e.randSe) { + // for (let { seid, rand } of e.randSe) { + // seids.push(seid, rand); + // } + // } + // if (e.suitId > 0) { + // let { suitType, starLevel } = gameData.suit.get(e.suitId); + // if (!suits.has(suitType)) { + // suits.set(suitType, new Map()); + // } + // for(let lv = 1; lv <= starLevel; lv++) { + // let dicSuit = getDicSuitByTypeAndLv(suitType, lv); // 计算同type的低阶套装 + // if(dicSuit) { + // if(!suits.get(suitType).has(lv)) { + // suits.get(suitType).set(lv, { dic: dicSuit, count: 0 }); + // } + // suits.get(suitType).get(lv).count ++; + // } + // } - } - } - } + // } + // } + // } - for(let [ _suitType, map ] of suits) { - let effectSeid = new Map(); // count => { starLevel, seid } - for(let [ starLevel, { dic: { effect }, count } ] of map) { - for(let { count: effectCount, seid} of effect) { - if(count >= effectCount ) { // 生效 - if(!effectSeid.has(effectCount) || effectSeid.get(effectCount).starLevel < starLevel) { // 没有同数量效果 - effectSeid.set(effectCount, { starLevel, seid }); - } - } - } - } - for(let [_count, { seid }] of effectSeid) { - seids.push(seid, 0); - } - } + // for(let [ _suitType, map ] of suits) { + // let effectSeid = new Map(); // count => { starLevel, seid } + // for(let [ starLevel, { dic: { effect }, count } ] of map) { + // for(let { count: effectCount, seid} of effect) { + // if(count >= effectCount ) { // 生效 + // if(!effectSeid.has(effectCount) || effectSeid.get(effectCount).starLevel < starLevel) { // 没有同数量效果 + // effectSeid.set(effectCount, { starLevel, seid }); + // } + // } + // } + // } + // for(let [_count, { seid }] of effectSeid) { + // seids.push(seid, 0); + // } + // } return seids; } @@ -687,70 +687,70 @@ export function calEquipSeids(hero: HeroType) { * @param {HeroType} hero 装备更新过的武将 */ export function calHeroEquipIncAttr(hero: HeroType) { - let { ePlace, attr: heroAttrs } = hero; + let { ePlace:_, attr: heroAttrs } = hero; - let setMap = new Map(); - for (let { equip, lv, refineLv } of ePlace) { - if (equip) { - let e = equip; - let dicGoods = gameData.goods.get(e.id); - let { goodsAbility, goodsAbilityUp } = dicGoods; - let dicRefine = gameData.refine.get(refineLv); + // let setMap = new Map(); + // for (let { equip, lv, refineLv } of ePlace) { + // if (equip) { + // let e = equip; + // let dicGoods = gameData.goods.get(e.id); + // let { goodsAbility, goodsAbilityUp } = dicGoods; + // let dicRefine = gameData.refine.get(refineLv); - let jewel = new Map(); - for (let { jewel: jewelId } of e.holes) { - if (jewelId > 0) { - let g = gameData.goods.get(jewelId); - if (g) { - let jGoods = g.goodsAbility; - jGoods.forEach((value, key) => { - if (!jewel.has(key)) { - jewel.set(key, value); - } else { - jewel.set(key, jewel.get(key) + value); - } - }) - } - } - } + // let jewel = new Map(); + // for (let { jewel: jewelId } of e.holes) { + // if (jewelId > 0) { + // let g = gameData.goods.get(jewelId); + // if (g) { + // let jGoods = g.goodsAbility; + // jGoods.forEach((value, key) => { + // if (!jewel.has(key)) { + // jewel.set(key, value); + // } else { + // jewel.set(key, jewel.get(key) + value); + // } + // }) + // } + // } + // } - let randMainMap = new Map(); - for(let {id, rand} of (e.randMain||[])) { - randMainMap.set(id, rand); - } - for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) { - // console.log('***', i); - let value1 = goodsAbility.get(i) || 0 * (HERO_CE_RATIO + e.randRange); - // console.log('基础值', value1); - let valueup = goodsAbilityUp.get(i) || 0; - // console.log('成长', lv, valueup); - let valueRefine = dicRefine ? dicRefine.upPercent : 0; - // console.log('精炼', dicRefine?dicRefine.upPercent:0 ); - let valueJewel = jewel.get(i) || 0; - // console.log('宝石', valueJewel); - let valueGrade = randMainMap.get(i)||0; - // console.log('品相', valueGrade) - let attr = (value1 + lv * valueup) * valueGrade * (HERO_CE_RATIO + valueRefine) + valueJewel * HERO_CE_RATIO * HERO_CE_RATIO; + // let randMainMap = new Map(); + // for(let {id, rand} of (e.randMain||[])) { + // randMainMap.set(id, rand); + // } + // for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) { + // // console.log('***', i); + // let value1 = goodsAbility.get(i) || 0 * (HERO_CE_RATIO + e.randRange); + // // console.log('基础值', value1); + // let valueup = goodsAbilityUp.get(i) || 0; + // // console.log('成长', lv, valueup); + // let valueRefine = dicRefine ? dicRefine.upPercent : 0; + // // console.log('精炼', dicRefine?dicRefine.upPercent:0 ); + // let valueJewel = jewel.get(i) || 0; + // // console.log('宝石', valueJewel); + // let valueGrade = randMainMap.get(i)||0; + // // console.log('品相', valueGrade) + // let attr = (value1 + lv * valueup) * valueGrade * (HERO_CE_RATIO + valueRefine) + valueJewel * HERO_CE_RATIO * HERO_CE_RATIO; - if(attr >= 0) { - // console.log('装备战力:', i, attr); - if(setMap.has(i)) { - setMap.set(i, setMap.get(i) + Math.floor(attr / HERO_CE_RATIO)); - } else { - setMap.set(i, Math.floor(attr / HERO_CE_RATIO)); - } - } - } - } + // if(attr >= 0) { + // // console.log('装备战力:', i, attr); + // if(setMap.has(i)) { + // setMap.set(i, setMap.get(i) + Math.floor(attr / HERO_CE_RATIO)); + // } else { + // setMap.set(i, Math.floor(attr / HERO_CE_RATIO)); + // } + // } + // } + // } - } + // } - for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) { - let attr = setMap.get(i)||0; - updateHeroAttr(heroAttrs, i, { set: { equipUp: attr } }) - } + // for (let i = ABI_TYPE.ABI_HP; i < ABI_TYPE.ABI_MAX; i++) { + // let attr = setMap.get(i)||0; + // updateHeroAttr(heroAttrs, i, { set: { equipUp: attr } }) + // } - hero.attr = heroAttrs; + // hero.attr = heroAttrs; return heroAttrs; } @@ -762,22 +762,22 @@ export function calHeroEquipIncAttr(hero: HeroType) { * @param {number[]} addSeidList 用于更新被动 * @param {number[]} removeSeidList 用于更新被动 */ -export function calRestrengthenIncAttr(hero: HeroType, ePaceId: number, seids: Array, addSeidList: Array, removeSeidList: Array) { +export function calRestrengthenIncAttr(hero: HeroType, _ePaceId: number, _seids: Array, _addSeidList: Array, _removeSeidList: Array) { let { attr: heroAttrs } = hero; - let { ePlace } = hero; + // let { ePlace } = hero; - let curPlace = ePlace.find(cur => cur.id == ePaceId); - if (curPlace && curPlace.equip) { - let e = curPlace.equip; - for (let { seid, rand } of e.randSe) { - addSeidList.push(seid, rand); - } - } + // let curPlace = ePlace.find(cur => cur.id == ePaceId); + // if (curPlace && curPlace.equip) { + // let e = curPlace.equip; + // for (let { seid, rand } of e.randSe) { + // addSeidList.push(seid, rand); + // } + // } - for (let seid of seids) { - removeSeidList.push(seid) - } + // for (let seid of seids) { + // removeSeidList.push(seid) + // } return heroAttrs } diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index a03ee2976..5e8352633 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -130,10 +130,10 @@ export async function checkTaskWithHero(roleId: string, taskType: number, hero: pushMessage = await checkTask(roleId, taskType, 1, true, { favourLv: hero.favourLv, oldLv: args[0] }) } else if (taskType == TASK_TYPE.EQUIP_BY_HERO) { - // arg[0] 1:穿上 -1:脱下 - let { ePlace } = hero; - let count = ePlace.filter(cur => cur.equip).length; - pushMessage = await checkTask(roleId, taskType, args[0], true, { count, isPutOn: args[0], oldCount: args[1] }); + // // arg[0] 1:穿上 -1:脱下 + // let { ePlace } = hero; + // let count = ePlace.filter(cur => cur.equip).length; + // pushMessage = await checkTask(roleId, taskType, args[0], true, { count, isPutOn: args[0], oldCount: args[1] }); } else if (taskType == TASK_TYPE.EQUIP_STRENGTHEN) { // args: 依次为原先的装备的强化等级