寻宝助战匹配简单机器人

This commit is contained in:
liangtongchuan
2020-11-27 23:27:35 +08:00
parent 369c831846
commit 3e499de1bc
8 changed files with 159 additions and 23 deletions

View File

@@ -280,7 +280,7 @@ export const COM_BLUEPRT_DROP_PER_AP = 10;
// 每局时长限制,秒
export const COM_BATTLE_TIME_LMT = 10 * 60;
// 机器人生成时间,秒
export const COM_BATTLE_ROBOT_TIME_LMT = 1;
// export const COM_BATTLE_ROBOT_TIME_LMT = 1;
// 每个机器人消耗 boss 血量百分比
export const COM_BATTLE_ROBOT_HURT_RATE = 0.4;
// 每个机器人消耗 boss 血量百分比浮动范围
@@ -289,6 +289,24 @@ export const COM_BATTLE_ROBOT_HURT_RAND_RATE = 0.05;
export const COM_BATTLE_FRDCNT_MAX = 150;
// 情谊点掉落数量
export const COM_BATTLE_FRDCNT_DROP = 10;
// 机器人战力上下浮动百分比
export const COM_BATTLE_ROBOT_CE_RATIO = 0.2;
// 助战匹配机器人的等待时长
export const COM_BATTLE_ASSIST_TIME = 60 * 1000;
// 队长匹配机器人的等待时长
export const COM_BATTLE_CAP_TIME = 60 * 1000;
// 人齐后队长开始时长倒计时
export const COM_BATTLE_CAP_START_TIME = 60 * 1000;
// 机器人名字随机
export const COM_BATTLE_ROBOT_ID_NAME = [
{robotRoleId: 'cd9h0iy8', robotRoleName: '徐埋农'},
{robotRoleId: 'rtdgr4oz', robotRoleName: '简普瞳'},
{robotRoleId: 'rv96unin', robotRoleName: '邛瑛'},
{robotRoleId: 'b33u625l', robotRoleName: '嵇晁伊'},
{robotRoleId: 'l6wopj9p', robotRoleName: '颜校'},
{robotRoleId: '6wdqcumj', robotRoleName: '吉辉娇'}
];
export const REDIS_KEY = {
USER_INFO: "userInfo", // 玩家缓存信息
@@ -303,4 +321,4 @@ export const FUNC_OPT_TYPE = {
export const FUNCS_ID = {
EVENT: 1
}
}

View File

@@ -34,14 +34,14 @@ export class RoleStatus {
// 前五战力
@prop({ required: true, default: 0 })
topFiveCe: number;
// 是否准备
@prop({ required: true, default: false })
isReady: boolean;
// 主公等级
@prop({ required: true, default: 1 })
lv: number;
// 是否机器人
@prop({ required: true, default: false })
isRobot: boolean;
constructor(roleId: string, roleName: string, isCap: boolean, isFrd: boolean, headHid: number, sHid: number, topFiveCe: number, lv: number) {
constructor(roleId: string, roleName: string, isCap: boolean, isFrd: boolean, headHid: number, sHid: number, topFiveCe: number, lv: number, heroes = [], isRobot = false) {
this.roleId = roleId;
this.roleName = roleName;
this.isCap = isCap;
@@ -51,8 +51,9 @@ export class RoleStatus {
this.sHid = sHid;
this.topFiveCe = topFiveCe;
this.lv = lv;
this.heroes = [];
this.heroes = heroes;
this.killed = [];
this.isRobot = isRobot;
}
}

View File

@@ -1,7 +1,7 @@
import fs = require('fs');
import path = require('path');
import { ABI_TYPE } from '../consts/abilityConst';
import { decodeIdCntArrayStr } from './util';
import { decodeIdCntArrayStr, getRandEelm } from './util';
import { IT_TYPE } from '../consts/consts';
let gamedata = {};
@@ -346,6 +346,12 @@ export function getExpeditionById(id: number) {
return expeditionInfo.get(id);
}
export function getRandExpedition(cnt = 1) {
const file = 'dic_expedition';
const data = gamedata['jsons'][file] || [];
return getRandEelm(data, cnt);
}
export function getComBtlSetByQuality(quality: number) {
return comBtlInfo.get(quality);
}

View File

@@ -242,6 +242,11 @@ export function getRefTime(now = new Date(), hour: number, day = 0) {
return new Date(today + day * 24 * 60 * 60 * 1000);
}
/**
* 从一个数组中随机返回不重复的 cnt 个元素数组
* @param source 原数组
* @param cnt 返回随机元素个数
*/
export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
if (cnt > source.length) return [];
if (cnt === source.length) return source;
@@ -256,6 +261,16 @@ export function getRandEelm(source: Array<any> = [], cnt = 1): Array<any> {
return source.filter((_item, idx) => idxs.has(idx));
}
/**
* 在给定数值的浮动范围中随机一个值
* @param base 基础数值
* @param ratio 随机范围base 值上下浮动 ratio(小于 1 的整数)
* @param decimal 返回值保留的小数位数
*/
export function getRandValue(base: number, ratio: number, decimal = 2): number {
return parseFloat((base * (1 - ratio + Math.random() * ratio * 2)).toFixed(decimal));
}
export function resResult(status: {code: number, simStr: string}, data = null, customMsg = '') {
const { code, simStr } = status;
if (code !== STATUS.SUCCESS.code) {