边窗:主线关卡奖励

This commit is contained in:
luying
2022-06-27 20:17:16 +08:00
parent 2e03348f53
commit eb4ecd7c94
8 changed files with 709 additions and 1 deletions

View File

@@ -30,6 +30,7 @@ import { isArray, isNumber } from 'underscore';
import { RewardInter } from '../../../pubUtils/interface';
import { addItems } from '../../../services/role/rewardService';
import { treasureHuntChallengeConsume } from '../../../services/activity/treasureHuntService';
import { combineItems } from '../../../services/role/util';
export default function (app: Application) {
new HandlerService(app, {});
@@ -478,4 +479,33 @@ export class NormalBattleHandler {
...result, goods
});
}
// 关卡列表
async receiveWarReward(msg: { chapter: number, warType: number }, session: BackendSession) {
const { chapter, warType } = msg;
let roleId = session.get('roleId');
let roleName = session.get('roleName');
let sid = session.get('sid');
let role = await RoleModel.findByRoleId(roleId, 'receivedWarIds');
let { receivedWarIds = [] } = role;
let warIds: number[] = [];
let rewards: RewardInter[] = [];
let mainWarRewards = gameData.mainWarReward.get(`${warType}_${chapter}`)??[];
for(let { warId, cityReward } of mainWarRewards) {
if(receivedWarIds.indexOf(warId) == -1) {
rewards.push(...cityReward);
warIds.push(warId);
}
}
if(warIds.length <= 0) return resResult(STATUS.BATTLE_NO_WAR_REWARD_CAN_RECEIVE);
role = await RoleModel.receiveWarRewards(roleId, warIds);
let goods = await addItems(roleId, roleName, sid, rewards, ITEM_CHANGE_REASON.RECEIVE_CHAPTER_BOX)
return resResult(STATUS.SUCCESS, {
receivedWarIds: warIds, goods: combineItems(goods)
});
}
}

View File

@@ -222,5 +222,6 @@ export function getMainChapter(role: RoleType) {
return {
star: chapterArr,
receivedBox: role.receivedBox||[],
receivedWarIds: role.receivedWarIds||[],
}
}

View File

@@ -534,6 +534,7 @@ export const FILENAME = {
DIC_TOWER_GIFT: 'dic_zyz_towerGift',
DIC_TOWER_PVP_SUB_ATTR: 'dic_tower_pvp_subattr',
DIC_SYSTEM_OPEN_TIME: 'dic_zyz_systemOpenTime',
DIC_MAIN_WAR_REWARD: 'dic_zyz_mainCity_reward',
}
export const WAR_RELATE_TABLES = [

View File

@@ -59,6 +59,7 @@ export const STATUS = {
BATTLE_INFO_VALIDATE_ERR: { code: 20101, simStr: '关卡信息不同' },
BATTLE_SWEEP_CONDITION_STAR: { code: 20102, simStr: '需要3星通过关卡才可以扫荡' },
BATTLE_NO_BOX_CAN_RECEIVE: { code: 20103, simStr: '宝箱不可领取' },
BATTLE_NO_WAR_REWARD_CAN_RECEIVE: { code: 20104, simStr: '没有可领取的关卡奖励' },
// 每日 20200 - 20299
DAILY_WAR_NOT_FOUND: { code: 20201, simStr: '未找到该关卡' },
DAILY_TYPE_NOT_FOUND: { code: 20202, simStr: '未找到该类型' },

View File

@@ -301,7 +301,9 @@ export default class Role extends BaseModel {
@prop({ required: true, default: [], type: Number })
guide: number[]; // 引导
@prop({ required: true, default: [], type: Number })
receivedBox: number[]; // 引导
receivedBox: number[]; // 主线宝箱
@prop({ required: true, default: [], type: Number })
receivedWarIds: number[]; // 主线关卡奖励
@prop({ required: true, default: false })
gachaHasGuide: boolean; // 是否进行过引导特殊招募
@@ -768,6 +770,11 @@ export default class Role extends BaseModel {
let rec: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $push: { receivedBox: { $each: ids } } }, { new: true }).lean();
return rec;
}
public static async receiveWarRewards(roleId: string, ids: number[]) {
let rec: RoleType = await RoleModel.findOneAndUpdate({ roleId }, { $push: { receivedWarIds: { $each: ids } } }, { new: true }).lean();
return rec;
}
}
export const RoleModel = getModelForClass(Role);

View File

@@ -106,6 +106,7 @@ import { dicTowerGift, loadTowerGift } from './dictionary/DicTowerGift';
import { dicTowerPvpSubAttr, loadTowerPvpSubAttr } from './dictionary/DicTowerPvpSubAttr';
import { dicSystemOpenTime, loadSystemOpenTime } from "./dictionary/DicSystemOpenTime";
import { dicRandomEffectPoolPlan, loadRandomEffectPoolPlan } from './dictionary/DicRandomEffectPoolPlan';
import { dicMainWarRewardByChapter, loadMainWarReward } from './dictionary/DicMainWarReward';
export const gameData = {
daily: dicDaily,
@@ -259,6 +260,7 @@ export const gameData = {
heroIdByWar: dicHeroIdByWar,
mainBox: dicMainStarBox,
mainBoxByChapter: dicMainStarBoxByChapter,
mainWarReward: dicMainWarRewardByChapter,
heroTalent: dicHeroTalent,
initTalents: initTalents,
talentPointOfJob: talentPointOfJob,
@@ -1140,6 +1142,7 @@ function loadDatas() {
loadTowerPvpSubAttr();
loadSystemOpenTime();
loadRandomEffectPoolPlan();
loadMainWarReward();
}
// 重载dicParam

View File

@@ -0,0 +1,33 @@
// 主线星级宝箱
import {readFileAndParse, parseGoodStr} from '../util'
import { FILENAME } from '../../consts'
import { RewardInter } from '../interface';
export interface DicMainWarReward {
// id
readonly id: number;
// 章节id
readonly chapter: number;
// 主线类型
readonly warType: number;
// 关卡id
readonly warId: number;
// 奖励
readonly cityReward: RewardInter[];
}
export const dicMainWarRewardByChapter = new Map<string, DicMainWarReward[]>(); // chapter => ids;
export function loadMainWarReward() {
dicMainWarRewardByChapter.clear();
let arr = readFileAndParse(FILENAME.DIC_MAIN_WAR_REWARD);
arr.forEach(o => {
o.cityReward = parseGoodStr(o.cityReward);
if(!dicMainWarRewardByChapter.has(`${o.warType}_${o.chapter}`)) {
dicMainWarRewardByChapter.set(`${o.warType}_${o.chapter}`, []);
}
dicMainWarRewardByChapter.get(`${o.warType}_${o.chapter}`)?.push(o);
});
arr = undefined;
}

View File

@@ -0,0 +1,632 @@
[
{
"id": 1,
"chapter": 1,
"warType": 1,
"warId": 107,
"cityReward": "22001&5"
},
{
"id": 2,
"chapter": 1,
"warType": 1,
"warId": 112,
"cityReward": "22001&5"
},
{
"id": 3,
"chapter": 1,
"warType": 1,
"warId": 116,
"cityReward": "22001&5"
},
{
"id": 4,
"chapter": 1,
"warType": 1,
"warId": 120,
"cityReward": "22001&5"
},
{
"id": 5,
"chapter": 1,
"warType": 1,
"warId": 124,
"cityReward": "22001&5"
},
{
"id": 6,
"chapter": 1,
"warType": 1,
"warId": 128,
"cityReward": "22001&5"
},
{
"id": 7,
"chapter": 2,
"warType": 1,
"warId": 204,
"cityReward": "22001&5"
},
{
"id": 8,
"chapter": 2,
"warType": 1,
"warId": 208,
"cityReward": "22001&5"
},
{
"id": 9,
"chapter": 2,
"warType": 1,
"warId": 212,
"cityReward": "22001&5"
},
{
"id": 10,
"chapter": 2,
"warType": 1,
"warId": 216,
"cityReward": "22001&5"
},
{
"id": 11,
"chapter": 2,
"warType": 1,
"warId": 220,
"cityReward": "22001&5"
},
{
"id": 12,
"chapter": 2,
"warType": 1,
"warId": 224,
"cityReward": "22001&5"
},
{
"id": 13,
"chapter": 3,
"warType": 1,
"warId": 304,
"cityReward": "22001&5"
},
{
"id": 14,
"chapter": 3,
"warType": 1,
"warId": 308,
"cityReward": "22001&5"
},
{
"id": 15,
"chapter": 3,
"warType": 1,
"warId": 312,
"cityReward": "22001&5"
},
{
"id": 16,
"chapter": 3,
"warType": 1,
"warId": 316,
"cityReward": "22001&5"
},
{
"id": 17,
"chapter": 3,
"warType": 1,
"warId": 320,
"cityReward": "22001&5"
},
{
"id": 18,
"chapter": 3,
"warType": 1,
"warId": 324,
"cityReward": "22001&5"
},
{
"id": 19,
"chapter": 4,
"warType": 1,
"warId": 404,
"cityReward": "22001&5"
},
{
"id": 20,
"chapter": 4,
"warType": 1,
"warId": 408,
"cityReward": "22001&5"
},
{
"id": 21,
"chapter": 4,
"warType": 1,
"warId": 412,
"cityReward": "22001&5"
},
{
"id": 22,
"chapter": 4,
"warType": 1,
"warId": 416,
"cityReward": "22001&5"
},
{
"id": 23,
"chapter": 4,
"warType": 1,
"warId": 420,
"cityReward": "22001&5"
},
{
"id": 24,
"chapter": 4,
"warType": 1,
"warId": 424,
"cityReward": "22001&5"
},
{
"id": 25,
"chapter": 5,
"warType": 1,
"warId": 504,
"cityReward": "22001&5"
},
{
"id": 26,
"chapter": 5,
"warType": 1,
"warId": 508,
"cityReward": "22001&5"
},
{
"id": 27,
"chapter": 5,
"warType": 1,
"warId": 512,
"cityReward": "22001&5"
},
{
"id": 28,
"chapter": 5,
"warType": 1,
"warId": 516,
"cityReward": "22001&5"
},
{
"id": 29,
"chapter": 5,
"warType": 1,
"warId": 520,
"cityReward": "22001&5"
},
{
"id": 30,
"chapter": 5,
"warType": 1,
"warId": 524,
"cityReward": "22001&5"
},
{
"id": 31,
"chapter": 5,
"warType": 1,
"warId": 528,
"cityReward": "22001&5"
},
{
"id": 32,
"chapter": 6,
"warType": 1,
"warId": 604,
"cityReward": "22001&5"
},
{
"id": 33,
"chapter": 6,
"warType": 1,
"warId": 608,
"cityReward": "22001&5"
},
{
"id": 34,
"chapter": 6,
"warType": 1,
"warId": 612,
"cityReward": "22001&5"
},
{
"id": 35,
"chapter": 6,
"warType": 1,
"warId": 616,
"cityReward": "22001&5"
},
{
"id": 36,
"chapter": 6,
"warType": 1,
"warId": 620,
"cityReward": "22001&5"
},
{
"id": 37,
"chapter": 6,
"warType": 1,
"warId": 624,
"cityReward": "22001&5"
},
{
"id": 38,
"chapter": 6,
"warType": 1,
"warId": 628,
"cityReward": "22001&5"
},
{
"id": 39,
"chapter": 7,
"warType": 1,
"warId": 704,
"cityReward": "22001&5"
},
{
"id": 40,
"chapter": 7,
"warType": 1,
"warId": 708,
"cityReward": "22001&5"
},
{
"id": 41,
"chapter": 7,
"warType": 1,
"warId": 712,
"cityReward": "22001&5"
},
{
"id": 42,
"chapter": 7,
"warType": 1,
"warId": 716,
"cityReward": "22001&5"
},
{
"id": 43,
"chapter": 7,
"warType": 1,
"warId": 720,
"cityReward": "22001&5"
},
{
"id": 44,
"chapter": 7,
"warType": 1,
"warId": 724,
"cityReward": "22001&5"
},
{
"id": 45,
"chapter": 7,
"warType": 1,
"warId": 728,
"cityReward": "22001&5"
},
{
"id": 46,
"chapter": 1,
"warType": 12,
"warId": 1107,
"cityReward": "22001&5"
},
{
"id": 47,
"chapter": 1,
"warType": 12,
"warId": 1112,
"cityReward": "22001&5"
},
{
"id": 48,
"chapter": 1,
"warType": 12,
"warId": 1116,
"cityReward": "22001&5"
},
{
"id": 49,
"chapter": 1,
"warType": 12,
"warId": 1120,
"cityReward": "22001&5"
},
{
"id": 50,
"chapter": 1,
"warType": 12,
"warId": 1124,
"cityReward": "22001&5"
},
{
"id": 51,
"chapter": 1,
"warType": 12,
"warId": 1128,
"cityReward": "22001&5"
},
{
"id": 52,
"chapter": 2,
"warType": 12,
"warId": 1204,
"cityReward": "22001&5"
},
{
"id": 53,
"chapter": 2,
"warType": 12,
"warId": 1208,
"cityReward": "22001&5"
},
{
"id": 54,
"chapter": 2,
"warType": 12,
"warId": 1212,
"cityReward": "22001&5"
},
{
"id": 55,
"chapter": 2,
"warType": 12,
"warId": 1216,
"cityReward": "22001&5"
},
{
"id": 56,
"chapter": 2,
"warType": 12,
"warId": 1220,
"cityReward": "22001&5"
},
{
"id": 57,
"chapter": 2,
"warType": 12,
"warId": 1224,
"cityReward": "22001&5"
},
{
"id": 58,
"chapter": 3,
"warType": 12,
"warId": 1304,
"cityReward": "22001&5"
},
{
"id": 59,
"chapter": 3,
"warType": 12,
"warId": 1308,
"cityReward": "22001&5"
},
{
"id": 60,
"chapter": 3,
"warType": 12,
"warId": 1312,
"cityReward": "22001&5"
},
{
"id": 61,
"chapter": 3,
"warType": 12,
"warId": 1316,
"cityReward": "22001&5"
},
{
"id": 62,
"chapter": 3,
"warType": 12,
"warId": 1320,
"cityReward": "22001&5"
},
{
"id": 63,
"chapter": 3,
"warType": 12,
"warId": 1324,
"cityReward": "22001&5"
},
{
"id": 64,
"chapter": 4,
"warType": 12,
"warId": 1404,
"cityReward": "22001&5"
},
{
"id": 65,
"chapter": 4,
"warType": 12,
"warId": 1408,
"cityReward": "22001&5"
},
{
"id": 66,
"chapter": 4,
"warType": 12,
"warId": 1412,
"cityReward": "22001&5"
},
{
"id": 67,
"chapter": 4,
"warType": 12,
"warId": 1416,
"cityReward": "22001&5"
},
{
"id": 68,
"chapter": 4,
"warType": 12,
"warId": 1420,
"cityReward": "22001&5"
},
{
"id": 69,
"chapter": 4,
"warType": 12,
"warId": 1424,
"cityReward": "22001&5"
},
{
"id": 70,
"chapter": 5,
"warType": 12,
"warId": 1504,
"cityReward": "22001&5"
},
{
"id": 71,
"chapter": 5,
"warType": 12,
"warId": 1508,
"cityReward": "22001&5"
},
{
"id": 72,
"chapter": 5,
"warType": 12,
"warId": 1512,
"cityReward": "22001&5"
},
{
"id": 73,
"chapter": 5,
"warType": 12,
"warId": 1516,
"cityReward": "22001&5"
},
{
"id": 74,
"chapter": 5,
"warType": 12,
"warId": 1520,
"cityReward": "22001&5"
},
{
"id": 75,
"chapter": 5,
"warType": 12,
"warId": 1524,
"cityReward": "22001&5"
},
{
"id": 76,
"chapter": 5,
"warType": 12,
"warId": 1528,
"cityReward": "22001&5"
},
{
"id": 77,
"chapter": 6,
"warType": 12,
"warId": 1604,
"cityReward": "22001&5"
},
{
"id": 78,
"chapter": 6,
"warType": 12,
"warId": 1608,
"cityReward": "22001&5"
},
{
"id": 79,
"chapter": 6,
"warType": 12,
"warId": 1612,
"cityReward": "22001&5"
},
{
"id": 80,
"chapter": 6,
"warType": 12,
"warId": 1616,
"cityReward": "22001&5"
},
{
"id": 81,
"chapter": 6,
"warType": 12,
"warId": 1620,
"cityReward": "22001&5"
},
{
"id": 82,
"chapter": 6,
"warType": 12,
"warId": 1624,
"cityReward": "22001&5"
},
{
"id": 83,
"chapter": 6,
"warType": 12,
"warId": 1628,
"cityReward": "22001&5"
},
{
"id": 84,
"chapter": 7,
"warType": 12,
"warId": 1704,
"cityReward": "22001&5"
},
{
"id": 85,
"chapter": 7,
"warType": 12,
"warId": 1708,
"cityReward": "22001&5"
},
{
"id": 86,
"chapter": 7,
"warType": 12,
"warId": 1712,
"cityReward": "22001&5"
},
{
"id": 87,
"chapter": 7,
"warType": 12,
"warId": 1716,
"cityReward": "22001&5"
},
{
"id": 88,
"chapter": 7,
"warType": 12,
"warId": 1720,
"cityReward": "22001&5"
},
{
"id": 89,
"chapter": 7,
"warType": 12,
"warId": 1724,
"cityReward": "22001&5"
},
{
"id": 90,
"chapter": 7,
"warType": 12,
"warId": 1728,
"cityReward": "22001&5"
}
]