寻宝:仅匹配特定等级区间;修复机器人武将不阵亡 bug
This commit is contained in:
@@ -147,6 +147,16 @@ export const COM_BTL_CONST = {
|
||||
ASSIST_REWARD_RATIO: 0.5, // 队员奖励比例
|
||||
}
|
||||
|
||||
// 寻宝等级区间
|
||||
export const COM_BTL_LV_RANGE = [
|
||||
{id: 1, minLv: 1, maxLv: 19},
|
||||
{id: 2, minLv: 20, maxLv: 39},
|
||||
{id: 3, minLv: 40, maxLv: 59},
|
||||
{id: 4, minLv: 60, maxLv: 79},
|
||||
{id: 5, minLv: 80, maxLv: 99},
|
||||
{id: 6, minLv: 100, maxLv: 100},
|
||||
];
|
||||
|
||||
// 机器人名字随机
|
||||
export const COM_BATTLE_ROBOT_ID_NAME = [
|
||||
{robotRoleId: 'cd9h0iy8', robotRoleName: '徐埋农'},
|
||||
|
||||
@@ -121,6 +121,10 @@ export default class ComBattleTeam extends BaseModel {
|
||||
@prop({ required: true, default: 1 })
|
||||
roleCnt: number;
|
||||
|
||||
// 藏宝图等级所处范围,用来匹配
|
||||
@prop({ required: true, default: 1 })
|
||||
lvRange: number;
|
||||
|
||||
// 单个 boss 血量状态
|
||||
@prop({ required: false, type: BossHp, default: [] })
|
||||
bossHpArr: Array<BossHp>;
|
||||
@@ -218,9 +222,9 @@ export default class ComBattleTeam extends BaseModel {
|
||||
return team;
|
||||
}
|
||||
|
||||
public static async getOtherTeamByQualityAndSt(roleId: string, qualityArr: Array<number>, status: number, ce = 0, pub = true, cntLmt = 2, lean = true) {
|
||||
public static async getOtherTeamByQualityAndSt(roleId: string, qualityArr: Array<number>, status: number, lvRange: number, ce = 0, pub = true, cntLmt = 2, lean = true) {
|
||||
const curTime = new Date(Date.now() - 10 * 60 * 1000); // 10分钟之前
|
||||
const team: ComBattleTeamType = await ComBattleTeamModel.findOne({quality: {$in: qualityArr}, status, ceLimit: {$lte: ce}, pub, roleCnt: {$lte: cntLmt}, roleIds: {$nin: [roleId]}, updatedAt: {$gte: curTime}}).lean(lean);
|
||||
const team: ComBattleTeamType = await ComBattleTeamModel.findOne({quality: {$in: qualityArr}, status, lvRange, ceLimit: {$lte: ce}, pub, roleCnt: {$lte: cntLmt}, roleIds: {$nin: [roleId]}, updatedAt: {$gte: curTime}}).lean(lean);
|
||||
return team;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@ export interface DicXunbao {
|
||||
readonly name: number;
|
||||
// 协助次数
|
||||
readonly assistanceTime: number;
|
||||
// 最低协助等级
|
||||
readonly assistanceLevel: number;
|
||||
// ! 已删除。最低协助等级
|
||||
// readonly assistanceLevel: number;
|
||||
}
|
||||
|
||||
const str = readJsonFile(FILENAME.DIC_XUNBAO);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import fs = require('fs');
|
||||
import path = require('path');
|
||||
import { ABI_TYPE, ABI_STAGE } from '../consts';
|
||||
import { ABI_TYPE, ABI_STAGE, COM_BTL_LV_RANGE } from '../consts';
|
||||
import { decodeIdCntArrayStr, getRandEelm } from './util';
|
||||
import { IT_TYPE } from '../consts';
|
||||
|
||||
@@ -20,7 +20,7 @@ const heroSkillInfo = new Map<number, any>()
|
||||
const seidInfo = new Map<number, any>();
|
||||
const olySeidInfo = new Map<number, any>();
|
||||
const expeditionInfo = new Map<number, any> ();
|
||||
const comBtlInfo = new Map<number, {quality: number, name: string, assistanceTime: number, assistanceLevel: number}>();
|
||||
const comBtlInfo = new Map<number, {quality: number, name: string, assistanceTime: number}>();
|
||||
const btlBossHpSum = new Map<number, number>();
|
||||
const btlBossHp = new Map<number, Array<{dataId: number, hp: number, actorId: number}>>();
|
||||
const blueprtToWar = new Map<number, number>();
|
||||
@@ -31,6 +31,7 @@ const fiendShips = new Map<string, any>();
|
||||
const fashions = new Map<number, any>();
|
||||
const fiendShipHidAandIds = new Map<number, {actorId: number, level:number}>();
|
||||
const fiendShipLevelMaps = new Map<number, any>();
|
||||
const comBtlLvRange = new Map<number, Array<number>>();
|
||||
|
||||
interface dicStar {
|
||||
id: number;
|
||||
@@ -241,6 +242,17 @@ function parseComBtlData() {
|
||||
});
|
||||
}
|
||||
|
||||
function parseComBtlLvRange() {
|
||||
const lvRange = COM_BTL_LV_RANGE;
|
||||
lvRange.forEach(range => {
|
||||
const lvs = [];
|
||||
for (let lv = range.minLv; lv <= range.maxLv; lv++) {
|
||||
lvs.push(lv);
|
||||
}
|
||||
comBtlLvRange.set(range.id, lvs);
|
||||
});
|
||||
}
|
||||
|
||||
function parseGood() {
|
||||
const file = 'dic_goods';
|
||||
const data = gamedata['jsons'][file] || [];
|
||||
@@ -402,6 +414,7 @@ function parseData() {
|
||||
parseOlySeidList();
|
||||
parseExpedition();
|
||||
parseComBtlData();
|
||||
parseComBtlLvRange();
|
||||
parseGood();
|
||||
parseBlueprtCompose();
|
||||
parseFashions();
|
||||
@@ -528,6 +541,22 @@ export function getComBtlSetByQuality(quality: number) {
|
||||
return comBtlInfo.get(quality);
|
||||
}
|
||||
|
||||
export function comBtlRangeInfo(range: number) {
|
||||
return comBtlLvRange.get(range);
|
||||
}
|
||||
|
||||
export function comBtlRangeByLv(lv: number) {
|
||||
for (let [k, v] of comBtlLvRange) {
|
||||
if (v.indexOf(lv) !== -1) {
|
||||
return k;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function comBtlRanges() {
|
||||
return Array.from(comBtlLvRange.keys());
|
||||
}
|
||||
|
||||
export function getBossHpByWarId(warId: number) {
|
||||
let bossHpSum = btlBossHpSum.get(warId) || 0;
|
||||
let bossHpArr = btlBossHp.get(warId) || [];
|
||||
|
||||
Reference in New Issue
Block a user