✨ feat(任务): 添加稷下学宫任务

This commit is contained in:
luying
2023-09-06 20:00:23 +08:00
parent 194615bbc6
commit 44b0ba0dce
6 changed files with 287 additions and 21 deletions
@@ -1,5 +1,5 @@
import { RougelikeRecordDetailType } from '../../db/RougelikeRecordDetail';
import { COLLECTION_TYPE, PUSH_ROUTE, ROUGE_LIKE_CARD_TYPE } from '../../consts';
import { COLLECTION_TYPE, PUSH_ROUTE, ROUGE_LIKE_CARD_TYPE, TASK_ROUGE_CARD_TYPE, TASK_TYPE } from '../../consts';
import { genCode } from '../../pubUtils/util';
import { Card, RougelikeCharaModel, RougelikeCharaPara, RougelikeCharaType } from '../../db/RougelikeChara';
import { RougelikeCardPara, RougelikeCardModel } from '../../db/RougelikeCard';
@@ -9,10 +9,13 @@ import { sendMessageToUserWithSuc } from '../pushService';
import { gameData } from '../../pubUtils/data';
import { clone } from 'underscore';
import { RougeEffect, getSlotUnlockPoint } from './rougeEffectService';
import { BackendSession } from 'pinus';
import { checkTask } from '../task/taskService';
export class HandleAddCard {
roleId: string;
sid: string;
serverId: number;
gameCode: string;
getLayer: number = 0;
getWay: number = 0;
@@ -21,9 +24,10 @@ export class HandleAddCard {
addHolyCards: RougelikeCardPara[] = []; // 需要更新的圣物
addCoin: number = 0; // 需要增加的试炼币
constructor(roleId: string, sid: string, gameCode: string, recordDetail?: RougelikeRecordDetailType) {
this.roleId = roleId;
this.sid = sid;
constructor(session: BackendSession, gameCode: string, recordDetail?: RougelikeRecordDetailType) {
this.roleId = session.get('roleId');
this.sid = session.get('sid');
this.serverId = session.get('serverId');
this.gameCode = gameCode;
if (recordDetail) {
this.getLayer = recordDetail.layer;
@@ -107,6 +111,22 @@ export class HandleAddCard {
}
if (collections.length > 0) await addCollection(this.roleId, this.sid, this.gameCode, collections);
//任务
if (this.addPassiveCards.length > 0) {
let passiveCardMap = new Map<number, number>();
for (const { cardId } of this.addPassiveCards) {
const passiveCardData = gameData.rougePassiveCard.get(cardId);
let count = passiveCardMap.get(passiveCardData.authorType) || 0;
passiveCardMap.set(passiveCardData.authorType, count + 1);
}
for (const [authorType, count] of passiveCardMap) {
await checkTask(this.serverId, this.roleId, this.sid, TASK_TYPE.ROUGE_AUTHOR_CARD_COLLECT, { authorType, cardType: TASK_ROUGE_CARD_TYPE.PASSIVE, cardIds:this.addPassiveCards.map(cur => cur.cardId) });
}
}
if (this.addHolyCards.length > 0) {
await checkTask(this.serverId, this.roleId, this.sid, TASK_TYPE.ROUGE_HOLY_COLLECT, {cardIds:this.addHolyCards.map(cur => cur.cardId)});
}
if (this.addCharas.length > 0) {
result.addCharas = await this.getCharasByHolyEffect();
}
+77
View File
@@ -1503,6 +1503,83 @@ export class CheckSingleTask {
}
break;
}
case TASK_TYPE.FUND_ROUGE: //143 通关XX试炼几
{
let { rougeId, count } = param;
if (rougeId == dicTaskParam[0]) {
result = { inc: count };
}
break;
}
case TASK_TYPE.FUND_AUTHOR: //144 列传收集进度
{
let { authorProgress } = param;
result = { set: authorProgress };
break;
}
case TASK_TYPE.ROUGE_GET_COIN: // 145. 学宫积累x个试炼币
{
let { addCoin } = param;
result = { inc: addCoin }
break;
}
case TASK_TYPE.ROUGE_AUTHOR_CARD_COLLECT: // 146.流派卡收集
{
let records = await getRecord();
let { authorType, cardType, cardIds } = param;
if (authorType == dicTaskParam[0] && cardType == dicTaskParam[1]) {
for (let cardId of cardIds) {
if (records.indexOf(`${cardId}`) == -1) {
records.push(`${cardId}`);
}
}
result = { records, set: records.length };
}
break;;
}
case TASK_TYPE.ROUGE_HOLY_COLLECT: // 147.圣物卡收集
{
let records = await getRecord();
let { cardIds } = param;
for (let cardId of cardIds) {
if (records.indexOf(`${cardId}`) == -1) {
records.push(`${cardId}`);
}
}
result = { records, set: records.length };
break;
}
case TASK_TYPE.ROUGE_EVENT_COLLECT: // 148.事件收集
{
let records = await getRecord();
let { eventGroups } = param;
for (let eventGroup of eventGroups){
records.push(`${eventGroup}`);
}
result = { records, set: records.length };
break;
}
case TASK_TYPE.ROUGE_TECH_OPEN: // 149.法阵开启数量
{
let { count } = param;
result = { inc: count };
break;
}
case TASK_TYPE.ROUGE_GAME_COUNT: // 150.肉鸽次数
{
let { count } = param;
result = { inc: count };
break;
}
case TASK_TYPE.ROUGE_BOSS_PASS: // 151.试炼通过boss关
{
let { authorType, count } = param;
if (authorType == dicTaskParam[0]) {
result = { inc: count };
}
break;
}
}
return result
}