380 #24

Merged
chomp merged 13 commits from 380 into master 2024-04-04 17:29:49 -04:00
288 changed files with 1128 additions and 1056 deletions
Showing only changes of commit 89a199bc91 - Show all commits

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

View File

@ -1,9 +1,10 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { Exit, ILocationBase } from "@spt-aki/models/eft/common/ILocationBase";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot"; import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
export interface ILocation { export interface ILocation {
base: ILocationBase; base: ILocationBase;
looseLoot: ILooseLoot; looseLoot: ILooseLoot;
statics: IStaticContainer; statics: IStaticContainer;
allExtracts: Exit[];
} }
export interface IStaticContainer { export interface IStaticContainer {
containersGroups: Record<string, IContainerMinMax>; containersGroups: Record<string, IContainerMinMax>;

View File

@ -205,6 +205,7 @@ export interface Exit {
PassageRequirement: string; PassageRequirement: string;
PlayersCount: number; PlayersCount: number;
RequirementTip: string; RequirementTip: string;
Side?: string;
} }
export interface MaxItemCountInLocation { export interface MaxItemCountInLocation {
TemplateId: string; TemplateId: string;

View File

@ -182,6 +182,7 @@ export interface IEftStats {
LastPlayerState?: LastPlayerState; LastPlayerState?: LastPlayerState;
TotalInGameTime: number; TotalInGameTime: number;
SurvivorClass?: string; SurvivorClass?: string;
sptLastRaidFenceRepChange?: number;
} }
export interface IDroppedItem { export interface IDroppedItem {
QuestId: string; QuestId: string;

View File

@ -3,6 +3,8 @@ export interface IItemConfig extends IBaseConfig {
kind: "aki-item"; kind: "aki-item";
/** Items that should be globally blacklisted */ /** Items that should be globally blacklisted */
blacklist: string[]; blacklist: string[];
/** items that should not be given as rewards */
rewardItemBlacklist: string[];
/** Items that can only be found on bosses */ /** Items that can only be found on bosses */
bossItems: string[]; bossItems: string[];
handbookPriceOverride: Record<string, number>; handbookPriceOverride: Record<string, number>;

View File

@ -7,5 +7,5 @@ export declare enum LogTextColor {
MAGENTA = "magenta", MAGENTA = "magenta",
CYAN = "cyan", CYAN = "cyan",
WHITE = "white", WHITE = "white",
GRAY = "" GRAY = "gray"
} }

View File

@ -1,28 +1,23 @@
import { ILocationBase } from "@spt-aki/models/eft/common/ILocationBase"; import { ILocation } from "@spt-aki/models/eft/common/ILocation";
import { ILooseLoot } from "@spt-aki/models/eft/common/ILooseLoot";
import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase"; import { ILocationsBase } from "@spt-aki/models/eft/common/tables/ILocationsBase";
export interface ILocations { export interface ILocations {
bigmap?: ILocationData; bigmap?: ILocation;
develop?: ILocationData; develop?: ILocation;
factory4_day?: ILocationData; factory4_day?: ILocation;
factory4_night?: ILocationData; factory4_night?: ILocation;
hideout?: ILocationData; hideout?: ILocation;
interchange?: ILocationData; interchange?: ILocation;
laboratory?: ILocationData; laboratory?: ILocation;
lighthouse?: ILocationData; lighthouse?: ILocation;
privatearea?: ILocationData; privatearea?: ILocation;
rezervbase?: ILocationData; rezervbase?: ILocation;
shoreline?: ILocationData; shoreline?: ILocation;
suburbs?: ILocationData; suburbs?: ILocation;
tarkovstreets?: ILocationData; tarkovstreets?: ILocation;
terminal?: ILocationData; terminal?: ILocation;
town?: ILocationData; town?: ILocation;
woods?: ILocationData; woods?: ILocation;
sandbox?: ILocationData; sandbox?: ILocation;
/** Holds a mapping of the linkages between locations on the UI */ /** Holds a mapping of the linkages between locations on the UI */
base?: ILocationsBase; base?: ILocationsBase;
} }
export interface ILocationData {
base: ILocationBase;
looseLoot?: ILooseLoot;
}

View File

@ -15,6 +15,17 @@ export declare class ItemFilterService {
* @returns true if blacklisted * @returns true if blacklisted
*/ */
isItemBlacklisted(tpl: string): boolean; isItemBlacklisted(tpl: string): boolean;
/**
* Check if item is blacklisted from being a reward for player
* @param tpl item tpl to check is on blacklist
* @returns True when blacklisted
*/
isItemRewardBlacklisted(tpl: string): boolean;
/**
* Get an array of items that should never be given as a reward to player
* @returns string array of item tpls
*/
getItemRewardBlacklist(): string[];
/** /**
* Return every template id blacklisted in config/item.json * Return every template id blacklisted in config/item.json
* @returns string array of blacklisted tempalte ids * @returns string array of blacklisted tempalte ids

View File

@ -40,6 +40,4 @@ export declare class Watermark {
protected resetCursor(): void; protected resetCursor(): void;
/** Draw the watermark */ /** Draw the watermark */
protected draw(): void; protected draw(): void;
/** Caculate text length */
protected textLength(s: string): number;
} }

View File

@ -13,6 +13,7 @@ import { LootRequest } from "@spt-aki/models/spt/services/LootRequest";
import { ILogger } from "@spt-aki/models/spt/utils/ILogger"; import { ILogger } from "@spt-aki/models/spt/utils/ILogger";
import { ConfigServer } from "@spt-aki/servers/ConfigServer"; import { ConfigServer } from "@spt-aki/servers/ConfigServer";
import { DatabaseServer } from "@spt-aki/servers/DatabaseServer"; import { DatabaseServer } from "@spt-aki/servers/DatabaseServer";
import { ItemFilterService } from "@spt-aki/services/ItemFilterService";
import { LocalisationService } from "@spt-aki/services/LocalisationService"; import { LocalisationService } from "@spt-aki/services/LocalisationService";
import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService"; import { RaidTimeAdjustmentService } from "@spt-aki/services/RaidTimeAdjustmentService";
import { HashUtil } from "@spt-aki/utils/HashUtil"; import { HashUtil } from "@spt-aki/utils/HashUtil";
@ -28,6 +29,7 @@ export declare class LocationController {
protected locationGenerator: LocationGenerator; protected locationGenerator: LocationGenerator;
protected localisationService: LocalisationService; protected localisationService: LocalisationService;
protected raidTimeAdjustmentService: RaidTimeAdjustmentService; protected raidTimeAdjustmentService: RaidTimeAdjustmentService;
protected itemFilterService: ItemFilterService;
protected lootGenerator: LootGenerator; protected lootGenerator: LootGenerator;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected timeUtil: TimeUtil; protected timeUtil: TimeUtil;
@ -35,7 +37,7 @@ export declare class LocationController {
protected applicationContext: ApplicationContext; protected applicationContext: ApplicationContext;
protected airdropConfig: IAirdropConfig; protected airdropConfig: IAirdropConfig;
protected locationConfig: ILocationConfig; protected locationConfig: ILocationConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, weightedRandomHelper: WeightedRandomHelper, logger: ILogger, locationGenerator: LocationGenerator, localisationService: LocalisationService, raidTimeAdjustmentService: RaidTimeAdjustmentService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext);
/** /**
* Handle client/location/getLocalloot * Handle client/location/getLocalloot
* Get a location (map) with generated loot data * Get a location (map) with generated loot data

View File

@ -105,7 +105,7 @@ export declare class RepeatableQuestGenerator {
/** /**
* Filter a maps exits to just those for the desired side * Filter a maps exits to just those for the desired side
* @param locationKey Map id (e.g. factory4_day) * @param locationKey Map id (e.g. factory4_day)
* @param playerSide Scav/Bear * @param playerSide Scav/Pmc
* @returns Array of Exit objects * @returns Array of Exit objects
*/ */
protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[];

View File

@ -3,7 +3,7 @@ import { ItemHelper } from "@spt-aki/helpers/ItemHelper";
import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper"; import { PaymentHelper } from "@spt-aki/helpers/PaymentHelper";
import { QuestHelper } from "@spt-aki/helpers/QuestHelper"; import { QuestHelper } from "@spt-aki/helpers/QuestHelper";
import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData"; import { IPmcData, IPostRaidPmcData } from "@spt-aki/models/eft/common/IPmcData";
import { IQuestStatus, TraderInfo, Victim } from "@spt-aki/models/eft/common/tables/IBotBase"; import { IQuestStatus, TraderInfo } from "@spt-aki/models/eft/common/tables/IBotBase";
import { Item } from "@spt-aki/models/eft/common/tables/IItem"; import { Item } from "@spt-aki/models/eft/common/tables/IItem";
import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "@spt-aki/models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig"; import { IInRaidConfig } from "@spt-aki/models/spt/config/IInRaidConfig";
@ -47,20 +47,6 @@ export declare class InRaidHelper {
* @param items Items array to check * @param items Items array to check
*/ */
addUpdToMoneyFromRaid(items: Item[]): void; addUpdToMoneyFromRaid(items: Item[]): void;
/**
* Add karma changes up and return the new value
* @param existingFenceStanding Current fence standing level
* @param victims Array of kills player performed
* @returns adjusted karma level after kills are taken into account
*/
calculateFenceStandingChangeFromKillsAsScav(existingFenceStanding: number, victims: Victim[]): number;
protected getAdditionalLossForKill(fenceStanding: number, repChangeForKill: number): number;
/**
* Get the standing gain/loss for killing an npc
* @param victim Who was killed by player
* @returns a numerical standing gain or loss
*/
protected getFenceStandingChangeForKillAsScav(victim: Victim): number;
/** /**
* Reset a profile to a baseline, used post-raid * Reset a profile to a baseline, used post-raid
* Reset points earned during session property * Reset points earned during session property

View File

@ -59,6 +59,12 @@ export declare class ItemHelper {
* @returns Does item have the possibility ot need soft inserts * @returns Does item have the possibility ot need soft inserts
*/ */
armorItemCanHoldMods(itemTpl: string): boolean; armorItemCanHoldMods(itemTpl: string): boolean;
/**
* Does the provided item tpl need soft/removable inserts to function
* @param itemTpl Armor item
* @returns True if item needs some kind of insert
*/
armorItemHasRemovableOrSoftInsertSlots(itemTpl: string): boolean;
/** /**
* Does the pased in tpl have ability to hold removable plate items * Does the pased in tpl have ability to hold removable plate items
* @param itemTpl item tpl to check for plate support * @param itemTpl item tpl to check for plate support

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