活动:添加新任务类型

This commit is contained in:
qiaoxin
2021-06-08 20:48:23 +08:00
parent 61dc5ea362
commit 63845d09c7
3 changed files with 41 additions and 22 deletions
+22 -21
View File
@@ -20,7 +20,7 @@ import { getRoleIds } from '../pubUtils/friendUtil';
import { getTeamSearchByQuality, rmRoleFromQueue } from './redisService'; import { getTeamSearchByQuality, rmRoleFromQueue } from './redisService';
import { addUserToChannel } from './roleService'; import { addUserToChannel } from './roleService';
import { ChannelUser } from '../domain/ChannelUser'; import { ChannelUser } from '../domain/ChannelUser';
import { checkTaskInComBattleEnd } from './taskService'; import { checkActivityTask, checkTaskInComBattleEnd } from './taskService';
import { getRewardByBlueprtId, gameData, comBtlRangeByLv, getBossHpByBlueprtId } from '../pubUtils/data'; import { getRewardByBlueprtId, gameData, comBtlRangeByLv, getBossHpByBlueprtId } from '../pubUtils/data';
import { getFriendPointObject } from '../pubUtils/itemUtils'; import { getFriendPointObject } from '../pubUtils/itemUtils';
import { DicWar } from '../pubUtils/dictionary/DicWar'; import { DicWar } from '../pubUtils/dictionary/DicWar';
@@ -133,7 +133,7 @@ export async function checkComBattleDrop(roleId: string, battleCode: string) {
} }
} }
await ComBattleTeamModel.updateRewardSt(team.teamCode, roleId, true); await ComBattleTeamModel.updateRewardSt(team.teamCode, roleId, true);
return {status: 0, fixReward}; return { status: 0, fixReward };
} }
export function clearComBtlTimer(teamCode: string, timerMap: Map<string, NodeJS.Timer>) { export function clearComBtlTimer(teamCode: string, timerMap: Map<string, NodeJS.Timer>) {
@@ -258,21 +258,22 @@ export async function handleComBtlProgress(teamStatus: MemComBtlTeam, robotHurtT
st.fixReward = await getRealReward(teamStatus.blueprtId, st); st.fixReward = await getRealReward(teamStatus.blueprtId, st);
}; };
} }
let team = await ComBattleTeamModel.syncTeamData({teamCode, status: battleSt, roleStatus: teamStatus.roleStatus, bossHpArr: teamStatus.bossHpArr}); let team = await ComBattleTeamModel.syncTeamData({ teamCode, status: battleSt, roleStatus: teamStatus.roleStatus, bossHpArr: teamStatus.bossHpArr });
if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR); if (!team) return resResult(STATUS.COM_BATTLE_RESULT_ERR);
// 战斗胜利队长扣减藏宝图 // 战斗胜利队长扣减藏宝图
if (result && teamStatus.capId != 'robot') { if (result && teamStatus.capId != 'robot') {
const { sid } = channel.getMember(teamStatus.capId); const { sid } = channel.getMember(teamStatus.capId);
let res = await decreaseItems(teamStatus.capId, sid, [{id: teamStatus.blueprtId, count: 1}]); let res = await decreaseItems(teamStatus.capId, sid, [{ id: teamStatus.blueprtId, count: 1 }]);
if (res === true) return resResult(STATUS.COM_BATTLE_BLUEPRT_NOT_ENOUGH); if (res === true) return resResult(STATUS.COM_BATTLE_BLUEPRT_NOT_ENOUGH);
} }
clearRobotHurtTimer(teamStatus, robotHurtTimer); clearRobotHurtTimer(teamStatus, robotHurtTimer);
channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, {teamCode, result})); channel.pushMessage('onTeamComplete', resResult(STATUS.SUCCESS, { teamCode, result }));
// 任务 // 任务
await checkTaskInComBattleEnd(teamStatus.roleStatus, capId, quality); await checkTaskInComBattleEnd(teamStatus.roleStatus, capId, quality);
teamMap.delete(teamCode); teamMap.delete(teamCode);
} }
} }
@@ -291,11 +292,11 @@ export function updateRobotHurt(teamStatus: MemComBtlTeam, roleSt: RoleStatus, c
for (let boss of teamStatus.bossHpArr) { for (let boss of teamStatus.bossHpArr) {
if (boss.curHp === 0) continue; if (boss.curHp === 0) continue;
if (boss.curHp >= eachHurtHp) { if (boss.curHp >= eachHurtHp) {
actBossHurts.push({dataId: boss.dataId, hurtHp: eachHurtHp}); actBossHurts.push({ dataId: boss.dataId, hurtHp: eachHurtHp });
robotTotalHurt += eachHurtHp; robotTotalHurt += eachHurtHp;
boss.curHp -= eachHurtHp; boss.curHp -= eachHurtHp;
} else if (boss.curHp > 0) { // 丢弃溢出的伤害 } else if (boss.curHp > 0) { // 丢弃溢出的伤害
actBossHurts.push({dataId: boss.dataId, hurtHp: boss.curHp}); actBossHurts.push({ dataId: boss.dataId, hurtHp: boss.curHp });
robotTotalHurt += boss.curHp; robotTotalHurt += boss.curHp;
boss.curHp = 0; boss.curHp = 0;
} }
@@ -373,7 +374,7 @@ export async function dismissTeam(teamStatus: MemComBtlTeam, teamMap: Map<string
let rmSt = teamMap.delete(teamCode); let rmSt = teamMap.delete(teamCode);
if (!rmSt) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR); if (!rmSt) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR);
channel.pushMessage('onTeamDismiss', resResult(STATUS.SUCCESS, {teamCode})); channel.pushMessage('onTeamDismiss', resResult(STATUS.SUCCESS, { teamCode }));
channel.destroy(); channel.destroy();
clearComBtlTimer(teamCode, teamDisTimer); // 队伍解散停止解散计时 clearComBtlTimer(teamCode, teamDisTimer); // 队伍解散停止解散计时
return resResult(STATUS.SUCCESS); return resResult(STATUS.SUCCESS);
@@ -457,13 +458,13 @@ export function randEquipPrintId(warInfo: DicWar) {
*/ */
export async function getComBattleFriendAdd(roleStatus: RoleStatus[]) { export async function getComBattleFriendAdd(roleStatus: RoleStatus[]) {
let hasAdd: string[] = []; //roleIds let hasAdd: string[] = []; //roleIds
for(let myRoleStatus of roleStatus) { for (let myRoleStatus of roleStatus) {
for(let rs of roleStatus) { for (let rs of roleStatus) {
if(myRoleStatus.roleId == rs.roleId) continue; if (myRoleStatus.roleId == rs.roleId) continue;
if(myRoleStatus.isRobot || rs.isRobot) continue; if (myRoleStatus.isRobot || rs.isRobot) continue;
let {roleIds} = getRoleIds([myRoleStatus.roleId, rs.roleId]); let { roleIds } = getRoleIds([myRoleStatus.roleId, rs.roleId]);
if(hasAdd.includes(roleIds)) continue; if (hasAdd.includes(roleIds)) continue;
let add = await getFriendLvAdd(myRoleStatus.roleId, rs.roleId); let add = await getFriendLvAdd(myRoleStatus.roleId, rs.roleId);
rs.addFrdRatio(add); rs.addFrdRatio(add);
@@ -486,7 +487,7 @@ async function teammateValid(roleInfo: Partial<RoleType>, roleId: string, roleId
if (!roleInfo || roleIds.indexOf(roleId) !== -1) return false; if (!roleInfo || roleIds.indexOf(roleId) !== -1) return false;
const isBlack = await teammateInBlackList(roleId, roleIds); const isBlack = await teammateInBlackList(roleId, roleIds);
if(isBlack) return false; if (isBlack) return false;
let { topLineupCe } = roleInfo; let { topLineupCe } = roleInfo;
if (topLineupCe < ceLimit) return false; if (topLineupCe < ceLimit) return false;
@@ -523,7 +524,7 @@ export async function getValidTeammateRoleSt(roleId: string, roleIds: string[],
* @returns * @returns
*/ */
export async function teammateInBlackList(roleId: string, roleIds: string[]) { export async function teammateInBlackList(roleId: string, roleIds: string[]) {
for(let teammateRoleId of roleIds) { for (let teammateRoleId of roleIds) {
const isBlack = await FriendRelationModel.isInBlackList(roleId, teammateRoleId); const isBlack = await FriendRelationModel.isInBlackList(roleId, teammateRoleId);
if (isBlack === true) return true; if (isBlack === true) return true;
} }
@@ -627,7 +628,7 @@ export async function addValidSearchingRoles(comTeam: MemComBtlTeam, channelServ
const channel = channelService.getChannel(comTeam.teamCode, false); const channel = channelService.getChannel(comTeam.teamCode, false);
addUserToChannel(channel, new ChannelUser(teammateRoleId, sid)); addUserToChannel(channel, new ChannelUser(teammateRoleId, sid));
} }
channelService.pushMessageByUids('onTeamJoin', resResult(STATUS.SUCCESS, {teamInfo: comTeam}), teammates.map(t => {return {uid: t.roleId, sid: t.sid}})); channelService.pushMessageByUids('onTeamJoin', resResult(STATUS.SUCCESS, { teamInfo: comTeam }), teammates.map(t => { return { uid: t.roleId, sid: t.sid } }));
} }
} }
@@ -667,7 +668,7 @@ export async function addRobotsToTeam(comTeam: MemComBtlTeam, roleId: string, ro
addRoleStToTeam(comTeam, st); addRoleStToTeam(comTeam, st);
await ComBattleTeamModel.addRole(teamCode, st); await ComBattleTeamModel.addRole(teamCode, st);
} }
channel.pushMessage('onTeamJoin', resResult(STATUS.SUCCESS, {teamInfo: comTeam})); channel.pushMessage('onTeamJoin', resResult(STATUS.SUCCESS, { teamInfo: comTeam }));
setDismissTimer(comTeam, teamMap, roleId, teamDisTimer, channel); setDismissTimer(comTeam, teamMap, roleId, teamDisTimer, channel);
} }
@@ -688,7 +689,7 @@ export async function addRobotsLater(comTeam: MemComBtlTeam, roleInfo: RoleType,
if (validToJoin(teamStatus)) { if (validToJoin(teamStatus)) {
const robotCnt = 3 - teamStatus.roleIds.length; const robotCnt = 3 - teamStatus.roleIds.length;
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 () => {
const curTeamStatus = teamMap.get(teamCode); const curTeamStatus = teamMap.get(teamCode);
@@ -708,10 +709,10 @@ export async function addRobotsLater(comTeam: MemComBtlTeam, roleInfo: RoleType,
* @returns * @returns
*/ */
export async function oneTeamNotInBlack(teams: ComBattleTeamType[], roleId: string) { export async function oneTeamNotInBlack(teams: ComBattleTeamType[], roleId: string) {
for(let team of teams) { for (let team of teams) {
let { roleIds } = team; let { roleIds } = team;
const inBlackList = await teammateInBlackList(roleId, roleIds); const inBlackList = await teammateInBlackList(roleId, roleIds);
if(!inBlackList) { if (!inBlackList) {
return team; return team;
} }
} }
+8 -1
View File
@@ -1,5 +1,5 @@
import * as taskUtil from '../pubUtils/taskUtil'; import * as taskUtil from '../pubUtils/taskUtil';
import { RoleType } from '../db/Role'; import { RoleModel, RoleType } from '../db/Role';
import { pinus, FrontendOrBackendSession } from 'pinus'; import { pinus, FrontendOrBackendSession } from 'pinus';
import { resResult, shouldRefresh } from '../pubUtils/util'; import { resResult, shouldRefresh } from '../pubUtils/util';
import { STATUS, TASK_TYPE, TASK_FUN_TYPE, SHOP_REFRESH_TYPE } from '../consts'; import { STATUS, TASK_TYPE, TASK_FUN_TYPE, SHOP_REFRESH_TYPE } from '../consts';
@@ -120,13 +120,20 @@ export async function checkTaskInComBattleEnd(roleStatus: RoleStatus[], capId: s
console.log('********', JSON.stringify(roleStatus), capId, quality) console.log('********', JSON.stringify(roleStatus), capId, quality)
for (let { roleId, isRobot } of roleStatus) { for (let { roleId, isRobot } of roleStatus) {
if (!isRobot) { if (!isRobot) {
let { serverId } = await RoleModel.findByRoleId(roleId);
if (roleId == capId && roleStatus.length > 1) { // 招募队友 if (roleId == capId && roleStatus.length > 1) { // 招募队友
await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_CREATE_TEAM, 1, true, {}); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_CREATE_TEAM, 1, true, {});
} else if (roleId !== capId) { // 协助寻宝 } else if (roleId !== capId) { // 协助寻宝
await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_ASSIST_TEAM, 1, true, {}); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_ASSIST_TEAM, 1, true, {});
//活动任务
await checkActivityTask(serverId, null, null, roleId, TASK_TYPE.COM_BATTLE_ASSIST_TEAM, 1);
} }
await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE, 1, true, {}); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE, 1, true, {});
await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_QUALITY, 1, true, { quality }); await checkTask(roleId, null, null, TASK_TYPE.COM_BATTLE_QUALITY, 1, true, { quality });
//活动任务
await checkActivityTask(serverId, null, null, roleId, TASK_TYPE.COM_BATTLE, 1);
} }
} }
} }
+11
View File
@@ -1080,6 +1080,17 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
addCount = equips.length; addCount = equips.length;
break; break;
} }
case TASK_TYPE.COM_BATTLE:
{
addCount = count;
break;
}
case TASK_TYPE.COM_BATTLE_ASSIST_TEAM:
{
addCount = count;
break;
}
default: default:
addCount = 0; addCount = 0;
break; break;