演武台:boss挑战次数更新
This commit is contained in:
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user