boss返回状态改变

This commit is contained in:
mamengke01
2021-01-27 13:56:18 +08:00
parent 94f15e0789
commit 47aa7d2194
7 changed files with 30 additions and 17 deletions
@@ -106,7 +106,6 @@ export class GuildRefineHandler {
const roleId: string = session.get('roleId'); const roleId: string = session.get('roleId');
const serverId: number = session.get('serverId'); const serverId: number = session.get('serverId');
const sid: string = session.get('sid'); const sid: string = session.get('sid');
let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode'); let userGuild = await UserGuildModel.getMyGuild(roleId, 'guildCode');
if (!userGuild) if (!userGuild)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
@@ -124,13 +123,11 @@ export class GuildRefineHandler {
return resResult(STATUS.GUILD_IS_ASSISTED_SCIENCETREE); return resResult(STATUS.GUILD_IS_ASSISTED_SCIENCETREE);
if (scienceTree.assistRoleIds.length >= ARMY.ARMY_DEVELOPMENT_SPEEDTMES) if (scienceTree.assistRoleIds.length >= ARMY.ARMY_DEVELOPMENT_SPEEDTMES)
return resResult(STATUS.GUILD_REACH_MAX_ASSIST_COUNT); 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}]); 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); return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
scienceTree.assistRoleIds.push(roleId); scienceTree.assistRoleIds.push(roleId);
scienceTree.endTime -= scienceTree.endTime - ARMY.ARMY_DEVELOPMENT_SPEED * 60; scienceTree.endTime -= scienceTree.endTime - ARMY.ARMY_DEVELOPMENT_SPEED * 60;
let { scienceTrees } = await GuildRefineModel.updateRefine(code, { scienceTrees: guildRefine.scienceTrees }) let { scienceTrees } = await GuildRefineModel.updateRefine(code, { scienceTrees: guildRefine.scienceTrees })
res.releaseCallback(); res.releaseCallback();
return resResult(STATUS.SUCCESS, { scienceTrees }); return resResult(STATUS.SUCCESS, { scienceTrees });
@@ -15,6 +15,7 @@ import { CURRENCY_BY_TYPE, CURRENCY_TYPE } from '../../../consts/constModules/it
import { handleCost, addItems } from '../../../services/rewardService'; import { handleCost, addItems } from '../../../services/rewardService';
import { ARMY } from '../../../pubUtils/dicParam'; import { ARMY } from '../../../pubUtils/dicParam';
import { addActive } from '../../../services/guildService'; import { addActive } from '../../../services/guildService';
import { GUILD_STRUCTURE } from '../../../consts/constModules/guildConst';
export default function (app: Application) { export default function (app: Application) {
return new GuildTrainHandler(app); return new GuildTrainHandler(app);
} }
@@ -131,14 +132,14 @@ export class GuildTrainHandler {
if (!trainInstance) if (!trainInstance)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
let { trainInstances } = getArmyTrainJuDian(trainId); let { trainInstances, soloRewardRatio } = getArmyTrainJuDian(trainId);
let instance = findWhere(trainInstances, { hid }); let instance = findWhere(trainInstances, { hid });
if (!instance) if (!instance)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
let trainSoloReward = getTrainSoloReward(battleRecord.record.difficulty); let trainSoloReward = getTrainSoloReward(battleRecord.record.difficulty);
if (!trainSoloReward) if (!trainSoloReward)
return resResult(STATUS.WRONG_PARMS); 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 goods = await addItems(roleId, roleName, sid, [{id: CURRENCY_BY_TYPE.get(CURRENCY_TYPE.HONOUR), count: isSuccess?trainSoloReward.failHonour:trainSoloReward.failHonour}]);
let guildTrains = []; let guildTrains = [];
let trainIds = []; let trainIds = [];
@@ -210,9 +211,13 @@ export class GuildTrainHandler {
if (!userGuild) if (!userGuild)
return resResult(STATUS.WRONG_PARMS); return resResult(STATUS.WRONG_PARMS);
const { guildCode: code } = userGuild; 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);//加锁 let res:any = await lockData(serverId, GUILD_DATA_NAME.TRAIN_BOX, code + '_' + trainId);//加锁
if (!!res.err) if (!!res.err)
return resResult(STATUS.REDLOCK_ERR); return resResult(STATUS.REDLOCK_ERR);
let { shilianRewardRatio } = getTrainBaseByLv(GUILD_STRUCTURE.TRAIN);
let { heroRewards, trainInstances } = getArmyTrainJuDian(trainId); let { heroRewards, trainInstances } = getArmyTrainJuDian(trainId);
let { progress } = findWhere(trainInstances, {hid}); let { progress } = findWhere(trainInstances, {hid});
let guildTrain = await GuildTrainModel.findTrainInstanceBoxByIndex(code, roleId, trainId, hid, index, progress, nowSeconds()); let guildTrain = await GuildTrainModel.findTrainInstanceBoxByIndex(code, roleId, trainId, hid, index, progress, nowSeconds());
@@ -222,6 +227,7 @@ export class GuildTrainHandler {
} }
let good = getRandomByLen(heroRewards); let good = getRandomByLen(heroRewards);
good.count = Math.floor((100 + shilianRewardRatio) * good.count/100);
let goods = await addItems(roleId, roleName, sid, [good]); let goods = await addItems(roleId, roleName, sid, [good]);
let resGuildTrain = await GuildTrainModel.receiveBoxByIndex(code, roleId, trainId, hid, index, good); let resGuildTrain = await GuildTrainModel.receiveBoxByIndex(code, roleId, trainId, hid, index, good);
+5 -5
View File
@@ -27,10 +27,10 @@ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId
await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId); await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId);
} }
if (bossInstance.startTime < getTodayZeroPoint()) { if (bossInstance.startTime < getTodayZeroPoint()) {
result.type = 1; result.status = 1;
return result; return result;
} else { } else {
result.type = 2; result.status = 2;
return result; return result;
} }
} }
@@ -45,7 +45,7 @@ export async function getBossInstanceInfo(bossInstance: BossInstanceType, roleId
} }
return {roleId, score, rankLv: index + 1}; 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 = {}; let result:any = {};
if (battleNum == winNum) { if (battleNum == winNum) {
pushRanks = deepCopy(recordRanks); pushRanks = deepCopy(recordRanks);
result = {warId: winWarId, bossHp: 0, type: 3}; result = {warId: winWarId, bossHp: 0, status: 3};
await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId); await BossInstanceModel.recordRoleIdWhenCheck(guildCode, roleId);
} else { } else {
pushRanks = deepCopy(ranks); pushRanks = deepCopy(ranks);
result = {warId, bossHp, type: 3}; result = {warId, bossHp, status: 3};
} }
pushRanks.sort(function(a, b) { pushRanks.sort(function(a, b) {
return b.score - a.score + a.time - b.time; return b.score - a.score + a.time - b.time;
@@ -1,7 +1,7 @@
import { UserGuildModel } from '../db/UserGuild'; import { UserGuildModel } from '../db/UserGuild';
import { getArmyTrainJuDian } from '../pubUtils/data'; import { getArmyTrainJuDian, getTrainBaseByLv } from '../pubUtils/data';
import { nowSeconds, getHourPoint } from '../pubUtils/timeUtil'; 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 { GuildTrainType, GuildTrainModel, TrainInstance } from '../db/GuildTrain';
import { GuildModel } from '../db/Guild'; import { GuildModel } from '../db/Guild';
import { findWhere } from 'underscore'; import { findWhere } from 'underscore';
@@ -12,6 +12,7 @@ import { MailModel, MailType } from '../db/Mail';
import { getRandomByLen, resResult } from '../pubUtils/util'; import { getRandomByLen, resResult } from '../pubUtils/util';
import { getRedis } from './redisService'; import { getRedis } from './redisService';
import { STATUS } from '../consts/statusCode'; import { STATUS } from '../consts/statusCode';
export async function getUserGuild(roleId: string, serverId: number) { export async function getUserGuild(roleId: string, serverId: number) {
let userGuild = await UserGuildModel.getMyGuild(roleId,'trainCount trainTime trainRewards guildCode'); let userGuild = await UserGuildModel.getMyGuild(roleId,'trainCount trainTime trainRewards guildCode');
if (!userGuild) if (!userGuild)
@@ -146,6 +147,8 @@ export async function resetTrain(code: string, serverId: number) {
let mails = new Array<MailType>(); let mails = new Array<MailType>();
let pushMessage = []; let pushMessage = [];
let uids = []; let uids = [];
let { shilianRewardRatio } = getTrainBaseByLv(GUILD_STRUCTURE.TRAIN);
userGuildList.forEach(async function ({roleId, trainRewards}) { userGuildList.forEach(async function ({roleId, trainRewards}) {
let goods = []; let goods = [];
guildTrains.forEach(guildTrain=>{ guildTrains.forEach(guildTrain=>{
@@ -153,6 +156,7 @@ export async function resetTrain(code: string, serverId: number) {
if (!findWhere(trainBoxs, {roleId})) { if (!findWhere(trainBoxs, {roleId})) {
let { heroRewards } = getArmyTrainJuDian(guildTrain.trainId); let { heroRewards } = getArmyTrainJuDian(guildTrain.trainId);
let good = getRandomByLen(heroRewards); let good = getRandomByLen(heroRewards);
good.count = Math.floor((100 + shilianRewardRatio) * good.count/100);
goods.push(good); goods.push(good);
} }
}) })
+2 -1
View File
@@ -322,7 +322,8 @@ export const FILENAME = {
DIC_ARMY_TRAIN_SOLO_REWARD: 'dic_army_trainSoloReward', DIC_ARMY_TRAIN_SOLO_REWARD: 'dic_army_trainSoloReward',
DIC_ARMY_ACTIVE_POINT_WAYS: 'dic_army_activePointWays', DIC_ARMY_ACTIVE_POINT_WAYS: 'dic_army_activePointWays',
DIC_ARMY_DEVELOPMENTCONSUME: 'dic_army_developmentConsume', 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 = [ export const WAR_RELATE_TABLES = [
@@ -11,14 +11,16 @@ export interface DicArmyTrainJuDian {
readonly trainInstances: Array<{hid: number, warId: number, progress: number}>; readonly trainInstances: Array<{hid: number, warId: number, progress: number}>;
readonly heroRewards: Array<{id: number, count: number}>; readonly heroRewards: Array<{id: number, count: number}>;
// 进阶奖励 // 进阶奖励
readonly jinjieReward: RewardInter[]; readonly jinjieReward: RewardInter[];
readonly soloRewardRatio: number;
} }
const DicArmyTrainJuDianKeys: KeysEnum<DicArmyTrainJuDian> = { const DicArmyTrainJuDianKeys: KeysEnum<DicArmyTrainJuDian> = {
id: true, id: true,
trainInstances: true, trainInstances: true,
heroRewards: true, heroRewards: true,
jinjieReward: true jinjieReward: true,
soloRewardRatio: true
}; };
const str = readJsonFile(FILENAME.DIC_ARMY_TRAIN_JU_DIAN); const str = readJsonFile(FILENAME.DIC_ARMY_TRAIN_JU_DIAN);
@@ -81,6 +81,7 @@ export interface DicTrainBase {
// 据点奖励增长系数 // 据点奖励增长系数
readonly judianRewardRatio: number; readonly judianRewardRatio: number;
readonly shilianRewardRatio: number;
} }
const DicTrainKeys: KeysEnum<DicTrainBase> = { const DicTrainKeys: KeysEnum<DicTrainBase> = {
@@ -89,6 +90,7 @@ const DicTrainKeys: KeysEnum<DicTrainBase> = {
trainLevel: true, trainLevel: true,
difficultyRatio: true, difficultyRatio: true,
judianRewardRatio: true, judianRewardRatio: true,
shilianRewardRatio: true
}; };
// 捐献所 // 捐献所
@@ -200,6 +202,7 @@ const strTrain = readJsonFile(FILENAME.DIC_GUILD_TRAIN_BASE);
let arrTrain = JSON.parse(strTrain); let arrTrain = JSON.parse(strTrain);
arrTrain.forEach(o => { arrTrain.forEach(o => {
setStructureConsume(o); setStructureConsume(o);
dicTrainBase.set(o.level, _.pick(o, Object.keys(DicTrainKeys))); dicTrainBase.set(o.level, _.pick(o, Object.keys(DicTrainKeys)));
}); });
arrTrain = undefined; arrTrain = undefined;