镇念塔:修复一键碾压后下一层不能打bug
This commit is contained in:
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user