mirror of
https://github.com/sp-tarkov/server.git
synced 2025-02-13 09:50:43 -05:00
Implemented updated endpoint for applying clothing to a players character
Fixed dogtag customisation choice not being saved to the correct parameter Removed dead endpoint
This commit is contained in:
parent
502f08c414
commit
d5f9c1f253
@ -42,17 +42,6 @@ export class CustomizationCallbacks {
|
|||||||
return this.httpResponse.getBody(this.customizationController.getTraderSuits(traderID, sessionID));
|
return this.httpResponse.getBody(this.customizationController.getTraderSuits(traderID, sessionID));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle CustomizationWear event
|
|
||||||
*/
|
|
||||||
public wearClothing(
|
|
||||||
pmcData: IPmcData,
|
|
||||||
body: IWearClothingRequestData,
|
|
||||||
sessionID: string,
|
|
||||||
): IItemEventRouterResponse {
|
|
||||||
return this.customizationController.wearClothing(pmcData, body, sessionID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle CustomizationBuy event
|
* Handle CustomizationBuy event
|
||||||
*/
|
*/
|
||||||
|
@ -7,13 +7,14 @@ import type {
|
|||||||
IBuyClothingRequestData,
|
IBuyClothingRequestData,
|
||||||
IPaymentItemForClothing,
|
IPaymentItemForClothing,
|
||||||
} from "@spt/models/eft/customization/IBuyClothingRequestData";
|
} from "@spt/models/eft/customization/IBuyClothingRequestData";
|
||||||
import type { ICustomizationSetRequest } from "@spt/models/eft/customization/ICustomizationSetRequest";
|
import type {
|
||||||
import type { IWearClothingRequestData } from "@spt/models/eft/customization/IWearClothingRequestData";
|
CustomizationSetOption,
|
||||||
|
ICustomizationSetRequest,
|
||||||
|
} from "@spt/models/eft/customization/ICustomizationSetRequest";
|
||||||
import type { IHideoutCustomisation } from "@spt/models/eft/hideout/IHideoutCustomisation";
|
import type { IHideoutCustomisation } from "@spt/models/eft/hideout/IHideoutCustomisation";
|
||||||
import type { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
|
import type { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
|
||||||
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
|
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
|
||||||
import { GameEditions } from "@spt/models/enums/GameEditions";
|
import { GameEditions } from "@spt/models/enums/GameEditions";
|
||||||
import { ItemTpl } from "@spt/models/enums/ItemTpl";
|
|
||||||
import type { ILogger } from "@spt/models/spt/utils/ILogger";
|
import type { ILogger } from "@spt/models/spt/utils/ILogger";
|
||||||
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
|
import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
|
||||||
import { SaveServer } from "@spt/servers/SaveServer";
|
import { SaveServer } from "@spt/servers/SaveServer";
|
||||||
@ -63,34 +64,6 @@ export class CustomizationController {
|
|||||||
return matchedSuits;
|
return matchedSuits;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle CustomizationWear event
|
|
||||||
* Equip one to many clothing items to player
|
|
||||||
*/
|
|
||||||
public wearClothing(
|
|
||||||
pmcData: IPmcData,
|
|
||||||
wearClothingRequest: IWearClothingRequestData,
|
|
||||||
sessionID: string,
|
|
||||||
): IItemEventRouterResponse {
|
|
||||||
for (const suitId of wearClothingRequest.suites) {
|
|
||||||
// Find desired clothing item in db
|
|
||||||
const dbSuit = this.databaseService.getCustomization()[suitId];
|
|
||||||
|
|
||||||
// Legs
|
|
||||||
if (dbSuit._parent === this.clothingIds.lowerParentId) {
|
|
||||||
pmcData.Customization.Feet = dbSuit._props.Feet;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Torso
|
|
||||||
if (dbSuit._parent === this.clothingIds.upperParentId) {
|
|
||||||
pmcData.Customization.Body = dbSuit._props.Body;
|
|
||||||
pmcData.Customization.Hands = dbSuit._props.Hands;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.eventOutputHolder.getOutput(sessionID);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle CustomizationBuy event
|
* Handle CustomizationBuy event
|
||||||
* Purchase/unlock a clothing item from a trader
|
* Purchase/unlock a clothing item from a trader
|
||||||
@ -350,9 +323,48 @@ export class CustomizationController {
|
|||||||
pmcData: IPmcData,
|
pmcData: IPmcData,
|
||||||
): IItemEventRouterResponse {
|
): IItemEventRouterResponse {
|
||||||
for (const customisation of request.customizations) {
|
for (const customisation of request.customizations) {
|
||||||
pmcData.Customization[customisation.type] = customisation.id;
|
switch (customisation.type) {
|
||||||
|
case "dogTag":
|
||||||
|
pmcData.Customization.DogTag = customisation.id;
|
||||||
|
break;
|
||||||
|
case "suite":
|
||||||
|
this.applyClothingItemToProfile(customisation, pmcData);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.logger.error(`Unhandled customisation type: ${customisation.type}`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.eventOutputHolder.getOutput(sessionId);
|
return this.eventOutputHolder.getOutput(sessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies a purchsed suit to the players doll
|
||||||
|
* @param customisation Suit to apply to profile
|
||||||
|
* @param pmcData Profile to update
|
||||||
|
*/
|
||||||
|
protected applyClothingItemToProfile(customisation: CustomizationSetOption, pmcData: IPmcData): void {
|
||||||
|
const dbSuit = this.databaseService.getCustomization()[customisation.id];
|
||||||
|
if (!dbSuit) {
|
||||||
|
this.logger.error(
|
||||||
|
`Unable to find suit customisation id: ${customisation.id}, cannot apply clothing to player profile: ${pmcData._id}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Body
|
||||||
|
if (dbSuit._parent === this.clothingIds.upperParentId) {
|
||||||
|
pmcData.Customization.Body = dbSuit._props.Body;
|
||||||
|
pmcData.Customization.Hands = dbSuit._props.Hands;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Feet
|
||||||
|
if (dbSuit._parent === this.clothingIds.lowerParentId) {
|
||||||
|
pmcData.Customization.Feet = dbSuit._props.Feet;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,6 @@ export class CustomizationItemEventRouter extends ItemEventRouterDefinition {
|
|||||||
sessionID: string,
|
sessionID: string,
|
||||||
): Promise<IItemEventRouterResponse> {
|
): Promise<IItemEventRouterResponse> {
|
||||||
switch (url) {
|
switch (url) {
|
||||||
case "CustomizationWear":
|
|
||||||
return this.customizationCallbacks.wearClothing(pmcData, body, sessionID);
|
|
||||||
case "CustomizationBuy":
|
case "CustomizationBuy":
|
||||||
return this.customizationCallbacks.buyClothing(pmcData, body, sessionID);
|
return this.customizationCallbacks.buyClothing(pmcData, body, sessionID);
|
||||||
case "CustomizationSet":
|
case "CustomizationSet":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user