任务:添加任务类型
This commit is contained in:
@@ -13,7 +13,7 @@ import { getAp, setAp } from '../../../services/actionPointService';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { calculateWarStar, checkBattleHeroes, roleLevelup } from '../../../services/normalBattleService';
|
||||
import { checkTask, checkTaskInBattleEnd } from '../../../services/task/taskService';
|
||||
import { checkTask, checkTaskInBattleEnd, checkTaskInBattleStart } from '../../../services/task/taskService';
|
||||
import { gameData } from '../../../pubUtils/data';
|
||||
import * as dicParam from '../../../pubUtils/dicParam';
|
||||
import { getSeconds, nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
@@ -125,6 +125,8 @@ export class ExpeditionBattleHandler {
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let ip = session.get('ip');
|
||||
let serverId = session.get('serverId');
|
||||
let sid = session.get('sid');
|
||||
let warInfo = gameData.war.get(battleId);
|
||||
if (!warInfo) {
|
||||
return resResult(STATUS.BATTLE_MISS_INFO);
|
||||
@@ -167,6 +169,7 @@ export class ExpeditionBattleHandler {
|
||||
}, true);
|
||||
|
||||
let result = await ExpeditionWarRecordModel.updateBattleCode(expeditionCode, expeditionId, EXPEDITION_WAR_RECORD_STATUS.WAITING, battleCode);
|
||||
await checkTaskInBattleStart(serverId, roleId, sid, battleId);
|
||||
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
expeditionCode,
|
||||
|
||||
@@ -19,7 +19,7 @@ import { gameData } from '../../../pubUtils/data';
|
||||
import { pushMysteryFirstMsg, pushTowerMsg, pushVestigeFirstMsg } from '../../../services/chatService';
|
||||
import { getSeconds, nowSeconds } from '../../../pubUtils/timeUtil';
|
||||
import { Rank } from '../../../services/rankService';
|
||||
import { checkTaskInBattleEnd, checkTaskInBattleSweep } from '../../../services/task/taskService';
|
||||
import { checkTaskInBattleEnd, checkTaskInBattleStart, checkTaskInBattleSweep } from '../../../services/task/taskService';
|
||||
import { ActivitySelfServiceModel } from '../../../db/ActivitySelfService';
|
||||
import { getSelfServiceShopActivityData } from '../../../services/activity/selfServiceShopActivityService';
|
||||
import { challengeDailyGK } from '../../../services/activity/dailyGKService';
|
||||
@@ -45,6 +45,8 @@ export class NormalBattleHandler {
|
||||
const { battleId, heroes: seqIds = [] } = msg;
|
||||
let roleId = session.get('roleId');
|
||||
let roleName = session.get('roleName');
|
||||
let serverId = session.get('serverId');
|
||||
let sid = session.get('sid');
|
||||
let ip = session.get('ip');
|
||||
let warInfo = gameData.war.get(battleId);
|
||||
if (!warInfo) {
|
||||
@@ -113,7 +115,7 @@ export class NormalBattleHandler {
|
||||
|
||||
let { status } = BattleRecord;
|
||||
|
||||
|
||||
await checkTaskInBattleStart(serverId, roleId, sid, battleId);
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
battleId, battleCode, status, dailyNum, towerData, dungeonNum
|
||||
});
|
||||
|
||||
@@ -332,7 +332,7 @@ export class TowerBattleHandler {
|
||||
pushTowerMsg(roleId, roleName, serverId, MSG_SOURCE.TOWER_SUC, role.towerLv);
|
||||
|
||||
let data = await getTowerStatus(role);
|
||||
await checkTask(serverId, roleId, sid, TASK_TYPE.BATTLE_TOWER_LV, { towerLv: role.towerLv - 1 });
|
||||
|
||||
// 更新redis
|
||||
let r = new Rank(REDIS_KEY.TOWER_RANK, { serverId });
|
||||
await r.setRankWithRoleInfo(roleId, role.towerLv - 1, role.towerUpTime.getTime(), role);
|
||||
|
||||
@@ -18,6 +18,7 @@ import { getRewardByBlueprtId, gameData, getBossHpByBlueprtId, getDicBlueprtById
|
||||
import { getZeroPointD, nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { handleCost } from './role/rewardService';
|
||||
import { addUserToTeamChannel, delTeamChannel, sendMessageToTeam, sendMessageToUsersWithSuc } from './pushService';
|
||||
import { checkTaskInComBattleEnd } from './task/taskService';
|
||||
|
||||
/**
|
||||
* 在给定的品质列表中随机返回一定数量的藏宝图Id
|
||||
@@ -226,6 +227,7 @@ export async function handleComBtlProgress(teamStatus: MemComBtlTeam, robotHurtT
|
||||
for (let st of teamStatus.roleStatus) {
|
||||
st.fixReward = await getRealReward(teamStatus.blueprtId, st);
|
||||
};
|
||||
await checkTaskInComBattleEnd(teamStatus.roleStatus, teamStatus.capId);
|
||||
}
|
||||
let team = await ComBattleTeamModel.syncTeamData({ teamCode, status: battleSt, roleStatus: teamStatus.roleStatus, bossHpArr: teamStatus.bossHpArr, endTime: teamStatus.endTime });
|
||||
if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR);
|
||||
|
||||
@@ -697,9 +697,9 @@ export class CheckSingleTask {
|
||||
}
|
||||
case TASK_TYPE.BATTLE_TOWER: // 47. 通关镇念塔x次
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let { warId, count = 1, skipTower } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if (dicWar.warType == WAR_TYPE.TOWER) {
|
||||
if (dicWar.warType == WAR_TYPE.TOWER || skipTower) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
@@ -708,7 +708,7 @@ export class CheckSingleTask {
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if (dicWar.warType == WAR_TYPE.VESTIGE) {
|
||||
if (dicWar.warType == WAR_TYPE.VESTIGE && this.checkIdList(dicTaskParam, 0, warId)) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
@@ -1209,6 +1209,76 @@ export class CheckSingleTask {
|
||||
result = { inc: count };
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_MAIN_START: // 111. 挑战主线X次
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if (dicWar.warType == WAR_TYPE.NORMAL) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_TOWER_START: // 112. 挑战镇念塔X次
|
||||
{
|
||||
let { warId, count = 1, skipTower } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if (dicWar.warType == WAR_TYPE.TOWER || skipTower) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_VESTIGE_START: // 113. 挑战遗迹X次
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if (dicWar.warType == WAR_TYPE.VESTIGE) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_DAILY_START: // 114. 挑战每日关卡X次
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if(dicWar.warType == WAR_TYPE.DAILY && (dicTaskParam[0] == 0 || dicTaskParam[0] == dicWar.dailyType)) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.COM_BATTLE_CREATE_TEAM_WIN: // 115. 寻宝招募队友x次
|
||||
{
|
||||
result = { inc: 1 };
|
||||
break;
|
||||
}
|
||||
|
||||
case TASK_TYPE.COM_BATTLE_ASSIST_TEAM_WIN: // 116. 协助寻宝x次
|
||||
{
|
||||
result = { inc: 1 };
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.COM_BATTLE_WIN: // 117. 组队寻宝
|
||||
{
|
||||
result = { inc: 1 };
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_EXPEDITION_START: // 118. 远征挑战X次
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if (dicWar.warType == WAR_TYPE.EXPEDITION) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TASK_TYPE.BATTLE_DUNGEON_START: // 119. 秘境挑战X次
|
||||
{
|
||||
let { warId, count } = param;
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if(dicWar.warType == WAR_TYPE.MYSTERY || dicWar.warType == WAR_TYPE.MYSTERY_ELITE) {
|
||||
result = { inc: count };
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
@@ -107,6 +107,17 @@ export async function checkTaskInGuildTrain(serverId: number, roleId: string, si
|
||||
await task.saveAndPush(sid);
|
||||
}
|
||||
|
||||
export async function checkTaskInBattleStart(serverId: number, roleId: string, sid: string, warId: number) {
|
||||
let task = new CheckTask(serverId, roleId);
|
||||
task.setParam(TASK_TYPE.BATTLE_MAIN_START, { warId, count: 1 });
|
||||
task.setParam(TASK_TYPE.BATTLE_TOWER_START, { warId, count: 1 });
|
||||
task.setParam(TASK_TYPE.BATTLE_VESTIGE_START, { warId, count: 1 });
|
||||
task.setParam(TASK_TYPE.BATTLE_DAILY_START, { warId, count: 1 });
|
||||
task.setParam(TASK_TYPE.BATTLE_EXPEDITION_START, { warId, count: 1 });
|
||||
task.setParam(TASK_TYPE.BATTLE_DUNGEON_START, { warId, count: 1 });
|
||||
await task.saveAndPush(sid);
|
||||
}
|
||||
|
||||
/**
|
||||
* battle.normalBattleHandler.battleEnd 中会触发的任务,因为有点多提出来了
|
||||
*/
|
||||
@@ -131,6 +142,14 @@ export async function checkTaskInGuildTrain(serverId: number, roleId: string, si
|
||||
}
|
||||
}
|
||||
|
||||
export async function checkTaskInSkipTower(serverId: number, roleId: string, sid: string, towerLv: number) {
|
||||
let task = new CheckTask(serverId, roleId);
|
||||
task.setParam(TASK_TYPE.BATTLE_TOWER_LV, { towerLv: towerLv - 1 });
|
||||
task.setParam(TASK_TYPE.BATTLE_TOWER_START, { skipTower: true });
|
||||
task.setParam(TASK_TYPE.BATTLE_TOWER, { skipTower: true });
|
||||
await task.saveAndPush(sid);
|
||||
}
|
||||
|
||||
|
||||
export async function checkTaskInBattleSweep(serverId: number, roleId: string, sid: string, warId: number, count: number) {
|
||||
let task = new CheckTask(serverId, roleId);
|
||||
@@ -165,6 +184,23 @@ export async function checkTaskInComBattleStart(roleStatus: RoleStatus[], capId:
|
||||
}
|
||||
}
|
||||
|
||||
export async function checkTaskInComBattleEnd(roleStatus: RoleStatus[], capId: string) {
|
||||
for (let { roleId, isRobot } of roleStatus) {
|
||||
if (!isRobot) {
|
||||
let role = await RoleModel.findByRoleId(roleId);
|
||||
let task = new CheckTask(role.serverId, roleId);
|
||||
task.setRole(role);
|
||||
if (roleId == capId && roleStatus.length > 1) { // 招募队友
|
||||
task.setParam(TASK_TYPE.COM_BATTLE_CREATE_TEAM_WIN, {});
|
||||
} else if (roleId !== capId) { // 协助寻宝
|
||||
task.setParam(TASK_TYPE.COM_BATTLE_ASSIST_TEAM_WIN, {});
|
||||
}
|
||||
task.setParam(TASK_TYPE.COM_BATTLE_WIN, {});
|
||||
await task.saveAndPush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function checkTaskInPvpEnd(serverId: number, roleId: string, sid: string, isSuccess: boolean, heroScores: HeroScores[], myRank: number) {
|
||||
let task = new CheckTask(serverId, roleId);
|
||||
task.setParam(TASK_TYPE.PVP_WIN, { isSuccess });
|
||||
|
||||
Reference in New Issue
Block a user