返回提交历史
Modified
src/models/inventoryModels/inventoryModel.ts
+2
-0
Modified
src/services/purchaseService.ts
+31
-0
Modified
src/types/inventoryTypes/inventoryTypes.ts
+1
-0
Modified
src/types/purchaseTypes.ts
+1
-1
XFEstudio/XFESpaceNinjaServer
feat: implement aya costs for varzia offers (#606)
c421c702
代码差异
4 个文件
+35
-1
@@ -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,
@@ -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;
@@ -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;
@@ -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;