寻宝:修复匹配

This commit is contained in:
luying
2021-12-23 10:36:18 +08:00
parent a10eacf5e4
commit 00dbc6a0e6
4 changed files with 17 additions and 9 deletions
@@ -131,7 +131,7 @@ export class ComBattleHandler {
if (!inQueue) return; if (!inQueue) return;
await rmRoleFromQueue(roleId, sid, qualityArr, lvRange); await rmRoleFromQueue(roleId, sid, qualityArr, lvRange);
// 创建队伍 // 创建队伍
let blueprtId = getRandBlueprtId(qualityArr).pop(); let blueprtId = getRandBlueprtId(qualityArr, lvRange).pop();
let comTeam: MemComBtlTeam = createComTeamData(teamCode, false, blueprtId, 'robot', 0) let comTeam: MemComBtlTeam = createComTeamData(teamCode, false, blueprtId, 'robot', 0)
let { quality } = gameData.goods.get(blueprtId); let { quality } = gameData.goods.get(blueprtId);
+4 -2
View File
@@ -32,14 +32,16 @@ import { handleCost } from './rewardService';
* @param qualityArr 品质数组,在所有给定品质的藏宝图中筛选1 * @param qualityArr 品质数组,在所有给定品质的藏宝图中筛选1
* @param cnt 返回藏宝图数量 * @param cnt 返回藏宝图数量
*/ */
export function getRandBlueprtId(qualityArr: number[], cnt = 1) { export function getRandBlueprtId(qualityArr: number[], lvRange: number, cnt = 1) {
if (!qualityArr || !qualityArr.length) return null; if (!qualityArr || !qualityArr.length) return null;
let blueprtIdArr: number[] = []; let blueprtIdArr: number[] = [];
for (let q of qualityArr) { for (let q of qualityArr) {
blueprtIdArr = blueprtIdArr.concat(gameData.blueprt.get(q)); blueprtIdArr = blueprtIdArr.concat(gameData.blueprtWithQualityAndStar.get(`${q}_${lvRange}`));
} }
if (blueprtIdArr.length === 0) return null; if (blueprtIdArr.length === 0) return null;
const res = getRandEelm(blueprtIdArr, cnt); const res = getRandEelm(blueprtIdArr, cnt);
console.log('******** getRandBlueprtId', blueprtIdArr, cnt, res)
return res; return res;
} }
+3 -2
View File
@@ -1,5 +1,5 @@
import { dicHero, dicMyHeroes, loadHero } from "./dictionary/DicHero"; import { dicHero, dicMyHeroes, loadHero } from "./dictionary/DicHero";
import { dicGoods, blueprt, dicJewel, figureCondition, loadGoods } from "./dictionary/DicGoods"; import { dicGoods, blueprtWithQuality, blueprtWithQualityAndStar, dicJewel, figureCondition, loadGoods } from "./dictionary/DicGoods";
import { dicBlueprtCompose, loadBlueprtCompose } from "./dictionary/DicBlueprtCompose"; import { dicBlueprtCompose, loadBlueprtCompose } from "./dictionary/DicBlueprtCompose";
import { dicBlueprtPossibility, loadBlueprtPossibility } from "./dictionary/DicBlueprtPossibility"; import { dicBlueprtPossibility, loadBlueprtPossibility } from "./dictionary/DicBlueprtPossibility";
import { dicDaily, loadDaily } from "./dictionary/DicDaily"; import { dicDaily, loadDaily } from "./dictionary/DicDaily";
@@ -132,7 +132,8 @@ export const gameData = {
btlBossHpSum: new Map<number, number>(), btlBossHpSum: new Map<number, number>(),
btlBossHp: new Map<number, Array<{ dataId: number, hp: number, actorId: number }>>(), btlBossHp: new Map<number, Array<{ dataId: number, hp: number, actorId: number }>>(),
blueprtToWar: new Map<number, number>(), blueprtToWar: new Map<number, number>(),
blueprt: blueprt, blueprt: blueprtWithQuality,
blueprtWithQualityAndStar: blueprtWithQualityAndStar,
fashion: dicFashions, fashion: dicFashions,
fashionBySkinId: dicFashionsByHeroId, fashionBySkinId: dicFashionsByHeroId,
friendShips: friendShips, friendShips: friendShips,
+9 -4
View File
@@ -110,13 +110,15 @@ const DicGoodsKeys: KeysEnum<DicGoods> = {
} }
export const dicJewel = new Map<number, DicGoods>(); export const dicJewel = new Map<number, DicGoods>();
export const dicGoods = new Map<number, DicGoods>(); export const dicGoods = new Map<number, DicGoods>();
export const blueprt = new Map<number, Array<number>>(); export const blueprtWithQuality = new Map<number, Array<number>>();
export const blueprtWithQualityAndStar = new Map<string, Array<number>>();
export const figureCondition = new Map<number, { params: number[], id: number, gid: number }[]>(); // type => {params, id, gid} export const figureCondition = new Map<number, { params: number[], id: number, gid: number }[]>(); // type => {params, id, gid}
export function loadGoods() { export function loadGoods() {
dicJewel.clear(); dicJewel.clear();
dicGoods.clear(); dicGoods.clear();
blueprt.clear(); blueprtWithQuality.clear();
blueprtWithQualityAndStar.clear();
figureCondition.clear(); figureCondition.clear();
let arr = readFileAndParse(FILENAME.DIC_GOODS); let arr = readFileAndParse(FILENAME.DIC_GOODS);
@@ -147,9 +149,12 @@ export function loadGoods() {
dicGoods.set(o.good_id, _.pick(o, Object.keys(DicGoodsKeys))); dicGoods.set(o.good_id, _.pick(o, Object.keys(DicGoodsKeys)));
if (o.itid == IT_TYPE.BLUEPRT) { if (o.itid == IT_TYPE.BLUEPRT) {
let arr = blueprt.get(o.quality) || new Array<number>(); let arr = blueprtWithQualityAndStar.get(`${o.quality}_${o.equipLvl}`) || new Array<number>();
arr.push(o.good_id); arr.push(o.good_id);
blueprt.set(o.quality, arr); blueprtWithQualityAndStar.set(`${o.quality}_${o.equipLvl}`, arr);
let arr2 = blueprtWithQuality.get(o.quality) || new Array<number>();
arr.push(o.good_id);
blueprtWithQuality.set(o.quality, arr2);
} else if (o.goodType == GOOD_TYPE.JEWEL) { } else if (o.goodType == GOOD_TYPE.JEWEL) {
let material = o.composeMaterial[0]; let material = o.composeMaterial[0];
if (!!material && !!material.id) { if (!!material && !!material.id) {