寻宝:有战力限制时机器人的战力算法

This commit is contained in:
liangtongchuan
2021-01-27 16:00:48 +08:00
parent b082900eb2
commit e70124e6fc
3 changed files with 15 additions and 8 deletions
@@ -169,7 +169,7 @@ export class ComBattleHandler {
setTimeout(async () => { setTimeout(async () => {
let team = thiz.teamMap.get(teamCode); let team = thiz.teamMap.get(teamCode);
if (team && team.roleIds && team.status === COM_TEAM_STATUS.DEFAULT && team.roleIds.length < 3) { if (team && team.roleIds && team.status === COM_TEAM_STATUS.DEFAULT && team.roleIds.length < 3) {
let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, lv, 3 - team.roleIds.length); let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, team.ceLimit, lv, 3 - team.roleIds.length);
team.roleIds = team.roleIds.concat(robotIdArr); team.roleIds = team.roleIds.concat(robotIdArr);
team.roleStatus = team.roleStatus.concat(robotStArr); team.roleStatus = team.roleStatus.concat(robotStArr);
for (let st of robotStArr) { for (let st of robotStArr) {
@@ -244,7 +244,7 @@ export class ComBattleHandler {
roleStatus.push(roleInfo); roleStatus.push(roleInfo);
roleIds.push(roleId); roleIds.push(roleId);
// 创建并添加机器人 // 创建并添加机器人
let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, lv, 2); let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, comTeam.ceLimit, lv, 2);
roleStatus = roleStatus.concat(robotStArr); roleStatus = roleStatus.concat(robotStArr);
roleIds = roleIds.concat(robotIdArr); roleIds = roleIds.concat(robotIdArr);
comTeam.roleStatus = roleStatus; comTeam.roleStatus = roleStatus;
@@ -462,7 +462,7 @@ export class ComBattleHandler {
} }
if (!roleSt) return; if (!roleSt) return;
let { topFiveCe, lv } = roleSt; let { topFiveCe, lv } = roleSt;
let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, lv, 3 - team.roleIds.length); let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, team.ceLimit, lv, 3 - team.roleIds.length);
team.roleIds = team.roleIds.concat(robotIdArr); team.roleIds = team.roleIds.concat(robotIdArr);
team.roleStatus = team.roleStatus.concat(robotStArr); team.roleStatus = team.roleStatus.concat(robotStArr);
for (let st of robotStArr) { for (let st of robotStArr) {
+8 -3
View File
@@ -3,7 +3,7 @@ import { STATUS } from './../consts/statusCode';
import { COM_BATTLE_ROBOT_ID_NAME, COM_TEAM_STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../consts'; import { COM_BATTLE_ROBOT_ID_NAME, COM_TEAM_STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../consts';
import { RoleStatus, ComBattleTeamModel } from './../db/ComBattleTeam'; import { RoleStatus, ComBattleTeamModel } from './../db/ComBattleTeam';
import { getBluePrtByQuality, getComBtlSetByQuality, getRewardByBlueprtId, getWarById, getWarIdByBlueprtId, comBtlRangeInfo } from "../pubUtils/gamedata"; import { getBluePrtByQuality, getComBtlSetByQuality, getRewardByBlueprtId, getWarById, getWarIdByBlueprtId, comBtlRangeInfo } from "../pubUtils/gamedata";
import { getRandEelm, getRandValue, resResult, ratioReward } from "../pubUtils/util"; import { getRandEelm, getRandValue, resResult, ratioReward, getRandValueByMinMax } from "../pubUtils/util";
import { getRandRobot } from "./battleService"; import { getRandRobot } from "./battleService";
import { difference } from 'underscore'; import { difference } from 'underscore';
import { Channel } from 'pinus'; import { Channel } from 'pinus';
@@ -24,14 +24,19 @@ export function getRandBlueprtId(qualityArr: Array<number>, cnt = 1) {
return res; return res;
} }
export function getRandComBtlRobots(topFiveCe: number, lv: number, cnt: number) { export function getRandComBtlRobots(topFiveCe: number, ceLimit: number, lv: number, cnt: number) {
let robotHeroes = getRandRobot(cnt); // 随机几个阵容 let robotHeroes = getRandRobot(cnt); // 随机几个阵容
let robotInfos = getRandEelm(COM_BATTLE_ROBOT_ID_NAME, cnt); // 随机几个阵容 let robotInfos = getRandEelm(COM_BATTLE_ROBOT_ID_NAME, cnt); // 随机几个阵容
// 创建并添加机器人 // 创建并添加机器人
let robotStArr = [], robotIdArr = []; let robotStArr = [], robotIdArr = [];
if (robotHeroes && robotInfos && robotHeroes.length && robotInfos.length && robotInfos.length === robotHeroes.length) { if (robotHeroes && robotInfos && robotHeroes.length && robotInfos.length && robotInfos.length === robotHeroes.length) {
robotHeroes.forEach((robot, idx) => { robotHeroes.forEach((robot, idx) => {
const robotCe = getRandValue(topFiveCe || 0, COM_BTL_CONST.ROBOT_CE_RATIO, 0); let robotCe = 0;
if (ceLimit) {
robotCe = getRandValueByMinMax(ceLimit * COM_BTL_CONST.ROBOT_CE_LIMIT_MIN, ceLimit * COM_BTL_CONST.ROBOT_CE_LIMIT_MAX, 0);
} else {
robotCe = getRandValue(topFiveCe || 0, COM_BTL_CONST.ROBOT_CE_RATIO, 0);
}
const robotLv = getRandValue(lv, COM_BTL_CONST.ROBOT_CE_RATIO, 0); const robotLv = getRandValue(lv, COM_BTL_CONST.ROBOT_CE_RATIO, 0);
const imgHid = robot[Math.floor(Math.random() * robot.length)]; const imgHid = robot[Math.floor(Math.random() * robot.length)];
const { robotRoleId, robotRoleName } = robotInfos[idx]; const { robotRoleId, robotRoleName } = robotInfos[idx];
+4 -2
View File
@@ -135,9 +135,11 @@ export const COM_BTL_CONST = {
BTL_TIME_LMT: 10 * 60 * 1000, // 每局时长限制 BTL_TIME_LMT: 10 * 60 * 1000, // 每局时长限制
ROBOT_HURT_RAND_RATE: 0.05, // 每个机器人消耗 boss 血量百分比浮动范围 ROBOT_HURT_RAND_RATE: 0.05, // 每个机器人消耗 boss 血量百分比浮动范围
FRDCNT_DROP: 10, // 每场情谊点掉落 FRDCNT_DROP: 10, // 每场情谊点掉落
ROBOT_CE_RATIO: 0.2, // 机器人战力上下浮动百分比 ROBOT_CE_RATIO: 0.2, // 没有战力限制的情况下机器人战力上下浮动百分比
ROBOT_CE_LIMIT_MIN: 1.05, // 有战力限制的情况下机器人战力最小倍数
ROBOT_CE_LIMIT_MAX: 1.15, // 有战力限制的情况下机器人战力最大倍数
ASSIST_TIME: 60 * 1000, // 助战匹配机器人的等待时长 ASSIST_TIME: 60 * 1000, // 助战匹配机器人的等待时长
CAP_TIME: 60 * 1000, // 队长匹配机器人的等待时长 CAP_TIME: 40 * 1000, // 队长匹配机器人的等待时长
CAP_START_TIME: 60 * 1000, // 人齐后队长开始时长倒计时 CAP_START_TIME: 60 * 1000, // 人齐后队长开始时长倒计时
ROBOT_RND_LMT: 10, // 机器人输出伤害的回合数 ROBOT_RND_LMT: 10, // 机器人输出伤害的回合数
ROBOT_ACT_LMT: 10, // 机器人输出伤害的次数 ROBOT_ACT_LMT: 10, // 机器人输出伤害的次数