3.9.0-DEV #31

Closed
chomp wants to merge 9 commits from 3.9.0-DEV into master
144 changed files with 864 additions and 528 deletions
Showing only changes of commit e23289e57e - Show all commits

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

View File

@ -27,7 +27,8 @@ export interface FenceConfig {
presetPriceMult: number; presetPriceMult: number;
armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax; armorMaxDurabilityPercentMinMax: IItemDurabilityCurrentMax;
weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax; weaponDurabilityPercentMinMax: IItemDurabilityCurrentMax;
chancePlateExistsInArmorPercent: number; /** Keyed to plate protection level */
chancePlateExistsInArmorPercent: Record<string, number>;
/** Key: item tpl */ /** Key: item tpl */
itemStackSizeOverrideMinMax: Record<string, MinMax>; itemStackSizeOverrideMinMax: Record<string, MinMax>;
itemTypeLimits: Record<string, number>; itemTypeLimits: Record<string, number>;

View File

@ -4,7 +4,7 @@ import { PresetHelper } from "@spt/helpers/PresetHelper";
import { IFenceLevel } from "@spt/models/eft/common/IGlobals"; import { IFenceLevel } from "@spt/models/eft/common/IGlobals";
import { IPmcData } from "@spt/models/eft/common/IPmcData"; import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item, Repairable } from "@spt/models/eft/common/tables/IItem"; import { Item, Repairable } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; import { ITemplateItem, Slot } from "@spt/models/eft/common/tables/ITemplateItem";
import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader"; import { IBarterScheme, ITraderAssort } from "@spt/models/eft/common/tables/ITrader";
import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig"; import { IItemDurabilityCurrentMax, ITraderConfig } from "@spt/models/spt/config/ITraderConfig";
import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult"; import { ICreateFenceAssortsResult } from "@spt/models/spt/fence/ICreateFenceAssortsResult";
@ -254,6 +254,19 @@ export declare class FenceService {
* @param itemDbDetails Armor items db template * @param itemDbDetails Armor items db template
*/ */
protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void; protected randomiseArmorModDurability(armor: Item[], itemDbDetails: ITemplateItem): void;
/**
* Randomise the durability values of items on armor with a passed in slot
* @param softInsertSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorSoftInsertDurabilities(softInsertSlots: Slot[], armorItemAndMods: Item[]): void;
/**
* Randomise the durability values of plate items in armor
* Has chance to remove plate
* @param plateSlots Slots of items to randomise
* @param armorItemAndMods Array of armor + inserts to get items from
*/
protected randomiseArmorInsertsDurabilities(plateSlots: Slot[], armorItemAndMods: Item[]): void;
/** /**
* Get stack size of a singular item (no mods) * Get stack size of a singular item (no mods)
* @param itemDbDetails item being added to fence * @param itemDbDetails item being added to fence

View File

@ -148,11 +148,12 @@ export declare class RepeatableQuestController {
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/** /**
* Some accounts have access to repeatable quest refreshes for free * Some accounts have access to free repeatable quest refreshes
* Track the usage of them inside players profile * Track the usage of them inside players profile
* @param fullProfile Profile of player * @param fullProfile Player profile
* @param repeatableSubType Can be daily/weekly/scav repeatables * @param repeatableSubType Can be daily / weekly / scav repeatable
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav * @param repeatableTypeName Subtype of repeatable quest: daily / weekly / scav
* @returns Is the repeatable being replaced for free
*/ */
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void; protected useFreeRefreshIfAvailable(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): boolean;
} }

View File

@ -170,7 +170,7 @@ export declare class RagfairOfferGenerator {
* @param tpl Item to look for matching condition object * @param tpl Item to look for matching condition object
* @returns condition id * @returns condition id
*/ */
protected getDynamicConditionIdForTpl(tpl: string): string; protected getDynamicConditionIdForTpl(tpl: string): string | undefined;
/** /**
* Alter an items condition based on its item base type * Alter an items condition based on its item base type
* @param conditionSettingsId also the parentId of item being altered * @param conditionSettingsId also the parentId of item being altered

View File

@ -22,12 +22,12 @@ export declare class HealthHelper {
*/ */
resetVitality(sessionID: string): ISptProfile; resetVitality(sessionID: string): ISptProfile;
/** /**
* Update player profile with changes from request object * Update player profile vitality values with changes from client request object
* @param pmcData Player profile * @param pmcData Player profile
* @param request Heal request * @param request Heal request
* @param sessionID Session id * @param sessionID Session id
* @param addEffects Should effects be added or removed (default - add) * @param addEffects Should effects be added to profile (default - true)
* @param deleteExistingEffects Should all prior effects be removed before apply new ones * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true)
*/ */
saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void; saveVitality(pmcData: IPmcData, request: ISyncHealthRequestData, sessionID: string, addEffects?: boolean, deleteExistingEffects?: boolean): void;
/** /**

View File

@ -9,9 +9,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; import { Inventory } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; import { Item, Upd } from "@spt/models/eft/common/tables/IItem";
import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest"; import { IAddItemDirectRequest } from "@spt/models/eft/inventory/IAddItemDirectRequest";
import { AddItem } from "@spt/models/eft/inventory/IAddItemRequestData";
import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest"; import { IAddItemsDirectRequest } from "@spt/models/eft/inventory/IAddItemsDirectRequest";
import { IAddItemTempObject } from "@spt/models/eft/inventory/IAddItemTempObject";
import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData"; import { IInventoryMergeRequestData } from "@spt/models/eft/inventory/IInventoryMergeRequestData";
import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData"; import { IInventoryMoveRequestData } from "@spt/models/eft/inventory/IInventoryMoveRequestData";
import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData"; import { IInventoryRemoveRequestData } from "@spt/models/eft/inventory/IInventoryRemoveRequestData";
@ -106,19 +104,12 @@ export declare class InventoryHelper {
* Find a location to place an item into inventory and place it * Find a location to place an item into inventory and place it
* @param stashFS2D 2-dimensional representation of the container slots * @param stashFS2D 2-dimensional representation of the container slots
* @param sortingTableFS2D 2-dimensional representation of the sorting table slots * @param sortingTableFS2D 2-dimensional representation of the sorting table slots
* @param itemWithChildren Item to place * @param itemWithChildren Item to place with children
* @param playerInventory * @param playerInventory Players inventory
* @param useSortingTable Should sorting table to be used if main stash has no space * @param useSortingTable Should sorting table to be used if main stash has no space
* @param output output to send back to client * @param output output to send back to client
*/ */
protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: Item[], playerInventory: Inventory, useSortingTable: boolean, output: IItemEventRouterResponse): void;
/**
* Split an items stack size based on its StackMaxSize value
* @param assortItems Items to add to inventory
* @param requestItem Details of purchased item to add to inventory
* @param result Array split stacks are appended to
*/
protected splitStackIntoSmallerChildStacks(assortItems: Item[], requestItem: AddItem, result: IAddItemTempObject[]): void;
/** /**
* Handle Remove event * Handle Remove event
* Remove item from player inventory + insured items array * Remove item from player inventory + insured items array
@ -154,6 +145,14 @@ export declare class InventoryHelper {
* @returns [width, height] * @returns [width, height]
*/ */
getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[];
/**
* Calculates the size of an item including attachements
* takes into account if item is folded
* @param itemTpl Items template id
* @param itemID Items id
* @param inventoryItemHash Hashmap of inventory items
* @returns An array representing the [width, height] of the item
*/
protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[]; protected getSizeByInventoryItemHash(itemTpl: string, itemID: string, inventoryItemHash: InventoryHelper.InventoryItemHash): number[];
/** /**
* Get a blank two-dimentional representation of a container * Get a blank two-dimentional representation of a container

Some files were not shown because too many files have changed in this diff Show More