Updated types to match server

This commit is contained in:
Dev 2024-06-17 12:54:45 +01:00
parent 8251c88f22
commit d187862220
744 changed files with 102120 additions and 5136 deletions

View File

@ -74,8 +74,11 @@ export declare class GameController {
* Handle client/game/start
*/
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
protected adjustHideoutCraftTimes(): void;
protected adjustHideoutBuildTimes(): void;
protected adjustHideoutCraftTimes(overrideSeconds: number): void;
/**
* Adjust all hideout craft times to be no higher than the override
*/
protected adjustHideoutBuildTimes(overrideSeconds: number): void;
protected adjustLocationBotValues(): void;
/**
* Out of date/incorrectly made trader mods forget this data
@ -122,7 +125,7 @@ export declare class GameController {
* @param pmcProfile Player profile
*/
protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void;
protected flagAllItemsInDbAsSellableOnFlea(): void;
protected setAllDbItemsAsSellableOnFlea(): void;
/**
* When player logs in, iterate over all active effects and reduce timer
* @param pmcProfile Profile to adjust values for

View File

@ -48,7 +48,6 @@ export declare class InsuranceController {
protected configServer: ConfigServer;
protected cloner: ICloner;
protected insuranceConfig: IInsuranceConfig;
protected roubleTpl: string;
constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/**
* Process insurance items of all profiles prior to being given back to the player through the mail service.

View File

@ -34,6 +34,7 @@ import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService";
import { LocalisationService } from "@spt/services/LocalisationService";
import { MapMarkerService } from "@spt/services/MapMarkerService";
import { PlayerService } from "@spt/services/PlayerService";
import { RagfairOfferService } from "@spt/services/RagfairOfferService";
import { ICloner } from "@spt/utils/cloners/ICloner";
@ -52,6 +53,7 @@ export declare class InventoryController {
protected questHelper: QuestHelper;
protected hideoutHelper: HideoutHelper;
protected ragfairOfferService: RagfairOfferService;
protected mapMarkerService: MapMarkerService;
protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper;
protected traderHelper: TraderHelper;
@ -61,7 +63,7 @@ export declare class InventoryController {
protected eventOutputHolder: EventOutputHolder;
protected httpResponseUtil: HttpResponseUtil;
protected cloner: ICloner;
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, mapMarkerService: MapMarkerService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
/**
* Move Item
* change location of item with parentId and slotId
@ -215,12 +217,6 @@ export declare class InventoryController {
* @param output Client response
*/
editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
/**
* Handle OpenRandomLootContainer event
* Handle event fired when a container is unpacked (currently only the halloween pumpkin)

View File

@ -47,7 +47,6 @@ export declare class ProfileController {
protected dialogueHelper: DialogueHelper;
protected questHelper: QuestHelper;
protected profileHelper: ProfileHelper;
protected defaultInventoryTpl: string;
constructor(logger: ILogger, hashUtil: HashUtil, cloner: ICloner, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper);
/**
* Handle /launcher/profiles

View File

@ -5,6 +5,7 @@ import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest";
import { ELocationName } from "@spt/models/enums/ELocationName";
import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig";
@ -66,6 +67,12 @@ export declare class RepeatableQuestController {
* @returns {array} Array of "repeatableQuestObjects" as described above
*/
getClientRepeatableQuests(sessionID: string): IPmcDataRepeatableQuest[];
/**
* Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests
* @param generatedRepeatables Repeatables to process (daily/weekly)
* @param pmcData Player profile
*/
protected processExpiredQuests(generatedRepeatables: IPmcDataRepeatableQuest, pmcData: IPmcData): void;
/**
* Check if a repeatable quest type (daily/weekly) is active for the given profile
* @param repeatableConfig Repeatable quest config
@ -140,4 +147,12 @@ export declare class RepeatableQuestController {
*/
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/**
* Some accounts have access to repeatable quest refreshes for free
* Track the usage of them inside players profile
* @param fullProfile Profile of player
* @param repeatableSubType Can be daily/weekly/scav repeatables
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav
*/
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void;
}

View File

@ -42,7 +42,6 @@ export declare class TradeController {
protected ragfairPriceService: RagfairPriceService;
protected mailSendService: MailSendService;
protected configServer: ConfigServer;
protected roubleTpl: string;
protected ragfairConfig: IRagfairConfig;
protected traderConfig: ITraderConfig;
constructor(logger: ILogger, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer);

View File

@ -78,13 +78,14 @@ export declare class BotGenerator {
* @returns IBotBase object
*/
protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase;
protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void;
/**
* Remove items from item.json/lootableItemBlacklist from bots inventory
* @param botInventory Bot to filter
*/
protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void;
/**
* Choose various appearance settings for a bot using weights
* Choose various appearance settings for a bot using weights: head/body/feet/hands
* @param bot Bot to adjust
* @param appearance Appearance settings to choose from
* @param botGenerationDetails Generation details
@ -143,12 +144,25 @@ export declare class BotGenerator {
* Chooses from all the game versions (standard, eod etc)
* Chooses account type (default, Sherpa, etc)
* @param botInfo bot info object to update
* @returns Chosen game version
*/
protected getRandomisedGameVersionAndCategory(botInfo: Info): void;
protected setRandomisedGameVersionAndCategory(botInfo: Info): string;
/**
* Add a side-specific (usec/bear) dogtag item to a bots inventory
* @param bot bot to add dogtag to
* @returns Bot with dogtag added
*/
protected addDogtagToBot(bot: IBotBase): void;
/**
* Get a dogtag tpl that matches the bots game version and side
* @param side Usec/Bear
* @param gameVersion edge_of_darkness / standard
* @returns item tpl
*/
protected getDogtagTplByGameVersionAndSide(side: string, gameVersion: string): string;
/**
* Adjust a PMCs pocket tpl to UHD if necessary, otherwise do nothing
* @param bot Pmc object to adjust
*/
protected setPmcPocketsByGameVersion(bot: IBotBase): void;
}

View File

@ -40,9 +40,10 @@ export declare class BotInventoryGenerator {
* @param botRole Role bot has (assault/pmcBot)
* @param isPmc Is bot being converted into a pmc
* @param botLevel Level of bot being generated
* @param chosenGameVersion Game version for bot, only really applies for PMCs
* @returns PmcInventory object with equipment/weapons/loot
*/
generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number): PmcInventory;
generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number, chosenGameVersion: string): PmcInventory;
/**
* Create a pmcInventory object with all the base/generic items needed
* @returns PmcInventory object
@ -55,8 +56,9 @@ export declare class BotInventoryGenerator {
* @param botRole Role bot has (assault/pmcBot)
* @param botInventory Inventory to add equipment to
* @param botLevel Level of bot
* @param chosenGameVersion Game version for bot, only really applies for PMCs
*/
protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number): void;
protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void;
/**
* Remove non-armored rigs from parameter data
* @param templateInventory
@ -133,4 +135,6 @@ export interface IGenerateEquipmentProperties {
botEquipmentConfig: EquipmentFilters;
/** Settings from bot.json to adjust how item is generated */
randomisationDetails: RandomisationDetails;
/** OPTIONAL - Do not generate mods for tpls in this array */
generateModsBlacklist?: string[];
}

View File

@ -44,7 +44,7 @@ export declare class LootGenerator {
* @param options Loot request options - armor level etc
* @returns True if item has desired armor level
*/
protected armorIsDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
/**
* Construct item limit record to hold max and current item count for each item type
* @param limits limits as defined in config

View File

@ -23,7 +23,6 @@ export declare class PMCLootGenerator {
protected vestLootPool: Record<string, number>;
protected backpackLootPool: Record<string, number>;
protected pmcConfig: IPmcConfig;
protected roubleTpl: string;
constructor(itemHelper: ItemHelper, databaseService: DatabaseService, configServer: ConfigServer, itemFilterService: ItemFilterService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, weightedRandomHelper: WeightedRandomHelper);
/**
* Create an array of loot items a PMC can have in their pockets
@ -42,6 +41,13 @@ export declare class PMCLootGenerator {
* @returns true if it fits
*/
protected itemFitsInto2By2Slot(item: ITemplateItem): boolean;
/**
* Check if item has a width/height that lets it fit into a 1x2 slot
* 1x1 / 1x2 / 2x1
* @param item Item to check size of
* @returns true if it fits
*/
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
/**
* Create an array of loot items a PMC can have in their backpack
* @returns string array of tpls

View File

@ -39,8 +39,6 @@ export declare class HideoutHelper {
static bitcoinFarm: string;
static bitcoinProductionId: string;
static waterCollector: string;
static bitcoinTpl: string;
static expeditionaryFuelTank: string;
static maxSkillPoint: number;
protected hideoutConfig: IHideoutConfig;
constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner);

View File

@ -40,13 +40,13 @@ export declare class InRaidHelper {
* Lookup quest item loss from lostOnDeath config
* @returns True if items should be removed from inventory
*/
removeQuestItemsOnDeath(): boolean;
shouldQuestItemsBeRemovedOnDeath(): boolean;
/**
* Check items array and add an upd object to money with a stack count of 1
* Single stack money items have no upd object and thus no StackObjectsCount, causing issues
* @param items Items array to check
*/
addUpdToMoneyFromRaid(items: Item[]): void;
addStackCountToMoneyFromRaid(items: Item[]): void;
/**
* Reset a profile to a baseline, used post-raid
* Reset points earned during session property
@ -86,6 +86,7 @@ export declare class InRaidHelper {
* @param postRaidProfile Profile sent by client with post-raid quests
*/
protected processAlteredQuests(sessionId: string, pmcData: IPmcData, preRaidQuests: IQuestStatus[], postRaidProfile: IPostRaidPmcData): void;
protected handleFailRestartableQuestStatus(pmcData: IPmcData, postRaidProfile: IPostRaidPmcData, postRaidQuest: IQuestStatus): void;
/**
* Take body part effects from client profile and apply to server profile
* @param saveProgressRequest post-raid request

View File

@ -19,6 +19,7 @@ import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventory
import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { IInventoryConfig, RewardDetails } from "@spt/models/spt/config/IInventoryConfig";
import { IOwnerInventoryItems } from "@spt/models/spt/inventory/IOwnerInventoryItems";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
@ -27,14 +28,6 @@ import { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
export interface IOwnerInventoryItems {
/** Inventory items from source */
from: Item[];
/** Inventory items at destination */
to: Item[];
sameInventory: boolean;
isMail: boolean;
}
export declare class InventoryHelper {
protected logger: ILogger;
protected hashUtil: HashUtil;
@ -220,17 +213,17 @@ export declare class InventoryHelper {
*/
protected getStashType(sessionID: string): string;
/**
* Internal helper function to transfer an item from one profile to another.
* @param fromItems Inventory of the source (can be non-player)
* Internal helper function to transfer an item + children from one profile to another.
* @param sourceItems Inventory of the source (can be non-player)
* @param toItems Inventory of the destination
* @param body Move request
* @param request Move request
*/
moveItemToProfile(fromItems: Item[], toItems: Item[], body: IInventoryMoveRequestData): void;
moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void;
/**
* Internal helper function to move item within the same profile_f.
* @param pmcData profile to edit
* @param inventoryItems
* @param moveRequest
* @param moveRequest client move request
* @returns True if move was successful
*/
moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): {
@ -246,7 +239,7 @@ export declare class InventoryHelper {
/**
* Internal helper function to handle cartridges in inventory if any of them exist.
*/
protected handleCartridges(items: Item[], body: IInventoryMoveRequestData): void;
protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void;
/**
* Get details for how a random loot container should be handled, max rewards, possible reward tpls
* @param itemTpl Container being opened

View File

@ -4,6 +4,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { InsuredItem } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ItemTpl } from "@spt/models/enums/ItemTpl";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { ItemBaseClassService } from "@spt/services/ItemBaseClassService";
@ -34,6 +35,22 @@ export declare class ItemHelper {
protected cloner: ICloner;
protected readonly defaultInvalidBaseTypes: string[];
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService, compareUtil: CompareUtil, cloner: ICloner);
/**
* Does the provided pool of items contain the desired item
* @param itemPool Item collection to check
* @param item Item to look for
* @param slotId OPTIONAL - slotid of desired item
* @returns True if pool contains item
*/
hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean;
/**
* Get the first item from provided pool with the desired tpl
* @param itemPool Item collection to search
* @param item Item to look for
* @param slotId OPTIONAL - slotid of desired item
* @returns Item or undefined
*/
getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined;
/**
* This method will compare two items (with all its children) and see if the are equivalent.
* This method will NOT compare IDs on the items

View File

@ -197,4 +197,5 @@ export declare class ProfileHelper {
* @param achievementId Id of achievement to add
*/
addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void;
hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean;
}

View File

@ -15,6 +15,7 @@ export declare class RagfairSortHelper {
*/
sortOffers(offers: IRagfairOffer[], type: RagfairSort, direction?: number): IRagfairOffer[];
protected sortOffersByID(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByBarter(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByRating(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByName(a: IRagfairOffer, b: IRagfairOffer): number;
/**

View File

@ -1016,6 +1016,10 @@ export interface IInsurance {
MaxStorageTimeInHour: number;
CoefOfSendingMessageTime: number;
CoefOfHavingMarkOfUnknown: number;
EditionSendingMessageTime: Record<string, IMessageSendTImeMultipler>;
}
export interface IMessageSendTImeMultipler {
multiplier: number;
}
export interface ISkillsSettings {
SkillProgressRate: number;
@ -1427,6 +1431,8 @@ export interface IFenceLevel {
PriceModTaxi: number;
PriceModDelivery: number;
PriceModCleanUp: number;
ReactOnMarkOnUnknowns: boolean;
ReactOnMarkOnUnknownsPVE: boolean;
DeliveryGridSize: Ixyz;
CanInteractWithBtr: boolean;
}

View File

@ -25,9 +25,9 @@ export interface ITemplateSide {
}
export interface ProfileTraderTemplate {
initialLoyaltyLevel: Record<string, number>;
initialStanding: Record<string, number>;
setQuestsAvailableForStart?: boolean;
setQuestsAvailableForFinish?: boolean;
initialStanding: number;
initialSalesSum: number;
jaegerUnlocked: boolean;
/** How many days is usage of the flea blocked for upon profile creation */

View File

@ -169,7 +169,7 @@ export interface Spt {
/** item TPLs blacklisted from being sold on flea for this profile */
blacklistedItemTpls?: string[];
/** key: daily type */
freeRepeatableChangeCount: Record<string, number>;
freeRepeatableRefreshUsedCount: Record<string, number>;
}
export interface ModDetails {
name: string;

View File

@ -69,8 +69,6 @@ export declare enum BaseClasses {
STATIONARY_CONTAINER = "567583764bdc2d98058b456e",
POCKETS = "557596e64bdc2dc2118b4571",
ARMBAND = "5b3f15d486f77432d0509248",
DOG_TAG_USEC = "59f32c3b86f77472a31742f0",
DOG_TAG_BEAR = "59f32bb586f774757e1e8442",
JEWELRY = "57864a3d24597754843f8721",
ELECTRONICS = "57864a66245977548f04a81f",
BUILDING_MATERIAL = "57864ada245977548638de91",

View File

@ -0,0 +1,8 @@
export declare enum GameEditions {
STANDARD = "standard",
LEFT_BEHIND = "left_behind",
PREPARE_FOR_ESCAPE = "prepare_for_escape",
EDGE_OF_DARKNESS = "edge_of_darkness",
UNHEARD = "unheard_edition",
TOURNAMENT = "tournament_live"
}

File diff suppressed because it is too large Load Diff

View File

@ -9,5 +9,6 @@ export declare enum MemberCategory {
CHAT_MODERATOR_WITH_PERMANENT_BAN = 64,
UNIT_TEST = 128,
SHERPA = 256,
EMISSARY = 512
EMISSARY = 512,
UNHEARD = 1024
}

View File

@ -1,5 +1,6 @@
export declare enum RagfairSort {
ID = 0,
BARTER = 2,
RATING = 3,
OFFER_TITLE = 4,
PRICE = 5,

View File

@ -1,172 +0,0 @@
export declare enum Weapons127x55 {
ASH_12 = "5cadfbf7ae92152ac412eeef",
RSH_12 = "633ec7c2a6918cb895019c6c"
}
export declare enum Weapons86x70 {
MK_18 = "5fc22d7c187fea44d52eda44",
AXMC = "627e14b21713922ded6f2c15"
}
export declare enum Weapons9x39 {
AS_VAL = "57c44b372459772d2b39b8ce",
VSS_VINTOREZ = "57838ad32459774a17445cd2",
KBP_9A_91 = "644674a13d52156624001fbc",
VSK_94 = "645e0c6b3b381ede770e1cc9"
}
export declare enum Weapons762x54R {
SVDS = "5c46fbd72e2216398b5a8c9c",
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SV_98 = "55801eed4bdc2d89578b4588",
AVT_40 = "6410733d5dd49d77bd07847e",
SVT_40 = "643ea5b23db6f9f57107d9fd",
PKM = "64637076203536ad5600c990",
PKP = "64ca3d3954fc657e230529cc"
}
export declare enum Weapons762x51 {
VPO_101 = "5c501a4d2e221602b412b540",
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
SA_58 = "5b0bbe4e5acfc40dc528a72d",
SCARH_BLACK = "6183afd850224f204c1da514",
SCARH_FDE = "6165ac306ef05c2ce828ef74",
HK_G28 = "6176aca650224f204c1da3fb",
M1A = "5aafa857e5b5b00018480968",
RFB = "5f2a9575926fd9352339381f",
RSASS = "5a367e5dc4a282000e49738f",
SR_25 = "5df8ce05b11454561e39243b",
DVL_10 = "588892092459774ac91d4b11",
M700 = "5bfea6e90db834001b7347f3",
T5000M = "5df24cf80dee1b22f862e9bc"
}
export declare enum Weapons366TKM {
VPO_209 = "59e6687d86f77411d949b251",
VPO_215 = "5de652c31b7e3716273428be"
}
export declare enum Weapons762x39 {
OP_SKS = "587e02ff24597743df3deaeb",
SKS = "574d967124597745970e7c94",
AK_103 = "5ac66d2e5acfc43b321d4b53",
AK_104 = "5ac66d725acfc43b321d4b60",
AKM = "59d6088586f774275f37482f",
AKMN = "5a0ec13bfcdbcb00165aa685",
AKMS = "59ff346386f77477562ff5e2",
AKMSN = "5abcbc27d8ce8700182eceeb",
MK47_MUTANT = "606587252535c57a13424cfd",
RD_704 = "628a60ae6b1d481ff772e9c8",
VPO_136 = "59e6152586f77473dc057aa1",
RPD = "6513ef33e06849f06c0957ca",
RPDN = "65268d8ecb944ff1e90ea385"
}
export declare enum Weapons762x35 {
MCX = "5fbcc1d9016cce60e8341ab3"
}
export declare enum Weapons556x45 {
ADAR_2_15 = "5c07c60e0db834002330051f",
AK_101 = "5ac66cb05acfc40198510a10",
AK_102 = "5ac66d015acfc400180ae6e4",
DT_MDR_556 = "5c488a752e221602b412af63",
HK_416A5 = "5bb2475ed4351e00853264e3",
HK_G36 = "623063e994fc3f7b302a9696",
M4A1 = "5447a9cd4bdc2dbd208b4567",
SCARL_BLACK = "6184055050224f204c1da540",
SCARL_FDE = "618428466ef05c2ce828f218",
TX15_DML = "5d43021ca4b9362eab4b5e25",
AUG_A1 = "62e7c4fba689e8c9c50dfc38",
AUG_A3 = "63171672192e68c5460cebc5"
}
export declare enum Weapons545x39 {
AK_105 = "5ac66d9b5acfc4001633997a",
AK_74 = "5bf3e03b0db834001d2c4a9c",
AK_74M = "5ac4cd105acfc40016339859",
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
AKS_74 = "5bf3e0490db83400196199af",
AKS_74N = "5ab8e9fcd8ce870019439434",
AKS_74U = "57dc2fa62459775949412633",
AKS_74UB = "5839a40f24597726f856b511",
AKS_74UN = "583990e32459771419544dd2",
SAG_AK = "628b5638ad252a16da6dd245",
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
RPK_16 = "5beed0f50db834001c062b12",
AK_12 = "6499849fc93611967b034949"
}
export declare enum Weapons57x28FN {
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
FN_57_FDE = "5d67abc1a4b93614ec50137f",
FN_P90 = "5cc82d76e24e8d00134b4b83"
}
export declare enum Weapons46x30HK {
MP7A1 = "5ba26383d4351e00334c93d9",
MP7A2 = "5bd70322209c4d00d7167b8f"
}
export declare enum Weapons1143x23 {
M1911A1 = "5e81c3cbac2bb513793cdc75",
M45A1 = "5f36a0e5fbf956000b716b65",
USP45 = "6193a720f8ee7e52e42109ed",
UMP45 = "5fc3e272f8b6a877a729eac5",
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
}
export declare enum Weapons9x33R {
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
}
export declare enum Weapons9x21 {
SR_1MP = "59f98b4986f7746f546d2cef",
SR_2M = "62e14904c2699c0ec93adc47"
}
export declare enum Weapons9x19 {
GLOCK_17 = "5a7ae0c351dfba0017554310",
GLOCK_18C = "5b1fa9b25acfc40018633c01",
M9A3 = "5cadc190ae921500103bb3b6",
MP_443 = "576a581d2459771e7b1bc4f1",
P226R = "56d59856d2720bd8418b456a",
PL_15 = "602a9740da11d6478d5a06dc",
CR_200DS = "624c2e8614da335f1e034d8c",
MP5 = "5926bb2186f7744b1c6c6e60",
MP5K = "5d2f0d8048f0356c925bc3b0",
MP9 = "5e00903ae9dc277128008b87",
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
MPX = "58948c8e86f77409493f7266",
PP_19_01 = "59984ab886f7743e98271174",
SAIGA_9 = "59f9cabd86f7743a10721f46",
STM_9 = "60339954d62c9b14ed777c06",
VECTOR_9MM = "5fc3f2d5900b1d5091531e57",
GLOCK_19X = "63088377b5cd696784087147"
}
export declare enum Weapons9x18 {
APB = "5abccb7dd8ce87001773e277",
APS = "5a17f98cfcdbcb0980087290",
PB_SILENCED = "56e0598dd2720bb5668b45a6",
PM = "5448bd6b4bdc2dfc2f8b4569",
PM_T = "579204f224597773d619e051",
PP9_KLIN = "57f4c844245977379d5c14d1",
PP91_KEDR = "57d14d2524597714373db789",
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
}
export declare enum Weapons762x25 {
TT = "571a12c42459771f627b58a0",
TT_GOLD = "5b3b713c5acfc4330140bd8d",
PPSH_41 = "5ea03f7400685063ec28bfa8"
}
export declare enum Weapons12Gauge {
M3_SUPER90 = "6259b864ebedf17603599e88",
M590A1 = "5e870397991fd70db46995c8",
M870 = "5a7828548dc32e5a9c28b516",
MP_133 = "54491c4f4bdc2db1078b4568",
MP_153 = "56dee2bdd2720bc8328b4567",
MP_155 = "606dae0ab0e443224b421bb7",
MP_43_1C = "5580223e4bdc2d1c128b457f",
MTS_255_12 = "60db29ce99594040e04c4a27",
SAIGA_12GA = "576165642459773c7a400233"
}
export declare enum Weapons20Gauge {
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
}
export declare enum Weapons23x75 {
KS_23M = "5e848cc2988a8701445df1e8"
}
export declare enum Weapons68x51 {
MCX_SPEAR = "65290f395ae2ae97b80fdf2d"
}
export declare enum Weapons40x46 {
M32A1 = "6275303a9f372d6ea97f9ec7",
FN40GL = "5e81ebcd8e146c7080625e15"
}

View File

@ -0,0 +1,141 @@
export declare enum Weapons {
ASSAULTCARBINE_762X39_OP_SKS = "587e02ff24597743df3deaeb",
ASSAULTCARBINE_762X39_SKS = "574d967124597745970e7c94",
ASSAULTCARBINE_762X51_VPO_101_VEPR_HUNTER = "5c501a4d2e221602b412b540",
ASSAULTCARBINE_762X54R_AVT_40 = "6410733d5dd49d77bd07847e",
ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd",
ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc",
ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce",
ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9",
ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef",
ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251",
ASSAULTRIFLE_545X39_AKS_74 = "5bf3e0490db83400196199af",
ASSAULTRIFLE_545X39_AKS_74N = "5ab8e9fcd8ce870019439434",
ASSAULTRIFLE_545X39_AKS_74U = "57dc2fa62459775949412633",
ASSAULTRIFLE_545X39_AKS_74UB = "5839a40f24597726f856b511",
ASSAULTRIFLE_545X39_AKS_74UN = "583990e32459771419544dd2",
ASSAULTRIFLE_545X39_AK_105 = "5ac66d9b5acfc4001633997a",
ASSAULTRIFLE_545X39_AK_12 = "6499849fc93611967b034949",
ASSAULTRIFLE_545X39_AK_545 = "628b5638ad252a16da6dd245",
ASSAULTRIFLE_545X39_AK_545_SHORT = "628b9c37a733087d0d7fe84b",
ASSAULTRIFLE_545X39_AK_74 = "5bf3e03b0db834001d2c4a9c",
ASSAULTRIFLE_545X39_AK_74M = "5ac4cd105acfc40016339859",
ASSAULTRIFLE_545X39_AK_74N = "5644bd2b4bdc2d3b4c8b4572",
ASSAULTRIFLE_556X45_ADAR_2_15 = "5c07c60e0db834002330051f",
ASSAULTRIFLE_556X45_AK_101 = "5ac66cb05acfc40198510a10",
ASSAULTRIFLE_556X45_AK_102 = "5ac66d015acfc400180ae6e4",
ASSAULTRIFLE_556X45_AUG_A1 = "62e7c4fba689e8c9c50dfc38",
ASSAULTRIFLE_556X45_AUG_A3 = "63171672192e68c5460cebc5",
ASSAULTRIFLE_556X45_G36 = "623063e994fc3f7b302a9696",
ASSAULTRIFLE_556X45_HK_416A5 = "5bb2475ed4351e00853264e3",
ASSAULTRIFLE_556X45_M4A1 = "5447a9cd4bdc2dbd208b4567",
ASSAULTRIFLE_556X45_MDR = "5c488a752e221602b412af63",
ASSAULTRIFLE_556X45_MK_16 = "6184055050224f204c1da540",
ASSAULTRIFLE_556X45_MK_16_FDE = "618428466ef05c2ce828f218",
ASSAULTRIFLE_556X45_TX_15_DML = "5d43021ca4b9362eab4b5e25",
ASSAULTRIFLE_68X51_SPEAR_68 = "65290f395ae2ae97b80fdf2d",
ASSAULTRIFLE_762X35_MCX_300_BLK = "5fbcc1d9016cce60e8341ab3",
ASSAULTRIFLE_762X39_AKM = "59d6088586f774275f37482f",
ASSAULTRIFLE_762X39_AKMN = "5a0ec13bfcdbcb00165aa685",
ASSAULTRIFLE_762X39_AKMS = "59ff346386f77477562ff5e2",
ASSAULTRIFLE_762X39_AKMSN = "5abcbc27d8ce8700182eceeb",
ASSAULTRIFLE_762X39_AK_103 = "5ac66d2e5acfc43b321d4b53",
ASSAULTRIFLE_762X39_AK_104 = "5ac66d725acfc43b321d4b60",
ASSAULTRIFLE_762X39_MK47 = "606587252535c57a13424cfd",
ASSAULTRIFLE_762X39_RD_704 = "628a60ae6b1d481ff772e9c8",
ASSAULTRIFLE_762X39_VPO_136_VEPR_KM = "59e6152586f77473dc057aa1",
ASSAULTRIFLE_762X51_MDR = "5dcbd56fdbd3d91b3e5468d5",
ASSAULTRIFLE_762X51_MK_17 = "6183afd850224f204c1da514",
ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74",
ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d",
ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702",
FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9",
FLARE_26X75_GREEN = "6217726288ed9f0845317459",
FLARE_26X75_RED = "62178c4d4ecf221597654e3d",
FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766",
GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e",
GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15",
GRENADELAUNCHER_40X46_FN40GL_2 = "639c3fbbd0446708ee622ee9",
MACHINEGUN_30X29_AGS_30 = "5d52cc5ba4b9367408500062",
MACHINEGUN_545X39_NSV_UTYOS = "5cdeb229d7f00c000e7ce174",
MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12",
MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca",
MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385",
MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990",
MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc",
MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b",
MARKSMANRIFLE_762X51_G28 = "6176aca650224f204c1da3fb",
MARKSMANRIFLE_762X51_M1A = "5aafa857e5b5b00018480968",
MARKSMANRIFLE_762X51_RFB = "5f2a9575926fd9352339381f",
MARKSMANRIFLE_762X51_RSASS = "5a367e5dc4a282000e49738f",
MARKSMANRIFLE_762X51_SR_25 = "5df8ce05b11454561e39243b",
MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c",
MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44",
MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2",
PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678",
PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75",
PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65",
PISTOL_45ACP_USP_45 = "6193a720f8ee7e52e42109ed",
PISTOL_57X28_FN_5_7 = "5d3eb3b0a4b93615055e84d2",
PISTOL_57X28_FN_5_7_FDE = "5d67abc1a4b93614ec50137f",
PISTOL_762X25TT_TT = "571a12c42459771f627b58a0",
PISTOL_762X25TT_TT_GOLD_GOLDEN = "5b3b713c5acfc4330140bd8d",
PISTOL_9X18PM_APB = "5abccb7dd8ce87001773e277",
PISTOL_9X18PM_APS = "5a17f98cfcdbcb0980087290",
PISTOL_9X18PM_PB = "56e0598dd2720bb5668b45a6",
PISTOL_9X18PM_PM = "5448bd6b4bdc2dfc2f8b4569",
PISTOL_9X18PM_PM_T = "579204f224597773d619e051",
PISTOL_9X19_GLOCK_17 = "5a7ae0c351dfba0017554310",
PISTOL_9X19_GLOCK_18C = "5b1fa9b25acfc40018633c01",
PISTOL_9X19_GLOCK_19X = "63088377b5cd696784087147",
PISTOL_9X19_M9A3 = "5cadc190ae921500103bb3b6",
PISTOL_9X19_MP_443_GRACH = "576a581d2459771e7b1bc4f1",
PISTOL_9X19_P226R = "56d59856d2720bd8418b456a",
PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc",
PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef",
REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c",
REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27",
REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7",
REVOLVER_9X19_CR_200DS = "624c2e8614da335f1e034d8c",
REVOLVER_9X33R_CR_50DS = "61a4c8884f95bc3b2c5dc96f",
SHOTGUN_12G_590A1 = "5e870397991fd70db46995c8",
SHOTGUN_12G_M3_SUPER_90 = "6259b864ebedf17603599e88",
SHOTGUN_12G_M870 = "5a7828548dc32e5a9c28b516",
SHOTGUN_12G_MP_133 = "54491c4f4bdc2db1078b4568",
SHOTGUN_12G_MP_153 = "56dee2bdd2720bc8328b4567",
SHOTGUN_12G_MP_155 = "606dae0ab0e443224b421bb7",
SHOTGUN_12G_MP_43_1C = "5580223e4bdc2d1c128b457f",
SHOTGUN_12G_SAIGA_12K = "576165642459773c7a400233",
SHOTGUN_12G_SAWED_OFF = "64748cb8de82c85eaf0a273a",
SHOTGUN_20G_TOZ_106 = "5a38e6bac4a2826c6e06d79b",
SHOTGUN_23X75_KS_23M = "5e848cc2988a8701445df1e8",
SHOTGUN_762X54R_MP_18 = "61f7c9e189e6fb1a5e3ea78d",
SIGNALPISTOL_26X75_SP_81 = "620109578d82e67e7911abf2",
SMG_45ACP_UMP_45 = "5fc3e272f8b6a877a729eac5",
SMG_45ACP_VECTOR_45ACP = "5fb64bc92b1b027b1f50bcf2",
SMG_46X30_MP7A1 = "5ba26383d4351e00334c93d9",
SMG_46X30_MP7A2 = "5bd70322209c4d00d7167b8f",
SMG_57X28_P90 = "5cc82d76e24e8d00134b4b83",
SMG_762X25TT_PPSH41 = "5ea03f7400685063ec28bfa8",
SMG_9X18PMM_PP_9_KLIN = "57f4c844245977379d5c14d1",
SMG_9X18PM_PP_91_01_KEDR_B = "57f3c6bd24597738e730fa2f",
SMG_9X18PM_PP_91_KEDR = "57d14d2524597714373db789",
SMG_9X19_MP5K_N = "5d2f0d8048f0356c925bc3b0",
SMG_9X19_MP5_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60",
SMG_9X19_MP9 = "5e00903ae9dc277128008b87",
SMG_9X19_MP9_N = "5de7bd7bfd6b4e6e2276dc25",
SMG_9X19_MPX = "58948c8e86f77409493f7266",
SMG_9X19_PP_19_01 = "59984ab886f7743e98271174",
SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46",
SMG_9X19_STM_9 = "60339954d62c9b14ed777c06",
SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57",
SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47",
SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be",
SNIPERRIFLE_762X51_DVL_10 = "588892092459774ac91d4b11",
SNIPERRIFLE_762X51_M700 = "5bfea6e90db834001b7347f3",
SNIPERRIFLE_762X51_T_5000M = "5df24cf80dee1b22f862e9bc",
SNIPERRIFLE_762X54R_MOSIN_INFANTRY = "5bfd297f0db834001a669119",
SNIPERRIFLE_762X54R_MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SNIPERRIFLE_762X54R_SV_98 = "55801eed4bdc2d89578b4588",
SNIPERRIFLE_86X70_AXMC = "627e14b21713922ded6f2c15"
}

View File

@ -0,0 +1,9 @@
import { Item } from "@spt/models/eft/common/tables/IItem";
export interface IOwnerInventoryItems {
/** Inventory items from source */
from: Item[];
/** Inventory items at destination */
to: Item[];
sameInventory: boolean;
isMail: boolean;
}

View File

@ -0,0 +1,37 @@
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData";
import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData";
import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData";
import { ILogger } from "@spt/models/spt/utils/ILogger";
export declare class MapMarkerService {
protected logger: ILogger;
constructor(logger: ILogger);
/**
* Add note to a map item in player inventory
* @param pmcData Player profile
* @param request Add marker request
* @returns Item
*/
createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item;
/**
* Delete a map marker
* @param pmcData Player profile
* @param request Delete marker request
* @returns Item
*/
deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item;
/**
* Edit an existing map marker
* @param pmcData Player profile
* @param request Edit marker request
* @returns Item
*/
editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
}

View File

@ -0,0 +1,81 @@
/**
* Dynamically generate the following two files:
* - src/models/enums/ItemTpl.ts
* - src/models/enums/Weapons.ts
*
* Based on data from the assets/database folders.
*
* Usage:
* - Run this script using npm: `npm run gen:items`
*
* Notes:
* - Ensure that all necessary Node.js modules are installed before running the script: `npm install`
* - The following rules are used for determining item base names:
* -- Certain items are manually overridden by itemOverrides.ts, when the names are not unique enough
* -- Random containers, built in inserts and stashes utilize the item's _name property
* -- Ammo, ammo boxes, and magazines utilize the item's English locale ShortName property
* -- All other items utilize the item's English locale Name property
* -- In the event the above rules fail, the fallback order is the Englick locale Name property, then the item's _name property
* -- Trailing and leading whitespace is stripped, special characters are removed, and spaces are replaced with underscores
* - Item caliber data is cleaned of the words "CALIBER", "PARA" and "NATO", as well as replacing "1143x23ACP" with "45ACP" for consistency
* - Damaged ammo boxes are suffixed with "_DAMAGED"
* - The parent item type prefix is grouped more than the base item list, see "getParentName" for the rules around this
* - Finalized enum names are created as a combination of the parent name, prefix, item name, and suffix
*/
import { OnLoad } from "@spt/di/OnLoad";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { LocaleService } from "@spt/services/LocaleService";
export declare class ItemTplGenerator {
protected databaseServer: DatabaseServer;
protected localeService: LocaleService;
protected logger: ILogger;
protected itemHelper: ItemHelper;
protected onLoadComponents: OnLoad[];
private enumDir;
private items;
private itemOverrides;
private collidedEnumKeys;
constructor(databaseServer: DatabaseServer, localeService: LocaleService, logger: ILogger, itemHelper: ItemHelper, onLoadComponents: OnLoad[]);
run(): Promise<void>;
/**
* Return an object containing all items in the game with a generated name
* @returns An object containing a generated item name to item ID association
*/
private generateItemsObject;
/**
*
* @param orderedItemsObject The previously generated object of item name to item ID associations
* @returns
*/
private generateWeaponsObject;
/**
* Clear any non-alpha numeric characters, and fix multiple underscores
* @param enumKey The enum key to sanitize
* @returns The sanitized enum key
*/
private sanitizeEnumKey;
private getParentName;
private isValidItem;
/**
* Generate a prefix for the passed in item
* @param item The item to generate the prefix for
* @returns The prefix of the given item
*/
private getItemPrefix;
private getItemSuffix;
private getAmmoPrefix;
private cleanCaliber;
private getAmmoBoxPrefix;
private getMagazinePrefix;
/**
* Return the name of the passed in item, formatted for use in an enum
* @param item The item to generate the name for
* @returns The name of the given item
*/
private getItemName;
private getItemNameSuffix;
private logEnumValueChanges;
private writeEnumsToFile;
}

View File

@ -0,0 +1,7 @@
import "reflect-metadata";
import "source-map-support/register";
export declare class ItemTplGeneratorProgram {
private errorHandler;
constructor();
start(): Promise<void>;
}

View File

@ -0,0 +1,75 @@
/**
* An object containing item name overrides for use with ItemTplGenerator
*/
declare const _default: {
"5963866b86f7747bfa1c4462": string;
"5963866286f7747bf429b572": string;
"614451b71e5874611e2c7ae5": string;
"557ffd194bdc2d28148b457f": string;
"627a4e6b255f7527fb05a0f6": string;
"65e080be269cbd5c5005e529": string;
"64cbd95a29b9b4283e216ff5": string;
"665ee77ccf2d642e98220bca": string;
"6662e9f37fa79a6d83730fa0": string;
"6662ea05f6259762c56f3189": string;
"6662e9aca7e0b43baa3d5f74": string;
"6662e9cda7e0b43baa3d5f76": string;
"590de92486f77423d9312a33": string;
"5937fc6786f7742cab753590": string;
"5937fd0086f7742bf33fc198": string;
"638cbb3ba63f1b49be6a300e": string;
"5eff135be0d3331e9d282b7b": string;
"638e9d5536b3b72c944e2fc7": string;
"5a29357286f77409c705e025": string;
"5939e9b286f77462a709572c": string;
"591093bb86f7747caa7bb2ee": string;
"61904c9df62c89219a56e034": string;
"638cbc68a63f1b49be6a3010": string;
"619252352be33f26043400a7": string;
"5a29284f86f77463ef3db363": string;
"64b91627dd13d43b9d01d6d1": string;
"5a29276886f77435ed1b117c": string;
"628393620d8524273e7eb028": string;
"638dfc803083a019d447768e": string;
"638e0057ab150a5f56238960": string;
"6393262086e646067c176aa2": string;
"63989ced706b793c7d60cfef": string;
"6398a072e301557ae24cec92": string;
"6398a0861c712b1e1d4dadf1": string;
"638e0752ab150a5f56238962": string;
"638e06c4b8bac37a110ed56d": string;
"63927b29c115f907b14700b9": string;
"5939e5a786f77461f11c0098": string;
"591092ef86f7747bb8703422": string;
"5938188786f77474f723e87f": string;
"593965cf86f774087a77e1b6": string;
"5938878586f7741b797c562f": string;
"5a6860d886f77411cd3a9e47": string;
"638cbb0f7f97256fac16167a": string;
"664a5775f3d3570fba06be64": string;
"664b69c5a082271bc46c4e11": string;
"664b69e8e1238e506d3630af": string;
"6575a6ca8778e96ded05a802": string;
"6614217b6d9d5abcad0ff098": string;
"6614230055afee107f05e998": string;
"661421c7c1f2f548c50ee649": string;
"661423200d240a5f5d0f679b": string;
"5d1340b3d7ad1a0b52682ed7": string;
"55802d5f4bdc2dac148b458e": string;
"5d1340cad7ad1a0b0b249869": string;
"5d1340bdd7ad1a0e8d245aab": string;
"5cbdaf89ae9215000e5b9c94": string;
"5e21a3c67e40bd02257a008a": string;
"5914944186f774189e5e76c2": string;
"5937ef2b86f77408a47244b3": string;
"59387ac686f77401442ddd61": string;
"61aa1e9a32a4743c3453d2cf": string;
"61aa1ead84ea0800645777fd": string;
"5b6d9ce188a4501afc1b2b25": string;
"5c0a840b86f7742ffa4f2482": string;
"5d235bb686f77443f4331278": string;
"5e81ebcd8e146c7080625e15": string;
"639c3fbbd0446708ee622ee9": string;
"639af924d0446708ee62294e": string;
};
export default _default;

View File

@ -74,8 +74,11 @@ export declare class GameController {
* Handle client/game/start
*/
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
protected adjustHideoutCraftTimes(): void;
protected adjustHideoutBuildTimes(): void;
protected adjustHideoutCraftTimes(overrideSeconds: number): void;
/**
* Adjust all hideout craft times to be no higher than the override
*/
protected adjustHideoutBuildTimes(overrideSeconds: number): void;
protected adjustLocationBotValues(): void;
/**
* Out of date/incorrectly made trader mods forget this data
@ -122,7 +125,7 @@ export declare class GameController {
* @param pmcProfile Player profile
*/
protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void;
protected flagAllItemsInDbAsSellableOnFlea(): void;
protected setAllDbItemsAsSellableOnFlea(): void;
/**
* When player logs in, iterate over all active effects and reduce timer
* @param pmcProfile Profile to adjust values for

View File

@ -48,7 +48,6 @@ export declare class InsuranceController {
protected configServer: ConfigServer;
protected cloner: ICloner;
protected insuranceConfig: IInsuranceConfig;
protected roubleTpl: string;
constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/**
* Process insurance items of all profiles prior to being given back to the player through the mail service.

View File

@ -34,6 +34,7 @@ import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService";
import { LocalisationService } from "@spt/services/LocalisationService";
import { MapMarkerService } from "@spt/services/MapMarkerService";
import { PlayerService } from "@spt/services/PlayerService";
import { RagfairOfferService } from "@spt/services/RagfairOfferService";
import { ICloner } from "@spt/utils/cloners/ICloner";
@ -52,6 +53,7 @@ export declare class InventoryController {
protected questHelper: QuestHelper;
protected hideoutHelper: HideoutHelper;
protected ragfairOfferService: RagfairOfferService;
protected mapMarkerService: MapMarkerService;
protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper;
protected traderHelper: TraderHelper;
@ -61,7 +63,7 @@ export declare class InventoryController {
protected eventOutputHolder: EventOutputHolder;
protected httpResponseUtil: HttpResponseUtil;
protected cloner: ICloner;
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, mapMarkerService: MapMarkerService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
/**
* Move Item
* change location of item with parentId and slotId
@ -215,12 +217,6 @@ export declare class InventoryController {
* @param output Client response
*/
editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
/**
* Handle OpenRandomLootContainer event
* Handle event fired when a container is unpacked (currently only the halloween pumpkin)

View File

@ -47,7 +47,6 @@ export declare class ProfileController {
protected dialogueHelper: DialogueHelper;
protected questHelper: QuestHelper;
protected profileHelper: ProfileHelper;
protected defaultInventoryTpl: string;
constructor(logger: ILogger, hashUtil: HashUtil, cloner: ICloner, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper);
/**
* Handle /launcher/profiles

View File

@ -5,6 +5,7 @@ import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest";
import { ELocationName } from "@spt/models/enums/ELocationName";
import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig";
@ -66,6 +67,12 @@ export declare class RepeatableQuestController {
* @returns {array} Array of "repeatableQuestObjects" as described above
*/
getClientRepeatableQuests(sessionID: string): IPmcDataRepeatableQuest[];
/**
* Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests
* @param generatedRepeatables Repeatables to process (daily/weekly)
* @param pmcData Player profile
*/
protected processExpiredQuests(generatedRepeatables: IPmcDataRepeatableQuest, pmcData: IPmcData): void;
/**
* Check if a repeatable quest type (daily/weekly) is active for the given profile
* @param repeatableConfig Repeatable quest config
@ -140,4 +147,12 @@ export declare class RepeatableQuestController {
*/
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/**
* Some accounts have access to repeatable quest refreshes for free
* Track the usage of them inside players profile
* @param fullProfile Profile of player
* @param repeatableSubType Can be daily/weekly/scav repeatables
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav
*/
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void;
}

View File

@ -42,7 +42,6 @@ export declare class TradeController {
protected ragfairPriceService: RagfairPriceService;
protected mailSendService: MailSendService;
protected configServer: ConfigServer;
protected roubleTpl: string;
protected ragfairConfig: IRagfairConfig;
protected traderConfig: ITraderConfig;
constructor(logger: ILogger, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer);

View File

@ -78,13 +78,14 @@ export declare class BotGenerator {
* @returns IBotBase object
*/
protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase;
protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void;
/**
* Remove items from item.json/lootableItemBlacklist from bots inventory
* @param botInventory Bot to filter
*/
protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void;
/**
* Choose various appearance settings for a bot using weights
* Choose various appearance settings for a bot using weights: head/body/feet/hands
* @param bot Bot to adjust
* @param appearance Appearance settings to choose from
* @param botGenerationDetails Generation details
@ -143,12 +144,25 @@ export declare class BotGenerator {
* Chooses from all the game versions (standard, eod etc)
* Chooses account type (default, Sherpa, etc)
* @param botInfo bot info object to update
* @returns Chosen game version
*/
protected getRandomisedGameVersionAndCategory(botInfo: Info): void;
protected setRandomisedGameVersionAndCategory(botInfo: Info): string;
/**
* Add a side-specific (usec/bear) dogtag item to a bots inventory
* @param bot bot to add dogtag to
* @returns Bot with dogtag added
*/
protected addDogtagToBot(bot: IBotBase): void;
/**
* Get a dogtag tpl that matches the bots game version and side
* @param side Usec/Bear
* @param gameVersion edge_of_darkness / standard
* @returns item tpl
*/
protected getDogtagTplByGameVersionAndSide(side: string, gameVersion: string): string;
/**
* Adjust a PMCs pocket tpl to UHD if necessary, otherwise do nothing
* @param bot Pmc object to adjust
*/
protected setPmcPocketsByGameVersion(bot: IBotBase): void;
}

View File

@ -40,9 +40,10 @@ export declare class BotInventoryGenerator {
* @param botRole Role bot has (assault/pmcBot)
* @param isPmc Is bot being converted into a pmc
* @param botLevel Level of bot being generated
* @param chosenGameVersion Game version for bot, only really applies for PMCs
* @returns PmcInventory object with equipment/weapons/loot
*/
generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number): PmcInventory;
generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number, chosenGameVersion: string): PmcInventory;
/**
* Create a pmcInventory object with all the base/generic items needed
* @returns PmcInventory object
@ -55,8 +56,9 @@ export declare class BotInventoryGenerator {
* @param botRole Role bot has (assault/pmcBot)
* @param botInventory Inventory to add equipment to
* @param botLevel Level of bot
* @param chosenGameVersion Game version for bot, only really applies for PMCs
*/
protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number): void;
protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void;
/**
* Remove non-armored rigs from parameter data
* @param templateInventory
@ -133,4 +135,6 @@ export interface IGenerateEquipmentProperties {
botEquipmentConfig: EquipmentFilters;
/** Settings from bot.json to adjust how item is generated */
randomisationDetails: RandomisationDetails;
/** OPTIONAL - Do not generate mods for tpls in this array */
generateModsBlacklist?: string[];
}

View File

@ -44,7 +44,7 @@ export declare class LootGenerator {
* @param options Loot request options - armor level etc
* @returns True if item has desired armor level
*/
protected armorIsDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
/**
* Construct item limit record to hold max and current item count for each item type
* @param limits limits as defined in config

View File

@ -23,7 +23,6 @@ export declare class PMCLootGenerator {
protected vestLootPool: Record<string, number>;
protected backpackLootPool: Record<string, number>;
protected pmcConfig: IPmcConfig;
protected roubleTpl: string;
constructor(itemHelper: ItemHelper, databaseService: DatabaseService, configServer: ConfigServer, itemFilterService: ItemFilterService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, weightedRandomHelper: WeightedRandomHelper);
/**
* Create an array of loot items a PMC can have in their pockets
@ -42,6 +41,13 @@ export declare class PMCLootGenerator {
* @returns true if it fits
*/
protected itemFitsInto2By2Slot(item: ITemplateItem): boolean;
/**
* Check if item has a width/height that lets it fit into a 1x2 slot
* 1x1 / 1x2 / 2x1
* @param item Item to check size of
* @returns true if it fits
*/
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
/**
* Create an array of loot items a PMC can have in their backpack
* @returns string array of tpls

View File

@ -39,8 +39,6 @@ export declare class HideoutHelper {
static bitcoinFarm: string;
static bitcoinProductionId: string;
static waterCollector: string;
static bitcoinTpl: string;
static expeditionaryFuelTank: string;
static maxSkillPoint: number;
protected hideoutConfig: IHideoutConfig;
constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner);

View File

@ -40,13 +40,13 @@ export declare class InRaidHelper {
* Lookup quest item loss from lostOnDeath config
* @returns True if items should be removed from inventory
*/
removeQuestItemsOnDeath(): boolean;
shouldQuestItemsBeRemovedOnDeath(): boolean;
/**
* Check items array and add an upd object to money with a stack count of 1
* Single stack money items have no upd object and thus no StackObjectsCount, causing issues
* @param items Items array to check
*/
addUpdToMoneyFromRaid(items: Item[]): void;
addStackCountToMoneyFromRaid(items: Item[]): void;
/**
* Reset a profile to a baseline, used post-raid
* Reset points earned during session property
@ -86,6 +86,7 @@ export declare class InRaidHelper {
* @param postRaidProfile Profile sent by client with post-raid quests
*/
protected processAlteredQuests(sessionId: string, pmcData: IPmcData, preRaidQuests: IQuestStatus[], postRaidProfile: IPostRaidPmcData): void;
protected handleFailRestartableQuestStatus(pmcData: IPmcData, postRaidProfile: IPostRaidPmcData, postRaidQuest: IQuestStatus): void;
/**
* Take body part effects from client profile and apply to server profile
* @param saveProgressRequest post-raid request

View File

@ -19,6 +19,7 @@ import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventory
import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { IInventoryConfig, RewardDetails } from "@spt/models/spt/config/IInventoryConfig";
import { IOwnerInventoryItems } from "@spt/models/spt/inventory/IOwnerInventoryItems";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
@ -27,14 +28,6 @@ import { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
export interface IOwnerInventoryItems {
/** Inventory items from source */
from: Item[];
/** Inventory items at destination */
to: Item[];
sameInventory: boolean;
isMail: boolean;
}
export declare class InventoryHelper {
protected logger: ILogger;
protected hashUtil: HashUtil;
@ -220,17 +213,17 @@ export declare class InventoryHelper {
*/
protected getStashType(sessionID: string): string;
/**
* Internal helper function to transfer an item from one profile to another.
* @param fromItems Inventory of the source (can be non-player)
* Internal helper function to transfer an item + children from one profile to another.
* @param sourceItems Inventory of the source (can be non-player)
* @param toItems Inventory of the destination
* @param body Move request
* @param request Move request
*/
moveItemToProfile(fromItems: Item[], toItems: Item[], body: IInventoryMoveRequestData): void;
moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void;
/**
* Internal helper function to move item within the same profile_f.
* @param pmcData profile to edit
* @param inventoryItems
* @param moveRequest
* @param moveRequest client move request
* @returns True if move was successful
*/
moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): {
@ -246,7 +239,7 @@ export declare class InventoryHelper {
/**
* Internal helper function to handle cartridges in inventory if any of them exist.
*/
protected handleCartridges(items: Item[], body: IInventoryMoveRequestData): void;
protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void;
/**
* Get details for how a random loot container should be handled, max rewards, possible reward tpls
* @param itemTpl Container being opened

View File

@ -4,6 +4,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { InsuredItem } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ItemTpl } from "@spt/models/enums/ItemTpl";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { ItemBaseClassService } from "@spt/services/ItemBaseClassService";
@ -34,6 +35,22 @@ export declare class ItemHelper {
protected cloner: ICloner;
protected readonly defaultInvalidBaseTypes: string[];
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService, compareUtil: CompareUtil, cloner: ICloner);
/**
* Does the provided pool of items contain the desired item
* @param itemPool Item collection to check
* @param item Item to look for
* @param slotId OPTIONAL - slotid of desired item
* @returns True if pool contains item
*/
hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean;
/**
* Get the first item from provided pool with the desired tpl
* @param itemPool Item collection to search
* @param item Item to look for
* @param slotId OPTIONAL - slotid of desired item
* @returns Item or undefined
*/
getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined;
/**
* This method will compare two items (with all its children) and see if the are equivalent.
* This method will NOT compare IDs on the items

View File

@ -197,4 +197,5 @@ export declare class ProfileHelper {
* @param achievementId Id of achievement to add
*/
addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void;
hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean;
}

View File

@ -15,6 +15,7 @@ export declare class RagfairSortHelper {
*/
sortOffers(offers: IRagfairOffer[], type: RagfairSort, direction?: number): IRagfairOffer[];
protected sortOffersByID(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByBarter(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByRating(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByName(a: IRagfairOffer, b: IRagfairOffer): number;
/**

View File

@ -1016,6 +1016,10 @@ export interface IInsurance {
MaxStorageTimeInHour: number;
CoefOfSendingMessageTime: number;
CoefOfHavingMarkOfUnknown: number;
EditionSendingMessageTime: Record<string, IMessageSendTImeMultipler>;
}
export interface IMessageSendTImeMultipler {
multiplier: number;
}
export interface ISkillsSettings {
SkillProgressRate: number;
@ -1427,6 +1431,8 @@ export interface IFenceLevel {
PriceModTaxi: number;
PriceModDelivery: number;
PriceModCleanUp: number;
ReactOnMarkOnUnknowns: boolean;
ReactOnMarkOnUnknownsPVE: boolean;
DeliveryGridSize: Ixyz;
CanInteractWithBtr: boolean;
}

View File

@ -25,9 +25,9 @@ export interface ITemplateSide {
}
export interface ProfileTraderTemplate {
initialLoyaltyLevel: Record<string, number>;
initialStanding: Record<string, number>;
setQuestsAvailableForStart?: boolean;
setQuestsAvailableForFinish?: boolean;
initialStanding: number;
initialSalesSum: number;
jaegerUnlocked: boolean;
/** How many days is usage of the flea blocked for upon profile creation */

View File

@ -169,7 +169,7 @@ export interface Spt {
/** item TPLs blacklisted from being sold on flea for this profile */
blacklistedItemTpls?: string[];
/** key: daily type */
freeRepeatableChangeCount: Record<string, number>;
freeRepeatableRefreshUsedCount: Record<string, number>;
}
export interface ModDetails {
name: string;

View File

@ -69,8 +69,6 @@ export declare enum BaseClasses {
STATIONARY_CONTAINER = "567583764bdc2d98058b456e",
POCKETS = "557596e64bdc2dc2118b4571",
ARMBAND = "5b3f15d486f77432d0509248",
DOG_TAG_USEC = "59f32c3b86f77472a31742f0",
DOG_TAG_BEAR = "59f32bb586f774757e1e8442",
JEWELRY = "57864a3d24597754843f8721",
ELECTRONICS = "57864a66245977548f04a81f",
BUILDING_MATERIAL = "57864ada245977548638de91",

View File

@ -0,0 +1,8 @@
export declare enum GameEditions {
STANDARD = "standard",
LEFT_BEHIND = "left_behind",
PREPARE_FOR_ESCAPE = "prepare_for_escape",
EDGE_OF_DARKNESS = "edge_of_darkness",
UNHEARD = "unheard_edition",
TOURNAMENT = "tournament_live"
}

File diff suppressed because it is too large Load Diff

View File

@ -9,5 +9,6 @@ export declare enum MemberCategory {
CHAT_MODERATOR_WITH_PERMANENT_BAN = 64,
UNIT_TEST = 128,
SHERPA = 256,
EMISSARY = 512
EMISSARY = 512,
UNHEARD = 1024
}

View File

@ -1,5 +1,6 @@
export declare enum RagfairSort {
ID = 0,
BARTER = 2,
RATING = 3,
OFFER_TITLE = 4,
PRICE = 5,

View File

@ -1,172 +0,0 @@
export declare enum Weapons127x55 {
ASH_12 = "5cadfbf7ae92152ac412eeef",
RSH_12 = "633ec7c2a6918cb895019c6c"
}
export declare enum Weapons86x70 {
MK_18 = "5fc22d7c187fea44d52eda44",
AXMC = "627e14b21713922ded6f2c15"
}
export declare enum Weapons9x39 {
AS_VAL = "57c44b372459772d2b39b8ce",
VSS_VINTOREZ = "57838ad32459774a17445cd2",
KBP_9A_91 = "644674a13d52156624001fbc",
VSK_94 = "645e0c6b3b381ede770e1cc9"
}
export declare enum Weapons762x54R {
SVDS = "5c46fbd72e2216398b5a8c9c",
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SV_98 = "55801eed4bdc2d89578b4588",
AVT_40 = "6410733d5dd49d77bd07847e",
SVT_40 = "643ea5b23db6f9f57107d9fd",
PKM = "64637076203536ad5600c990",
PKP = "64ca3d3954fc657e230529cc"
}
export declare enum Weapons762x51 {
VPO_101 = "5c501a4d2e221602b412b540",
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
SA_58 = "5b0bbe4e5acfc40dc528a72d",
SCARH_BLACK = "6183afd850224f204c1da514",
SCARH_FDE = "6165ac306ef05c2ce828ef74",
HK_G28 = "6176aca650224f204c1da3fb",
M1A = "5aafa857e5b5b00018480968",
RFB = "5f2a9575926fd9352339381f",
RSASS = "5a367e5dc4a282000e49738f",
SR_25 = "5df8ce05b11454561e39243b",
DVL_10 = "588892092459774ac91d4b11",
M700 = "5bfea6e90db834001b7347f3",
T5000M = "5df24cf80dee1b22f862e9bc"
}
export declare enum Weapons366TKM {
VPO_209 = "59e6687d86f77411d949b251",
VPO_215 = "5de652c31b7e3716273428be"
}
export declare enum Weapons762x39 {
OP_SKS = "587e02ff24597743df3deaeb",
SKS = "574d967124597745970e7c94",
AK_103 = "5ac66d2e5acfc43b321d4b53",
AK_104 = "5ac66d725acfc43b321d4b60",
AKM = "59d6088586f774275f37482f",
AKMN = "5a0ec13bfcdbcb00165aa685",
AKMS = "59ff346386f77477562ff5e2",
AKMSN = "5abcbc27d8ce8700182eceeb",
MK47_MUTANT = "606587252535c57a13424cfd",
RD_704 = "628a60ae6b1d481ff772e9c8",
VPO_136 = "59e6152586f77473dc057aa1",
RPD = "6513ef33e06849f06c0957ca",
RPDN = "65268d8ecb944ff1e90ea385"
}
export declare enum Weapons762x35 {
MCX = "5fbcc1d9016cce60e8341ab3"
}
export declare enum Weapons556x45 {
ADAR_2_15 = "5c07c60e0db834002330051f",
AK_101 = "5ac66cb05acfc40198510a10",
AK_102 = "5ac66d015acfc400180ae6e4",
DT_MDR_556 = "5c488a752e221602b412af63",
HK_416A5 = "5bb2475ed4351e00853264e3",
HK_G36 = "623063e994fc3f7b302a9696",
M4A1 = "5447a9cd4bdc2dbd208b4567",
SCARL_BLACK = "6184055050224f204c1da540",
SCARL_FDE = "618428466ef05c2ce828f218",
TX15_DML = "5d43021ca4b9362eab4b5e25",
AUG_A1 = "62e7c4fba689e8c9c50dfc38",
AUG_A3 = "63171672192e68c5460cebc5"
}
export declare enum Weapons545x39 {
AK_105 = "5ac66d9b5acfc4001633997a",
AK_74 = "5bf3e03b0db834001d2c4a9c",
AK_74M = "5ac4cd105acfc40016339859",
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
AKS_74 = "5bf3e0490db83400196199af",
AKS_74N = "5ab8e9fcd8ce870019439434",
AKS_74U = "57dc2fa62459775949412633",
AKS_74UB = "5839a40f24597726f856b511",
AKS_74UN = "583990e32459771419544dd2",
SAG_AK = "628b5638ad252a16da6dd245",
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
RPK_16 = "5beed0f50db834001c062b12",
AK_12 = "6499849fc93611967b034949"
}
export declare enum Weapons57x28FN {
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
FN_57_FDE = "5d67abc1a4b93614ec50137f",
FN_P90 = "5cc82d76e24e8d00134b4b83"
}
export declare enum Weapons46x30HK {
MP7A1 = "5ba26383d4351e00334c93d9",
MP7A2 = "5bd70322209c4d00d7167b8f"
}
export declare enum Weapons1143x23 {
M1911A1 = "5e81c3cbac2bb513793cdc75",
M45A1 = "5f36a0e5fbf956000b716b65",
USP45 = "6193a720f8ee7e52e42109ed",
UMP45 = "5fc3e272f8b6a877a729eac5",
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
}
export declare enum Weapons9x33R {
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
}
export declare enum Weapons9x21 {
SR_1MP = "59f98b4986f7746f546d2cef",
SR_2M = "62e14904c2699c0ec93adc47"
}
export declare enum Weapons9x19 {
GLOCK_17 = "5a7ae0c351dfba0017554310",
GLOCK_18C = "5b1fa9b25acfc40018633c01",
M9A3 = "5cadc190ae921500103bb3b6",
MP_443 = "576a581d2459771e7b1bc4f1",
P226R = "56d59856d2720bd8418b456a",
PL_15 = "602a9740da11d6478d5a06dc",
CR_200DS = "624c2e8614da335f1e034d8c",
MP5 = "5926bb2186f7744b1c6c6e60",
MP5K = "5d2f0d8048f0356c925bc3b0",
MP9 = "5e00903ae9dc277128008b87",
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
MPX = "58948c8e86f77409493f7266",
PP_19_01 = "59984ab886f7743e98271174",
SAIGA_9 = "59f9cabd86f7743a10721f46",
STM_9 = "60339954d62c9b14ed777c06",
VECTOR_9MM = "5fc3f2d5900b1d5091531e57",
GLOCK_19X = "63088377b5cd696784087147"
}
export declare enum Weapons9x18 {
APB = "5abccb7dd8ce87001773e277",
APS = "5a17f98cfcdbcb0980087290",
PB_SILENCED = "56e0598dd2720bb5668b45a6",
PM = "5448bd6b4bdc2dfc2f8b4569",
PM_T = "579204f224597773d619e051",
PP9_KLIN = "57f4c844245977379d5c14d1",
PP91_KEDR = "57d14d2524597714373db789",
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
}
export declare enum Weapons762x25 {
TT = "571a12c42459771f627b58a0",
TT_GOLD = "5b3b713c5acfc4330140bd8d",
PPSH_41 = "5ea03f7400685063ec28bfa8"
}
export declare enum Weapons12Gauge {
M3_SUPER90 = "6259b864ebedf17603599e88",
M590A1 = "5e870397991fd70db46995c8",
M870 = "5a7828548dc32e5a9c28b516",
MP_133 = "54491c4f4bdc2db1078b4568",
MP_153 = "56dee2bdd2720bc8328b4567",
MP_155 = "606dae0ab0e443224b421bb7",
MP_43_1C = "5580223e4bdc2d1c128b457f",
MTS_255_12 = "60db29ce99594040e04c4a27",
SAIGA_12GA = "576165642459773c7a400233"
}
export declare enum Weapons20Gauge {
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
}
export declare enum Weapons23x75 {
KS_23M = "5e848cc2988a8701445df1e8"
}
export declare enum Weapons68x51 {
MCX_SPEAR = "65290f395ae2ae97b80fdf2d"
}
export declare enum Weapons40x46 {
M32A1 = "6275303a9f372d6ea97f9ec7",
FN40GL = "5e81ebcd8e146c7080625e15"
}

View File

@ -0,0 +1,141 @@
export declare enum Weapons {
ASSAULTCARBINE_762X39_OP_SKS = "587e02ff24597743df3deaeb",
ASSAULTCARBINE_762X39_SKS = "574d967124597745970e7c94",
ASSAULTCARBINE_762X51_VPO_101_VEPR_HUNTER = "5c501a4d2e221602b412b540",
ASSAULTCARBINE_762X54R_AVT_40 = "6410733d5dd49d77bd07847e",
ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd",
ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc",
ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce",
ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9",
ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef",
ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251",
ASSAULTRIFLE_545X39_AKS_74 = "5bf3e0490db83400196199af",
ASSAULTRIFLE_545X39_AKS_74N = "5ab8e9fcd8ce870019439434",
ASSAULTRIFLE_545X39_AKS_74U = "57dc2fa62459775949412633",
ASSAULTRIFLE_545X39_AKS_74UB = "5839a40f24597726f856b511",
ASSAULTRIFLE_545X39_AKS_74UN = "583990e32459771419544dd2",
ASSAULTRIFLE_545X39_AK_105 = "5ac66d9b5acfc4001633997a",
ASSAULTRIFLE_545X39_AK_12 = "6499849fc93611967b034949",
ASSAULTRIFLE_545X39_AK_545 = "628b5638ad252a16da6dd245",
ASSAULTRIFLE_545X39_AK_545_SHORT = "628b9c37a733087d0d7fe84b",
ASSAULTRIFLE_545X39_AK_74 = "5bf3e03b0db834001d2c4a9c",
ASSAULTRIFLE_545X39_AK_74M = "5ac4cd105acfc40016339859",
ASSAULTRIFLE_545X39_AK_74N = "5644bd2b4bdc2d3b4c8b4572",
ASSAULTRIFLE_556X45_ADAR_2_15 = "5c07c60e0db834002330051f",
ASSAULTRIFLE_556X45_AK_101 = "5ac66cb05acfc40198510a10",
ASSAULTRIFLE_556X45_AK_102 = "5ac66d015acfc400180ae6e4",
ASSAULTRIFLE_556X45_AUG_A1 = "62e7c4fba689e8c9c50dfc38",
ASSAULTRIFLE_556X45_AUG_A3 = "63171672192e68c5460cebc5",
ASSAULTRIFLE_556X45_G36 = "623063e994fc3f7b302a9696",
ASSAULTRIFLE_556X45_HK_416A5 = "5bb2475ed4351e00853264e3",
ASSAULTRIFLE_556X45_M4A1 = "5447a9cd4bdc2dbd208b4567",
ASSAULTRIFLE_556X45_MDR = "5c488a752e221602b412af63",
ASSAULTRIFLE_556X45_MK_16 = "6184055050224f204c1da540",
ASSAULTRIFLE_556X45_MK_16_FDE = "618428466ef05c2ce828f218",
ASSAULTRIFLE_556X45_TX_15_DML = "5d43021ca4b9362eab4b5e25",
ASSAULTRIFLE_68X51_SPEAR_68 = "65290f395ae2ae97b80fdf2d",
ASSAULTRIFLE_762X35_MCX_300_BLK = "5fbcc1d9016cce60e8341ab3",
ASSAULTRIFLE_762X39_AKM = "59d6088586f774275f37482f",
ASSAULTRIFLE_762X39_AKMN = "5a0ec13bfcdbcb00165aa685",
ASSAULTRIFLE_762X39_AKMS = "59ff346386f77477562ff5e2",
ASSAULTRIFLE_762X39_AKMSN = "5abcbc27d8ce8700182eceeb",
ASSAULTRIFLE_762X39_AK_103 = "5ac66d2e5acfc43b321d4b53",
ASSAULTRIFLE_762X39_AK_104 = "5ac66d725acfc43b321d4b60",
ASSAULTRIFLE_762X39_MK47 = "606587252535c57a13424cfd",
ASSAULTRIFLE_762X39_RD_704 = "628a60ae6b1d481ff772e9c8",
ASSAULTRIFLE_762X39_VPO_136_VEPR_KM = "59e6152586f77473dc057aa1",
ASSAULTRIFLE_762X51_MDR = "5dcbd56fdbd3d91b3e5468d5",
ASSAULTRIFLE_762X51_MK_17 = "6183afd850224f204c1da514",
ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74",
ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d",
ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702",
FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9",
FLARE_26X75_GREEN = "6217726288ed9f0845317459",
FLARE_26X75_RED = "62178c4d4ecf221597654e3d",
FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766",
GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e",
GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15",
GRENADELAUNCHER_40X46_FN40GL_2 = "639c3fbbd0446708ee622ee9",
MACHINEGUN_30X29_AGS_30 = "5d52cc5ba4b9367408500062",
MACHINEGUN_545X39_NSV_UTYOS = "5cdeb229d7f00c000e7ce174",
MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12",
MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca",
MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385",
MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990",
MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc",
MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b",
MARKSMANRIFLE_762X51_G28 = "6176aca650224f204c1da3fb",
MARKSMANRIFLE_762X51_M1A = "5aafa857e5b5b00018480968",
MARKSMANRIFLE_762X51_RFB = "5f2a9575926fd9352339381f",
MARKSMANRIFLE_762X51_RSASS = "5a367e5dc4a282000e49738f",
MARKSMANRIFLE_762X51_SR_25 = "5df8ce05b11454561e39243b",
MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c",
MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44",
MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2",
PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678",
PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75",
PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65",
PISTOL_45ACP_USP_45 = "6193a720f8ee7e52e42109ed",
PISTOL_57X28_FN_5_7 = "5d3eb3b0a4b93615055e84d2",
PISTOL_57X28_FN_5_7_FDE = "5d67abc1a4b93614ec50137f",
PISTOL_762X25TT_TT = "571a12c42459771f627b58a0",
PISTOL_762X25TT_TT_GOLD_GOLDEN = "5b3b713c5acfc4330140bd8d",
PISTOL_9X18PM_APB = "5abccb7dd8ce87001773e277",
PISTOL_9X18PM_APS = "5a17f98cfcdbcb0980087290",
PISTOL_9X18PM_PB = "56e0598dd2720bb5668b45a6",
PISTOL_9X18PM_PM = "5448bd6b4bdc2dfc2f8b4569",
PISTOL_9X18PM_PM_T = "579204f224597773d619e051",
PISTOL_9X19_GLOCK_17 = "5a7ae0c351dfba0017554310",
PISTOL_9X19_GLOCK_18C = "5b1fa9b25acfc40018633c01",
PISTOL_9X19_GLOCK_19X = "63088377b5cd696784087147",
PISTOL_9X19_M9A3 = "5cadc190ae921500103bb3b6",
PISTOL_9X19_MP_443_GRACH = "576a581d2459771e7b1bc4f1",
PISTOL_9X19_P226R = "56d59856d2720bd8418b456a",
PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc",
PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef",
REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c",
REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27",
REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7",
REVOLVER_9X19_CR_200DS = "624c2e8614da335f1e034d8c",
REVOLVER_9X33R_CR_50DS = "61a4c8884f95bc3b2c5dc96f",
SHOTGUN_12G_590A1 = "5e870397991fd70db46995c8",
SHOTGUN_12G_M3_SUPER_90 = "6259b864ebedf17603599e88",
SHOTGUN_12G_M870 = "5a7828548dc32e5a9c28b516",
SHOTGUN_12G_MP_133 = "54491c4f4bdc2db1078b4568",
SHOTGUN_12G_MP_153 = "56dee2bdd2720bc8328b4567",
SHOTGUN_12G_MP_155 = "606dae0ab0e443224b421bb7",
SHOTGUN_12G_MP_43_1C = "5580223e4bdc2d1c128b457f",
SHOTGUN_12G_SAIGA_12K = "576165642459773c7a400233",
SHOTGUN_12G_SAWED_OFF = "64748cb8de82c85eaf0a273a",
SHOTGUN_20G_TOZ_106 = "5a38e6bac4a2826c6e06d79b",
SHOTGUN_23X75_KS_23M = "5e848cc2988a8701445df1e8",
SHOTGUN_762X54R_MP_18 = "61f7c9e189e6fb1a5e3ea78d",
SIGNALPISTOL_26X75_SP_81 = "620109578d82e67e7911abf2",
SMG_45ACP_UMP_45 = "5fc3e272f8b6a877a729eac5",
SMG_45ACP_VECTOR_45ACP = "5fb64bc92b1b027b1f50bcf2",
SMG_46X30_MP7A1 = "5ba26383d4351e00334c93d9",
SMG_46X30_MP7A2 = "5bd70322209c4d00d7167b8f",
SMG_57X28_P90 = "5cc82d76e24e8d00134b4b83",
SMG_762X25TT_PPSH41 = "5ea03f7400685063ec28bfa8",
SMG_9X18PMM_PP_9_KLIN = "57f4c844245977379d5c14d1",
SMG_9X18PM_PP_91_01_KEDR_B = "57f3c6bd24597738e730fa2f",
SMG_9X18PM_PP_91_KEDR = "57d14d2524597714373db789",
SMG_9X19_MP5K_N = "5d2f0d8048f0356c925bc3b0",
SMG_9X19_MP5_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60",
SMG_9X19_MP9 = "5e00903ae9dc277128008b87",
SMG_9X19_MP9_N = "5de7bd7bfd6b4e6e2276dc25",
SMG_9X19_MPX = "58948c8e86f77409493f7266",
SMG_9X19_PP_19_01 = "59984ab886f7743e98271174",
SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46",
SMG_9X19_STM_9 = "60339954d62c9b14ed777c06",
SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57",
SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47",
SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be",
SNIPERRIFLE_762X51_DVL_10 = "588892092459774ac91d4b11",
SNIPERRIFLE_762X51_M700 = "5bfea6e90db834001b7347f3",
SNIPERRIFLE_762X51_T_5000M = "5df24cf80dee1b22f862e9bc",
SNIPERRIFLE_762X54R_MOSIN_INFANTRY = "5bfd297f0db834001a669119",
SNIPERRIFLE_762X54R_MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SNIPERRIFLE_762X54R_SV_98 = "55801eed4bdc2d89578b4588",
SNIPERRIFLE_86X70_AXMC = "627e14b21713922ded6f2c15"
}

View File

@ -0,0 +1,9 @@
import { Item } from "@spt/models/eft/common/tables/IItem";
export interface IOwnerInventoryItems {
/** Inventory items from source */
from: Item[];
/** Inventory items at destination */
to: Item[];
sameInventory: boolean;
isMail: boolean;
}

View File

@ -0,0 +1,37 @@
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData";
import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData";
import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData";
import { ILogger } from "@spt/models/spt/utils/ILogger";
export declare class MapMarkerService {
protected logger: ILogger;
constructor(logger: ILogger);
/**
* Add note to a map item in player inventory
* @param pmcData Player profile
* @param request Add marker request
* @returns Item
*/
createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item;
/**
* Delete a map marker
* @param pmcData Player profile
* @param request Delete marker request
* @returns Item
*/
deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item;
/**
* Edit an existing map marker
* @param pmcData Player profile
* @param request Edit marker request
* @returns Item
*/
editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
}

View File

@ -0,0 +1,81 @@
/**
* Dynamically generate the following two files:
* - src/models/enums/ItemTpl.ts
* - src/models/enums/Weapons.ts
*
* Based on data from the assets/database folders.
*
* Usage:
* - Run this script using npm: `npm run gen:items`
*
* Notes:
* - Ensure that all necessary Node.js modules are installed before running the script: `npm install`
* - The following rules are used for determining item base names:
* -- Certain items are manually overridden by itemOverrides.ts, when the names are not unique enough
* -- Random containers, built in inserts and stashes utilize the item's _name property
* -- Ammo, ammo boxes, and magazines utilize the item's English locale ShortName property
* -- All other items utilize the item's English locale Name property
* -- In the event the above rules fail, the fallback order is the Englick locale Name property, then the item's _name property
* -- Trailing and leading whitespace is stripped, special characters are removed, and spaces are replaced with underscores
* - Item caliber data is cleaned of the words "CALIBER", "PARA" and "NATO", as well as replacing "1143x23ACP" with "45ACP" for consistency
* - Damaged ammo boxes are suffixed with "_DAMAGED"
* - The parent item type prefix is grouped more than the base item list, see "getParentName" for the rules around this
* - Finalized enum names are created as a combination of the parent name, prefix, item name, and suffix
*/
import { OnLoad } from "@spt/di/OnLoad";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { LocaleService } from "@spt/services/LocaleService";
export declare class ItemTplGenerator {
protected databaseServer: DatabaseServer;
protected localeService: LocaleService;
protected logger: ILogger;
protected itemHelper: ItemHelper;
protected onLoadComponents: OnLoad[];
private enumDir;
private items;
private itemOverrides;
private collidedEnumKeys;
constructor(databaseServer: DatabaseServer, localeService: LocaleService, logger: ILogger, itemHelper: ItemHelper, onLoadComponents: OnLoad[]);
run(): Promise<void>;
/**
* Return an object containing all items in the game with a generated name
* @returns An object containing a generated item name to item ID association
*/
private generateItemsObject;
/**
*
* @param orderedItemsObject The previously generated object of item name to item ID associations
* @returns
*/
private generateWeaponsObject;
/**
* Clear any non-alpha numeric characters, and fix multiple underscores
* @param enumKey The enum key to sanitize
* @returns The sanitized enum key
*/
private sanitizeEnumKey;
private getParentName;
private isValidItem;
/**
* Generate a prefix for the passed in item
* @param item The item to generate the prefix for
* @returns The prefix of the given item
*/
private getItemPrefix;
private getItemSuffix;
private getAmmoPrefix;
private cleanCaliber;
private getAmmoBoxPrefix;
private getMagazinePrefix;
/**
* Return the name of the passed in item, formatted for use in an enum
* @param item The item to generate the name for
* @returns The name of the given item
*/
private getItemName;
private getItemNameSuffix;
private logEnumValueChanges;
private writeEnumsToFile;
}

View File

@ -0,0 +1,7 @@
import "reflect-metadata";
import "source-map-support/register";
export declare class ItemTplGeneratorProgram {
private errorHandler;
constructor();
start(): Promise<void>;
}

View File

@ -0,0 +1,75 @@
/**
* An object containing item name overrides for use with ItemTplGenerator
*/
declare const _default: {
"5963866b86f7747bfa1c4462": string;
"5963866286f7747bf429b572": string;
"614451b71e5874611e2c7ae5": string;
"557ffd194bdc2d28148b457f": string;
"627a4e6b255f7527fb05a0f6": string;
"65e080be269cbd5c5005e529": string;
"64cbd95a29b9b4283e216ff5": string;
"665ee77ccf2d642e98220bca": string;
"6662e9f37fa79a6d83730fa0": string;
"6662ea05f6259762c56f3189": string;
"6662e9aca7e0b43baa3d5f74": string;
"6662e9cda7e0b43baa3d5f76": string;
"590de92486f77423d9312a33": string;
"5937fc6786f7742cab753590": string;
"5937fd0086f7742bf33fc198": string;
"638cbb3ba63f1b49be6a300e": string;
"5eff135be0d3331e9d282b7b": string;
"638e9d5536b3b72c944e2fc7": string;
"5a29357286f77409c705e025": string;
"5939e9b286f77462a709572c": string;
"591093bb86f7747caa7bb2ee": string;
"61904c9df62c89219a56e034": string;
"638cbc68a63f1b49be6a3010": string;
"619252352be33f26043400a7": string;
"5a29284f86f77463ef3db363": string;
"64b91627dd13d43b9d01d6d1": string;
"5a29276886f77435ed1b117c": string;
"628393620d8524273e7eb028": string;
"638dfc803083a019d447768e": string;
"638e0057ab150a5f56238960": string;
"6393262086e646067c176aa2": string;
"63989ced706b793c7d60cfef": string;
"6398a072e301557ae24cec92": string;
"6398a0861c712b1e1d4dadf1": string;
"638e0752ab150a5f56238962": string;
"638e06c4b8bac37a110ed56d": string;
"63927b29c115f907b14700b9": string;
"5939e5a786f77461f11c0098": string;
"591092ef86f7747bb8703422": string;
"5938188786f77474f723e87f": string;
"593965cf86f774087a77e1b6": string;
"5938878586f7741b797c562f": string;
"5a6860d886f77411cd3a9e47": string;
"638cbb0f7f97256fac16167a": string;
"664a5775f3d3570fba06be64": string;
"664b69c5a082271bc46c4e11": string;
"664b69e8e1238e506d3630af": string;
"6575a6ca8778e96ded05a802": string;
"6614217b6d9d5abcad0ff098": string;
"6614230055afee107f05e998": string;
"661421c7c1f2f548c50ee649": string;
"661423200d240a5f5d0f679b": string;
"5d1340b3d7ad1a0b52682ed7": string;
"55802d5f4bdc2dac148b458e": string;
"5d1340cad7ad1a0b0b249869": string;
"5d1340bdd7ad1a0e8d245aab": string;
"5cbdaf89ae9215000e5b9c94": string;
"5e21a3c67e40bd02257a008a": string;
"5914944186f774189e5e76c2": string;
"5937ef2b86f77408a47244b3": string;
"59387ac686f77401442ddd61": string;
"61aa1e9a32a4743c3453d2cf": string;
"61aa1ead84ea0800645777fd": string;
"5b6d9ce188a4501afc1b2b25": string;
"5c0a840b86f7742ffa4f2482": string;
"5d235bb686f77443f4331278": string;
"5e81ebcd8e146c7080625e15": string;
"639c3fbbd0446708ee622ee9": string;
"639af924d0446708ee62294e": string;
};
export default _default;

View File

@ -74,8 +74,11 @@ export declare class GameController {
* Handle client/game/start
*/
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
protected adjustHideoutCraftTimes(): void;
protected adjustHideoutBuildTimes(): void;
protected adjustHideoutCraftTimes(overrideSeconds: number): void;
/**
* Adjust all hideout craft times to be no higher than the override
*/
protected adjustHideoutBuildTimes(overrideSeconds: number): void;
protected adjustLocationBotValues(): void;
/**
* Out of date/incorrectly made trader mods forget this data
@ -122,7 +125,7 @@ export declare class GameController {
* @param pmcProfile Player profile
*/
protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void;
protected flagAllItemsInDbAsSellableOnFlea(): void;
protected setAllDbItemsAsSellableOnFlea(): void;
/**
* When player logs in, iterate over all active effects and reduce timer
* @param pmcProfile Profile to adjust values for

View File

@ -48,7 +48,6 @@ export declare class InsuranceController {
protected configServer: ConfigServer;
protected cloner: ICloner;
protected insuranceConfig: IInsuranceConfig;
protected roubleTpl: string;
constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/**
* Process insurance items of all profiles prior to being given back to the player through the mail service.

View File

@ -34,6 +34,7 @@ import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService";
import { LocalisationService } from "@spt/services/LocalisationService";
import { MapMarkerService } from "@spt/services/MapMarkerService";
import { PlayerService } from "@spt/services/PlayerService";
import { RagfairOfferService } from "@spt/services/RagfairOfferService";
import { ICloner } from "@spt/utils/cloners/ICloner";
@ -52,6 +53,7 @@ export declare class InventoryController {
protected questHelper: QuestHelper;
protected hideoutHelper: HideoutHelper;
protected ragfairOfferService: RagfairOfferService;
protected mapMarkerService: MapMarkerService;
protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper;
protected traderHelper: TraderHelper;
@ -61,7 +63,7 @@ export declare class InventoryController {
protected eventOutputHolder: EventOutputHolder;
protected httpResponseUtil: HttpResponseUtil;
protected cloner: ICloner;
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, mapMarkerService: MapMarkerService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
/**
* Move Item
* change location of item with parentId and slotId
@ -215,12 +217,6 @@ export declare class InventoryController {
* @param output Client response
*/
editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
/**
* Handle OpenRandomLootContainer event
* Handle event fired when a container is unpacked (currently only the halloween pumpkin)

View File

@ -47,7 +47,6 @@ export declare class ProfileController {
protected dialogueHelper: DialogueHelper;
protected questHelper: QuestHelper;
protected profileHelper: ProfileHelper;
protected defaultInventoryTpl: string;
constructor(logger: ILogger, hashUtil: HashUtil, cloner: ICloner, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper);
/**
* Handle /launcher/profiles

View File

@ -5,6 +5,7 @@ import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest";
import { ELocationName } from "@spt/models/enums/ELocationName";
import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig";
@ -66,6 +67,12 @@ export declare class RepeatableQuestController {
* @returns {array} Array of "repeatableQuestObjects" as described above
*/
getClientRepeatableQuests(sessionID: string): IPmcDataRepeatableQuest[];
/**
* Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests
* @param generatedRepeatables Repeatables to process (daily/weekly)
* @param pmcData Player profile
*/
protected processExpiredQuests(generatedRepeatables: IPmcDataRepeatableQuest, pmcData: IPmcData): void;
/**
* Check if a repeatable quest type (daily/weekly) is active for the given profile
* @param repeatableConfig Repeatable quest config
@ -140,4 +147,12 @@ export declare class RepeatableQuestController {
*/
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/**
* Some accounts have access to repeatable quest refreshes for free
* Track the usage of them inside players profile
* @param fullProfile Profile of player
* @param repeatableSubType Can be daily/weekly/scav repeatables
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav
*/
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void;
}

View File

@ -42,7 +42,6 @@ export declare class TradeController {
protected ragfairPriceService: RagfairPriceService;
protected mailSendService: MailSendService;
protected configServer: ConfigServer;
protected roubleTpl: string;
protected ragfairConfig: IRagfairConfig;
protected traderConfig: ITraderConfig;
constructor(logger: ILogger, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer);

View File

@ -78,13 +78,14 @@ export declare class BotGenerator {
* @returns IBotBase object
*/
protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase;
protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void;
/**
* Remove items from item.json/lootableItemBlacklist from bots inventory
* @param botInventory Bot to filter
*/
protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void;
/**
* Choose various appearance settings for a bot using weights
* Choose various appearance settings for a bot using weights: head/body/feet/hands
* @param bot Bot to adjust
* @param appearance Appearance settings to choose from
* @param botGenerationDetails Generation details
@ -143,12 +144,25 @@ export declare class BotGenerator {
* Chooses from all the game versions (standard, eod etc)
* Chooses account type (default, Sherpa, etc)
* @param botInfo bot info object to update
* @returns Chosen game version
*/
protected getRandomisedGameVersionAndCategory(botInfo: Info): void;
protected setRandomisedGameVersionAndCategory(botInfo: Info): string;
/**
* Add a side-specific (usec/bear) dogtag item to a bots inventory
* @param bot bot to add dogtag to
* @returns Bot with dogtag added
*/
protected addDogtagToBot(bot: IBotBase): void;
/**
* Get a dogtag tpl that matches the bots game version and side
* @param side Usec/Bear
* @param gameVersion edge_of_darkness / standard
* @returns item tpl
*/
protected getDogtagTplByGameVersionAndSide(side: string, gameVersion: string): string;
/**
* Adjust a PMCs pocket tpl to UHD if necessary, otherwise do nothing
* @param bot Pmc object to adjust
*/
protected setPmcPocketsByGameVersion(bot: IBotBase): void;
}

View File

@ -40,9 +40,10 @@ export declare class BotInventoryGenerator {
* @param botRole Role bot has (assault/pmcBot)
* @param isPmc Is bot being converted into a pmc
* @param botLevel Level of bot being generated
* @param chosenGameVersion Game version for bot, only really applies for PMCs
* @returns PmcInventory object with equipment/weapons/loot
*/
generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number): PmcInventory;
generateInventory(sessionId: string, botJsonTemplate: IBotType, botRole: string, isPmc: boolean, botLevel: number, chosenGameVersion: string): PmcInventory;
/**
* Create a pmcInventory object with all the base/generic items needed
* @returns PmcInventory object
@ -55,8 +56,9 @@ export declare class BotInventoryGenerator {
* @param botRole Role bot has (assault/pmcBot)
* @param botInventory Inventory to add equipment to
* @param botLevel Level of bot
* @param chosenGameVersion Game version for bot, only really applies for PMCs
*/
protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number): void;
protected generateAndAddEquipmentToBot(templateInventory: Inventory, wornItemChances: Chances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void;
/**
* Remove non-armored rigs from parameter data
* @param templateInventory
@ -133,4 +135,6 @@ export interface IGenerateEquipmentProperties {
botEquipmentConfig: EquipmentFilters;
/** Settings from bot.json to adjust how item is generated */
randomisationDetails: RandomisationDetails;
/** OPTIONAL - Do not generate mods for tpls in this array */
generateModsBlacklist?: string[];
}

View File

@ -44,7 +44,7 @@ export declare class LootGenerator {
* @param options Loot request options - armor level etc
* @returns True if item has desired armor level
*/
protected armorIsDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
protected isArmorOfDesiredProtectionLevel(armor: IPreset, options: LootRequest): boolean;
/**
* Construct item limit record to hold max and current item count for each item type
* @param limits limits as defined in config

View File

@ -23,7 +23,6 @@ export declare class PMCLootGenerator {
protected vestLootPool: Record<string, number>;
protected backpackLootPool: Record<string, number>;
protected pmcConfig: IPmcConfig;
protected roubleTpl: string;
constructor(itemHelper: ItemHelper, databaseService: DatabaseService, configServer: ConfigServer, itemFilterService: ItemFilterService, ragfairPriceService: RagfairPriceService, seasonalEventService: SeasonalEventService, weightedRandomHelper: WeightedRandomHelper);
/**
* Create an array of loot items a PMC can have in their pockets
@ -42,6 +41,13 @@ export declare class PMCLootGenerator {
* @returns true if it fits
*/
protected itemFitsInto2By2Slot(item: ITemplateItem): boolean;
/**
* Check if item has a width/height that lets it fit into a 1x2 slot
* 1x1 / 1x2 / 2x1
* @param item Item to check size of
* @returns true if it fits
*/
protected itemFitsInto1By2Slot(item: ITemplateItem): boolean;
/**
* Create an array of loot items a PMC can have in their backpack
* @returns string array of tpls

View File

@ -39,8 +39,6 @@ export declare class HideoutHelper {
static bitcoinFarm: string;
static bitcoinProductionId: string;
static waterCollector: string;
static bitcoinTpl: string;
static expeditionaryFuelTank: string;
static maxSkillPoint: number;
protected hideoutConfig: IHideoutConfig;
constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, playerService: PlayerService, localisationService: LocalisationService, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner);

View File

@ -40,13 +40,13 @@ export declare class InRaidHelper {
* Lookup quest item loss from lostOnDeath config
* @returns True if items should be removed from inventory
*/
removeQuestItemsOnDeath(): boolean;
shouldQuestItemsBeRemovedOnDeath(): boolean;
/**
* Check items array and add an upd object to money with a stack count of 1
* Single stack money items have no upd object and thus no StackObjectsCount, causing issues
* @param items Items array to check
*/
addUpdToMoneyFromRaid(items: Item[]): void;
addStackCountToMoneyFromRaid(items: Item[]): void;
/**
* Reset a profile to a baseline, used post-raid
* Reset points earned during session property
@ -86,6 +86,7 @@ export declare class InRaidHelper {
* @param postRaidProfile Profile sent by client with post-raid quests
*/
protected processAlteredQuests(sessionId: string, pmcData: IPmcData, preRaidQuests: IQuestStatus[], postRaidProfile: IPostRaidPmcData): void;
protected handleFailRestartableQuestStatus(pmcData: IPmcData, postRaidProfile: IPostRaidPmcData, postRaidQuest: IQuestStatus): void;
/**
* Take body part effects from client profile and apply to server profile
* @param saveProgressRequest post-raid request

View File

@ -19,6 +19,7 @@ import { IInventorySplitRequestData } from "@spt/models/eft/inventory/IInventory
import { IInventoryTransferRequestData } from "@spt/models/eft/inventory/IInventoryTransferRequestData";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { IInventoryConfig, RewardDetails } from "@spt/models/spt/config/IInventoryConfig";
import { IOwnerInventoryItems } from "@spt/models/spt/inventory/IOwnerInventoryItems";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { ConfigServer } from "@spt/servers/ConfigServer";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
@ -27,14 +28,6 @@ import { LocalisationService } from "@spt/services/LocalisationService";
import { ICloner } from "@spt/utils/cloners/ICloner";
import { HashUtil } from "@spt/utils/HashUtil";
import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil";
export interface IOwnerInventoryItems {
/** Inventory items from source */
from: Item[];
/** Inventory items at destination */
to: Item[];
sameInventory: boolean;
isMail: boolean;
}
export declare class InventoryHelper {
protected logger: ILogger;
protected hashUtil: HashUtil;
@ -220,17 +213,17 @@ export declare class InventoryHelper {
*/
protected getStashType(sessionID: string): string;
/**
* Internal helper function to transfer an item from one profile to another.
* @param fromItems Inventory of the source (can be non-player)
* Internal helper function to transfer an item + children from one profile to another.
* @param sourceItems Inventory of the source (can be non-player)
* @param toItems Inventory of the destination
* @param body Move request
* @param request Move request
*/
moveItemToProfile(fromItems: Item[], toItems: Item[], body: IInventoryMoveRequestData): void;
moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void;
/**
* Internal helper function to move item within the same profile_f.
* @param pmcData profile to edit
* @param inventoryItems
* @param moveRequest
* @param moveRequest client move request
* @returns True if move was successful
*/
moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): {
@ -246,7 +239,7 @@ export declare class InventoryHelper {
/**
* Internal helper function to handle cartridges in inventory if any of them exist.
*/
protected handleCartridges(items: Item[], body: IInventoryMoveRequestData): void;
protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void;
/**
* Get details for how a random loot container should be handled, max rewards, possible reward tpls
* @param itemTpl Container being opened

View File

@ -4,6 +4,7 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { InsuredItem } from "@spt/models/eft/common/tables/IBotBase";
import { Item, Repairable, Upd } from "@spt/models/eft/common/tables/IItem";
import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem";
import { ItemTpl } from "@spt/models/enums/ItemTpl";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseService } from "@spt/services/DatabaseService";
import { ItemBaseClassService } from "@spt/services/ItemBaseClassService";
@ -34,6 +35,22 @@ export declare class ItemHelper {
protected cloner: ICloner;
protected readonly defaultInvalidBaseTypes: string[];
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, randomUtil: RandomUtil, objectId: ObjectId, mathUtil: MathUtil, databaseService: DatabaseService, handbookHelper: HandbookHelper, itemBaseClassService: ItemBaseClassService, itemFilterService: ItemFilterService, localisationService: LocalisationService, localeService: LocaleService, compareUtil: CompareUtil, cloner: ICloner);
/**
* Does the provided pool of items contain the desired item
* @param itemPool Item collection to check
* @param item Item to look for
* @param slotId OPTIONAL - slotid of desired item
* @returns True if pool contains item
*/
hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean;
/**
* Get the first item from provided pool with the desired tpl
* @param itemPool Item collection to search
* @param item Item to look for
* @param slotId OPTIONAL - slotid of desired item
* @returns Item or undefined
*/
getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined;
/**
* This method will compare two items (with all its children) and see if the are equivalent.
* This method will NOT compare IDs on the items

View File

@ -197,4 +197,5 @@ export declare class ProfileHelper {
* @param achievementId Id of achievement to add
*/
addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void;
hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean;
}

View File

@ -15,6 +15,7 @@ export declare class RagfairSortHelper {
*/
sortOffers(offers: IRagfairOffer[], type: RagfairSort, direction?: number): IRagfairOffer[];
protected sortOffersByID(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByBarter(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByRating(a: IRagfairOffer, b: IRagfairOffer): number;
protected sortOffersByName(a: IRagfairOffer, b: IRagfairOffer): number;
/**

View File

@ -1016,6 +1016,10 @@ export interface IInsurance {
MaxStorageTimeInHour: number;
CoefOfSendingMessageTime: number;
CoefOfHavingMarkOfUnknown: number;
EditionSendingMessageTime: Record<string, IMessageSendTImeMultipler>;
}
export interface IMessageSendTImeMultipler {
multiplier: number;
}
export interface ISkillsSettings {
SkillProgressRate: number;
@ -1427,6 +1431,8 @@ export interface IFenceLevel {
PriceModTaxi: number;
PriceModDelivery: number;
PriceModCleanUp: number;
ReactOnMarkOnUnknowns: boolean;
ReactOnMarkOnUnknownsPVE: boolean;
DeliveryGridSize: Ixyz;
CanInteractWithBtr: boolean;
}

View File

@ -25,9 +25,9 @@ export interface ITemplateSide {
}
export interface ProfileTraderTemplate {
initialLoyaltyLevel: Record<string, number>;
initialStanding: Record<string, number>;
setQuestsAvailableForStart?: boolean;
setQuestsAvailableForFinish?: boolean;
initialStanding: number;
initialSalesSum: number;
jaegerUnlocked: boolean;
/** How many days is usage of the flea blocked for upon profile creation */

View File

@ -169,7 +169,7 @@ export interface Spt {
/** item TPLs blacklisted from being sold on flea for this profile */
blacklistedItemTpls?: string[];
/** key: daily type */
freeRepeatableChangeCount: Record<string, number>;
freeRepeatableRefreshUsedCount: Record<string, number>;
}
export interface ModDetails {
name: string;

View File

@ -69,8 +69,6 @@ export declare enum BaseClasses {
STATIONARY_CONTAINER = "567583764bdc2d98058b456e",
POCKETS = "557596e64bdc2dc2118b4571",
ARMBAND = "5b3f15d486f77432d0509248",
DOG_TAG_USEC = "59f32c3b86f77472a31742f0",
DOG_TAG_BEAR = "59f32bb586f774757e1e8442",
JEWELRY = "57864a3d24597754843f8721",
ELECTRONICS = "57864a66245977548f04a81f",
BUILDING_MATERIAL = "57864ada245977548638de91",

View File

@ -0,0 +1,8 @@
export declare enum GameEditions {
STANDARD = "standard",
LEFT_BEHIND = "left_behind",
PREPARE_FOR_ESCAPE = "prepare_for_escape",
EDGE_OF_DARKNESS = "edge_of_darkness",
UNHEARD = "unheard_edition",
TOURNAMENT = "tournament_live"
}

File diff suppressed because it is too large Load Diff

View File

@ -9,5 +9,6 @@ export declare enum MemberCategory {
CHAT_MODERATOR_WITH_PERMANENT_BAN = 64,
UNIT_TEST = 128,
SHERPA = 256,
EMISSARY = 512
EMISSARY = 512,
UNHEARD = 1024
}

View File

@ -1,5 +1,6 @@
export declare enum RagfairSort {
ID = 0,
BARTER = 2,
RATING = 3,
OFFER_TITLE = 4,
PRICE = 5,

View File

@ -1,172 +0,0 @@
export declare enum Weapons127x55 {
ASH_12 = "5cadfbf7ae92152ac412eeef",
RSH_12 = "633ec7c2a6918cb895019c6c"
}
export declare enum Weapons86x70 {
MK_18 = "5fc22d7c187fea44d52eda44",
AXMC = "627e14b21713922ded6f2c15"
}
export declare enum Weapons9x39 {
AS_VAL = "57c44b372459772d2b39b8ce",
VSS_VINTOREZ = "57838ad32459774a17445cd2",
KBP_9A_91 = "644674a13d52156624001fbc",
VSK_94 = "645e0c6b3b381ede770e1cc9"
}
export declare enum Weapons762x54R {
SVDS = "5c46fbd72e2216398b5a8c9c",
MP_18 = "61f7c9e189e6fb1a5e3ea78d",
MOSIN_INFANTRY = "5bfd297f0db834001a669119",
MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SV_98 = "55801eed4bdc2d89578b4588",
AVT_40 = "6410733d5dd49d77bd07847e",
SVT_40 = "643ea5b23db6f9f57107d9fd",
PKM = "64637076203536ad5600c990",
PKP = "64ca3d3954fc657e230529cc"
}
export declare enum Weapons762x51 {
VPO_101 = "5c501a4d2e221602b412b540",
DT_MDR_762 = "5dcbd56fdbd3d91b3e5468d5",
SA_58 = "5b0bbe4e5acfc40dc528a72d",
SCARH_BLACK = "6183afd850224f204c1da514",
SCARH_FDE = "6165ac306ef05c2ce828ef74",
HK_G28 = "6176aca650224f204c1da3fb",
M1A = "5aafa857e5b5b00018480968",
RFB = "5f2a9575926fd9352339381f",
RSASS = "5a367e5dc4a282000e49738f",
SR_25 = "5df8ce05b11454561e39243b",
DVL_10 = "588892092459774ac91d4b11",
M700 = "5bfea6e90db834001b7347f3",
T5000M = "5df24cf80dee1b22f862e9bc"
}
export declare enum Weapons366TKM {
VPO_209 = "59e6687d86f77411d949b251",
VPO_215 = "5de652c31b7e3716273428be"
}
export declare enum Weapons762x39 {
OP_SKS = "587e02ff24597743df3deaeb",
SKS = "574d967124597745970e7c94",
AK_103 = "5ac66d2e5acfc43b321d4b53",
AK_104 = "5ac66d725acfc43b321d4b60",
AKM = "59d6088586f774275f37482f",
AKMN = "5a0ec13bfcdbcb00165aa685",
AKMS = "59ff346386f77477562ff5e2",
AKMSN = "5abcbc27d8ce8700182eceeb",
MK47_MUTANT = "606587252535c57a13424cfd",
RD_704 = "628a60ae6b1d481ff772e9c8",
VPO_136 = "59e6152586f77473dc057aa1",
RPD = "6513ef33e06849f06c0957ca",
RPDN = "65268d8ecb944ff1e90ea385"
}
export declare enum Weapons762x35 {
MCX = "5fbcc1d9016cce60e8341ab3"
}
export declare enum Weapons556x45 {
ADAR_2_15 = "5c07c60e0db834002330051f",
AK_101 = "5ac66cb05acfc40198510a10",
AK_102 = "5ac66d015acfc400180ae6e4",
DT_MDR_556 = "5c488a752e221602b412af63",
HK_416A5 = "5bb2475ed4351e00853264e3",
HK_G36 = "623063e994fc3f7b302a9696",
M4A1 = "5447a9cd4bdc2dbd208b4567",
SCARL_BLACK = "6184055050224f204c1da540",
SCARL_FDE = "618428466ef05c2ce828f218",
TX15_DML = "5d43021ca4b9362eab4b5e25",
AUG_A1 = "62e7c4fba689e8c9c50dfc38",
AUG_A3 = "63171672192e68c5460cebc5"
}
export declare enum Weapons545x39 {
AK_105 = "5ac66d9b5acfc4001633997a",
AK_74 = "5bf3e03b0db834001d2c4a9c",
AK_74M = "5ac4cd105acfc40016339859",
AK_74N = "5644bd2b4bdc2d3b4c8b4572",
AKS_74 = "5bf3e0490db83400196199af",
AKS_74N = "5ab8e9fcd8ce870019439434",
AKS_74U = "57dc2fa62459775949412633",
AKS_74UB = "5839a40f24597726f856b511",
AKS_74UN = "583990e32459771419544dd2",
SAG_AK = "628b5638ad252a16da6dd245",
SAG_AK_SHORT = "628b9c37a733087d0d7fe84b",
RPK_16 = "5beed0f50db834001c062b12",
AK_12 = "6499849fc93611967b034949"
}
export declare enum Weapons57x28FN {
FN_57_BLACK = "5d3eb3b0a4b93615055e84d2",
FN_57_FDE = "5d67abc1a4b93614ec50137f",
FN_P90 = "5cc82d76e24e8d00134b4b83"
}
export declare enum Weapons46x30HK {
MP7A1 = "5ba26383d4351e00334c93d9",
MP7A2 = "5bd70322209c4d00d7167b8f"
}
export declare enum Weapons1143x23 {
M1911A1 = "5e81c3cbac2bb513793cdc75",
M45A1 = "5f36a0e5fbf956000b716b65",
USP45 = "6193a720f8ee7e52e42109ed",
UMP45 = "5fc3e272f8b6a877a729eac5",
VECTOR45 = "5fb64bc92b1b027b1f50bcf2"
}
export declare enum Weapons9x33R {
CR_50DS = "61a4c8884f95bc3b2c5dc96f"
}
export declare enum Weapons9x21 {
SR_1MP = "59f98b4986f7746f546d2cef",
SR_2M = "62e14904c2699c0ec93adc47"
}
export declare enum Weapons9x19 {
GLOCK_17 = "5a7ae0c351dfba0017554310",
GLOCK_18C = "5b1fa9b25acfc40018633c01",
M9A3 = "5cadc190ae921500103bb3b6",
MP_443 = "576a581d2459771e7b1bc4f1",
P226R = "56d59856d2720bd8418b456a",
PL_15 = "602a9740da11d6478d5a06dc",
CR_200DS = "624c2e8614da335f1e034d8c",
MP5 = "5926bb2186f7744b1c6c6e60",
MP5K = "5d2f0d8048f0356c925bc3b0",
MP9 = "5e00903ae9dc277128008b87",
MP9_N = "5de7bd7bfd6b4e6e2276dc25",
MPX = "58948c8e86f77409493f7266",
PP_19_01 = "59984ab886f7743e98271174",
SAIGA_9 = "59f9cabd86f7743a10721f46",
STM_9 = "60339954d62c9b14ed777c06",
VECTOR_9MM = "5fc3f2d5900b1d5091531e57",
GLOCK_19X = "63088377b5cd696784087147"
}
export declare enum Weapons9x18 {
APB = "5abccb7dd8ce87001773e277",
APS = "5a17f98cfcdbcb0980087290",
PB_SILENCED = "56e0598dd2720bb5668b45a6",
PM = "5448bd6b4bdc2dfc2f8b4569",
PM_T = "579204f224597773d619e051",
PP9_KLIN = "57f4c844245977379d5c14d1",
PP91_KEDR = "57d14d2524597714373db789",
PP91_KEDRB = "57f3c6bd24597738e730fa2f"
}
export declare enum Weapons762x25 {
TT = "571a12c42459771f627b58a0",
TT_GOLD = "5b3b713c5acfc4330140bd8d",
PPSH_41 = "5ea03f7400685063ec28bfa8"
}
export declare enum Weapons12Gauge {
M3_SUPER90 = "6259b864ebedf17603599e88",
M590A1 = "5e870397991fd70db46995c8",
M870 = "5a7828548dc32e5a9c28b516",
MP_133 = "54491c4f4bdc2db1078b4568",
MP_153 = "56dee2bdd2720bc8328b4567",
MP_155 = "606dae0ab0e443224b421bb7",
MP_43_1C = "5580223e4bdc2d1c128b457f",
MTS_255_12 = "60db29ce99594040e04c4a27",
SAIGA_12GA = "576165642459773c7a400233"
}
export declare enum Weapons20Gauge {
TOZ_106 = "5a38e6bac4a2826c6e06d79b"
}
export declare enum Weapons23x75 {
KS_23M = "5e848cc2988a8701445df1e8"
}
export declare enum Weapons68x51 {
MCX_SPEAR = "65290f395ae2ae97b80fdf2d"
}
export declare enum Weapons40x46 {
M32A1 = "6275303a9f372d6ea97f9ec7",
FN40GL = "5e81ebcd8e146c7080625e15"
}

View File

@ -0,0 +1,141 @@
export declare enum Weapons {
ASSAULTCARBINE_762X39_OP_SKS = "587e02ff24597743df3deaeb",
ASSAULTCARBINE_762X39_SKS = "574d967124597745970e7c94",
ASSAULTCARBINE_762X51_VPO_101_VEPR_HUNTER = "5c501a4d2e221602b412b540",
ASSAULTCARBINE_762X54R_AVT_40 = "6410733d5dd49d77bd07847e",
ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd",
ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc",
ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce",
ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9",
ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef",
ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251",
ASSAULTRIFLE_545X39_AKS_74 = "5bf3e0490db83400196199af",
ASSAULTRIFLE_545X39_AKS_74N = "5ab8e9fcd8ce870019439434",
ASSAULTRIFLE_545X39_AKS_74U = "57dc2fa62459775949412633",
ASSAULTRIFLE_545X39_AKS_74UB = "5839a40f24597726f856b511",
ASSAULTRIFLE_545X39_AKS_74UN = "583990e32459771419544dd2",
ASSAULTRIFLE_545X39_AK_105 = "5ac66d9b5acfc4001633997a",
ASSAULTRIFLE_545X39_AK_12 = "6499849fc93611967b034949",
ASSAULTRIFLE_545X39_AK_545 = "628b5638ad252a16da6dd245",
ASSAULTRIFLE_545X39_AK_545_SHORT = "628b9c37a733087d0d7fe84b",
ASSAULTRIFLE_545X39_AK_74 = "5bf3e03b0db834001d2c4a9c",
ASSAULTRIFLE_545X39_AK_74M = "5ac4cd105acfc40016339859",
ASSAULTRIFLE_545X39_AK_74N = "5644bd2b4bdc2d3b4c8b4572",
ASSAULTRIFLE_556X45_ADAR_2_15 = "5c07c60e0db834002330051f",
ASSAULTRIFLE_556X45_AK_101 = "5ac66cb05acfc40198510a10",
ASSAULTRIFLE_556X45_AK_102 = "5ac66d015acfc400180ae6e4",
ASSAULTRIFLE_556X45_AUG_A1 = "62e7c4fba689e8c9c50dfc38",
ASSAULTRIFLE_556X45_AUG_A3 = "63171672192e68c5460cebc5",
ASSAULTRIFLE_556X45_G36 = "623063e994fc3f7b302a9696",
ASSAULTRIFLE_556X45_HK_416A5 = "5bb2475ed4351e00853264e3",
ASSAULTRIFLE_556X45_M4A1 = "5447a9cd4bdc2dbd208b4567",
ASSAULTRIFLE_556X45_MDR = "5c488a752e221602b412af63",
ASSAULTRIFLE_556X45_MK_16 = "6184055050224f204c1da540",
ASSAULTRIFLE_556X45_MK_16_FDE = "618428466ef05c2ce828f218",
ASSAULTRIFLE_556X45_TX_15_DML = "5d43021ca4b9362eab4b5e25",
ASSAULTRIFLE_68X51_SPEAR_68 = "65290f395ae2ae97b80fdf2d",
ASSAULTRIFLE_762X35_MCX_300_BLK = "5fbcc1d9016cce60e8341ab3",
ASSAULTRIFLE_762X39_AKM = "59d6088586f774275f37482f",
ASSAULTRIFLE_762X39_AKMN = "5a0ec13bfcdbcb00165aa685",
ASSAULTRIFLE_762X39_AKMS = "59ff346386f77477562ff5e2",
ASSAULTRIFLE_762X39_AKMSN = "5abcbc27d8ce8700182eceeb",
ASSAULTRIFLE_762X39_AK_103 = "5ac66d2e5acfc43b321d4b53",
ASSAULTRIFLE_762X39_AK_104 = "5ac66d725acfc43b321d4b60",
ASSAULTRIFLE_762X39_MK47 = "606587252535c57a13424cfd",
ASSAULTRIFLE_762X39_RD_704 = "628a60ae6b1d481ff772e9c8",
ASSAULTRIFLE_762X39_VPO_136_VEPR_KM = "59e6152586f77473dc057aa1",
ASSAULTRIFLE_762X51_MDR = "5dcbd56fdbd3d91b3e5468d5",
ASSAULTRIFLE_762X51_MK_17 = "6183afd850224f204c1da514",
ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74",
ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d",
ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702",
FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9",
FLARE_26X75_GREEN = "6217726288ed9f0845317459",
FLARE_26X75_RED = "62178c4d4ecf221597654e3d",
FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766",
GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e",
GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15",
GRENADELAUNCHER_40X46_FN40GL_2 = "639c3fbbd0446708ee622ee9",
MACHINEGUN_30X29_AGS_30 = "5d52cc5ba4b9367408500062",
MACHINEGUN_545X39_NSV_UTYOS = "5cdeb229d7f00c000e7ce174",
MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12",
MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca",
MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385",
MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990",
MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc",
MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b",
MARKSMANRIFLE_762X51_G28 = "6176aca650224f204c1da3fb",
MARKSMANRIFLE_762X51_M1A = "5aafa857e5b5b00018480968",
MARKSMANRIFLE_762X51_RFB = "5f2a9575926fd9352339381f",
MARKSMANRIFLE_762X51_RSASS = "5a367e5dc4a282000e49738f",
MARKSMANRIFLE_762X51_SR_25 = "5df8ce05b11454561e39243b",
MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c",
MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44",
MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2",
PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678",
PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75",
PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65",
PISTOL_45ACP_USP_45 = "6193a720f8ee7e52e42109ed",
PISTOL_57X28_FN_5_7 = "5d3eb3b0a4b93615055e84d2",
PISTOL_57X28_FN_5_7_FDE = "5d67abc1a4b93614ec50137f",
PISTOL_762X25TT_TT = "571a12c42459771f627b58a0",
PISTOL_762X25TT_TT_GOLD_GOLDEN = "5b3b713c5acfc4330140bd8d",
PISTOL_9X18PM_APB = "5abccb7dd8ce87001773e277",
PISTOL_9X18PM_APS = "5a17f98cfcdbcb0980087290",
PISTOL_9X18PM_PB = "56e0598dd2720bb5668b45a6",
PISTOL_9X18PM_PM = "5448bd6b4bdc2dfc2f8b4569",
PISTOL_9X18PM_PM_T = "579204f224597773d619e051",
PISTOL_9X19_GLOCK_17 = "5a7ae0c351dfba0017554310",
PISTOL_9X19_GLOCK_18C = "5b1fa9b25acfc40018633c01",
PISTOL_9X19_GLOCK_19X = "63088377b5cd696784087147",
PISTOL_9X19_M9A3 = "5cadc190ae921500103bb3b6",
PISTOL_9X19_MP_443_GRACH = "576a581d2459771e7b1bc4f1",
PISTOL_9X19_P226R = "56d59856d2720bd8418b456a",
PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc",
PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef",
REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c",
REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27",
REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7",
REVOLVER_9X19_CR_200DS = "624c2e8614da335f1e034d8c",
REVOLVER_9X33R_CR_50DS = "61a4c8884f95bc3b2c5dc96f",
SHOTGUN_12G_590A1 = "5e870397991fd70db46995c8",
SHOTGUN_12G_M3_SUPER_90 = "6259b864ebedf17603599e88",
SHOTGUN_12G_M870 = "5a7828548dc32e5a9c28b516",
SHOTGUN_12G_MP_133 = "54491c4f4bdc2db1078b4568",
SHOTGUN_12G_MP_153 = "56dee2bdd2720bc8328b4567",
SHOTGUN_12G_MP_155 = "606dae0ab0e443224b421bb7",
SHOTGUN_12G_MP_43_1C = "5580223e4bdc2d1c128b457f",
SHOTGUN_12G_SAIGA_12K = "576165642459773c7a400233",
SHOTGUN_12G_SAWED_OFF = "64748cb8de82c85eaf0a273a",
SHOTGUN_20G_TOZ_106 = "5a38e6bac4a2826c6e06d79b",
SHOTGUN_23X75_KS_23M = "5e848cc2988a8701445df1e8",
SHOTGUN_762X54R_MP_18 = "61f7c9e189e6fb1a5e3ea78d",
SIGNALPISTOL_26X75_SP_81 = "620109578d82e67e7911abf2",
SMG_45ACP_UMP_45 = "5fc3e272f8b6a877a729eac5",
SMG_45ACP_VECTOR_45ACP = "5fb64bc92b1b027b1f50bcf2",
SMG_46X30_MP7A1 = "5ba26383d4351e00334c93d9",
SMG_46X30_MP7A2 = "5bd70322209c4d00d7167b8f",
SMG_57X28_P90 = "5cc82d76e24e8d00134b4b83",
SMG_762X25TT_PPSH41 = "5ea03f7400685063ec28bfa8",
SMG_9X18PMM_PP_9_KLIN = "57f4c844245977379d5c14d1",
SMG_9X18PM_PP_91_01_KEDR_B = "57f3c6bd24597738e730fa2f",
SMG_9X18PM_PP_91_KEDR = "57d14d2524597714373db789",
SMG_9X19_MP5K_N = "5d2f0d8048f0356c925bc3b0",
SMG_9X19_MP5_NAVY_3_ROUND_BURST = "5926bb2186f7744b1c6c6e60",
SMG_9X19_MP9 = "5e00903ae9dc277128008b87",
SMG_9X19_MP9_N = "5de7bd7bfd6b4e6e2276dc25",
SMG_9X19_MPX = "58948c8e86f77409493f7266",
SMG_9X19_PP_19_01 = "59984ab886f7743e98271174",
SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46",
SMG_9X19_STM_9 = "60339954d62c9b14ed777c06",
SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57",
SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47",
SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be",
SNIPERRIFLE_762X51_DVL_10 = "588892092459774ac91d4b11",
SNIPERRIFLE_762X51_M700 = "5bfea6e90db834001b7347f3",
SNIPERRIFLE_762X51_T_5000M = "5df24cf80dee1b22f862e9bc",
SNIPERRIFLE_762X54R_MOSIN_INFANTRY = "5bfd297f0db834001a669119",
SNIPERRIFLE_762X54R_MOSIN_SNIPER = "5ae08f0a5acfc408fb1398a1",
SNIPERRIFLE_762X54R_SV_98 = "55801eed4bdc2d89578b4588",
SNIPERRIFLE_86X70_AXMC = "627e14b21713922ded6f2c15"
}

View File

@ -0,0 +1,9 @@
import { Item } from "@spt/models/eft/common/tables/IItem";
export interface IOwnerInventoryItems {
/** Inventory items from source */
from: Item[];
/** Inventory items at destination */
to: Item[];
sameInventory: boolean;
isMail: boolean;
}

View File

@ -0,0 +1,37 @@
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { Item } from "@spt/models/eft/common/tables/IItem";
import { IInventoryCreateMarkerRequestData } from "@spt/models/eft/inventory/IInventoryCreateMarkerRequestData";
import { IInventoryDeleteMarkerRequestData } from "@spt/models/eft/inventory/IInventoryDeleteMarkerRequestData";
import { IInventoryEditMarkerRequestData } from "@spt/models/eft/inventory/IInventoryEditMarkerRequestData";
import { ILogger } from "@spt/models/spt/utils/ILogger";
export declare class MapMarkerService {
protected logger: ILogger;
constructor(logger: ILogger);
/**
* Add note to a map item in player inventory
* @param pmcData Player profile
* @param request Add marker request
* @returns Item
*/
createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item;
/**
* Delete a map marker
* @param pmcData Player profile
* @param request Delete marker request
* @returns Item
*/
deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item;
/**
* Edit an existing map marker
* @param pmcData Player profile
* @param request Edit marker request
* @returns Item
*/
editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
}

View File

@ -0,0 +1,81 @@
/**
* Dynamically generate the following two files:
* - src/models/enums/ItemTpl.ts
* - src/models/enums/Weapons.ts
*
* Based on data from the assets/database folders.
*
* Usage:
* - Run this script using npm: `npm run gen:items`
*
* Notes:
* - Ensure that all necessary Node.js modules are installed before running the script: `npm install`
* - The following rules are used for determining item base names:
* -- Certain items are manually overridden by itemOverrides.ts, when the names are not unique enough
* -- Random containers, built in inserts and stashes utilize the item's _name property
* -- Ammo, ammo boxes, and magazines utilize the item's English locale ShortName property
* -- All other items utilize the item's English locale Name property
* -- In the event the above rules fail, the fallback order is the Englick locale Name property, then the item's _name property
* -- Trailing and leading whitespace is stripped, special characters are removed, and spaces are replaced with underscores
* - Item caliber data is cleaned of the words "CALIBER", "PARA" and "NATO", as well as replacing "1143x23ACP" with "45ACP" for consistency
* - Damaged ammo boxes are suffixed with "_DAMAGED"
* - The parent item type prefix is grouped more than the base item list, see "getParentName" for the rules around this
* - Finalized enum names are created as a combination of the parent name, prefix, item name, and suffix
*/
import { OnLoad } from "@spt/di/OnLoad";
import { ItemHelper } from "@spt/helpers/ItemHelper";
import { ILogger } from "@spt/models/spt/utils/ILogger";
import { DatabaseServer } from "@spt/servers/DatabaseServer";
import { LocaleService } from "@spt/services/LocaleService";
export declare class ItemTplGenerator {
protected databaseServer: DatabaseServer;
protected localeService: LocaleService;
protected logger: ILogger;
protected itemHelper: ItemHelper;
protected onLoadComponents: OnLoad[];
private enumDir;
private items;
private itemOverrides;
private collidedEnumKeys;
constructor(databaseServer: DatabaseServer, localeService: LocaleService, logger: ILogger, itemHelper: ItemHelper, onLoadComponents: OnLoad[]);
run(): Promise<void>;
/**
* Return an object containing all items in the game with a generated name
* @returns An object containing a generated item name to item ID association
*/
private generateItemsObject;
/**
*
* @param orderedItemsObject The previously generated object of item name to item ID associations
* @returns
*/
private generateWeaponsObject;
/**
* Clear any non-alpha numeric characters, and fix multiple underscores
* @param enumKey The enum key to sanitize
* @returns The sanitized enum key
*/
private sanitizeEnumKey;
private getParentName;
private isValidItem;
/**
* Generate a prefix for the passed in item
* @param item The item to generate the prefix for
* @returns The prefix of the given item
*/
private getItemPrefix;
private getItemSuffix;
private getAmmoPrefix;
private cleanCaliber;
private getAmmoBoxPrefix;
private getMagazinePrefix;
/**
* Return the name of the passed in item, formatted for use in an enum
* @param item The item to generate the name for
* @returns The name of the given item
*/
private getItemName;
private getItemNameSuffix;
private logEnumValueChanges;
private writeEnumsToFile;
}

View File

@ -0,0 +1,7 @@
import "reflect-metadata";
import "source-map-support/register";
export declare class ItemTplGeneratorProgram {
private errorHandler;
constructor();
start(): Promise<void>;
}

View File

@ -0,0 +1,75 @@
/**
* An object containing item name overrides for use with ItemTplGenerator
*/
declare const _default: {
"5963866b86f7747bfa1c4462": string;
"5963866286f7747bf429b572": string;
"614451b71e5874611e2c7ae5": string;
"557ffd194bdc2d28148b457f": string;
"627a4e6b255f7527fb05a0f6": string;
"65e080be269cbd5c5005e529": string;
"64cbd95a29b9b4283e216ff5": string;
"665ee77ccf2d642e98220bca": string;
"6662e9f37fa79a6d83730fa0": string;
"6662ea05f6259762c56f3189": string;
"6662e9aca7e0b43baa3d5f74": string;
"6662e9cda7e0b43baa3d5f76": string;
"590de92486f77423d9312a33": string;
"5937fc6786f7742cab753590": string;
"5937fd0086f7742bf33fc198": string;
"638cbb3ba63f1b49be6a300e": string;
"5eff135be0d3331e9d282b7b": string;
"638e9d5536b3b72c944e2fc7": string;
"5a29357286f77409c705e025": string;
"5939e9b286f77462a709572c": string;
"591093bb86f7747caa7bb2ee": string;
"61904c9df62c89219a56e034": string;
"638cbc68a63f1b49be6a3010": string;
"619252352be33f26043400a7": string;
"5a29284f86f77463ef3db363": string;
"64b91627dd13d43b9d01d6d1": string;
"5a29276886f77435ed1b117c": string;
"628393620d8524273e7eb028": string;
"638dfc803083a019d447768e": string;
"638e0057ab150a5f56238960": string;
"6393262086e646067c176aa2": string;
"63989ced706b793c7d60cfef": string;
"6398a072e301557ae24cec92": string;
"6398a0861c712b1e1d4dadf1": string;
"638e0752ab150a5f56238962": string;
"638e06c4b8bac37a110ed56d": string;
"63927b29c115f907b14700b9": string;
"5939e5a786f77461f11c0098": string;
"591092ef86f7747bb8703422": string;
"5938188786f77474f723e87f": string;
"593965cf86f774087a77e1b6": string;
"5938878586f7741b797c562f": string;
"5a6860d886f77411cd3a9e47": string;
"638cbb0f7f97256fac16167a": string;
"664a5775f3d3570fba06be64": string;
"664b69c5a082271bc46c4e11": string;
"664b69e8e1238e506d3630af": string;
"6575a6ca8778e96ded05a802": string;
"6614217b6d9d5abcad0ff098": string;
"6614230055afee107f05e998": string;
"661421c7c1f2f548c50ee649": string;
"661423200d240a5f5d0f679b": string;
"5d1340b3d7ad1a0b52682ed7": string;
"55802d5f4bdc2dac148b458e": string;
"5d1340cad7ad1a0b0b249869": string;
"5d1340bdd7ad1a0e8d245aab": string;
"5cbdaf89ae9215000e5b9c94": string;
"5e21a3c67e40bd02257a008a": string;
"5914944186f774189e5e76c2": string;
"5937ef2b86f77408a47244b3": string;
"59387ac686f77401442ddd61": string;
"61aa1e9a32a4743c3453d2cf": string;
"61aa1ead84ea0800645777fd": string;
"5b6d9ce188a4501afc1b2b25": string;
"5c0a840b86f7742ffa4f2482": string;
"5d235bb686f77443f4331278": string;
"5e81ebcd8e146c7080625e15": string;
"639c3fbbd0446708ee622ee9": string;
"639af924d0446708ee62294e": string;
};
export default _default;

View File

@ -74,8 +74,11 @@ export declare class GameController {
* Handle client/game/start
*/
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string, startTimeStampMS: number): void;
protected adjustHideoutCraftTimes(): void;
protected adjustHideoutBuildTimes(): void;
protected adjustHideoutCraftTimes(overrideSeconds: number): void;
/**
* Adjust all hideout craft times to be no higher than the override
*/
protected adjustHideoutBuildTimes(overrideSeconds: number): void;
protected adjustLocationBotValues(): void;
/**
* Out of date/incorrectly made trader mods forget this data
@ -122,7 +125,7 @@ export declare class GameController {
* @param pmcProfile Player profile
*/
protected warnOnActiveBotReloadSkill(pmcProfile: IPmcData): void;
protected flagAllItemsInDbAsSellableOnFlea(): void;
protected setAllDbItemsAsSellableOnFlea(): void;
/**
* When player logs in, iterate over all active effects and reduce timer
* @param pmcProfile Profile to adjust values for

View File

@ -48,7 +48,6 @@ export declare class InsuranceController {
protected configServer: ConfigServer;
protected cloner: ICloner;
protected insuranceConfig: IInsuranceConfig;
protected roubleTpl: string;
constructor(logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, hashUtil: HashUtil, eventOutputHolder: EventOutputHolder, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, weightedRandomHelper: WeightedRandomHelper, traderHelper: TraderHelper, paymentService: PaymentService, insuranceService: InsuranceService, mailSendService: MailSendService, ragfairPriceService: RagfairPriceService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner);
/**
* Process insurance items of all profiles prior to being given back to the player through the mail service.

View File

@ -34,6 +34,7 @@ import { EventOutputHolder } from "@spt/routers/EventOutputHolder";
import { DatabaseService } from "@spt/services/DatabaseService";
import { FenceService } from "@spt/services/FenceService";
import { LocalisationService } from "@spt/services/LocalisationService";
import { MapMarkerService } from "@spt/services/MapMarkerService";
import { PlayerService } from "@spt/services/PlayerService";
import { RagfairOfferService } from "@spt/services/RagfairOfferService";
import { ICloner } from "@spt/utils/cloners/ICloner";
@ -52,6 +53,7 @@ export declare class InventoryController {
protected questHelper: QuestHelper;
protected hideoutHelper: HideoutHelper;
protected ragfairOfferService: RagfairOfferService;
protected mapMarkerService: MapMarkerService;
protected profileHelper: ProfileHelper;
protected paymentHelper: PaymentHelper;
protected traderHelper: TraderHelper;
@ -61,7 +63,7 @@ export declare class InventoryController {
protected eventOutputHolder: EventOutputHolder;
protected httpResponseUtil: HttpResponseUtil;
protected cloner: ICloner;
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, randomUtil: RandomUtil, databaseService: DatabaseService, fenceService: FenceService, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, questHelper: QuestHelper, hideoutHelper: HideoutHelper, ragfairOfferService: RagfairOfferService, mapMarkerService: MapMarkerService, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, traderHelper: TraderHelper, localisationService: LocalisationService, playerService: PlayerService, lootGenerator: LootGenerator, eventOutputHolder: EventOutputHolder, httpResponseUtil: HttpResponseUtil, cloner: ICloner);
/**
* Move Item
* change location of item with parentId and slotId
@ -215,12 +217,6 @@ export declare class InventoryController {
* @param output Client response
*/
editMapMarker(pmcData: IPmcData, request: IInventoryEditMarkerRequestData, sessionID: string, output: IItemEventRouterResponse): void;
/**
* Strip out characters from note string that are not: letter/numbers/unicode/spaces
* @param mapNoteText Marker text to sanitise
* @returns Sanitised map marker text
*/
protected sanitiseMapMarkerText(mapNoteText: string): string;
/**
* Handle OpenRandomLootContainer event
* Handle event fired when a container is unpacked (currently only the halloween pumpkin)

View File

@ -47,7 +47,6 @@ export declare class ProfileController {
protected dialogueHelper: DialogueHelper;
protected questHelper: QuestHelper;
protected profileHelper: ProfileHelper;
protected defaultInventoryTpl: string;
constructor(logger: ILogger, hashUtil: HashUtil, cloner: ICloner, timeUtil: TimeUtil, saveServer: SaveServer, databaseService: DatabaseService, itemHelper: ItemHelper, profileFixerService: ProfileFixerService, localisationService: LocalisationService, seasonalEventService: SeasonalEventService, mailSendService: MailSendService, playerScavGenerator: PlayerScavGenerator, eventOutputHolder: EventOutputHolder, traderHelper: TraderHelper, dialogueHelper: DialogueHelper, questHelper: QuestHelper, profileHelper: ProfileHelper);
/**
* Handle /launcher/profiles

View File

@ -5,6 +5,7 @@ import { RepeatableQuestHelper } from "@spt/helpers/RepeatableQuestHelper";
import { IPmcData } from "@spt/models/eft/common/IPmcData";
import { IPmcDataRepeatableQuest, IRepeatableQuest } from "@spt/models/eft/common/tables/IRepeatableQuests";
import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse";
import { ISptProfile } from "@spt/models/eft/profile/ISptProfile";
import { IRepeatableQuestChangeRequest } from "@spt/models/eft/quests/IRepeatableQuestChangeRequest";
import { ELocationName } from "@spt/models/enums/ELocationName";
import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig";
@ -66,6 +67,12 @@ export declare class RepeatableQuestController {
* @returns {array} Array of "repeatableQuestObjects" as described above
*/
getClientRepeatableQuests(sessionID: string): IPmcDataRepeatableQuest[];
/**
* Expire quests and replace expired quests with ready-to-hand-in quests inside generatedRepeatables.activeQuests
* @param generatedRepeatables Repeatables to process (daily/weekly)
* @param pmcData Player profile
*/
protected processExpiredQuests(generatedRepeatables: IPmcDataRepeatableQuest, pmcData: IPmcData): void;
/**
* Check if a repeatable quest type (daily/weekly) is active for the given profile
* @param repeatableConfig Repeatable quest config
@ -140,4 +147,12 @@ export declare class RepeatableQuestController {
*/
changeRepeatableQuest(pmcData: IPmcData, changeRequest: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
protected attemptToGenerateRepeatableQuest(pmcData: IPmcData, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest;
/**
* Some accounts have access to repeatable quest refreshes for free
* Track the usage of them inside players profile
* @param fullProfile Profile of player
* @param repeatableSubType Can be daily/weekly/scav repeatables
* @param repeatableTypeName Subtype of repeatables: daily / weekly / scav
*/
protected handleFreeRefreshUses(fullProfile: ISptProfile, repeatableSubType: IPmcDataRepeatableQuest, repeatableTypeName: string): void;
}

View File

@ -42,7 +42,6 @@ export declare class TradeController {
protected ragfairPriceService: RagfairPriceService;
protected mailSendService: MailSendService;
protected configServer: ConfigServer;
protected roubleTpl: string;
protected ragfairConfig: IRagfairConfig;
protected traderConfig: ITraderConfig;
constructor(logger: ILogger, databaseService: DatabaseService, eventOutputHolder: EventOutputHolder, tradeHelper: TradeHelper, timeUtil: TimeUtil, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, ragfairServer: RagfairServer, httpResponse: HttpResponseUtil, localisationService: LocalisationService, ragfairPriceService: RagfairPriceService, mailSendService: MailSendService, configServer: ConfigServer);

View File

@ -78,13 +78,14 @@ export declare class BotGenerator {
* @returns IBotBase object
*/
protected generateBot(sessionId: string, bot: IBotBase, botJsonTemplate: IBotType, botGenerationDetails: BotGenerationDetails): IBotBase;
protected addAdditionalPocketLootWeightsForUnheardBot(botJsonTemplate: IBotType): void;
/**
* Remove items from item.json/lootableItemBlacklist from bots inventory
* @param botInventory Bot to filter
*/
protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void;
/**
* Choose various appearance settings for a bot using weights
* Choose various appearance settings for a bot using weights: head/body/feet/hands
* @param bot Bot to adjust
* @param appearance Appearance settings to choose from
* @param botGenerationDetails Generation details
@ -143,12 +144,25 @@ export declare class BotGenerator {
* Chooses from all the game versions (standard, eod etc)
* Chooses account type (default, Sherpa, etc)
* @param botInfo bot info object to update
* @returns Chosen game version
*/
protected getRandomisedGameVersionAndCategory(botInfo: Info): void;
protected setRandomisedGameVersionAndCategory(botInfo: Info): string;
/**
* Add a side-specific (usec/bear) dogtag item to a bots inventory
* @param bot bot to add dogtag to
* @returns Bot with dogtag added
*/
protected addDogtagToBot(bot: IBotBase): void;
/**
* Get a dogtag tpl that matches the bots game version and side
* @param side Usec/Bear
* @param gameVersion edge_of_darkness / standard
* @returns item tpl
*/
protected getDogtagTplByGameVersionAndSide(side: string, gameVersion: string): string;
/**
* Adjust a PMCs pocket tpl to UHD if necessary, otherwise do nothing
* @param bot Pmc object to adjust
*/
protected setPmcPocketsByGameVersion(bot: IBotBase): void;
}

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