diff --git a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts index 79534baa4..e8a02c8b2 100644 --- a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts +++ b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts @@ -6,7 +6,7 @@ import { ExpeditionPointModel } from '../../../db/ExpeditionPoint'; import { RoleModel } from '../../../db/Role'; import { genCode, getWarTypeName } from '../../../pubUtils/util'; import { getPointRewardStatus, getResetRemainCnt, findOrCreateEnemies, getExpeditionStatus } from '../../../services/expeditionService'; -import { DEBUG_MAGIC_WORD, EXPEDITION_WAR_RECORD_STATUS, ITEM_CHANGE_REASON, KING_EXP_RATIO_TYPE, LINEUP_NUM, TASK_TYPE, TA_EVENT } from '../../../consts'; +import { DEBUG_MAGIC_WORD, EXPEDITION_WAR_RECORD_STATUS, ITEM_CHANGE_REASON, KING_EXP_RATIO_TYPE, TASK_TYPE, TA_EVENT } from '../../../consts'; import { WarReward } from '../../../services/warRewardService'; import { addItems } from '../../../services/role/rewardService'; import { getAp, setAp } from '../../../services/actionPointService'; @@ -60,7 +60,7 @@ export class ExpeditionBattleHandler { await ExpeditionRecordModel.hideRecord(roleId); // 刷掉旧关卡 // 我方战力 - let myCe = await getSumCe(roleId, LINEUP_NUM); + let myCe = await getSumCe(roleId); // 每一关的挑战状态 let { expeditionCode, heroes } = await ExpeditionRecordModel.createRecord({ roleId, roleName, heroes: [], myCe diff --git a/game-server/app/services/expeditionService.ts b/game-server/app/services/expeditionService.ts index 09405723e..311f9c0b4 100644 --- a/game-server/app/services/expeditionService.ts +++ b/game-server/app/services/expeditionService.ts @@ -2,7 +2,7 @@ import { ExpeditionPointModel } from '../db/ExpeditionPoint'; import Role, { RoleModel } from '../db/Role'; import { shouldRefresh, getRandSingleEelm } from '../pubUtils/util'; -import { LINEUP_NUM, EXPEDITION_WAR_RECORD_STATUS, SYSTEM_OPEN_ID } from '../consts'; +import { EXPEDITION_WAR_RECORD_STATUS, SYSTEM_OPEN_ID } from '../consts'; import { ExpeditionWarRecordModel } from '../db/ExpeditionWarRecord'; import { HeroType } from '../db/Hero'; import { gameData } from '../pubUtils/data'; @@ -27,7 +27,7 @@ export async function getExpeditionStatus(roleId: string, roleName: string, isEn let expeditionRecord = await ExpeditionRecordModel.getCurRecord(roleId); if (!expeditionRecord) { // 首次新建一条记录 // 我方战力 - let myCe = await getSumCe(roleId, LINEUP_NUM); + let myCe = await getSumCe(roleId); expeditionRecord = await ExpeditionRecordModel.createRecord({ roleId, roleName, heroes: [], myCe }); diff --git a/game-server/app/services/playerCeService.ts b/game-server/app/services/playerCeService.ts index 59e0c8ba4..32658a04c 100644 --- a/game-server/app/services/playerCeService.ts +++ b/game-server/app/services/playerCeService.ts @@ -10,7 +10,7 @@ import { HERO_SYSTEM_TYPE, PUSH_ROUTE, REDIS_KEY } from '../consts'; import { updateUserInfo } from './redisService'; import { GuildModel, GuildType } from '../db/Guild'; import { CalCe } from './role/calCe'; -import { RoleCeModel } from '../db/RoleCe'; +import { RoleCeModel, RoleCeUpdate } from '../db/RoleCe'; import { PvpDefenseModel } from '../db/PvpDefense'; import { saveCeChangeLog } from '../pubUtils/logUtil'; import { JewelType } from '../db/Jewel'; @@ -360,7 +360,10 @@ export async function calculateCes(type: HERO_SYSTEM_TYPE, roleId: string, serve } let { topLineup, topLineupCe } = calCe.getTopLineup(); - let roleCeUpdate = calCe.getRoleCeTable(); + let roleCeUpdate: RoleCeUpdate = calCe.getRoleCeTable(); + if(topLineupCe > roleCe.historyLineupCe) { + roleCeUpdate = { ...roleCeUpdate, historyLineupCe: topLineupCe }; + } roleCe = await RoleCeModel.updateRoleCe(roleId, roleCeUpdate); let role = await RoleModel.incRoleInfo(roleId, { ...roleIncUpdate, ce: roleInc }, { ...roleUpdate, topLineup, topLineupCe }); let guild = await GuildModel.updateCe(roleId, roleInc); // 公会更新战力 @@ -416,18 +419,9 @@ async function updateRank(roleId: string, serverId: number, topLineupCe: number, await r6.setRankWithRoleInfo(roleId, role.heroNum, role.heroNumUpdatedAt, role); } -export async function getSumCe(roleId: string, num: number) { +export async function getSumCe(roleId: string) { let roleCe = await RoleCeModel.findByRoleId(roleId); - let calCe = new CalCe(roleId); - calCe.setRoleCe(roleCe); - let arr = calCe.getResultCeArr(); - let ce = 0; - for(let i = 0; i < num; i++) { - if(arr[i]) { - ce += arr[i].ce; - } - } - return ce; + return roleCe.historyLineupCe; } export async function getHeroesAttributes(roleId: string) { diff --git a/shared/db/RoleCe.ts b/shared/db/RoleCe.ts index f604d8a9f..38a27f1b7 100644 --- a/shared/db/RoleCe.ts +++ b/shared/db/RoleCe.ts @@ -105,6 +105,9 @@ export default class RoleCe extends BaseModel { @prop({ required: true, type: Attribute, _id: false }) attributes: Attribute[]; + @prop({ required: true }) + historyLineupCe: number; + public static async findByRoleId(roleId: string) { let result: RoleCeType = await RoleCeModel.findOne({ roleId }).lean(); return result;