寻宝:合并使用的常量

This commit is contained in:
liangtongchuan
2020-12-03 16:57:33 +08:00
parent 47b9faec01
commit d4c5380a12
3 changed files with 48 additions and 63 deletions

View File

@@ -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;
}
}

View File

@@ -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;

View File

@@ -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
}