diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index 9f624416d..d5543a8c0 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -11,7 +11,7 @@ import { calPlayerCeAndSave } from "../../../services/playerCeService"; import { getGoodById, gameData } from "../../../pubUtils/data"; import { EQUIP } from "../../../pubUtils/dicParam"; import { ITID, QUALITY_TYPE, equipTypeToSortAttr, IT_TYPE, QUENCH_TYPE, REFINE_TYPE } from "../../../consts"; -import { changeEquip, dressEquip, checkMaterialEnough, takeOffEquipAndCalPlayerCe, checkEquipCanPut, quenchOnce, checkQuenchMaxByQualityAndGrade, getRandSeResult, refineOnce, checkRefineReachNextLv } from "../../../services/equipService"; +import { changeEquip, dressEquip, checkMaterialEnough, takeOffEquipAndCalPlayerCe, checkEquipCanPut, quenchOnce, checkQuenchMaxByQualityAndGrade, getRandSeResult, refineOnce, checkRefineReachNextLv, calEquipCe } from "../../../services/equipService"; import { findIndex, pick } from 'underscore'; import { pushEquipRefineSucMsg, pushNormalEquipMsg, pushNormalItemMsg } from "../../../services/chatService"; @@ -621,11 +621,9 @@ export class EquipHandler { let allEquips = await EquipModel.findNotWearEquips(roleId); let sortEquips = allEquips.map(equip => { - let { id, quality, randRange, ePlaceId } = equip; + let { id, quality, ePlaceId, randMain } = equip; let { goodsAbility, lvLimited } = gameData.goods.get(id); - let attrObj = new AttributeCal(); - attrObj.setByMap(goodsAbility, HERO_CE_RATIO + randRange); - let ce = attrObj.calEquipCe(); + let ce = calEquipCe(goodsAbility, randMain); return { id, quality, ce, equip, goodsAbility, lvLimited, ePlaceId } }); let { ePlace, lv } = hero; diff --git a/game-server/app/services/equipService.ts b/game-server/app/services/equipService.ts index 54ff98335..1a1376726 100644 --- a/game-server/app/services/equipService.ts +++ b/game-server/app/services/equipService.ts @@ -261,6 +261,16 @@ export function checkRefineReachNextLv(oldRefineLv: number, refineLv: number) { let dic = gameData.refine.get(refineLv); if(!oldDic || !dic) return true; - console.log('*******', dic.level, oldDic.level) return dic.level > oldDic.level; +} + +export function calEquipCe(goodsAbility: Map, randMain: RandMain[]) { + let ce = 0; + for(let [ id, ratio ] of gameData.equipAttributeRatio) { + let valueBase = goodsAbility.get(id); + let curRand = randMain.find(cur => cur.id == id); + let valueRand = curRand?curRand.rand: 0; + ce += Math.floor(valueBase * valueRand * ratio / 100); + } + return ce } \ No newline at end of file diff --git a/shared/domain/roleField/attribute.ts b/shared/domain/roleField/attribute.ts index 7b117c008..9c45de346 100644 --- a/shared/domain/roleField/attribute.ts +++ b/shared/domain/roleField/attribute.ts @@ -156,15 +156,6 @@ export class AttributeCal { return ce > 0? ce: 1; } - // 计算未装备的装备的简易战力公式 - public calEquipCe() { - let attrMap = this.getRealAttrToMap(); - let attrs = new Attribute(); - attrs.setByMap(attrMap); - let { hp, atk, def, mdef } = attrs; - return hp * 1 + atk * 3 + def * 2 + mdef * 2; - } - public calCelAndReduce() { return Math.floor(this.calCe() / HERO_CE_RATIO / HERO_CE_RATIO); } diff --git a/shared/pubUtils/data.ts b/shared/pubUtils/data.ts index 349ff2f31..ceb715349 100644 --- a/shared/pubUtils/data.ts +++ b/shared/pubUtils/data.ts @@ -222,7 +222,8 @@ export const gameData = { quenchRangeByQuality: dicQuenchRangeByQuality, quenchRangeByQualityAndGrade: dicQuenchRangeByQualityAndGrade, quenchConsume: dicQuenchConsume, - quenchByQuality: dicQuenchByQuality + quenchByQuality: dicQuenchByQuality, + equipAttributeRatio: new Map() }; // 在此提供一些原先在gamedata中提供的方法,以便更方便获取gameData数据 @@ -759,6 +760,13 @@ export function getQuenchConsume(lvLimited: number, quality: number) { return gameData.quenchConsume.get(`${lvLimited}_${quality}`); } +function loadEquipAttributeRatio() { + let arr = decodeArrayListStr(param.ATTRIBUTE.ATTRIBUTE_EQUIP_RATIO); + for(let [id, ratio] of arr) { + gameData.equipAttributeRatio.set(parseInt(id), parseInt(ratio)); + } +} + // 初始加载 function initDatas() { parseDicParam(); @@ -862,7 +870,7 @@ function loadDatas() { loadTskExp(); loadQuenchQuality(); loadQuenchConsume(); - + loadEquipAttributeRatio(); } // 重载dicParam