From b6bb71ada0868591028dc64f8dc2809f2f9618af Mon Sep 17 00:00:00 2001 From: Chomp Date: Sun, 29 Dec 2024 20:31:32 +0000 Subject: [PATCH] Improved `getCustomisationStorage()` handling of new profiles just after creation --- .../controllers/CustomizationController.ts | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/project/src/controllers/CustomizationController.ts b/project/src/controllers/CustomizationController.ts index 512aa0d1..ff4a0a8f 100644 --- a/project/src/controllers/CustomizationController.ts +++ b/project/src/controllers/CustomizationController.ts @@ -11,6 +11,7 @@ import type { ICustomizationSetRequest } from "@spt/models/eft/customization/ICu import type { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData"; import type { IHideoutCustomisation } from "@spt/models/eft/hideout/IHideoutCustomisation"; import type { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { GameEditions } from "@spt/models/enums/GameEditions"; import { ItemTpl } from "@spt/models/enums/ItemTpl"; import type { ILogger } from "@spt/models/spt/utils/ILogger"; @@ -257,9 +258,10 @@ export class CustomizationController { const customisationResultsClone = this.cloner.clone(this.databaseService.getTemplates().customisationStorage); // Some game versions have additional dogtag variants, add them - const profile = this.profileHelper.getPmcProfile(sessionID); - switch (profile.Info.GameVersion) { + const profile = this.profileHelper.getFullProfile(sessionID); + switch (this.getGameEdition(profile)) { case GameEditions.EDGE_OF_DARKNESS: + // Gets EoD tags customisationResultsClone.push({ id: ItemTpl.BARTER_DOGTAG_BEAR_EOD, type: "dogTag", @@ -274,6 +276,19 @@ export class CustomizationController { break; case GameEditions.UNHEARD: + // Gets EoD+Unheard tags + customisationResultsClone.push({ + id: ItemTpl.BARTER_DOGTAG_BEAR_EOD, + type: "dogTag", + source: "default", + }); + + customisationResultsClone.push({ + id: ItemTpl.BARTER_DOGTAG_USEC_EOD, + type: "dogTag", + source: "default", + }); + customisationResultsClone.push({ id: ItemTpl.BARTER_DOGTAG_BEAR_TUE, type: "dogTag", @@ -291,6 +306,24 @@ export class CustomizationController { return customisationResultsClone; } + protected getGameEdition(profile: ISptProfile): string { + const edition = profile.characters?.pmc?.Info?.GameVersion; + if (!edition) { + // Edge case - profile not created yet, fall back to what launcher has set + const launcherEdition = profile.info.edition; + switch (launcherEdition.toLowerCase()) { + case "edge of darkness": + return GameEditions.EDGE_OF_DARKNESS; + case "unheard": + return GameEditions.UNHEARD; + default: + return GameEditions.STANDARD; + } + } + + return edition; + } + /** Handle CustomizationSet event */ public setClothing( sessionId: string,