全局:加载json方法全部改为最新

This commit is contained in:
luying
2021-05-06 20:25:05 +08:00
parent 2ef00e8179
commit 0315269387
36 changed files with 401 additions and 920 deletions
+30 -30
View File
@@ -7,10 +7,9 @@ import { RoleModel, RoleType } from './../db/Role';
import { EquipPrintDropType, EquipPrintDropModel } from './../db/EquipPrintDrop';
import { FriendPointModel } from './../db/FriendPoint';
import { STATUS } from './../consts/statusCode';
import { COM_TEAM_STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../consts';
import { COM_TEAM_STATUS, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../consts';
import { RoleStatus, ComBattleTeamModel, ComBattleTeamType } from './../db/ComBattleTeam';
import { getBluePrtByQuality, getComBtlSetByQuality, getRewardByBlueprtId, getWarById, getWarIdByBlueprtId, comBtlRangeInfo, getGoodById, comBtlRangeByLv, getBossHpByBlueprtId } from "../pubUtils/gamedata";
import { getRandEelm, getRandValue, resResult, ratioReward, getRandValueByMinMax, getRandomWithWeight, decodeStr, getRobotInfo } from "../pubUtils/util";
import { getRandEelm, getRandValue, resResult, ratioReward, getRandValueByMinMax, getRandEelmWithWeight, getRobotInfo } from "../pubUtils/util";
import { getRandRobot, transBossHpArr } from "./battleService";
import { difference, omit } from 'underscore';
import { Channel, ChannelService } from 'pinus';
@@ -22,6 +21,9 @@ import { getTeamSearchByQuality, rmRoleFromQueue } from './redisService';
import { addUserToChannel } from './roleService';
import { ChannelUser } from '../domain/ChannelUser';
import { checkTaskInComBattleEnd } from './taskService';
import { getRewardByBlueprtId, gameData, comBtlRangeByLv, getBossHpByBlueprtId } from '../pubUtils/data';
import { getFriendPointObject } from '../pubUtils/itemUtils';
import { DicWar } from '../pubUtils/dictionary/DicWar';
/**
* 在给定的品质列表中随机返回一定数量的藏宝图Id
@@ -30,9 +32,9 @@ import { checkTaskInComBattleEnd } from './taskService';
*/
export function getRandBlueprtId(qualityArr: number[], cnt = 1) {
if (!qualityArr || !qualityArr.length) return null;
let blueprtIdArr = [];
let blueprtIdArr: number[] = [];
for (let q of qualityArr) {
blueprtIdArr = blueprtIdArr.concat(getBluePrtByQuality(q));
blueprtIdArr = blueprtIdArr.concat(gameData.blueprt.get(q));
}
if (blueprtIdArr.length === 0) return null;
const res = getRandEelm(blueprtIdArr, cnt);
@@ -124,7 +126,7 @@ export async function checkComBattleDrop(roleId: string, battleCode: string) {
let fixReward = getRewardByBlueprtId(team.blueprtId);
if (!roleSt.isCap) {
if (roleSt.isFrd) {
fixReward = '&';
fixReward = [];
} else {
fixReward = ratioReward(fixReward, COM_BTL_CONST.ASSIST_REWARD_RATIO);
}
@@ -149,23 +151,22 @@ export function setComBtlTimer(teamCode: string, timer: NodeJS.Timer, timerMap:
}
export async function getRealReward(blueprtId: number, roleSt: RoleStatus) {
let warInfo = getWarById(getWarIdByBlueprtId(blueprtId));
let fixRewardStr = warInfo['fixReward'];
let fixReward = getRewardByBlueprtId(blueprtId);
if (!roleSt.isCap) {
if (roleSt.isFrd) {
let frdPointRec = await FriendPointModel.getFrdPointRecToday(roleSt.roleId, FRIEND_DROP_TYPE.COM_BATTLE);
if (!frdPointRec || frdPointRec.cnt <= FRIEND_DROP_MAX.COM_BTL - COM_BTL_CONST.FRDCNT_DROP) {
fixRewardStr = `${CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT)}&${COM_BTL_CONST.FRDCNT_DROP}`;
fixReward = [getFriendPointObject(COM_BTL_CONST.FRDCNT_DROP)];
} else if (frdPointRec.cnt < FRIEND_DROP_MAX.COM_BTL) {
fixRewardStr = `${CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT)}&${COM_BTL_CONST.FRDCNT_DROP - frdPointRec.cnt}`;
fixReward = [getFriendPointObject(COM_BTL_CONST.FRDCNT_DROP - frdPointRec.cnt)];
} else {
fixRewardStr = '&';
fixReward = [];
}
} else {
fixRewardStr = ratioReward(fixRewardStr, COM_BTL_CONST.ASSIST_REWARD_RATIO);
fixReward = ratioReward(fixReward, COM_BTL_CONST.ASSIST_REWARD_RATIO);
}
}
return fixRewardStr;
return fixReward;
}
export async function getAssistTimesByQuality(roleId: string, qualityArr?: number[]) {
@@ -189,7 +190,7 @@ export async function getFrd(roleId: string, quality: number) {
let isFrd = false;
let assistTimes = await getAssistTimesByQuality(roleId, [quality]);
let assistTime = assistTimes.get(quality);
let { assistanceTime } = getComBtlSetByQuality(quality);
let { assistanceTime } = gameData.xunbao.get(quality);
if (assistTime >= assistanceTime) isFrd = true;
return isFrd;
}
@@ -232,7 +233,7 @@ function updateRobotKilled(bossHp: number, roleSt: RoleStatus) {
}
}
export async function handleComBtlProgress(teamStatus, robotHurtTimer: Map<string, NodeJS.Timer>, teamMap: Map<string, any>, channel: Channel) {
export async function handleComBtlProgress(teamStatus: MemComBtlTeam, robotHurtTimer: Map<string, NodeJS.Timer>, teamMap: Map<string, MemComBtlTeam>, channel: Channel) {
const { teamCode, roleIds, capId, quality } = teamStatus;
// 判断战斗是否结束
let battleSt = checkComBattleResult(teamStatus);
@@ -272,7 +273,7 @@ export async function handleComBtlProgress(teamStatus, robotHurtTimer: Map<strin
* @param {*} teamStatus 要更新的队伍信息
* @param {RoleStatus} roleSt 要更新的玩家信息
*/
export function updateRobotHurt(teamStatus, roleSt: RoleStatus, channel: Channel) {
export function updateRobotHurt(teamStatus: MemComBtlTeam, roleSt: RoleStatus, channel: Channel) {
// 机器人的伤害为:boss 血量的一定比例,平均到一定回合数内,再平均到每个敌军,上下浮动一定比例
let eachHurtHp = robotEachHurt(teamStatus.bossHp, teamStatus.bossHpArr.length);
let robotTotalHurt = 0;
@@ -305,7 +306,7 @@ export function updateRobotHurt(teamStatus, roleSt: RoleStatus, channel: Channel
* @param {Channel} channel
* @param {Map<string, NodeJS.Timer>} robotHurtTimer
*/
export function updateRobotHurtByTime(teamStatus, roleSt: RoleStatus, interval: number, channel: Channel, robotHurtTimer: Map<string, NodeJS.Timer>, teamMap: Map<string, any>) {
export function updateRobotHurtByTime(teamStatus: MemComBtlTeam, roleSt: RoleStatus, interval: number, channel: Channel, robotHurtTimer: Map<string, NodeJS.Timer>, teamMap: Map<string, MemComBtlTeam>) {
const timerKey = `${teamStatus.teamCode}_${roleSt.roleId}`;
const robotTimer = setInterval(() => {
const robotTotalHurt = teamStatus.bossHp * COM_BTL_CONST.ROBOT_HURT_RATIO;
@@ -344,13 +345,13 @@ export function clearRobotHurtTimer(teamStatus, robotHurtTimer: Map<string, Node
* @returns
*/
export function comBtlLvInvalid(lv: number, lvRange: number) {
const lvs = comBtlRangeInfo(lvRange);
const lvs = gameData.comBtlLvRange.get(lvRange);
if (!lvs) return true;
const minLv = lvs[0];
return lv < minLv;
}
export async function dismissTeam(teamStatus, teamMap: Map<string, any>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, channel) {
export async function dismissTeam(teamStatus: MemComBtlTeam, teamMap: Map<string, MemComBtlTeam>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, channel) {
const { teamCode } = teamStatus;
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
if (teamStatus.status !== COM_TEAM_STATUS.DEFAULT) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR);
@@ -368,7 +369,7 @@ export async function dismissTeam(teamStatus, teamMap: Map<string, any>, roleId:
return resResult(STATUS.SUCCESS);
}
export function setDismissTimer(teamStatus, teamMap: Map<string, any>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, channel) {
export function setDismissTimer(teamStatus: MemComBtlTeam, teamMap: Map<string, MemComBtlTeam>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, channel) {
if (teamIsFullToStart(teamStatus)) {
clearComBtlTimer(teamStatus.teamCode, teamDisTimer);
let timer = setTimeout(async () => {
@@ -428,12 +429,11 @@ export async function incEquipPrintDrop(roleSt: RoleStatus) {
return { dropResult, dropRec };
}
export function randEquipPrintId(warInfo) {
if (!warInfo || !warInfo['jackpotReward']) {
export function randEquipPrintId(warInfo: DicWar) {
if (!warInfo || !warInfo.jackpotReward) {
return null;
}
let jackpotReward: { id: number, weight: number}[] = decodeStr('possibility', warInfo['jackpotReward']);
const result = getRandomWithWeight(jackpotReward);
const result = getRandEelmWithWeight(warInfo.jackpotReward);
if (!result || !result.dic || !result.dic.id) {
return null;
}
@@ -521,7 +521,7 @@ export async function teammateInBlackList(roleId: string, roleIds: string[]) {
}
export function blueprtIdValid(id: number) {
const goodData = getGoodById(id);
const goodData = gameData.goods.get(id);
return goodData && goodData.itid === IT_TYPE.BLUEPRT && COM_BTL_QUALITY.indexOf(goodData.quality) !== -1;
}
@@ -540,7 +540,7 @@ export function blueprtIdValid(id: number) {
* @returns
*/
export function createComTeamData(teamCode: string, pub: boolean, blueprtId: number, capId: string, ceLimit: number) {
const { lvLimited, quality } = getGoodById(blueprtId);
const { lvLimited, quality } = gameData.goods.get(blueprtId);
const lvRange = comBtlRangeByLv(lvLimited);
const { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);
const curRnd = 0;
@@ -605,7 +605,7 @@ export function addRoleStToTeam(comTeam: MemComBtlTeam, roleSt: RoleStatus) {
* @returns
*/
export async function addValidSearchingRoles(comTeam: MemComBtlTeam, channelService: ChannelService) {
const { quality, lvLimited } = getGoodById(comTeam.blueprtId);
const { quality, lvLimited } = gameData.goods.get(comTeam.blueprtId);
let teammates = await getTeamSearchByQuality(quality, comBtlRangeByLv(lvLimited));
if (teammates && teammates.length) {
for (let teammate of teammates) {
@@ -650,7 +650,7 @@ export function teamIsFullToStart(comTeam: MemComBtlTeam) {
* @param {number} roleLv 真实玩家等级,用来做机器人等级基准
* @param {number} [count=1]
*/
export async function addRobotsToTeam(comTeam: MemComBtlTeam, roleId: string, roleCe: number, roleLv: number, teamMap: Map<string, any>, teamDisTimer: Map<string, NodeJS.Timer>, channel: Channel, count = 1) {
export async function addRobotsToTeam(comTeam: MemComBtlTeam, roleId: string, roleCe: number, roleLv: number, teamMap: Map<string, MemComBtlTeam>, teamDisTimer: Map<string, NodeJS.Timer>, channel: Channel, count = 1) {
const { teamCode } = comTeam;
const { robotStArr, robotIdArr } = getRandComBtlRobots(roleCe, comTeam.ceLimit, roleLv, count);
for (let st of robotStArr) {
@@ -666,11 +666,11 @@ export async function addRobotsToTeam(comTeam: MemComBtlTeam, roleId: string, ro
* @export
* @param {MemComBtlTeam} comTeam
* @param {RoleType} roleInfo
* @param {Map<string, any>} teamMap
* @param {Map<string, MemComBtlTeam>} teamMap
* @param {Map<string, NodeJS.Timer>} teamDisTimer
* @param {Channel} channel
*/
export async function addRobotsLater(comTeam: MemComBtlTeam, roleInfo: RoleType, teamMap: Map<string, any>, teamDisTimer: Map<string, NodeJS.Timer>, channel: Channel) {
export async function addRobotsLater(comTeam: MemComBtlTeam, roleInfo: RoleType, teamMap: Map<string, MemComBtlTeam>, teamDisTimer: Map<string, NodeJS.Timer>, channel: Channel) {
const teamStatus = comTeam;
const { teamCode } = teamStatus;
const { roleId, lv } = roleInfo;