寻宝:扣减藏宝图推送;倒计时解散或加入队伍的判断条件
This commit is contained in:
@@ -14,7 +14,7 @@ import { Application, BackendSession } from 'pinus';
|
|||||||
import { resResult, getRandomByLen, calculateNum, getRandValue, ratioReward, reduceCe, getRandValueByMinMax } from '../../../pubUtils/util';
|
import { resResult, getRandomByLen, calculateNum, getRandValue, ratioReward, reduceCe, getRandValueByMinMax } from '../../../pubUtils/util';
|
||||||
import { RoleStatus } from '../../../db/ComBattleTeam';
|
import { RoleStatus } from '../../../db/ComBattleTeam';
|
||||||
import { ItemModel } from '../../../db/Item';
|
import { ItemModel } from '../../../db/Item';
|
||||||
import { handleFixedReward, addItems, handleCost } from '../../../services/rewardService';
|
import { handleFixedReward, addItems, handleCost, decreaseItems } from '../../../services/rewardService';
|
||||||
import { checkRoleInQueue, getTeamSearchByQuality, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
import { checkRoleInQueue, getTeamSearchByQuality, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
||||||
import { transBossHpArr } from '../../../services/battleService';
|
import { transBossHpArr } from '../../../services/battleService';
|
||||||
import { getRandBlueprtId, getRandComBtlRobots, checkComBattleResult, clearComBtlTimer, getRealReward, getAssistTimesByQuality, getFrd, updateRobotHurt, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam } from '../../../services/comBattleService';
|
import { getRandBlueprtId, getRandComBtlRobots, checkComBattleResult, clearComBtlTimer, getRealReward, getAssistTimesByQuality, getFrd, updateRobotHurt, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam } from '../../../services/comBattleService';
|
||||||
@@ -173,14 +173,16 @@ export class ComBattleHandler {
|
|||||||
for(let robotIdx = 0; robotIdx < robotCnt; robotIdx++) {
|
for(let robotIdx = 0; robotIdx < robotCnt; robotIdx++) {
|
||||||
const joinTime = getRandValueByMinMax(COM_BTL_CONST.MIN_CAP_TIME, COM_BTL_CONST.MAX_CAP_TIME, 0);
|
const joinTime = getRandValueByMinMax(COM_BTL_CONST.MIN_CAP_TIME, COM_BTL_CONST.MAX_CAP_TIME, 0);
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, teamStatus.ceLimit, lv, 1);
|
if (teamStatus.status === COM_TEAM_STATUS.DEFAULT && teamStatus.roleIds.length < 3) {
|
||||||
teamStatus.roleIds = teamStatus.roleIds.concat(robotIdArr);
|
let { robotStArr, robotIdArr } = getRandComBtlRobots(topFiveCe, teamStatus.ceLimit, lv, 1);
|
||||||
teamStatus.roleStatus = teamStatus.roleStatus.concat(robotStArr);
|
teamStatus.roleIds = teamStatus.roleIds.concat(robotIdArr);
|
||||||
for (let st of robotStArr) {
|
teamStatus.roleStatus = teamStatus.roleStatus.concat(robotStArr);
|
||||||
await ComBattleTeamModel.addRole(teamCode, st);
|
for (let st of robotStArr) {
|
||||||
|
await ComBattleTeamModel.addRole(teamCode, st);
|
||||||
|
}
|
||||||
|
channel.pushMessage('onTeamJoin', resResult(STATUS.SUCCESS, {teamInfo: teamStatus}));
|
||||||
|
setDismissTimer(teamStatus, thiz.teamMap, roleId, thiz.teamDisTimer, thiz.app);
|
||||||
}
|
}
|
||||||
channel.pushMessage('onTeamJoin', resResult(STATUS.SUCCESS, {teamInfo: teamStatus}));
|
|
||||||
setDismissTimer(teamStatus, thiz.teamMap, roleId, thiz.teamDisTimer, thiz.app);
|
|
||||||
}, joinTime);
|
}, joinTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -476,22 +478,6 @@ export class ComBattleHandler {
|
|||||||
let teamStatus = this.teamMap.get(teamCode);
|
let teamStatus = this.teamMap.get(teamCode);
|
||||||
let result = await dismissTeam(teamStatus, this.teamMap, roleId, this.teamDisTimer, this.app);
|
let result = await dismissTeam(teamStatus, this.teamMap, roleId, this.teamDisTimer, this.app);
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
|
|
||||||
if (roleId !== teamStatus.capId) return resResult(STATUS.COM_BATTLE_CAP_ONLY);
|
|
||||||
|
|
||||||
let team = await ComBattleTeamModel.removeTeam(teamCode);
|
|
||||||
if (!team) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR);
|
|
||||||
|
|
||||||
let rmSt = this.teamMap.delete(teamCode);
|
|
||||||
if (!rmSt) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR);
|
|
||||||
|
|
||||||
let channelService = this.app.get('channelService');
|
|
||||||
let channel = channelService.getChannel(teamCode, false);
|
|
||||||
channel.pushMessage('onTeamDismiss', resResult(STATUS.SUCCESS, {teamCode}));
|
|
||||||
channel.destroy();
|
|
||||||
clearComBtlTimer(teamCode, this.teamDisTimer); // 队伍解散停止解散计时
|
|
||||||
return resResult(STATUS.SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -549,6 +535,7 @@ export class ComBattleHandler {
|
|||||||
*/
|
*/
|
||||||
async action(msg: {teamCode: string, bossHurts: Array<{dataId: number, hurtHp: number}>, killed: Array<number>, curRnd: number}, session: BackendSession) {
|
async action(msg: {teamCode: string, bossHurts: Array<{dataId: number, hurtHp: number}>, killed: Array<number>, curRnd: number}, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
|
let sid = session.get('sid');
|
||||||
let { teamCode, killed, bossHurts, curRnd } = msg;
|
let { teamCode, killed, bossHurts, curRnd } = msg;
|
||||||
let teamStatus = this.teamMap.get(teamCode);
|
let teamStatus = this.teamMap.get(teamCode);
|
||||||
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
|
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
|
||||||
@@ -616,8 +603,8 @@ export class ComBattleHandler {
|
|||||||
|
|
||||||
// 战斗胜利队长扣减藏宝图
|
// 战斗胜利队长扣减藏宝图
|
||||||
if (result && teamStatus.capId != 'robot') {
|
if (result && teamStatus.capId != 'robot') {
|
||||||
let res = await ItemModel.decreaseItems(teamStatus.capId, [{id: teamStatus.blueprtId, count: 1}]);
|
let res = await decreaseItems(teamStatus.capId, sid, [{id: teamStatus.blueprtId, count: 1}]);
|
||||||
if (res.hasError) return resResult(STATUS.COM_BATTLE_BLUEPRT_NOT_ENOUGH);
|
if (res === true) return resResult(STATUS.COM_BATTLE_BLUEPRT_NOT_ENOUGH);
|
||||||
}
|
}
|
||||||
channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, {teamCode, result}));
|
channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, {teamCode, result}));
|
||||||
this.teamMap.delete(teamCode);
|
this.teamMap.delete(teamCode);
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// import { EquipPrintDropType, EquipPrintDropModel } from './../db/EquipPrintDrop';
|
||||||
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_TEAM_STATUS, CURRENCY_BY_TYPE, CURRENCY_TYPE, FRIEND_DROP_TYPE, COM_BTL_CONST, FRIEND_DROP_MAX } from './../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';
|
||||||
@@ -299,6 +300,7 @@ export function comBtlLvInvalid(lv: number, lvRange: number) {
|
|||||||
export async function dismissTeam(teamStatus, teamMap: Map<string, any>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, app) {
|
export async function dismissTeam(teamStatus, teamMap: Map<string, any>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, app) {
|
||||||
const { teamCode } = teamStatus;
|
const { teamCode } = teamStatus;
|
||||||
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
|
if (!teamStatus || !teamStatus.roleIds || teamStatus.roleIds.indexOf(roleId) === -1) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
|
||||||
|
if (teamStatus.status !== COM_TEAM_STATUS.DEFAULT) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR);
|
||||||
if (roleId !== teamStatus.capId) return resResult(STATUS.COM_BATTLE_CAP_ONLY);
|
if (roleId !== teamStatus.capId) return resResult(STATUS.COM_BATTLE_CAP_ONLY);
|
||||||
|
|
||||||
let team = await ComBattleTeamModel.removeTeam(teamCode);
|
let team = await ComBattleTeamModel.removeTeam(teamCode);
|
||||||
@@ -316,7 +318,7 @@ export async function dismissTeam(teamStatus, teamMap: Map<string, any>, roleId:
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setDismissTimer(teamStatus, teamMap: Map<string, any>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, app) {
|
export function setDismissTimer(teamStatus, teamMap: Map<string, any>, roleId: string, teamDisTimer: Map<string, NodeJS.Timer>, app) {
|
||||||
if (teamStatus && teamStatus.roleIds && teamStatus.roleIds.length === 3) {
|
if (teamStatus && teamStatus.roleIds && teamStatus.roleIds.length === 3 && teamStatus.status === COM_TEAM_STATUS.DEFAULT) {
|
||||||
let timer = setTimeout(async () => {
|
let timer = setTimeout(async () => {
|
||||||
await dismissTeam(teamStatus, teamMap, roleId, teamDisTimer, app);
|
await dismissTeam(teamStatus, teamMap, roleId, teamDisTimer, app);
|
||||||
}, COM_BTL_CONST.CAP_START_TIME);
|
}, COM_BTL_CONST.CAP_START_TIME);
|
||||||
|
|||||||
@@ -216,4 +216,5 @@ export async function decreaseItems(roleId: string, sid: string, bags: Array<{id
|
|||||||
if(hasError) return true;
|
if(hasError) return true;
|
||||||
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, {goods: result} ), uids);
|
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, {goods: result} ), uids);
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user