diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index 8a8e780da..36787b48f 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -50,7 +50,7 @@ export async function initPvpInfo(role: RoleType) { } export async function checkPvp(role: RoleType) { - let result = await PvpDefenseModel.findByRoleId(role.roleId); + let result = await PvpDefenseModel.findByRoleId(role.roleId, true); if (!!result) return result; result = await initPvpInfo(role); @@ -495,7 +495,7 @@ export function getRobotAttribute(attribute: Attributes, ce: number, enemyCe: nu let newAttribute = new CeAttrNumber(); for(let attrName in newAttribute) { - newAttribute[attrName] = Math.floor(attribute[attrName] * reduceCe(ce) / enemyCe * ratio); + newAttribute[attrName] = Math.floor(attribute[attrName] * ce / enemyCe * ratio); } newAttribute['speed'] = 0; newAttribute['ap'] = 0; diff --git a/shared/db/PvpDefense.ts b/shared/db/PvpDefense.ts index 5cf83f0e4..8404f096d 100644 --- a/shared/db/PvpDefense.ts +++ b/shared/db/PvpDefense.ts @@ -100,8 +100,8 @@ export default class PvpDefense extends BaseModel { seasonNum: number; @prop({ required: true, default: true }) isFirstEntry: boolean; - public static async findByRoleId(roleId: string, lean = true) { - const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }).lean(lean); + public static async findByRoleId(roleId: string, getters = false) { + const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }).lean({ getters}); return result; } diff --git a/shared/pubUtils/util.ts b/shared/pubUtils/util.ts index a2869b568..a9a18ff29 100644 --- a/shared/pubUtils/util.ts +++ b/shared/pubUtils/util.ts @@ -166,12 +166,13 @@ export function decodeIdCntArrayStr(str: string, multi: number) { // 计算当前武将战力 export async function calculateSumCE(roleId: string, type: number, param: { num?: number, heroes?: Array }) { - let sum; + let sum: number; if (type == 1) { // 最高num人历史最高战力和 sum = await HeroModel.sumTopHeroCe(roleId, param.num || 0); } else if (type == 2) { // 所有人战力和 sum = await HeroModel.sumHeroCe(roleId); } + sum = reduceCe(sum); return sum; }