镇念塔:修复一键碾压后下一层不能打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
@@ -16,6 +16,7 @@ import { isNumber } from 'underscore';
import { HeroModel } from '../../../db/Hero'; import { HeroModel } from '../../../db/Hero';
import { vipCanSkipTower } from '../../../services/activity/monthlyTicketService'; import { vipCanSkipTower } from '../../../services/activity/monthlyTicketService';
import { pushTowerMsg } from '../../../services/sysChatService'; import { pushTowerMsg } from '../../../services/sysChatService';
import { WarStar } from '../../../domain/dbGeneral';
export default function(app: Application) { export default function(app: Application) {
return new TowerBattleHandler(app); 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 heroes = await HeroModel.findByRole(roleId, [{ field: 'ce', sortBy: -1 }], 'hid ce', true);
let recommendCeSum = 0, heroesCeSum = 0; let recommendCeSum = 0, heroesCeSum = 0;
let newWarStar: WarStar[] = [];
for(let { warId, status } of warStatus) { for(let { warId, status } of warStatus) {
if(!status) { if(!status) {
let dicWar = gameData.war.get(warId); let dicWar = gameData.war.get(warId);
@@ -307,6 +309,7 @@ export class TowerBattleHandler {
} }
if(heroNum >= dicWar.minHeroNum) break; if(heroNum >= dicWar.minHeroNum) break;
} }
newWarStar.push({ id: warId, warType: dicWar.warType, star: 0, stars: [] })
} }
} }
if(!vipCanSkipTower(recommendCeSum, heroesCeSum, role.vipStartTime)) { 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 // 更新towerRecord
await TowerRecordModel.skipTower(roleId, role.towerLv - 1, recHeroes); await TowerRecordModel.skipTower(roleId, role.towerLv - 1, recHeroes);
await createNewTowerRecord(roleId, role.towerLv); await createNewTowerRecord(roleId, role.towerLv);
await checkAndStartHungUp(roleId, roleName, role.towerLv); await checkAndStartHungUp(roleId, roleName, role.towerLv);
let goods = await addItems(roleId, roleName, sid, dicTower.reward, ITEM_CHANGE_REASON.TOWER_BATTLE_END); 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); let data = await getTowerStatus(role);
+2 -2
View File
@@ -359,8 +359,8 @@ export default class Role extends BaseModel {
return role; return role;
} }
public static async towerLvUp(roleId: string) { public static async towerLvUp(roleId: string, newWarStar: WarStar[] = []) {
let role: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $inc: { towerLv: 1 }, towerUpTime: new Date() }, { new: true }).lean({ getters: true, virtuals: true }); 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; return role;
} }