XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat: handle acquisition of EmailItems (#1064)

Fixes #1063 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1064 Co-authored-by: Sainan <sainan@calamity.inc> Co-committed-by: Sainan <sainan@calamity.inc>

91582090
Sainan <sainan@calamity.inc>
提交于

代码差异

3 个文件 +28 -17
Modified src/services/inventoryService.ts +10 -1
@@ -35,7 +35,7 @@ import {
35 35 IUpdateChallengeProgressRequest
36 36 } from "../types/requestTypes";
37 37 import { logger } from "@/src/utils/logger";
38 import { getExalted, getKeyChainItems } from "@/src/services/itemDataService";
38 import { convertInboxMessage, getExalted, getKeyChainItems } from "@/src/services/itemDataService";
39 39 import {
40 40 EquipmentFeatures,
41 41 IEquipmentClient,
@@ -47,6 +47,7 @@ import {
47 47 ExportBundles,
48 48 ExportCustoms,
49 49 ExportDrones,
50 ExportEmailItems,
50 51 ExportEnemies,
51 52 ExportFlavour,
52 53 ExportFusionBundles,
@@ -71,6 +72,7 @@ import { addQuestKey, completeQuest } from "@/src/services/questService";
71 72 import { handleBundleAcqusition } from "./purchaseService";
72 73 import libraryDailyTasks from "@/static/fixed_responses/libraryDailyTasks.json";
73 74 import { getRandomElement, getRandomInt } from "./rngService";
75 import { createMessage } from "./inboxService";
74 76
75 77 export const createInventory = async (
76 78 accountOwnerId: Types.ObjectId,
@@ -425,6 +427,13 @@ export const addItem = async (
425 427 InventoryChanges: inventoryChanges
426 428 };
427 429 }
430 if (typeName in ExportEmailItems) {
431 const emailItem = ExportEmailItems[typeName];
432 await createMessage(inventory.accountOwnerId.toString(), [convertInboxMessage(emailItem.message)]);
433 return {
434 InventoryChanges: {}
435 };
436 }
428 437
429 438 // Path-based duck typing
430 439 switch (typeName.substr(1).split("/")[1]) {
Modified src/services/itemDataService.ts +17 -2
@@ -36,6 +36,7 @@ import {
36 36 TReward
37 37 } from "warframe-public-export-plus";
38 38 import questCompletionItems from "@/static/fixed_responses/questCompletionRewards.json";
39 import { IMessage } from "../models/inboxModel";
39 40
40 41 export type WeaponTypeInternal =
41 42 | "LongGuns"
@@ -207,7 +208,7 @@ export const getQuestCompletionItems = (questKey: string): ITypeCount[] | undefi
207 208 return items;
208 209 };
209 210
210 export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest): IInboxMessage => {
211 export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest): IMessage => {
211 212 // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
212 213 const chainStages = ExportKeys[KeyChain]?.chainStages;
213 214 if (!chainStages) {
@@ -227,5 +228,19 @@ export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest):
227 228 `client requested key chain message in keychain ${KeyChain} at stage ${ChainStage} but they did not exist`
228 229 );
229 230 }
230 return chainStageMessage;
231 return convertInboxMessage(chainStageMessage);
232 };
233
234 export const convertInboxMessage = (message: IInboxMessage): IMessage => {
235 return {
236 sndr: message.sender,
237 msg: message.body,
238 sub: message.title,
239 att: message.attachments.length > 0 ? message.attachments : undefined,
240 countedAtt: message.countedAttachments.length > 0 ? message.countedAttachments : undefined,
241 icon: message.icon ?? "",
242 transmission: message.transmission ?? "",
243 highPriority: message.highPriority ?? false,
244 r: false
245 } satisfies IMessage;
231 246 };
Modified src/services/questService.ts +1 -14
@@ -1,6 +1,5 @@
1 1 import { IKeyChainRequest } from "@/src/controllers/api/giveKeyChainTriggeredItemsController";
2 2 import { isEmptyObject } from "@/src/helpers/general";
3 import { IMessage } from "@/src/models/inboxModel";
4 3 import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
5 4 import { createMessage } from "@/src/services/inboxService";
6 5 import { addItem, addKeyChainItems } from "@/src/services/inventoryService";
@@ -198,19 +197,7 @@ export const giveKeyChainMessage = async (
198 197 ): Promise<void> => {
199 198 const keyChainMessage = getKeyChainMessage(keyChainInfo);
200 199
201 const message = {
202 sndr: keyChainMessage.sender,
203 msg: keyChainMessage.body,
204 sub: keyChainMessage.title,
205 att: keyChainMessage.attachments.length > 0 ? keyChainMessage.attachments : undefined,
206 countedAtt: keyChainMessage.countedAttachments.length > 0 ? keyChainMessage.countedAttachments : undefined,
207 icon: keyChainMessage.icon ?? "",
208 transmission: keyChainMessage.transmission ?? "",
209 highPriority: keyChainMessage.highPriority ?? false,
210 r: false
211 } satisfies IMessage;
212
213 await createMessage(accountId, [message]);
200 await createMessage(accountId, [keyChainMessage]);
214 201
215 202 updateQuestStage(inventory, keyChainInfo, { m: true });
216 203 };