演武台:boss挑战次数更新

This commit is contained in:
luying
2021-10-18 18:30:34 +08:00
parent ff18340c0f
commit 24510562fa
2 changed files with 22 additions and 27 deletions

View File

@@ -4,7 +4,7 @@ import { STATUS, TASK_TYPE } from '../../../consts';
import { BossInstanceModel } from '../../../db/BossInstance';
import { BattleRecordModel } from '../../../db/BattleRecord';
import { nowSeconds, getZeroPoint } from '../../../pubUtils/timeUtil';
import { getBossInstanceInfo, checkBossResult, checkBossBattleMemberExists, pushBossHpMessage, addBossInstance, refreshUserGuildOfBoss, refreshGuildOfBoss } from '../../../services/guildBossService';
import { getBossInstanceInfo, checkBossResult, checkBossBattleMemberExists, pushBossHpMessage, addBossInstance, refreshUserGuildOfBoss, refreshGuildOfBoss, getRanks } from '../../../services/guildBossService';
import { findWhere } from 'underscore'
import { GUILD_STRUCTURE, GUILD_BOSS_STATUS, GUILD_POINT_WAYS } from '../../../consts/constModules/guildConst';
import { DATA_NAME } from '../../../consts/dataName';
@@ -101,9 +101,10 @@ export class GuildHandler {
return resResult(STATUS.GUILD_SCRIPT_NOT_OPENED);
if (bossInstance.bossHp <= 0)
return resResult(STATUS.GUILD_SCRIPT_IS_COMPLETE);
let myRank = findWhere(bossInstance.ranks, { roleId });
if (!!myRank && myRank.time > getZeroPoint())
let { myChallengeCnt } = await refreshUserGuildOfBoss(userGuild, 0, 0);
if(myChallengeCnt >= dicParam.GUILD_BOSS.GUILD_BOSS_CHALLENGE_COUNT) {
return resResult(STATUS.GUILD_SCRIPT_IS_BATTLED);
}
let { code: bossCode, warId, ranks, bossHp } = bossInstance;
const battleCode = genCode(8); // 关卡唯一值
@@ -121,8 +122,9 @@ export class GuildHandler {
} else {
await BossInstanceModel.updateRank(bossCode, roleId);
}
let { myChallengeCnt } = await refreshUserGuildOfBoss(userGuild, 0, 1);
return resResult(STATUS.SUCCESS, { battleCode, bossCode: bossInstance.code, myChallengeCnt });
let { myChallengeCnt: newMyChallengeCnt } = await refreshUserGuildOfBoss(userGuild, 0, 1);
return resResult(STATUS.SUCCESS, { battleCode, bossCode: bossInstance.code, myChallengeCnt: newMyChallengeCnt });
}
async action(msg: guildInter & { bossCode: string, damage: number, battleCode: string }, session: BackendSession) {
@@ -137,9 +139,10 @@ export class GuildHandler {
}
//记录伤害
let bossInstance = await BossInstanceModel.updateBossHp(bossCode, damage, roleId);
if(!bossInstance) return resResult(STATUS.GUILD_SCRIPT_NOT_OPENED);
if(!bossInstance) bossInstance = await BossInstanceModel.findByCode(bossCode);
if(!bossInstance) return resResult(STATUS.GUILD_SCRIPT_NOT_OPENED)
await BattleRecordModel.incBossDamage(battleCode, damage, bossInstance?.bossHp);
if (!bossInstance || bossInstance.bossHp == 0) {//进入结算
if (bossInstance.bossHp <= 0) {//进入结算
let flag = await checkBossResult(bossCode, guildCode, serverId, DATA_NAME.BOSS_SCRIPT, roleId, damage);
if (!flag) {
return resResult(STATUS.WRONG_PARMS);
@@ -159,7 +162,7 @@ export class GuildHandler {
const sid = session.get('sid');
const serverId: number = parseInt(session.get('serverId'));
const { guildCode } = userGuild;
let bossInstance = await BossInstanceModel.findByCode(bossCode);
if(!bossInstance) return resResult(STATUS.WRONG_PARMS);
@@ -167,20 +170,22 @@ export class GuildHandler {
$set: { status: 1 }//战斗结束统一设置成1
}, true);
let { bossDamage } = battleRecord.record; // 伤害奖励
let { bossDamage = 0 } = battleRecord.record; // 伤害奖励
let dicBossBase = gameData.bossBaseByBossLv.get(bossInstance.bossLv);
let reward = dicBossBase.damageReward.map(({id, count}) => {
return { id, count: Math.floor(count * bossDamage * dicBossBase.ratio / 1000 ) }
});
let battleGoods = await addItems(roleId, roleName, sid, reward);
await addActive(roleId, serverId, GUILD_POINT_WAYS.BOSS_WAR);//获得活跃值
// 任务
await checkTask(roleId, sid, TASK_TYPE.GUILD_BOSS, 1, true, {});
let result = await getBossInstanceInfo(guildCode, roleId, userGuild);
let { warId, ranks, bossHp, bossLv, status, encourageCnt } = bossInstance;
let rankInfo = getRanks(ranks, roleId);
return resResult(STATUS.SUCCESS, { ...result, battleGoods });
return resResult(STATUS.SUCCESS, { warId, ...rankInfo, bossHp, status, bossLv, encourageCnt, encourageMax: dicBossBase.encourageSum, battleGoods });
}
async encourage(msg: guildInter & { count: number }, session: BackendSession) {
@@ -224,19 +229,9 @@ export class GuildHandler {
async debugAddBattleTimes(msg: {}, session: BackendSession) {
const roleId: string = session.get('roleId');
let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code } = userGuild;
let { ranks } = await BossInstanceModel.findBossInstance(code);
for (let i = 0; i < ranks.length; i++) {
let rank = ranks[i];
if (rank.roleId == roleId) {
rank.time = 0;
break;
}
}
let { ranks: resRanks } = await BossInstanceModel.updateBossInstance(code, { ranks });
return resResult(STATUS.SUCCESS, { ranks: resRanks });
await UserGuildModel.updateInfo(roleId, { bossChallengeCnt: 0 }, {});
return resResult(STATUS.SUCCESS);
}
}