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

XFESpaceNinjaServer

A simple server for a small space ninja game

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

XFEstudio/XFESpaceNinjaServer

feat: implement aya costs for varzia offers (#606)

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

代码差异

4 个文件 +35 -1
Modified src/models/inventoryModels/inventoryModel.ts +2 -0
@@ -605,6 +605,8 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
605 605 PremiumCreditsFree: Number,
606 606 //Endo
607 607 FusionPoints: Number,
608 //Regal Aya
609 PrimeTokens: Number,
608 610
609 611 //Slots
610 612 SuitBin: slotsBinSchema,
Modified src/services/purchaseService.ts +31 -0
@@ -13,6 +13,7 @@ import { getVendorManifestByOid } from "@/src/services/serversideVendorsService"
13 13 import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
14 14 import { IPurchaseRequest, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
15 15 import { logger } from "@/src/utils/logger";
16 import worldState from "@/static/fixed_responses/worldState.json";
16 17 import { ExportBundles, ExportGear, ExportVendors, TRarity } from "warframe-public-export-plus";
17 18
18 19 export const getStoreItemCategory = (storeItem: string) => {
@@ -94,6 +95,36 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI
94 95 }
95 96 }
96 97 break;
98 case 18: {
99 if (purchaseRequest.PurchaseParams.SourceId! != worldState.PrimeVaultTraders[0]._id.$oid) {
100 throw new Error("invalid request source");
101 }
102 const offer =
103 worldState.PrimeVaultTraders[0].Manifest.find(
104 x => x.ItemType == purchaseRequest.PurchaseParams.StoreItem
105 ) ??
106 worldState.PrimeVaultTraders[0].EvergreenManifest.find(
107 x => x.ItemType == purchaseRequest.PurchaseParams.StoreItem
108 );
109 if (offer) {
110 const inventory = await getInventory(accountId);
111 if (offer.RegularPrice) {
112 const invItem: IMiscItem = {
113 ItemType: "/Lotus/Types/Items/MiscItems/SchismKey",
114 ItemCount: offer.RegularPrice * purchaseRequest.PurchaseParams.Quantity * -1
115 };
116
117 addMiscItems(inventory, [invItem]);
118
119 purchaseResponse.InventoryChanges.MiscItems ??= [];
120 (purchaseResponse.InventoryChanges.MiscItems as IMiscItem[]).push(invItem);
121 } else {
122 inventory.PrimeTokens -= offer.PrimePrice! * purchaseRequest.PurchaseParams.Quantity;
123 }
124 await inventory.save();
125 }
126 break;
127 }
97 128 }
98 129
99 130 return purchaseResponse;
Modified src/types/inventoryTypes/inventoryTypes.ts +1 -0
@@ -125,6 +125,7 @@ export interface IInventoryResponse {
125 125 PremiumCredits: number;
126 126 PremiumCreditsFree: number;
127 127 FusionPoints: number;
128 PrimeTokens: number;
128 129 SuitBin: ISlots;
129 130 WeaponBin: ISlots;
130 131 SentinelBin: ISlots;
Modified src/types/purchaseTypes.ts +1 -1
@@ -5,7 +5,7 @@ export interface IPurchaseRequest {
5 5
6 6 export interface IPurchaseParams {
7 7 Source: number;
8 SourceId?: string; // for Source 7
8 SourceId?: string; // for Source 7 & 18
9 9 StoreItem: string;
10 10 StorePage: string;
11 11 SearchTerm: string;