镇念塔:修复一键碾压后下一层不能打bug

This commit is contained in:
luying
2022-04-19 11:00:56 +08:00
parent ea05eeddb8
commit 1e71e66c12
2 changed files with 7 additions and 4 deletions

View File

@@ -16,6 +16,7 @@ import { isNumber } from 'underscore';
import { HeroModel } from '../../../db/Hero';
import { vipCanSkipTower } from '../../../services/activity/monthlyTicketService';
import { pushTowerMsg } from '../../../services/sysChatService';
import { WarStar } from '../../../domain/dbGeneral';
export default function(app: Application) {
return new TowerBattleHandler(app);
@@ -294,6 +295,7 @@ export class TowerBattleHandler {
// 检查战力是否足够
let heroes = await HeroModel.findByRole(roleId, [{ field: 'ce', sortBy: -1 }], 'hid ce', true);
let recommendCeSum = 0, heroesCeSum = 0;
let newWarStar: WarStar[] = [];
for(let { warId, status } of warStatus) {
if(!status) {
let dicWar = gameData.war.get(warId);
@@ -307,6 +309,7 @@ export class TowerBattleHandler {
}
if(heroNum >= dicWar.minHeroNum) break;
}
newWarStar.push({ id: warId, warType: dicWar.warType, star: 0, stars: [] })
}
}
if(!vipCanSkipTower(recommendCeSum, heroesCeSum, role.vipStartTime)) {
@@ -314,14 +317,14 @@ export class TowerBattleHandler {
}
// 更新玩家表
role = await RoleModel.towerLvUp(roleId);
role = await RoleModel.towerLvUp(roleId, newWarStar);
// 更新towerRecord
await TowerRecordModel.skipTower(roleId, role.towerLv - 1, recHeroes);
await createNewTowerRecord(roleId, role.towerLv);
await checkAndStartHungUp(roleId, roleName, role.towerLv);
let goods = await addItems(roleId, roleName, sid, dicTower.reward, ITEM_CHANGE_REASON.TOWER_BATTLE_END);
pushTowerMsg(roleId, roleName, serverId, MSG_SOURCE.TOWER_SUC, role.lv);
pushTowerMsg(roleId, roleName, serverId, MSG_SOURCE.TOWER_SUC, role.towerLv);
let data = await getTowerStatus(role);

View File

@@ -359,8 +359,8 @@ export default class Role extends BaseModel {
return role;
}
public static async towerLvUp(roleId: string) {
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { towerLv: 1 }, towerUpTime: new Date() }, { new: true }).lean({ getters: true, virtuals: true });
public static async towerLvUp(roleId: string, newWarStar: WarStar[] = []) {
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { towerLv: 1 }, $push: { warStar: { $each: newWarStar }}, towerUpTime: new Date() }, { new: true }).lean({ getters: true, virtuals: true });
return role;
}