boss返回状态改变

This commit is contained in:
mamengke01
2021-01-27 13:55:45 +08:00
parent 94f15e0789
commit 47aa7d2194
7 changed files with 30 additions and 17 deletions

View File

@@ -106,7 +106,6 @@ export class GuildRefineHandler {
const roleId: string = session.get('roleId');
const serverId: number = session.get('serverId');
const sid: string = session.get('sid');
let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
@@ -124,13 +123,11 @@ export class GuildRefineHandler {
return resResult(STATUS.GUILD_IS_ASSISTED_SCIENCETREE);
if (scienceTree.assistRoleIds.length >= ARMY.ARMY_DEVELOPMENT_SPEEDTMES)
return resResult(STATUS.GUILD_REACH_MAX_ASSIST_COUNT);
let result = await handleCost(roleId, sid, [{id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.GOLD), count: ARMY.ARMY_DEVELOPMENT_SPEEDCOST}]);
if(!result)
if (!result)
return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
scienceTree.assistRoleIds.push(roleId);
scienceTree.endTime -= scienceTree.endTime - ARMY.ARMY_DEVELOPMENT_SPEED * 60;
let { scienceTrees } = await GuildRefineModel.updateRefine(code, { scienceTrees: guildRefine.scienceTrees })
res.releaseCallback();
return resResult(STATUS.SUCCESS, { scienceTrees });

View File

@@ -15,6 +15,7 @@ import { CURRENCY_BY_TYPE, CURRENCY_TYPE } from '../../../consts/constModules/it
import { handleCost, addItems } from '../../../services/rewardService';
import { ARMY } from '../../../pubUtils/dicParam';
import { addActive } from '../../../services/guildService';
import { GUILD_STRUCTURE } from '../../../consts/constModules/guildConst';
export default function (app: Application) {
return new GuildTrainHandler(app);
}
@@ -131,14 +132,14 @@ export class GuildTrainHandler {
if (!trainInstance)
return resResult(STATUS.WRONG_PARMS);
let { trainInstances } = getArmyTrainJuDian(trainId);
let { trainInstances, soloRewardRatio } = getArmyTrainJuDian(trainId);
let instance = findWhere(trainInstances, { hid });
if (!instance)
return resResult(STATUS.WRONG_PARMS);
let trainSoloReward = getTrainSoloReward(battleRecord.record.difficulty);
if (!trainSoloReward)
return resResult(STATUS.WRONG_PARMS);
let addScore = isSuccess?trainSoloReward.winScore:trainSoloReward.failScore;
let addScore = Math.floor((isSuccess?trainSoloReward.winScore:trainSoloReward.failScore) * (soloRewardRatio + 100 ) / 100);
let goods = await addItems(roleId, roleName, sid, [{id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.HONOUR), count: isSuccess?trainSoloReward.failHonour:trainSoloReward.failHonour}]);
let guildTrains = [];
let trainIds = [];
@@ -210,9 +211,13 @@ export class GuildTrainHandler {
if (!userGuild)
return resResult(STATUS.WRONG_PARMS);
const { guildCode: code } = userGuild;
let { structure } = await GuildModel.findGuild(code, serverId, 'structure');
let stru = findWhere(structure, {id: 4});
let res:any = await lockData(serverId, GUILD_DATA_NAME.TRAIN_BOX, code + '_' + trainId);//加锁
if (!!res.err)
return resResult(STATUS.REDLOCK_ERR);
let { shilianRewardRatio } = getTrainBaseByLv(GUILD_STRUCTURE.TRAIN);
let { heroRewards, trainInstances } = getArmyTrainJuDian(trainId);
let { progress } = findWhere(trainInstances, {hid});
let guildTrain = await GuildTrainModel.findTrainInstanceBoxByIndex(code, roleId, trainId, hid, index, progress, nowSeconds());
@@ -222,6 +227,7 @@ export class GuildTrainHandler {
}
let good = getRandomByLen(heroRewards);
good.count = Math.floor((100 + shilianRewardRatio) * good.count/100);
let goods = await addItems(roleId, roleName, sid, [good]);
let resGuildTrain = await GuildTrainModel.receiveBoxByIndex(code, roleId, trainId, hid, index, good);

View File

@@ -27,10 +27,10 @@ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId
await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId);
}
if (bossInstance.startTime < getTodayZeroPoint()) {
result.type = 1;
result.status = 1;
return result;
} else {
result.type = 2;
result.status = 2;
return result;
}
}
@@ -45,7 +45,7 @@ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId
}
return {roleId, score, rankLv: index + 1};
});
return {warId, ranks: lastRanks, myRank, bossHp, type: 3, isBattled};
return {warId, ranks: lastRanks, myRank, bossHp, status: 3, isBattled};
}
/**
* 战斗结束返回
@@ -59,11 +59,11 @@ export async function getBossInstanceWhenEnd(bossInstance: BossInstanceType, rol
let result:any = {};
if (battleNum == winNum) {
pushRanks = deepCopy(recordRanks);
result = {warId: winWarId, bossHp: 0, type: 3};
result = {warId: winWarId, bossHp: 0, status: 3};
await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId);
} else {
pushRanks = deepCopy(ranks);
result = {warId, bossHp, type: 3};
result = {warId, bossHp, status: 3};
}
pushRanks.sort(function(a, b) {
return b.score - a.score + a.time - b.time;

View File

@@ -1,7 +1,7 @@
import { UserGuildModel } from '../db/UserGuild';
import { getArmyTrainJuDian } from '../pubUtils/data';
import { getArmyTrainJuDian, getTrainBaseByLv } from '../pubUtils/data';
import { nowSeconds, getHourPoint } from '../pubUtils/timeUtil';
import { GUILD_REPORT_NUM, GUILD_DATA_NAME, REFRESH_HOUR } from '../consts/constModules/guildConst';
import { GUILD_REPORT_NUM, GUILD_DATA_NAME, REFRESH_HOUR, GUILD_STRUCTURE } from '../consts/constModules/guildConst';
import { GuildTrainType, GuildTrainModel, TrainInstance } from '../db/GuildTrain';
import { GuildModel } from '../db/Guild';
import { findWhere } from 'underscore';
@@ -12,6 +12,7 @@ import { MailModel, MailType } from '../db/Mail';
import { getRandomByLen, resResult } from '../pubUtils/util';
import { getRedis } from './redisService';
import { STATUS } from '../consts/statusCode';
export async function getUserGuild(roleId: string, serverId: number) {
let userGuild = await UserGuildModel.getMyGuild(roleId,'trainCount trainTime trainRewards guildCode');
if (!userGuild)
@@ -146,6 +147,8 @@ export async function resetTrain(code: string, serverId: number) {
let mails = new Array<MailType>();
let pushMessage = [];
let uids = [];
let { shilianRewardRatio } = getTrainBaseByLv(GUILD_STRUCTURE.TRAIN);
userGuildList.forEach(async function ({roleId, trainRewards}) {
let goods = [];
guildTrains.forEach(guildTrain=>{
@@ -153,6 +156,7 @@ export async function resetTrain(code: string, serverId: number) {
if (!findWhere(trainBoxs, {roleId})) {
let { heroRewards } = getArmyTrainJuDian(guildTrain.trainId);
let good = getRandomByLen(heroRewards);
good.count = Math.floor((100 + shilianRewardRatio) * good.count/100);
goods.push(good);
}
})

View File

@@ -322,7 +322,8 @@ export const FILENAME = {
DIC_ARMY_TRAIN_SOLO_REWARD: 'dic_army_trainSoloReward',
DIC_ARMY_ACTIVE_POINT_WAYS: 'dic_army_activePointWays',
DIC_ARMY_DEVELOPMENTCONSUME: 'dic_army_developmentConsume',
DIC_ARMY_BOSS_RANK_REWARD: 'dic_army_bossrankReward'
DIC_ARMY_BOSS_RANK_REWARD: 'dic_army_bossrankReward',
}
export const WAR_RELATE_TABLES = [

View File

@@ -11,14 +11,16 @@ export interface DicArmyTrainJuDian {
readonly trainInstances: Array<{hid: number, warId: number, progress: number}>;
readonly heroRewards: Array<{id: number, count: number}>;
// 进阶奖励
readonly jinjieReward: RewardInter[];
readonly jinjieReward: RewardInter[];
readonly soloRewardRatio: number;
}
const DicArmyTrainJuDianKeys: KeysEnum<DicArmyTrainJuDian> = {
id: true,
trainInstances: true,
heroRewards: true,
jinjieReward: true
jinjieReward: true,
soloRewardRatio: true
};
const str = readJsonFile(FILENAME.DIC_ARMY_TRAIN_JU_DIAN);

View File

@@ -80,7 +80,8 @@ export interface DicTrainBase {
readonly difficultyRatio: number;
// 据点奖励增长系数
readonly judianRewardRatio: number;
readonly shilianRewardRatio: number;
}
const DicTrainKeys: KeysEnum<DicTrainBase> = {
@@ -89,6 +90,7 @@ const DicTrainKeys: KeysEnum<DicTrainBase> = {
trainLevel: true,
difficultyRatio: true,
judianRewardRatio: true,
shilianRewardRatio: true
};
// 捐献所
@@ -200,6 +202,7 @@ const strTrain = readJsonFile(FILENAME.DIC_GUILD_TRAIN_BASE);
let arrTrain = JSON.parse(strTrain);
arrTrain.forEach(o => {
setStructureConsume(o);
dicTrainBase.set(o.level, _.pick(o, Object.keys(DicTrainKeys)));
});
arrTrain = undefined;