feat: subtract standing for syndicate purchases
This commit is contained in:
		
							parent
							
								
									c421c7021c
								
							
						
					
					
						commit
						00d39bb4cc
					
				
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							@ -12,7 +12,7 @@
 | 
				
			|||||||
        "copyfiles": "^2.4.1",
 | 
					        "copyfiles": "^2.4.1",
 | 
				
			||||||
        "express": "^5",
 | 
					        "express": "^5",
 | 
				
			||||||
        "mongoose": "^8.9.2",
 | 
					        "mongoose": "^8.9.2",
 | 
				
			||||||
        "warframe-public-export-plus": "^0.5.9",
 | 
					        "warframe-public-export-plus": "^0.5.10",
 | 
				
			||||||
        "warframe-riven-info": "^0.1.2",
 | 
					        "warframe-riven-info": "^0.1.2",
 | 
				
			||||||
        "winston": "^3.17.0",
 | 
					        "winston": "^3.17.0",
 | 
				
			||||||
        "winston-daily-rotate-file": "^5.0.0"
 | 
					        "winston-daily-rotate-file": "^5.0.0"
 | 
				
			||||||
@ -3877,9 +3877,9 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-public-export-plus": {
 | 
					    "node_modules/warframe-public-export-plus": {
 | 
				
			||||||
      "version": "0.5.9",
 | 
					      "version": "0.5.10",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.9.tgz",
 | 
					      "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.10.tgz",
 | 
				
			||||||
      "integrity": "sha512-qwQVtYI7wghatg7UrJ3CFstXba5Hsks398L6ngv16auqoTVAfw/cLBqFv9DzsEpqvcVWL22IZIH+cNWiq1JXOQ=="
 | 
					      "integrity": "sha512-6RtWkQDMouMXoUePohkAsYYG/wGW9b/WjSIcrxCb80pWpwrMWr5lr7kzDKPMRkq1Ju8uh9sJirp/5oyeiJbyyQ=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/warframe-riven-info": {
 | 
					    "node_modules/warframe-riven-info": {
 | 
				
			||||||
      "version": "0.1.2",
 | 
					      "version": "0.1.2",
 | 
				
			||||||
 | 
				
			|||||||
@ -16,7 +16,7 @@
 | 
				
			|||||||
    "copyfiles": "^2.4.1",
 | 
					    "copyfiles": "^2.4.1",
 | 
				
			||||||
    "express": "^5",
 | 
					    "express": "^5",
 | 
				
			||||||
    "mongoose": "^8.9.2",
 | 
					    "mongoose": "^8.9.2",
 | 
				
			||||||
    "warframe-public-export-plus": "^0.5.9",
 | 
					    "warframe-public-export-plus": "^0.5.10",
 | 
				
			||||||
    "warframe-riven-info": "^0.1.2",
 | 
					    "warframe-riven-info": "^0.1.2",
 | 
				
			||||||
    "winston": "^3.17.0",
 | 
					    "winston": "^3.17.0",
 | 
				
			||||||
    "winston-daily-rotate-file": "^5.0.0"
 | 
					    "winston-daily-rotate-file": "^5.0.0"
 | 
				
			||||||
 | 
				
			|||||||
@ -11,10 +11,10 @@ import {
 | 
				
			|||||||
} from "@/src/services/inventoryService";
 | 
					} from "@/src/services/inventoryService";
 | 
				
			||||||
import { getVendorManifestByOid } from "@/src/services/serversideVendorsService";
 | 
					import { getVendorManifestByOid } from "@/src/services/serversideVendorsService";
 | 
				
			||||||
import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
					import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
 | 
				
			||||||
import { IPurchaseRequest, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
					import { IPurchaseRequest, IPurchaseResponse, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
				
			||||||
import { logger } from "@/src/utils/logger";
 | 
					import { logger } from "@/src/utils/logger";
 | 
				
			||||||
import worldState from "@/static/fixed_responses/worldState.json";
 | 
					import worldState from "@/static/fixed_responses/worldState.json";
 | 
				
			||||||
import { ExportBundles, ExportGear, ExportVendors, TRarity } from "warframe-public-export-plus";
 | 
					import { ExportBundles, ExportGear, ExportSyndicates, ExportVendors, TRarity } from "warframe-public-export-plus";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const getStoreItemCategory = (storeItem: string) => {
 | 
					export const getStoreItemCategory = (storeItem: string) => {
 | 
				
			||||||
    const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/");
 | 
					    const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/");
 | 
				
			||||||
@ -66,6 +66,29 @@ export const handlePurchase = async (purchaseRequest: IPurchaseRequest, accountI
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (purchaseRequest.PurchaseParams.Source) {
 | 
					    switch (purchaseRequest.PurchaseParams.Source) {
 | 
				
			||||||
 | 
					        case 2:
 | 
				
			||||||
 | 
					            if (!purchaseRequest.PurchaseParams.UseFreeFavor!) {
 | 
				
			||||||
 | 
					                const syndicateTag = purchaseRequest.PurchaseParams.SyndicateTag!;
 | 
				
			||||||
 | 
					                const syndicate = ExportSyndicates[syndicateTag];
 | 
				
			||||||
 | 
					                if (syndicate) {
 | 
				
			||||||
 | 
					                    const favour = syndicate.favours.find(x => x.storeItem == purchaseRequest.PurchaseParams.StoreItem);
 | 
				
			||||||
 | 
					                    if (favour) {
 | 
				
			||||||
 | 
					                        const inventory = await getInventory(accountId);
 | 
				
			||||||
 | 
					                        const affiliation = inventory.Affiliations.find(x => x.Tag == syndicateTag);
 | 
				
			||||||
 | 
					                        if (affiliation) {
 | 
				
			||||||
 | 
					                            purchaseResponse.Standing = [
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    Tag: syndicateTag,
 | 
				
			||||||
 | 
					                                    Standing: favour.standingCost
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                            ];
 | 
				
			||||||
 | 
					                            affiliation.Standing -= favour.standingCost;
 | 
				
			||||||
 | 
					                            await inventory.save();
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        case 7:
 | 
					        case 7:
 | 
				
			||||||
            if (purchaseRequest.PurchaseParams.SourceId! in ExportVendors) {
 | 
					            if (purchaseRequest.PurchaseParams.SourceId! in ExportVendors) {
 | 
				
			||||||
                const vendor = ExportVendors[purchaseRequest.PurchaseParams.SourceId!];
 | 
					                const vendor = ExportVendors[purchaseRequest.PurchaseParams.SourceId!];
 | 
				
			||||||
@ -136,7 +159,7 @@ const handleStoreItemAcquisition = async (
 | 
				
			|||||||
    quantity: number,
 | 
					    quantity: number,
 | 
				
			||||||
    durability: TRarity,
 | 
					    durability: TRarity,
 | 
				
			||||||
    ignorePurchaseQuantity: boolean = false
 | 
					    ignorePurchaseQuantity: boolean = false
 | 
				
			||||||
): Promise<{ InventoryChanges: IInventoryChanges }> => {
 | 
					): Promise<IPurchaseResponse> => {
 | 
				
			||||||
    let purchaseResponse = {
 | 
					    let purchaseResponse = {
 | 
				
			||||||
        InventoryChanges: {}
 | 
					        InventoryChanges: {}
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
				
			|||||||
@ -13,10 +13,20 @@ export interface IPurchaseParams {
 | 
				
			|||||||
    Quantity: number;
 | 
					    Quantity: number;
 | 
				
			||||||
    UsePremium: boolean;
 | 
					    UsePremium: boolean;
 | 
				
			||||||
    ExpectedPrice: number;
 | 
					    ExpectedPrice: number;
 | 
				
			||||||
 | 
					    SyndicateTag?: string; // for Source 2
 | 
				
			||||||
 | 
					    UseFreeFavor?: boolean; // for Source 2
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type IInventoryChanges = Record<string, IBinChanges | object[]>;
 | 
					export type IInventoryChanges = Record<string, IBinChanges | object[]>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface IPurchaseResponse {
 | 
				
			||||||
 | 
					    InventoryChanges: IInventoryChanges;
 | 
				
			||||||
 | 
					    Standing?: {
 | 
				
			||||||
 | 
					        Tag: string;
 | 
				
			||||||
 | 
					        Standing: number;
 | 
				
			||||||
 | 
					    }[];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type IBinChanges = {
 | 
					export type IBinChanges = {
 | 
				
			||||||
    count: number;
 | 
					    count: number;
 | 
				
			||||||
    platinum: number;
 | 
					    platinum: number;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user