寻宝:优化创建队伍时生成组队信息的逻辑

This commit is contained in:
liangtongchuan
2021-02-18 20:10:48 +08:00
parent 847a3b6289
commit e04c02bd2a
2 changed files with 60 additions and 27 deletions

View File

@@ -5,19 +5,19 @@ import { difference } from 'underscore';
* @Last Modified by: 梁桐川
* @Last Modified time: 2020-12-03 21:36:00
*/
import { IT_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_TEAM_STATUS, COM_BTL_CONST, CONSUME_TYPE, COM_BTL_QUALITY, QUALITY_TYPE } from './../../../consts';
import { getGoodById, getBossHpByBlueprtId, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId, comBtlRangeInfo, comBtlRangeByLv } from '../../../pubUtils/gamedata';
import { IT_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_TEAM_STATUS, COM_BTL_CONST, CONSUME_TYPE, COM_BTL_QUALITY } from './../../../consts';
import { getGoodById, getBossHpByBlueprtId, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId, comBtlRangeByLv } from '../../../pubUtils/gamedata';
import { ComBattleTeamModel, BossHp, ComBattleTeamType } from '../../../db/ComBattleTeam';
import Role, { RoleModel } from '../../../db/Role';
import { STATUS } from '../../../consts/statusCode';
import { Application, BackendSession } from 'pinus';
import { resResult, getRandomByLen, calculateNum, getRandValue, ratioReward, reduceCe, getRandValueByMinMax } from '../../../pubUtils/util';
import { resResult, getRandomByLen, reduceCe, getRandValueByMinMax } from '../../../pubUtils/util';
import { RoleStatus } from '../../../db/ComBattleTeam';
import { ItemModel } from '../../../db/Item';
import { handleFixedReward, addItems, handleCost, decreaseItems } from '../../../services/rewardService';
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, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, incEquipPrintDrop, randEquipPrintId, handleComBtlProgress, getComBattleFriendAdd } from '../../../services/comBattleService';
import { getRandBlueprtId, getRandComBtlRobots, clearComBtlTimer, getRealReward, getAssistTimesByQuality, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, incEquipPrintDrop, randEquipPrintId, handleComBtlProgress, getComBattleFriendAdd, getValidTeammateRoleSt } from '../../../services/comBattleService';
import { setAp } from '../../../services/actionPointService';
import { roleLevelup } from '../../../services/normalBattleService';
import { FriendRelationModel } from '../../../db/FriendRelation';
@@ -125,28 +125,12 @@ export class ComBattleHandler {
let teammates = await getTeamSearchByQuality(goodData.quality, comBtlRangeByLv(goodData.lvLimited));
if (teammates) {
for (let teammate of teammates) {
let roleInfo = await RoleModel.findByRoleId(teammate.roleId);
if (!roleInfo || roleIds.indexOf(teammate.roleId) !== -1) continue;
let {roleId, roleName, headHid = 19, sHid = 19, topFiveCe, lv} = roleInfo;
// 黑名单屏蔽
let hasBlackList = false;
for(let hisRoleId of roleIds) {
let isInBlackList = await FriendRelationModel.isInBlackList(roleId, hisRoleId);
if(isInBlackList) { hasBlackList = true; break; }
}
if(hasBlackList) continue;
topFiveCe = reduceCe(topFiveCe);
if (topFiveCe < ceLimit) continue;
rmRoleFromQueue(roleId, sid, COM_BTL_QUALITY, null); // 匹配成功后删除redis中该用户的匹配记录
let isFrd = await getFrd(roleId, goodData.quality);
const st = new RoleStatus(roleId, roleName, false, isFrd, headHid, sHid, topFiveCe, lv);
const { roleId: teammateRoleId } = teammate;
const st = getValidTeammateRoleSt(teammateRoleId, roleIds, ceLimit, goodData.quality);
if (!st) continue;
rmRoleFromQueue(teammateRoleId, sid, COM_BTL_QUALITY, null); // 匹配成功后删除redis中该用户的匹配记录
roleStatus.push(st);
roleIds.push(roleInfo.roleId);
roleIds.push(teammateRoleId);
}
}
let { bossHpSum, bossHpArr } = getBossHpByBlueprtId(blueprtId);