diff --git a/game-server/app/services/expeditionService.ts b/game-server/app/services/expeditionService.ts index 876f6ded1..4fb674e77 100644 --- a/game-server/app/services/expeditionService.ts +++ b/game-server/app/services/expeditionService.ts @@ -199,9 +199,9 @@ export async function matchRobots(scale: number, myCe: number, robotCe: number, let dicExpeditionSubAttr = gameData.expeditionSubAttr.get(lv); for(let json of dicWarJson) { if(json.relation == 2) { - const { attribute } = json; + const { attribute, enemyCount } = json; - let { attribute: newAttribute, ce } = getRobotAttribute(attribute, dicExpeditionSubAttr.attribute, dicExpeditionSubAttr.lv, myCe, robotCe, scale); + let { attribute: newAttribute, ce } = getRobotAttribute(attribute, enemyCount, dicExpeditionSubAttr.attribute, dicExpeditionSubAttr.lv, myCe, robotCe, scale); enemyObj.enemies.push({...json, attribute: newAttribute, lv, ce}); allCe += ce; } diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index 0ae0c1525..ab85070db 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -282,7 +282,7 @@ async function matchRobot(oppPlayers: OppPlayers[], mapWarJson: DicWarJson[], ro if (!dicHero) continue; let heroInfo = new PvpHeroInfo(); heroInfo.setRobotInfo(h, myLv, dicHero.initialStars, dicHero.quality); - let { attribute, ce } = getRobotAttribute(h.attribute, [], pLv, myCe, PVP_CONST.ENEMY_CE, ratio); + let { attribute, ce } = getRobotAttribute(h.attribute, h.enemyCount, [], pLv, myCe, PVP_CONST.ENEMY_CE, ratio); defCe += ce; heroInfo.setAttribute(attribute); let enemy = new PvpEnemies(warJson, heroInfo, 0, ce); @@ -513,14 +513,14 @@ export async function findPvpDefAllByRoleId(roleId: string) { * @param enemyCe 出兵表对手战力 * @param ratio 系数 */ -export function getRobotAttribute(mainAttrs: { id: number, val: number }[], subAttrs: {id: number, val: number}[], lv: number, ce: number, enemyCe: number, ratio: number) { +export function getRobotAttribute(mainAttrs: { id: number, val: number }[], enemyCount: number, subAttrs: {id: number, val: number}[], lv: number, ce: number, enemyCe: number, ratio: number) { let newAttribute = new AttributeCal(); newAttribute.setLv(lv); newAttribute.setByWarJson(subAttrs); // 次级属性 - let subAttrCe = newAttribute.calSubAttrCeAndReduce(); - let mainAttrCe = ce > subAttrCe? ce - subAttrCe: 0; - newAttribute.setByWarJson(mainAttrs, mainAttrCe / enemyCe * ratio); + let subAttrCe = newAttribute.calSubAttrCeAndReduce() * enemyCount; + let mainAttrCe = ce * ratio > subAttrCe? ce * ratio - subAttrCe: 0; + newAttribute.setByWarJson(mainAttrs, mainAttrCe / enemyCe); let attrArr = newAttribute.getReduceAttributesToString(); let newCe = newAttribute.calCelAndReduce(); return { attribute: attrArr, ce: newCe }; diff --git a/shared/pubUtils/dictionary/DicWarJson.ts b/shared/pubUtils/dictionary/DicWarJson.ts index 8fe99080b..e9422cfca 100644 --- a/shared/pubUtils/dictionary/DicWarJson.ts +++ b/shared/pubUtils/dictionary/DicWarJson.ts @@ -45,7 +45,8 @@ export interface DicWarJson { readonly enemyType: number; // 召唤技能的召唤物 readonly callSkillData: string; - + // 敌军数量 + readonly enemyCount: number; } export const dicWarJson = new Map>(); @@ -54,9 +55,14 @@ export function loadWarJson() { let warjson = new Array(); let warid = 0; + let enemyCount = 0; arr.forEach(o => { o.attribute = parseAttribute(o.attribute); if(o.warId) warid = o.warId; + if(o.relation == 2) enemyCount++; + }); + arr.forEach(o => { + o.enemyCount = enemyCount; warjson.push(o); }); dicWarJson.set(warid, warjson);