✨ feat(寻宝): 队长奖励加成限制上限

This commit is contained in:
luying
2022-12-26 17:20:32 +08:00
parent 49c095979d
commit cd5fd0c074
5 changed files with 32 additions and 5 deletions
@@ -15,7 +15,7 @@ import { RoleStatus, ComBattleTeamModel, ComBattleTeamType, BossHp, ComRoleStatu
import { ItemModel, ItemType } from '../../../db/Item';
import { addItems, handleCost } from '../../../services/role/rewardService';
import { checkRoleInQueue, getServerName, rmCreatedTeamFromRedis, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
import { getRandBlueprtId, clearComBtlTimer, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt, checkHasMyTeam, checkTeamStatusAndSend, getComBtlLvByPlayerLv, addToSearchingTeams } from '../../../services/comBattleService';
import { getRandBlueprtId, clearComBtlTimer, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt, checkHasMyTeam, checkTeamStatusAndSend, getComBtlLvByPlayerLv, addToSearchingTeams, getCapFrd, getCapExtraCnt } from '../../../services/comBattleService';
import { setAp } from '../../../services/actionPointService';
import { roleLevelup } from '../../../services/normalBattleService';
import { getSimpleRoleInfo } from '../../../services/roleService';
@@ -72,7 +72,9 @@ export class ComBattleHandler {
// 创建队伍数据结构
let comTeam = new MemComBtlTeam(teamCode, pub, blueprtId, roleId, ceLimit, sid);
addRoleToTeam(comTeam, roleInfo, sid, true, false);
let isFrd = await getCapFrd(roleId);
addRoleToTeam(comTeam, roleInfo, sid, true, isFrd);
addUserToTeamChannel(teamCode, true, roleId, sid);
// 将正在匹配的符合要求的玩家加入队伍,并推送入队消息
if(pub == true) await addValidSearchingRoles(comTeam);
@@ -657,7 +659,8 @@ export class ComBattleHandler {
let roleId = session.get('roleId');
let cnt = await getAllAssistCnt(roleId);
const blueprts = await ItemModel.findByRoleAndType(roleId, CONSUME_TYPE.BLUEPRT);
return resResult(STATUS.SUCCESS, { blueprts, assistCnt: cnt });
let capExtraCnt = await getCapExtraCnt(roleId);
return resResult(STATUS.SUCCESS, { blueprts, assistCnt: cnt, capExtraCnt });
}
async sendTeamMsg(msg: { teamCode: string, type: number, content: string, targetRoleId: string, targetMsgCode: string }, session: BackendSession) {
@@ -164,6 +164,9 @@ export async function getRealReward(blueprtId: number, roleSts: RoleStatus[], ro
let fixRewards: RewardInter[] = [], extraRewards: RewardInter[] = [], hasExtraReward = true;
if (roleSt.isCap) {
fixRewards.push(...dicReward.captainReward);
if(roleSt.isFrd && !roleSt.isRobot) {
hasExtraReward = false;
}
} else {
if (roleSt.isFrd && !roleSt.isRobot) {
// 情谊值有上限,送到上限为止
@@ -201,6 +204,11 @@ export async function getAllAssistCnt(roleId: string) {
return teams.length;
}
export async function getCapExtraCnt(roleId: string) {
let teams = await ComBattleTeamModel.getCapExtraRewardCnt(roleId, getZeroPointD());
return teams.length;
}
export async function getFrd(roleId: string) {
let isFrd = false;
let cnt = await getAllAssistCnt(roleId);
@@ -208,6 +216,13 @@ export async function getFrd(roleId: string) {
return isFrd;
}
export async function getCapFrd(roleId: string) {
let isFrd = false;
let cnt = await getCapExtraCnt(roleId);
if (cnt >= TREASURE.TREASURE_CAP_EXTRA_TIME) isFrd = true;
return isFrd;
}
/**
* @description 更新队伍状态
* @export
+3 -2
View File
@@ -15,7 +15,7 @@ import { getFriendList, getApplyList } from './friendService';
import { getDailyBattleList } from './dailyBattleService';
import { getExpeditionStatus } from './expeditionService';
import { getTowerStatus, getHungupRewards, getTasks } from './battleService';
import { getAllAssistCnt, getComBtlLvByPlayerLv } from './comBattleService';
import { getAllAssistCnt, getCapExtraCnt, getComBtlLvByPlayerLv } from './comBattleService';
import { getDungeonData } from './dungeonService';
import { PvpSeasonResultModel } from '../db/PvpSeasonResult';
import { nowSeconds, getZeroPoint } from '../pubUtils/timeUtil';
@@ -317,7 +317,8 @@ async function getComBattleEntryData(role: RoleType) {
let { minLv, maxLv } = getComBtlLvByPlayerLv(lv);
let refreshTime = nowSeconds() - INFO_WINDOW.TEAM_INFORMATION_TIME;
const invitations = await ComBattleTeamModel.findInvitations(roleId, minLv, maxLv, topLineupCe, refreshTime, 1);
return { assistCnt, blueprts, hasInvitation: invitations.length > 0, invitationTime: invitations.length > 0?invitations[0].inviteTime: 0 }
let capExtraCnt = await getCapExtraCnt(roleId);
return { assistCnt, blueprts, hasInvitation: invitations.length > 0, invitationTime: invitations.length > 0?invitations[0].inviteTime: 0, capExtraCnt }
}
export async function pushRefreshTime() {