diff --git a/game-server/app/servers/battle/handler/ladderHandler.ts b/game-server/app/servers/battle/handler/ladderHandler.ts index f1e5f0f5f..7f1c0f31e 100644 --- a/game-server/app/servers/battle/handler/ladderHandler.ts +++ b/game-server/app/servers/battle/handler/ladderHandler.ts @@ -235,7 +235,7 @@ export class LadderHandler { await checkTaskInLadderEnd(serverId, roleId, sid, isSuccess, historyRank, atkLadderMatch.rank); - if (isSuccess && (!rec.defenseInfo?.isRobot)) await pushLadderIconShow(rec.roleId2, true); + if (isSuccess && (!rec.defenseInfo?.isRobot) && rec.defenseInfo.oldRank < rec.defenseInfo.newRank) await pushLadderIconShow(rec.roleId2, true); return resResult(STATUS.SUCCESS, {...pick(result, ['rank', 'historyRank', 'challengeCnt','status', 'time', 'oppPlayers']), battleGoods, breakGoods}); } diff --git a/game-server/app/servers/guild/handler/gvgFightHandler.ts b/game-server/app/servers/guild/handler/gvgFightHandler.ts index 714100025..a2c8d10c1 100644 --- a/game-server/app/servers/guild/handler/gvgFightHandler.ts +++ b/game-server/app/servers/guild/handler/gvgFightHandler.ts @@ -378,7 +378,7 @@ export class GVGProduceHandler { await saveScoreToRank(rec); addVestigeBattleEndRec(rec); - if (isSuccess && (!rec.defenseInfo?.isRobot)) await pushGvgFightIconShow(rec.defenseRoleId, battleCode); + if (isSuccess && (!rec.defenseInfo?.isRobot) && rec.defenseInfo.oldRank < rec.defenseInfo.newRank) await pushGvgFightIconShow(rec.defenseRoleId, battleCode); return resResult(STATUS.SUCCESS, { vestigeId: rec.vestigeId, diff --git a/shared/db/GVGVestigeRec.ts b/shared/db/GVGVestigeRec.ts index 0c37bcf0c..ddc998020 100644 --- a/shared/db/GVGVestigeRec.ts +++ b/shared/db/GVGVestigeRec.ts @@ -138,7 +138,7 @@ export default class GVGVestigeRec extends BaseModel { const recs: GVGVestigeRecType[] = await GVGVestigeRecModel.aggregate(pipeline); if (recs.length > 0) { for(const obj of recs){ - if(obj.defenseRoleId == roleId && (!obj.defenseInfo.isSuccess)) result.push(obj); + if(obj.defenseRoleId == roleId && (!obj.defenseInfo.isSuccess) && obj.defenseInfo.newRank > obj.defenseInfo.oldRank ) result.push(obj); } } diff --git a/shared/db/LadderMatchRec.ts b/shared/db/LadderMatchRec.ts index ab07f5421..9e6910f4a 100644 --- a/shared/db/LadderMatchRec.ts +++ b/shared/db/LadderMatchRec.ts @@ -137,11 +137,11 @@ export default class LadderMatchRec extends BaseModel { { $match: { endTime: { $gt: quitTime }, $or: [{ roleId1: roleId }, { roleId2: roleId }], status: LADDER_STATUS.COMPLETE } }, { $sort: { endTime: -1 } }, // { $limit: 1 }, - { $project: { _id: 0, roleId2: 1, "defenseInfo.isSuccess": 1 } } + { $project: { _id: 0, roleId2: 1, "defenseInfo.isSuccess": 1, "defenseInfo.oldRank": 1, "defenseInfo.newRank": 1} } ]; const recs: LadderMatchRecType[] = await LadderMatchRecModel.aggregate(pipeline); for (let obj of recs) { - if (obj.roleId2 === roleId && (!obj.defenseInfo.isSuccess)) return true; + if (obj.roleId2 === roleId && (!obj.defenseInfo.isSuccess) && obj.defenseInfo.newRank > obj.defenseInfo.oldRank) return true; } return false; }