From 41d84a96e231d7f5f8d1b1c3e8108297eace208d Mon Sep 17 00:00:00 2001 From: luying Date: Wed, 24 Aug 2022 13:35:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9C=E5=BE=81=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=A2=BE=E5=8E=8B=E5=88=A4=E6=96=AD=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/battle/handler/expeditionBattleHandler.ts | 10 +++++----- .../app/services/activity/monthlyTicketService.ts | 2 +- game-server/app/services/expeditionService.ts | 5 ++--- game-server/app/services/normalBattleService.ts | 2 +- shared/db/ExpeditionRecord.ts | 2 ++ shared/db/Role.ts | 6 ++++++ shared/pubUtils/timeUtil.ts | 7 ------- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts index e91c2881f..ad483c989 100644 --- a/game-server/app/servers/battle/handler/expeditionBattleHandler.ts +++ b/game-server/app/servers/battle/handler/expeditionBattleHandler.ts @@ -205,11 +205,6 @@ export class ExpeditionBattleHandler { if (preBattle == -1) return resResult(STATUS.BATTLE_NEED_PREVIOUS_GK); } - // 检查战力是否足够 - if(!vipCanSkipExpedition(dicWar.recommendedPower, topLineupCe, vipStartTime)) { - return resResult(STATUS.EXPEDITION_SKIP_POWER_NOT_ENOUGH) - } - // 检查record let expeditionRecord = await ExpeditionRecordModel.getExpeditionRecordByCode(expeditionCode); let expeditionWarRecord = await ExpeditionWarRecordModel.getRecordByCodeAndId(expeditionCode, expeditionId); @@ -220,6 +215,11 @@ export class ExpeditionBattleHandler { return resResult(STATUS.EXPEDITION_DUPLICATE_CHALLENGE); } + // 检查战力是否足够 + if(!vipCanSkipExpedition(expeditionWarRecord.ce, topLineupCe, vipStartTime)) { + return resResult(STATUS.EXPEDITION_SKIP_POWER_NOT_ENOUGH) + } + // 更新敌人剩余状态及战斗状态 expeditionWarRecord = await ExpeditionWarRecordModel.updateEnemiesStatus(expeditionCode, expeditionId, EXPEDITION_WAR_RECORD_STATUS.SUCCESS, []); // 更新点数 diff --git a/game-server/app/services/activity/monthlyTicketService.ts b/game-server/app/services/activity/monthlyTicketService.ts index 599acb92d..4fccae5e4 100644 --- a/game-server/app/services/activity/monthlyTicketService.ts +++ b/game-server/app/services/activity/monthlyTicketService.ts @@ -227,5 +227,5 @@ export function vipCanSkipTower(recommendCeSum: number, heroesCeSum: number, vip } export function vipCanSkipExpedition(recommendCe: number, topLineupCe: number, vipStartTime: number) { - return vipStartTime > 0 && topLineupCe > recommendCe; + return vipStartTime > 0 && topLineupCe > recommendCe * VIP.EXPENDITION_SKIP_CE_RATIO_WITH_VIP; } \ No newline at end of file diff --git a/game-server/app/services/expeditionService.ts b/game-server/app/services/expeditionService.ts index 2d9733754..304c5128e 100644 --- a/game-server/app/services/expeditionService.ts +++ b/game-server/app/services/expeditionService.ts @@ -6,7 +6,6 @@ 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'; -import { getTimeFunD } from '../pubUtils/timeUtil'; import { ExpeditionRecordModel } from '../db/ExpeditionRecord'; import { Attribute, AttributeCal } from '../domain/roleField/attribute'; import * as dicParam from '../pubUtils/dicParam'; @@ -221,8 +220,8 @@ export async function matchRobots(scale: number, myCe: number, robotCe: number, export async function getCEScaleAndRange(roleId: string, curDicExpedition: any) { // 匹配,判断是不是新手期 const role = await RoleModel.findByRoleId(roleId); - let timef = getTimeFunD(role.createdAt) - let isNew = timef.getDayGap() <= 3; + let isNew = (role.expeditionHistoryResetCnt||0) <= 3; + let scale = isNew?curDicExpedition.CEScaleNew:curDicExpedition.CEScale; let range = isNew?curDicExpedition.CERangeNew:curDicExpedition.CERange; return {scale, range, lv: role.lv} diff --git a/game-server/app/services/normalBattleService.ts b/game-server/app/services/normalBattleService.ts index e82a62c57..a26fe6684 100644 --- a/game-server/app/services/normalBattleService.ts +++ b/game-server/app/services/normalBattleService.ts @@ -136,7 +136,7 @@ export function calculateWarStar(warStar: WarStar[] = [], battleId: number, star newStar = stars.filter(cur => cur > 0).length; newStars = stars; let dicWar = gameData.war.get(battleId); - newWarStars.push({ id: battleId, warType: dicWar.warType, star: newStar, stars: newStars}); + if(dicWar) newWarStars.push({ id: battleId, warType: dicWar.warType, star: newStar, stars: newStars}); } return { newWarStars, newStars, newStar }; } diff --git a/shared/db/ExpeditionRecord.ts b/shared/db/ExpeditionRecord.ts index b0a14f4a4..3ea8208d5 100644 --- a/shared/db/ExpeditionRecord.ts +++ b/shared/db/ExpeditionRecord.ts @@ -1,6 +1,7 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; import { genCode } from '../pubUtils/util'; +import { RoleModel } from './Role'; class Heroes { @prop({ required: true }) @@ -41,6 +42,7 @@ export default class ExpeditionRecord extends BaseModel { const code = genCode(8); const result: ExpeditionRecordType = await ExpeditionRecordModel.findOneAndUpdate({ expeditionCode: code }, {...params, status: 1}, { new: true, upsert: true }).lean(lean); + await RoleModel.increaseExpeditionCnt(params.roleId, 1); return result; } diff --git a/shared/db/Role.ts b/shared/db/Role.ts index b5e8191e3..efcd5e368 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -248,6 +248,8 @@ export default class Role extends BaseModel { expeditionResetCnt: number; // 远征重置次数 @prop({ required: true, default: new Date() }) expeditionResetRefTime: Date; // 远征重置次数刷新时间 + @prop({ required: true, default: 0 }) + expeditionHistoryResetCnt: number; // 远征重置次数 // 秘境相关 @prop({ required: true, default: 0 }) @@ -410,6 +412,10 @@ export default class Role extends BaseModel { let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { expeditionPoint: point } }, { new: true }).lean(lean); return role; } + public static async increaseExpeditionCnt(roleId: string, cnt: number) { + let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { expeditionHistoryResetCnt: cnt } }, { new: true }).lean(); + return role; + } public static async levelup(roleId: string, lv: number, exp: number, getters = false, virtuals = true) { let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $set: { exp, lv } }, { new: true }).lean({ getters, virtuals }); diff --git a/shared/pubUtils/timeUtil.ts b/shared/pubUtils/timeUtil.ts index 5f9ae103f..72ef3213a 100644 --- a/shared/pubUtils/timeUtil.ts +++ b/shared/pubUtils/timeUtil.ts @@ -396,13 +396,6 @@ class Time { return this._returnResult(preDate.getTime() + n * day * this.DAY_TO_MS); } - /** - * @description 获取某个日期到今天之间差几天 - */ - public getDayGap() { - return this._getDayGap(this.now, this.time); - } - /** * 检查某个时间距离今天是否在day天以内 * @param day day天以内