boss返回状态改变
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -80,7 +80,8 @@ export interface DicTrainBase {
|
|||||||
readonly difficultyRatio: number;
|
readonly difficultyRatio: number;
|
||||||
// 据点奖励增长系数
|
// 据点奖励增长系数
|
||||||
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user