diff --git a/game-server/app/servers/battle/handler/guildBossHandler.ts b/game-server/app/servers/battle/handler/guildBossHandler.ts index 6d4786b15..ff377119a 100644 --- a/game-server/app/servers/battle/handler/guildBossHandler.ts +++ b/game-server/app/servers/battle/handler/guildBossHandler.ts @@ -65,13 +65,13 @@ export class GuildHandler { return resResult(STATUS.GUILD_STRUCTURE_NOT_FOUND); } let bossBase = getBossByLv(curStructure.lv); - let {bossHp, warId } = getRandomByLen(bossBase.wars); + let {bossHp, warId, bossLevel } = getRandomByLen(bossBase.wars); let resGuild = await GuildModel.costFund(code, bossBase.consume) if (!resGuild) return resResult(STATUS.GUILD_FUND_NOT_ENOUGH); - await BossInstanceModel.openBossInstance(code, bossHp, warId); + await BossInstanceModel.openBossInstance(code, bossHp, warId, bossLevel); res.releaseCallback(); - let result = {warId, ranks: [], myRank: {}, bossHp, status: 3, isBattled: false}; + let result = {warId, ranks: [], myRank: {}, bossHp, status: 3, bossLv: bossLevel, isBattled: false}; return resResult(STATUS.SUCCESS, result); } diff --git a/game-server/app/services/guildBossService.ts b/game-server/app/services/guildBossService.ts index 8fe8f5e21..884ac91dd 100644 --- a/game-server/app/services/guildBossService.ts +++ b/game-server/app/services/guildBossService.ts @@ -15,7 +15,7 @@ import { getArmyBossRank } from '../pubUtils/data'; * @param roleId */ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId:string) { - let { warId, ranks, bossHp, winWarId, winTime, roleIdRecords, guildCode } = bossInstance; + let { warId, ranks, bossHp, bossLv, winWarId, winTime, roleIdRecords, guildCode } = bossInstance; ranks.sort(function(a, b) { return b.score - a.score + a.time - b.time; }); @@ -45,7 +45,7 @@ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId } return {roleId, score, rankLv: index + 1}; }); - return {warId, ranks: lastRanks, myRank, bossHp, status: 3, isBattled}; + return {warId, ranks: lastRanks, myRank, bossHp, status: 3, isBattled, bossLv}; } /** * 战斗结束返回 @@ -54,16 +54,16 @@ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId * @param battleNum */ export async function getBossInstanceWhenEnd(bossInstance: BossInstanceType, roleId:string, battleNum:number) { - let { warId, ranks, bossHp, winWarId, guildCode, recordRanks, winNum } = bossInstance; + let { warId, ranks, bossHp, winWarId, guildCode, recordRanks, winNum, bossLv } = bossInstance; let pushRanks; let result:any = {}; if (battleNum == winNum) { pushRanks = deepCopy(recordRanks); - result = {warId: winWarId, bossHp: 0, status: 3}; + result = {warId: winWarId, bossHp: 0, bossLv, status: 3}; await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId); } else { pushRanks = deepCopy(ranks); - result = {warId, bossHp, status: 3}; + result = {warId, bossHp, bossLv, status: 3}; } pushRanks.sort(function(a, b) { return b.score - a.score + a.time - b.time; diff --git a/shared/db/BossInstance.ts b/shared/db/BossInstance.ts index fe70d13d8..14d5bf55d 100644 --- a/shared/db/BossInstance.ts +++ b/shared/db/BossInstance.ts @@ -22,6 +22,9 @@ export default class BossInstance extends BaseModel { @prop({ required: true }) bossHp: number; + @prop({ required: true }) + bossLv: number; + @prop({ required: true, type: Rank, default:[]}) ranks:Array; @@ -48,13 +51,14 @@ export default class BossInstance extends BaseModel { @prop({ required: true, default: false }) winSettled: boolean; //胜利是否结算过 + public static async findBossInstance(guildCode: string, lean = true) { const bossInstance: BossInstanceType = await BossInstanceModel.findOne({ guildCode }).lean(lean); return bossInstance; } - public static async openBossInstance(guildCode: string, bossHp: number, warId: number, lean = true) { - const bossInstance: BossInstanceType = await BossInstanceModel.findOneAndUpdate({ guildCode },{ranks:[], time: nowSeconds(), bossHp, warId, $inc: { recordNum: 1 }}, {new: true, upsert: true}).lean(lean); + public static async openBossInstance(guildCode: string, bossHp: number, warId: number, bossLv: number, lean = true) { + const bossInstance: BossInstanceType = await BossInstanceModel.findOneAndUpdate({ guildCode },{ranks:[], time: nowSeconds(), bossHp, bossLv, warId, $inc: { recordNum: 1 }}, {new: true, upsert: true}).lean(lean); return bossInstance; } //记录玩家boss通关后首次查看boss关卡