diff --git a/game-server/app/servers/battle/handler/comBattleHandler.ts b/game-server/app/servers/battle/handler/comBattleHandler.ts index 29c041333..39159645e 100644 --- a/game-server/app/servers/battle/handler/comBattleHandler.ts +++ b/game-server/app/servers/battle/handler/comBattleHandler.ts @@ -142,7 +142,6 @@ export class ComBattleHandler { let isFrd = await getFrd(roleId, goodData.quality); const st = new RoleStatus(roleId, roleName, false, isFrd, headHid, sHid, topFiveCe, lv); - await getComBattleFriendAdd(st, roleStatus); roleStatus.push(st); roleIds.push(roleInfo.roleId); @@ -359,9 +358,6 @@ export class ComBattleHandler { teamStatus.roleIds.push(roleId); teamStatus.roleStatus.push(roleStatus); - // 好友加成 - await getComBattleFriendAdd(roleStatus, teamStatus.roleStatus); - let users = channel.getMembers(); if (users.indexOf(roleId) === -1) { channel.add(roleId, sid); @@ -574,6 +570,8 @@ export class ComBattleHandler { clearComBtlTimer(teamCode, this.teamDisTimer); // 战斗开始停止解散计时 let channelService = this.app.get('channelService'); let channel = channelService.getChannel(teamCode, false); + + await getComBattleFriendAdd(teamStatus.roleStatus); channel.pushMessage('onComBtlStart', resResult(STATUS.SUCCESS, {teamCode, roleStatus: teamStatus.roleStatus})); // 每场倒计时结算 let thiz = this; diff --git a/game-server/app/services/comBattleService.ts b/game-server/app/services/comBattleService.ts index 97af60a9f..5bce01f10 100644 --- a/game-server/app/services/comBattleService.ts +++ b/game-server/app/services/comBattleService.ts @@ -11,6 +11,7 @@ import { Channel } from 'pinus'; import { TREASURE } from '../pubUtils/dicParam'; import { decreaseItems } from './rewardService'; import { getFriendLvAdd } from './friendService'; +import { getRoleIds } from '../pubUtils/friendUtil'; /** * 在给定的品质列表中随机返回一定数量的藏宝图Id @@ -427,17 +428,23 @@ export function randEquipPrintId(warInfo) { /** * 按照好友关系,新增加成 * - * @param {RoleStatus} myRoleStatus 新增的队友 * @param {RoleStatus[]} roleStatus 队伍内的所有队友 */ -export async function getComBattleFriendAdd(myRoleStatus: RoleStatus, roleStatus: RoleStatus[]) { - let myAdd = 0; // 多好友,加成直接叠加 - for(let rs of roleStatus) { - if(myRoleStatus.roleId == rs.roleId) continue; - if(myRoleStatus.isRobot || rs.isRobot) continue; - let add = await getFriendLvAdd(myRoleStatus.roleId, rs.roleId); - rs.addFrdRatio(add); - myAdd += add; +export async function getComBattleFriendAdd(roleStatus: RoleStatus[]) { + let hasAdd = new Array(); //roleIds + for(let myRoleStatus of roleStatus) { + for(let rs of roleStatus) { + if(myRoleStatus.roleId == rs.roleId) continue; + if(myRoleStatus.isRobot || rs.isRobot) continue; + + let {roleIds} = getRoleIds([myRoleStatus.roleId, rs.roleId]); + if(hasAdd.includes(roleIds)) continue; + + let add = await getFriendLvAdd(myRoleStatus.roleId, rs.roleId); + rs.addFrdRatio(add); + myRoleStatus.addFrdRatio(add); + + hasAdd.push(roleIds); + } } - myRoleStatus.addFrdRatio(myAdd); } \ No newline at end of file diff --git a/shared/consts/constModules/selectConst.ts b/shared/consts/constModules/selectConst.ts index e6b2c0500..cdf42f234 100644 --- a/shared/consts/constModules/selectConst.ts +++ b/shared/consts/constModules/selectConst.ts @@ -1,7 +1,7 @@ export enum ROLE_SELECT { // 初始登录数据 - ENTRY = 'serverId userInfo.uid userInfo.tel userInfo.serverType ce topFiveCe teraphs roleId roleName tili lv exp gold coin vLv title hasGuild', + ENTRY = 'serverId userInfo.uid userInfo.tel userInfo.serverType ce topFiveCe teraphs roleId roleName tili lv exp gold coin vLv title hasGuild funcs', // 玩家列表显示基础数据 SHOW_SIMPLE = 'roleId roleName ce headHid sHid lv title job quitTime vLv guildName serverId userInfo.serverType', // 显示申请需要的信息