寻宝:仅匹配特定等级区间;修复机器人武将不阵亡 bug
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
* @Last Modified time: 2020-12-03 21:36:00
|
||||
*/
|
||||
import { IT_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_TEAM_STATUS, COM_BTL_CONST, GOOD_QUALITY, CONSUME_TYPE } from './../../../consts';
|
||||
import { getGoodById, getBossHpByBlueprtId, getComBtlSetByQuality, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId } from '../../../pubUtils/gamedata';
|
||||
import { getGoodById, getBossHpByBlueprtId, getComBtlSetByQuality, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId, comBtlRangeInfo, comBtlRangeByLv } from '../../../pubUtils/gamedata';
|
||||
import { ComBattleTeamModel, BossHp } from '../../../db/ComBattleTeam';
|
||||
import Role, { RoleModel } from '../../../db/Role';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
@@ -16,7 +16,7 @@ import { ItemModel } from '../../../db/Item';
|
||||
import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService';
|
||||
import { checkRoleInQueue, getTeamSearchByQuality, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
||||
import { transBossHpArr } from '../../../services/battleService';
|
||||
import { getRandBlueprtId, getRandComBtlRobots, checkComBattleResult, clearComBtlTimer, getRealReward, getAssistTimesByQuality, getFrd, updateRobotHurt, updateRobotHurtByTime } from '../../../services/comBattleService';
|
||||
import { getRandBlueprtId, getRandComBtlRobots, checkComBattleResult, clearComBtlTimer, getRealReward, getAssistTimesByQuality, getFrd, updateRobotHurt, updateRobotHurtByTime, comBtlLvInvalid } from '../../../services/comBattleService';
|
||||
import { setAp } from '../../../services/actionPointService';
|
||||
import { roleLevelup } from '../../../services/normalBattleService';
|
||||
|
||||
@@ -53,6 +53,8 @@ class ComTeam {
|
||||
curRnd: number;
|
||||
// 队伍中人数
|
||||
roleCnt: number;
|
||||
// 藏宝图等级所处范围,用来匹配
|
||||
lvRange: number;
|
||||
constructor(teamCode: string, pub: boolean, blueprtId: number, status: number, capId: string, ceLimit: number, bossHp: number, quality: number, bossHpArr:Array<BossHp> ) {
|
||||
this.teamCode = teamCode;
|
||||
this.pub = pub;
|
||||
@@ -66,6 +68,8 @@ class ComTeam {
|
||||
this.bossHpArr = bossHpArr;
|
||||
this.curRnd = 0;
|
||||
this.roleCnt = 1;
|
||||
let { lvLimited } = getGoodById(blueprtId);
|
||||
this.lvRange = comBtlRangeByLv(lvLimited);
|
||||
}
|
||||
}
|
||||
export class ComBattleHandler {
|
||||
@@ -113,7 +117,7 @@ export class ComBattleHandler {
|
||||
roleStatus.push(capStatus);
|
||||
|
||||
// 检查是否有正在匹配的符合要求的玩家
|
||||
let teammates = await getTeamSearchByQuality(goodData.quality);
|
||||
let teammates = await getTeamSearchByQuality(goodData.quality, comBtlRangeByLv(goodData.lvLimited));
|
||||
if (teammates) {
|
||||
for (let teammate of teammates) {
|
||||
let roleInfo = await RoleModel.findByRoleId(teammate.roleId);
|
||||
@@ -196,34 +200,31 @@ export class ComBattleHandler {
|
||||
* @returns
|
||||
* @memberof ComBattleHandler
|
||||
*/
|
||||
async searchTeam(msg: {qualityArr: [number]}, session: BackendSession) {
|
||||
async searchTeam(msg: {qualityArr: [number], lvRange: number}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let sid = session.get('sid');
|
||||
const { qualityArr } = msg;
|
||||
const { qualityArr, lvRange = 1 } = msg;
|
||||
let { lv, headHid = 19, topFiveCe = 1000, sHid = 19 } = await RoleModel.findByRoleId(roleId);
|
||||
|
||||
topFiveCe = reduceCe(topFiveCe);
|
||||
for (let q of qualityArr) {
|
||||
let setting = getComBtlSetByQuality(q);
|
||||
if (lv < setting.assistanceLevel) {
|
||||
return resResult(STATUS.COM_BATTLE_ASSIST_LV_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
if (comBtlLvInvalid(lv, lvRange)) {
|
||||
return resResult(STATUS.COM_BATTLE_ASSIST_LV_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
const team = await ComBattleTeamModel.getOtherTeamByQualityAndSt(roleId, qualityArr, COM_TEAM_STATUS.DEFAULT, topFiveCe);
|
||||
const team = await ComBattleTeamModel.getOtherTeamByQualityAndSt(roleId, qualityArr, COM_TEAM_STATUS.DEFAULT, lvRange, topFiveCe);
|
||||
// TODO: 有匹配的队伍还需要重新 joinTeam 加入,有失败可能,体验不好,需优化
|
||||
if (team && team.roleIds.length < 3 && team.status === COM_TEAM_STATUS.DEFAULT && team.roleIds.indexOf(roleId) === -1) {
|
||||
return resResult(STATUS.SUCCESS, {teamCode: team.teamCode});
|
||||
}
|
||||
let teamCode = session.get('teamCode');
|
||||
await setTeamSearchReq(roleId, sid, qualityArr);
|
||||
await setTeamSearchReq(roleId, sid, qualityArr, lvRange);
|
||||
let thiz = this;
|
||||
// 倒计时匹配两个机器人
|
||||
setTimeout(async () => {
|
||||
let inQueue = await checkRoleInQueue(roleId, sid, qualityArr);
|
||||
let inQueue = await checkRoleInQueue(roleId, sid, qualityArr, lvRange);
|
||||
if (!inQueue) return;
|
||||
await rmRoleFromQueue(roleId, sid, qualityArr);
|
||||
await rmRoleFromQueue(roleId, sid, qualityArr, lvRange);
|
||||
let roleStatus = [];
|
||||
let roleIds = [];
|
||||
|
||||
@@ -273,7 +274,7 @@ export class ComBattleHandler {
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
|
||||
await rmRoleFromQueue(roleId, sid, GOOD_QUALITY);
|
||||
await rmRoleFromQueue(roleId, sid, GOOD_QUALITY, null);
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
@@ -297,10 +298,9 @@ export class ComBattleHandler {
|
||||
|
||||
topFiveCe = reduceCe(topFiveCe);
|
||||
let { quality } = getGoodById(teamStatus.blueprtId);
|
||||
let { assistanceLevel, assistanceTime } = getComBtlSetByQuality(quality);
|
||||
if (lv < COM_BTL_CONST.ENABLE_LV) {
|
||||
return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
|
||||
} else if (lv < assistanceLevel) {
|
||||
} else if (comBtlLvInvalid(lv, teamStatus.lvRange)) {
|
||||
return resResult(STATUS.COM_BATTLE_ASSIST_LV_NOT_ENOUGH);
|
||||
} else if (topFiveCe < teamStatus.ceLimit) {
|
||||
return resResult(STATUS.COM_BATTLE_CE_LIMIT);
|
||||
|
||||
Reference in New Issue
Block a user