From ac2de1467485bbd50b59d56c8e59558c817f322c Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 1 Apr 2025 13:56:51 +0200 Subject: [PATCH] ensure LocTagRandSeed does not lose precision --- src/services/serversideVendorsService.ts | 100 +++++++++-------------- src/types/vendorTypes.ts | 1 + 2 files changed, 39 insertions(+), 62 deletions(-) diff --git a/src/services/serversideVendorsService.ts b/src/services/serversideVendorsService.ts index 7244241a..9700e00e 100644 --- a/src/services/serversideVendorsService.ts +++ b/src/services/serversideVendorsService.ts @@ -1,71 +1,47 @@ +import fs from "fs"; +import path from "path"; +import { repoDir } from "@/src/helpers/pathHelper"; import { CRng, mixSeeds } from "@/src/services/rngService"; import { IMongoDate } from "@/src/types/commonTypes"; import { IVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes"; +import { JSONParse } from "json-with-bigint"; -import ArchimedeanVendorManifest from "@/static/fixed_responses/getVendorInfo/ArchimedeanVendorManifest.json"; -import DeimosEntratiFragmentVendorProductsManifest from "@/static/fixed_responses/getVendorInfo/DeimosEntratiFragmentVendorProductsManifest.json"; -import DeimosFishmongerVendorManifest from "@/static/fixed_responses/getVendorInfo/DeimosFishmongerVendorManifest.json"; -import DeimosHivemindCommisionsManifestFishmonger from "@/static/fixed_responses/getVendorInfo/DeimosHivemindCommisionsManifestFishmonger.json"; -import DeimosHivemindCommisionsManifestPetVendor from "@/static/fixed_responses/getVendorInfo/DeimosHivemindCommisionsManifestPetVendor.json"; -import DeimosHivemindCommisionsManifestProspector from "@/static/fixed_responses/getVendorInfo/DeimosHivemindCommisionsManifestProspector.json"; -import DeimosHivemindCommisionsManifestTokenVendor from "@/static/fixed_responses/getVendorInfo/DeimosHivemindCommisionsManifestTokenVendor.json"; -import DeimosHivemindCommisionsManifestWeaponsmith from "@/static/fixed_responses/getVendorInfo/DeimosHivemindCommisionsManifestWeaponsmith.json"; -import DeimosHivemindTokenVendorManifest from "@/static/fixed_responses/getVendorInfo/DeimosHivemindTokenVendorManifest.json"; -import DeimosPetVendorManifest from "@/static/fixed_responses/getVendorInfo/DeimosPetVendorManifest.json"; -import DeimosProspectorVendorManifest from "@/static/fixed_responses/getVendorInfo/DeimosProspectorVendorManifest.json"; -import DuviriAcrithisVendorManifest from "@/static/fixed_responses/getVendorInfo/DuviriAcrithisVendorManifest.json"; -import EntratiLabsEntratiLabsCommisionsManifest from "@/static/fixed_responses/getVendorInfo/EntratiLabsEntratiLabsCommisionsManifest.json"; -import EntratiLabsEntratiLabVendorManifest from "@/static/fixed_responses/getVendorInfo/EntratiLabsEntratiLabVendorManifest.json"; -import GuildAdvertisementVendorManifest from "@/static/fixed_responses/getVendorInfo/GuildAdvertisementVendorManifest.json"; -import HubsIronwakeDondaVendorManifest from "@/static/fixed_responses/getVendorInfo/HubsIronwakeDondaVendorManifest.json"; -import HubsPerrinSequenceWeaponVendorManifest from "@/static/fixed_responses/getVendorInfo/HubsPerrinSequenceWeaponVendorManifest.json"; -import HubsRailjackCrewMemberVendorManifest from "@/static/fixed_responses/getVendorInfo/HubsRailjackCrewMemberVendorManifest.json"; -import InfestedLichWeaponVendorManifest from "@/static/fixed_responses/getVendorInfo/InfestedLichWeaponVendorManifest.json"; -import MaskSalesmanManifest from "@/static/fixed_responses/getVendorInfo/MaskSalesmanManifest.json"; -import Nova1999ConquestShopManifest from "@/static/fixed_responses/getVendorInfo/Nova1999ConquestShopManifest.json"; -import OstronFishmongerVendorManifest from "@/static/fixed_responses/getVendorInfo/OstronFishmongerVendorManifest.json"; -import OstronPetVendorManifest from "@/static/fixed_responses/getVendorInfo/OstronPetVendorManifest.json"; -import OstronProspectorVendorManifest from "@/static/fixed_responses/getVendorInfo/OstronProspectorVendorManifest.json"; -import RadioLegionIntermission12VendorManifest from "@/static/fixed_responses/getVendorInfo/RadioLegionIntermission12VendorManifest.json"; -import SolarisDebtTokenVendorManifest from "@/static/fixed_responses/getVendorInfo/SolarisDebtTokenVendorManifest.json"; -import SolarisDebtTokenVendorRepossessionsManifest from "@/static/fixed_responses/getVendorInfo/SolarisDebtTokenVendorRepossessionsManifest.json"; -import SolarisFishmongerVendorManifest from "@/static/fixed_responses/getVendorInfo/SolarisFishmongerVendorManifest.json"; -import SolarisProspectorVendorManifest from "@/static/fixed_responses/getVendorInfo/SolarisProspectorVendorManifest.json"; -import TeshinHardModeVendorManifest from "@/static/fixed_responses/getVendorInfo/TeshinHardModeVendorManifest.json"; -import ZarimanCommisionsManifestArchimedean from "@/static/fixed_responses/getVendorInfo/ZarimanCommisionsManifestArchimedean.json"; +const getVendorManifestJson = (name: string): IVendorManifest => { + return JSONParse(fs.readFileSync(path.join(repoDir, `static/fixed_responses/getVendorInfo/${name}.json`), "utf-8")); +}; const vendorManifests: IVendorManifest[] = [ - ArchimedeanVendorManifest, - DeimosEntratiFragmentVendorProductsManifest, - DeimosFishmongerVendorManifest, - DeimosHivemindCommisionsManifestFishmonger, - DeimosHivemindCommisionsManifestPetVendor, - DeimosHivemindCommisionsManifestProspector, - DeimosHivemindCommisionsManifestTokenVendor, - DeimosHivemindCommisionsManifestWeaponsmith, - DeimosHivemindTokenVendorManifest, - DeimosPetVendorManifest, - DeimosProspectorVendorManifest, - DuviriAcrithisVendorManifest, - EntratiLabsEntratiLabsCommisionsManifest, - EntratiLabsEntratiLabVendorManifest, - GuildAdvertisementVendorManifest, // uses preprocessing - HubsIronwakeDondaVendorManifest, // uses preprocessing - HubsPerrinSequenceWeaponVendorManifest, - HubsRailjackCrewMemberVendorManifest, - InfestedLichWeaponVendorManifest, - MaskSalesmanManifest, - Nova1999ConquestShopManifest, - OstronFishmongerVendorManifest, - OstronPetVendorManifest, - OstronProspectorVendorManifest, - RadioLegionIntermission12VendorManifest, - SolarisDebtTokenVendorManifest, - SolarisDebtTokenVendorRepossessionsManifest, - SolarisFishmongerVendorManifest, - SolarisProspectorVendorManifest, - TeshinHardModeVendorManifest, // uses preprocessing - ZarimanCommisionsManifestArchimedean + getVendorManifestJson("ArchimedeanVendorManifest"), + getVendorManifestJson("DeimosEntratiFragmentVendorProductsManifest"), + getVendorManifestJson("DeimosFishmongerVendorManifest"), + getVendorManifestJson("DeimosHivemindCommisionsManifestFishmonger"), + getVendorManifestJson("DeimosHivemindCommisionsManifestPetVendor"), + getVendorManifestJson("DeimosHivemindCommisionsManifestProspector"), + getVendorManifestJson("DeimosHivemindCommisionsManifestTokenVendor"), + getVendorManifestJson("DeimosHivemindCommisionsManifestWeaponsmith"), + getVendorManifestJson("DeimosHivemindTokenVendorManifest"), + getVendorManifestJson("DeimosPetVendorManifest"), + getVendorManifestJson("DeimosProspectorVendorManifest"), + getVendorManifestJson("DuviriAcrithisVendorManifest"), + getVendorManifestJson("EntratiLabsEntratiLabsCommisionsManifest"), + getVendorManifestJson("EntratiLabsEntratiLabVendorManifest"), + getVendorManifestJson("GuildAdvertisementVendorManifest"), // uses preprocessing + getVendorManifestJson("HubsIronwakeDondaVendorManifest"), // uses preprocessing + getVendorManifestJson("HubsPerrinSequenceWeaponVendorManifest"), + getVendorManifestJson("HubsRailjackCrewMemberVendorManifest"), + getVendorManifestJson("InfestedLichWeaponVendorManifest"), + getVendorManifestJson("MaskSalesmanManifest"), + getVendorManifestJson("Nova1999ConquestShopManifest"), + getVendorManifestJson("OstronFishmongerVendorManifest"), + getVendorManifestJson("OstronPetVendorManifest"), + getVendorManifestJson("OstronProspectorVendorManifest"), + getVendorManifestJson("RadioLegionIntermission12VendorManifest"), + getVendorManifestJson("SolarisDebtTokenVendorManifest"), + getVendorManifestJson("SolarisDebtTokenVendorRepossessionsManifest"), + getVendorManifestJson("SolarisFishmongerVendorManifest"), + getVendorManifestJson("SolarisProspectorVendorManifest"), + getVendorManifestJson("TeshinHardModeVendorManifest"), // uses preprocessing + getVendorManifestJson("ZarimanCommisionsManifestArchimedean") ]; export const getVendorManifestByTypeName = (typeName: string): IVendorManifest | undefined => { diff --git a/src/types/vendorTypes.ts b/src/types/vendorTypes.ts index d7dbd749..0aa5b83e 100644 --- a/src/types/vendorTypes.ts +++ b/src/types/vendorTypes.ts @@ -19,6 +19,7 @@ interface IItemManifest { PurchaseQuantityLimit?: number; RotatedWeekly?: boolean; AllowMultipurchase: boolean; + LocTagRandSeed?: number | bigint; Id: IOid; }