寻宝:合并使用的常量
This commit is contained in:
@@ -2,12 +2,10 @@
|
||||
* @Author: 梁桐川
|
||||
* @Date: 2020-11-30 15:05:48
|
||||
* @Last Modified by: 梁桐川
|
||||
* @Last Modified time: 2020-12-03 16:17:18
|
||||
* @Last Modified time: 2020-12-03 16:50:27
|
||||
*/
|
||||
import { COM_BATTLE_ASSIST_TIME, COM_BATTLE_ROBOT_ROUND_LMT, COM_BATTLE_ROBOT_HURT_RATIO, COM_BATTLE_ROBOT_HURT_CH_RATIO, COM_TEAM_STATUS } from './../../../consts/consts';
|
||||
import { IT_TYPE, GOLD_COST_RATIO, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_BATTLE_CAP_TIME, COM_BATTLE_TIME_LMT, COM_BATTLE_CAP_START_TIME, COM_BATTLE_ASSIST_REWARD_RATIO } from './../../../consts/consts';
|
||||
import { IT_TYPE, GOLD_COST_RATIO, CURRENCY_BY_TYPE, CURRENCY_TYPE, COM_TEAM_STATUS, COM_BTL_CONST } from './../../../consts/consts';
|
||||
import { getGoodById, getBossHpByBlueprtId, getComBtlSetByQuality, getBlueprtComposeByQuality, getBluePrtByQuality, getWarById, getWarIdByBlueprtId } from '../../../pubUtils/gamedata';
|
||||
import { COM_TEAM_ENABLE_LV } from '../../../consts/consts';
|
||||
import { ComBattleTeamModel, BossHp } from '../../../db/ComBattleTeam';
|
||||
import Role, { RoleModel } from '../../../db/Role';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
@@ -97,7 +95,7 @@ export class ComBattleHandler {
|
||||
|
||||
// 检查藏宝图是否足够
|
||||
let { lv, headHid = 19, topFiveCe = 100, sHid = 19 } = await RoleModel.findByRoleId(roleId);
|
||||
if (lv < COM_TEAM_ENABLE_LV) return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
|
||||
if (lv < COM_BTL_CONST.ENABLE_LV) return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
|
||||
|
||||
let blueprt = await ItemModel.findbyRoleAndGidAndCount(roleId, blueprtId, 1);
|
||||
if (!blueprt) return resResult(STATUS.COM_BATTLE_BLUEPRT_NOT_FOUND);
|
||||
@@ -174,14 +172,14 @@ export class ComBattleHandler {
|
||||
if (team && team.roleIds && team.roleIds.length === 3) {
|
||||
let timer = setTimeout(async () => {
|
||||
thiz.dismiss({teamCode}, session);
|
||||
}, COM_BATTLE_CAP_START_TIME);
|
||||
}, COM_BTL_CONST.CAP_START_TIME);
|
||||
thiz.teamDisTimer.set(teamCode, timer);
|
||||
}
|
||||
}, COM_BATTLE_CAP_TIME);
|
||||
}, COM_BTL_CONST.CAP_TIME);
|
||||
if (team.roleIds && team.roleIds.length === 3) {
|
||||
let timer = setTimeout(async () => {
|
||||
thiz.dismiss({teamCode}, session);
|
||||
}, COM_BATTLE_CAP_START_TIME);
|
||||
}, COM_BTL_CONST.CAP_START_TIME);
|
||||
thiz.teamDisTimer.set(teamCode, timer);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { teamCode, roleStatus });
|
||||
@@ -256,7 +254,7 @@ export class ComBattleHandler {
|
||||
await ComBattleTeamModel.updateStatus(teamCode, COM_TEAM_STATUS.FIGHTING);
|
||||
channelService.pushMessageByUids('onComBtlStart', {teamCode, roleStatus: comTeam.roleStatus}, [{uid: roleId, sid}]);
|
||||
}, 3000);
|
||||
}, COM_BATTLE_ASSIST_TIME);
|
||||
}, COM_BTL_CONST.ASSIST_TIME);
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
@@ -278,7 +276,7 @@ export class ComBattleHandler {
|
||||
let { lv = 1, headHid = 19, topFiveCe = 0, sHid = 19 } = await Role.findByRoleId(roleId);
|
||||
let { quality } = getGoodById(teamStatus.blueprtId);
|
||||
let { assistanceLevel, assistanceTime } = getComBtlSetByQuality(quality);
|
||||
if (lv < COM_TEAM_ENABLE_LV) {
|
||||
if (lv < COM_BTL_CONST.ENABLE_LV) {
|
||||
return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
|
||||
} else if (lv < assistanceLevel) {
|
||||
return resResult(STATUS.COM_BATTLE_ASSIST_LV_NOT_ENOUGH);
|
||||
@@ -309,7 +307,7 @@ export class ComBattleHandler {
|
||||
let thiz = this;
|
||||
let timer = setTimeout(async () => {
|
||||
thiz.dismiss({teamCode}, session);
|
||||
}, COM_BATTLE_CAP_START_TIME);
|
||||
}, COM_BTL_CONST.CAP_START_TIME);
|
||||
thiz.teamDisTimer.set(teamCode, timer);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { teamInfo: teamStatus});
|
||||
@@ -323,7 +321,7 @@ export class ComBattleHandler {
|
||||
async getTeams(msg: { blueprtIds: Array<number> }, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
let { lv } = await Role.findByRoleId(roleId);
|
||||
if (lv < COM_TEAM_ENABLE_LV) return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
|
||||
if (lv < COM_BTL_CONST.ENABLE_LV) return resResult(STATUS.COM_BATTLE_LV_NOT_ENOUGH);
|
||||
const teams = await ComBattleTeamModel.getTeamByBlueprt(msg.blueprtIds, COM_TEAM_STATUS.DEFAULT, true);
|
||||
if (!teams) return resResult(STATUS.COM_BATTLE_NO_VALID_TEAM);
|
||||
return resResult(STATUS.SUCCESS, { teamInfos: teams});
|
||||
@@ -508,7 +506,7 @@ export class ComBattleHandler {
|
||||
if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR);
|
||||
channel.pushMessage('onTeamComplete', {teamCode, result: false});
|
||||
}
|
||||
}, COM_BATTLE_TIME_LMT);
|
||||
}, COM_BTL_CONST.BTL_TIME_LMT);
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
@@ -557,9 +555,9 @@ export class ComBattleHandler {
|
||||
});
|
||||
}
|
||||
roleSt.totalDmg += totalHurtHp;
|
||||
} else if (curRnd > teamStatus.curRnd && curRnd <= COM_BATTLE_ROBOT_ROUND_LMT && roleSt.isRobot) {
|
||||
} else if (curRnd > teamStatus.curRnd && curRnd <= COM_BTL_CONST.ROBOT_RND_LMT && roleSt.isRobot) {
|
||||
// 机器人的伤害为:boss 血量的一定比例,平均到一定回合数内,再平均到每个敌军,上下浮动一定比例
|
||||
let eachHurtHp = getRandValue(teamStatus.bossHp / COM_BATTLE_ROBOT_ROUND_LMT * COM_BATTLE_ROBOT_HURT_RATIO / 5, COM_BATTLE_ROBOT_HURT_CH_RATIO, 0);
|
||||
let eachHurtHp = getRandValue(teamStatus.bossHp / COM_BTL_CONST.ROBOT_RND_LMT * COM_BTL_CONST.ROBOT_HURT_RATIO / 5, COM_BTL_CONST.ROBOT_HURT_CH_RATIO, 0);
|
||||
let robotTotalHurt = 0;
|
||||
teamStatus.bossHpArr.forEach(boss => {
|
||||
if (boss.curHp >= eachHurtHp) {
|
||||
@@ -573,7 +571,7 @@ export class ComBattleHandler {
|
||||
teamStatus.bossCurHp -= robotTotalHurt;
|
||||
roleSt.totalDmg += robotTotalHurt;
|
||||
// 输出回合一到机器人武将集体阵亡
|
||||
if (curRnd === COM_BATTLE_ROBOT_ROUND_LMT) {
|
||||
if (curRnd === COM_BTL_CONST.ROBOT_RND_LMT) {
|
||||
roleSt.killed === roleSt.heroes;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { FriendPointModel } from './../db/FriendPoint';
|
||||
import { STATUS } from './../consts/statusCode';
|
||||
import { COM_BATTLE_ROBOT_ID_NAME, COM_BATTLE_ROBOT_CE_RATIO, COM_BATTLE_ROBOT_ROUND_LMT, COM_BATTLE_ROBOT_HURT_RATIO, COM_BATTLE_ROBOT_HURT_CH_RATIO, COM_TEAM_STATUS, COM_BATTLE_ASSIST_REWARD_RATIO, COM_BATTLE_FRDCNT_MAX, COM_BATTLE_FRDCNT_DROP, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE } from './../consts/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/consts';
|
||||
import { RoleStatus, ComBattleTeamModel } from './../db/ComBattleTeam';
|
||||
import { getBluePrtByQuality, getComBtlSetByQuality, getRewardByBlueprtId, getWarById, getWarIdByBlueprtId } from "../pubUtils/gamedata";
|
||||
import { getRandEelm, getRandValue, resResult, ratioReward } from "../pubUtils/util";
|
||||
@@ -27,8 +27,8 @@ export function getRandComBtlRobots(topFiveCe: number, lv: number, cnt: number)
|
||||
// 创建并添加机器人
|
||||
let robotStArr = [], robotIdArr = [];
|
||||
for (let robot of robotHeroes) {
|
||||
const robotCe = getRandValue(topFiveCe || 0, COM_BATTLE_ROBOT_CE_RATIO, 0);
|
||||
const robotLv = getRandValue(lv, COM_BATTLE_ROBOT_CE_RATIO, 0);
|
||||
const robotCe = getRandValue(topFiveCe || 0, 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 { robotRoleId, robotRoleName } = COM_BATTLE_ROBOT_ID_NAME[Math.floor(Math.random() * COM_BATTLE_ROBOT_ID_NAME.length)];
|
||||
let robotStatus = new RoleStatus(robotRoleId, robotRoleName, false, false, imgHid, imgHid, robotCe, robotLv, robot, true);
|
||||
@@ -54,11 +54,11 @@ export function checkComBattleResult(teamStatus) {
|
||||
}
|
||||
});
|
||||
// 没有活人的话看看还有没有机器人没打完伤害
|
||||
if (allPlayerKilled && teamStatus.curRnd < COM_BATTLE_ROBOT_ROUND_LMT) {
|
||||
if (allPlayerKilled && teamStatus.curRnd < COM_BTL_CONST.ROBOT_RND_LMT) {
|
||||
teamStatus.roleStatus.forEach(st => {
|
||||
if (st.isRobot) {
|
||||
const deltaRnd = COM_BATTLE_ROBOT_ROUND_LMT - teamStatus.curRnd;
|
||||
let hurtHp = getRandValue(teamStatus.bossHp / COM_BATTLE_ROBOT_ROUND_LMT * COM_BATTLE_ROBOT_HURT_RATIO, COM_BATTLE_ROBOT_HURT_CH_RATIO, 0) * deltaRnd; // 1 个机器人对 boss 造成的总伤害
|
||||
const deltaRnd = COM_BTL_CONST.ROBOT_RND_LMT - teamStatus.curRnd;
|
||||
let hurtHp = getRandValue(teamStatus.bossHp / COM_BTL_CONST.ROBOT_RND_LMT * COM_BTL_CONST.ROBOT_HURT_RATIO, COM_BTL_CONST.ROBOT_HURT_CH_RATIO, 0) * deltaRnd; // 1 个机器人对 boss 造成的总伤害
|
||||
robotRestHurt += hurtHp;
|
||||
}
|
||||
})
|
||||
@@ -96,9 +96,8 @@ export async function checkComBattleDrop(roleId: string, battleCode: string) {
|
||||
if (!roleSt.isCap) {
|
||||
if (roleSt.isFrd) {
|
||||
fixReward = '&';
|
||||
// TODO: 消耗品情谊点添加
|
||||
} else {
|
||||
fixReward = ratioReward(fixReward, COM_BATTLE_ASSIST_REWARD_RATIO);
|
||||
fixReward = ratioReward(fixReward, COM_BTL_CONST.ASSIST_REWARD_RATIO);
|
||||
}
|
||||
}
|
||||
await ComBattleTeamModel.updateRewardSt(team.teamCode, roleId, true);
|
||||
@@ -126,15 +125,15 @@ export async function getRealReward(blueprtId: number, roleSt: RoleStatus) {
|
||||
if (!roleSt.isCap) {
|
||||
if (roleSt.isFrd) {
|
||||
let frdPointRec = await FriendPointModel.getFrdPointRecToday(roleSt.roleId, FRIEND_DROP_TYPE.COM_BATTLE);
|
||||
if (!frdPointRec || frdPointRec.cnt <= COM_BATTLE_FRDCNT_MAX - COM_BATTLE_FRDCNT_DROP) {
|
||||
fixRewardStr = `${CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT)}&${COM_BATTLE_FRDCNT_DROP}`;
|
||||
} else if (frdPointRec.cnt < COM_BATTLE_FRDCNT_MAX) {
|
||||
fixRewardStr = `${CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT)}&${COM_BATTLE_FRDCNT_DROP - frdPointRec.cnt}`;
|
||||
if (!frdPointRec || frdPointRec.cnt <= FRIEND_DROP_MAX.COM_BTL - COM_BTL_CONST.FRDCNT_DROP) {
|
||||
fixRewardStr = `${CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT)}&${COM_BTL_CONST.FRDCNT_DROP}`;
|
||||
} else if (frdPointRec.cnt < FRIEND_DROP_MAX.COM_BTL) {
|
||||
fixRewardStr = `${CURRENCY_BY_TYPE.get(CURRENCY_TYPE.FRIEND_POINT)}&${COM_BTL_CONST.FRDCNT_DROP - frdPointRec.cnt}`;
|
||||
} else {
|
||||
fixRewardStr = '&';
|
||||
}
|
||||
} else {
|
||||
fixRewardStr = ratioReward(fixRewardStr, COM_BATTLE_ASSIST_REWARD_RATIO);
|
||||
fixRewardStr = ratioReward(fixRewardStr, COM_BTL_CONST.ASSIST_REWARD_RATIO);
|
||||
}
|
||||
}
|
||||
return fixRewardStr;
|
||||
|
||||
@@ -273,40 +273,23 @@ export const COM_TEAM_STATUS = {
|
||||
LOOSE: 3
|
||||
}
|
||||
|
||||
// 功能开启等级
|
||||
export const COM_TEAM_ENABLE_LV = 1;
|
||||
// 助战掉落占队长掉落的比例
|
||||
export const COM_ASSIST_DROP_RATE = 0.5;
|
||||
// 藏宝图伪随机所需体力
|
||||
export const COM_BLUEPRT_DROP_PER_AP = 10;
|
||||
// 每局时长限制
|
||||
export const COM_BATTLE_TIME_LMT = 10 * 60 * 1000;
|
||||
// 机器人生成时间,秒
|
||||
// export const COM_BATTLE_ROBOT_TIME_LMT = 1;
|
||||
// 每个机器人消耗 boss 血量百分比
|
||||
export const COM_BATTLE_ROBOT_HURT_RATE = 0.4;
|
||||
// 每个机器人消耗 boss 血量百分比浮动范围
|
||||
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_ROUND_LMT = 10;
|
||||
// 单个机器人输出总伤害占 boss 血量比重
|
||||
export const COM_BATTLE_ROBOT_HURT_RATIO = 0.2;
|
||||
// 机器人伤害上下浮动的比例
|
||||
export const COM_BATTLE_ROBOT_HURT_CH_RATIO = 0.1;
|
||||
// 队员奖励比例
|
||||
export const COM_BATTLE_ASSIST_REWARD_RATIO = 0.5;
|
||||
// 寻宝配置常量
|
||||
export const COM_BTL_CONST = {
|
||||
ENABLE_LV: 1, // 功能开启等级
|
||||
ASSIST_DROP_RATE: 0.5, // 助战掉落占队长掉落的比例
|
||||
BLUEPRT_DROP_PER_AP: 10, // 藏宝图伪随机所需体力
|
||||
BTL_TIME_LMT: 10 * 60 * 1000, // 每局时长限制
|
||||
ROBOT_HURT_RAND_RATE: 0.05, // 每个机器人消耗 boss 血量百分比浮动范围
|
||||
FRDCNT_DROP: 10, // 每场情谊点掉落
|
||||
ROBOT_CE_RATIO: 0.2, // 机器人战力上下浮动百分比
|
||||
ASSIST_TIME: 60 * 1000, // 助战匹配机器人的等待时长
|
||||
CAP_TIME: 60 * 1000, // 队长匹配机器人的等待时长
|
||||
CAP_START_TIME: 60 * 1000, // 人齐后队长开始时长倒计时
|
||||
ROBOT_RND_LMT: 10, // 机器人输出伤害的回合数
|
||||
ROBOT_HURT_RATIO: 0.2, // 单个机器人输出总伤害占 boss 血量比重
|
||||
ROBOT_HURT_CH_RATIO: 0.1, // 机器人伤害上下浮动的比例
|
||||
ASSIST_REWARD_RATIO: 0.5, // 队员奖励比例
|
||||
}
|
||||
|
||||
// 机器人名字随机
|
||||
export const COM_BATTLE_ROBOT_ID_NAME = [
|
||||
@@ -335,4 +318,9 @@ export const FUNCS_ID = {
|
||||
|
||||
export const FRIEND_DROP_TYPE = {
|
||||
COM_BATTLE: 1
|
||||
}
|
||||
|
||||
// 每日情谊点上限
|
||||
export const FRIEND_DROP_MAX = {
|
||||
COM_BTL: 150
|
||||
}
|
||||
Reference in New Issue
Block a user