寻宝:合并使用的常量

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