Update types to match server

This commit is contained in:
Chomp 2022-06-21 11:09:32 +01:00
parent cc73e0591c
commit 55211d8c4f
344 changed files with 7537 additions and 4876 deletions

View File

@ -55,7 +55,7 @@ export declare class InitialModLoader implements IModLoader {
protected executeMods(container: DependencyContainer): void; protected executeMods(container: DependencyContainer): void;
sortModsLoadOrder(): string[]; sortModsLoadOrder(): string[];
protected addMod(mod: string): Promise<void>; protected addMod(mod: string): Promise<void>;
protected areModDependenciesFulfilled(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean; protected areModDependenciesFulfilled(pkg: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean; protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected validMod(mod: string): boolean; protected validMod(mod: string): boolean;
protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void; protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void;

View File

@ -0,0 +1,10 @@
export interface IMatch {
metrics: Metrics;
}
export interface Metrics {
Keys: number[];
NetProcessingBins: number[];
RenderBins: number[];
GameUpdateBins: number[];
MemoryMeasureInterval: number;
}

View File

@ -7,288 +7,234 @@ export interface ITemplateItem {
_proto: string; _proto: string;
} }
export interface Props { export interface Props {
Name: string; Name?: string;
ShortName: string; ShortName?: string;
Description: string; Description?: string;
Weight: number; Weight?: number;
BackgroundColor: string; BackgroundColor?: string;
Width: number; Width?: number;
Height: number; Height?: number;
StackMaxSize: number; StackMaxSize?: number;
Rarity?: string; Rarity?: string;
SpawnChance?: number; SpawnChance?: number;
CreditsPrice?: number; CreditsPrice?: number;
ItemSound: string; ItemSound?: string;
Prefab: Prefab; Prefab?: Prefab;
UsePrefab: Prefab; UsePrefab?: Prefab;
StackObjectsCount: number; StackObjectsCount?: number;
NotShownInSlot: boolean; NotShownInSlot?: boolean;
ExaminedByDefault: boolean; ExaminedByDefault?: boolean;
ExamineTime: number; ExamineTime?: number;
IsUndiscardable: boolean; IsUndiscardable?: boolean;
IsUnsaleable: boolean; IsUnsaleable?: boolean;
IsUnbuyable: boolean; IsUnbuyable?: boolean;
IsUngivable: boolean; IsUngivable?: boolean;
IsLockedafterEquip: boolean; IsLockedafterEquip?: boolean;
QuestItem: boolean; QuestItem?: boolean;
LootExperience: number; LootExperience?: number;
ExamineExperience: number; ExamineExperience?: number;
HideEntrails: boolean; HideEntrails?: boolean;
RepairCost: number; RepairCost?: number;
RepairSpeed: number; RepairSpeed?: number;
ExtraSizeLeft: number; ExtraSizeLeft?: number;
ExtraSizeRight: number; ExtraSizeRight?: number;
ExtraSizeUp: number; ExtraSizeUp?: number;
ExtraSizeDown: number; ExtraSizeDown?: number;
ExtraSizeForceAdd: boolean; ExtraSizeForceAdd?: boolean;
MergesWithChildren: boolean; MergesWithChildren?: boolean;
CanSellOnRagfair: boolean; CanSellOnRagfair?: boolean;
CanRequireOnRagfair: boolean; CanRequireOnRagfair?: boolean;
ConflictingItems: string[]; ConflictingItems?: string[];
DiscardLimit: number; Unlootable?: boolean;
Unlootable: boolean; UnlootableFromSlot?: string;
UnlootableFromSlot: string; UnlootableFromSide?: string[];
UnlootableFromSide: string[]; AnimationVariantsNumber?: number;
AnimationVariantsNumber: number; DiscardingBlock?: boolean;
DiscardingBlock: boolean; RagFairCommissionModifier?: number;
RagFairCommissionModifier: number; IsAlwaysAvailableForInsurance?: boolean;
IsAlwaysAvailableForInsurance: boolean; DiscardLimit?: number;
Grids: Grid[]; MaxResource?: number;
Slots: Slot[];
CanPutIntoDuringTheRaid: boolean;
CantRemoveFromSlotsDuringRaid: string[];
weapClass: string;
weapUseType: string;
ammoCaliber: string;
Durability: number;
MaxDurability: number;
OperatingResource: number;
RepairComplexity: number;
durabSpawnMin: number;
durabSpawnMax: number;
isFastReload: boolean;
RecoilForceUp: number;
RecoilForceBack: number;
Convergence: number;
RecoilAngle: number;
weapFireType: string[];
RecolDispersion: number;
SingleFireRate: number;
CanQueueSecondShot: boolean;
bFirerate: number;
Ergonomics: number;
Velocity: number;
bEffDist: number;
bHearDist: number;
isChamberLoad: boolean;
chamberAmmoCount: number;
isBoltCatch: boolean;
defMagType: string;
defAmmo: string;
AdjustCollimatorsToTrajectory: boolean;
shotgunDispersion: number;
Chambers: Slot[];
CameraRecoil: number;
CameraSnap: number;
ReloadMode: string;
CenterOfImpact: number;
AimPlane: number;
DeviationCurve: number;
DeviationMax: number;
Foldable: boolean;
Retractable: boolean;
TacticalReloadStiffnes: Xyz;
TacticalReloadFixation: number;
RecoilCenter: Xyz;
RotationCenter: Xyz;
RotationCenterNoStock: Xyz;
SizeReduceRight: number;
FoldedSlot: string;
CompactHandling: boolean;
SightingRange: number;
MinRepairDegradation: number;
MaxRepairDegradation: number;
MinRepairKitDegradation: number;
MaxRepairKitDegradation: number;
IronSightRange: number;
MustBoltBeOpennedForExternalReload: boolean;
MustBoltBeOpennedForInternalReload: boolean;
BoltAction: boolean;
HipAccuracyRestorationDelay: number;
HipAccuracyRestorationSpeed: number;
HipInnaccuracyGain: number;
ManualBoltCatch: boolean;
BurstShotsCount: number;
BaseMalfunctionChance: number;
AllowJam: boolean;
AllowFeed: boolean;
AllowMisfire: boolean;
AllowSlide: boolean;
DurabilityBurnRatio: number;
HeatFactorGun: number;
CoolFactorGun: number;
CoolFactorGunMods: number;
HeatFactorByShot: number;
AllowOverheat: boolean;
DoubleActionAccuracyPenalty: number;
RecoilPosZMult: number;
ShotgunDispersion: number;
StackMinRandom: number;
StackMaxRandom: number;
StackSlots: StackSlot[];
SearchSound: string;
BlocksArmorVest: boolean;
RigLayoutName: string;
armorZone: string[];
armorClass: number;
speedPenaltyPercent: number;
mousePenalty: number;
weaponErgonomicPenalty: number;
BluntThroughput: number;
ArmorMaterial: string;
medUseTime: number;
medEffectType: string;
MaxHpResource: number;
hpResourceRate: number;
StimulatorBuffs: string;
effects_health: EffectsHealth;
effects_damage: EffectsDamage;
knifeHitDelay: number;
knifeHitSlashRate: number;
knifeHitStabRate: number;
knifeHitRadius: number;
knifeHitSlashDam: number;
knifeHitStabDam: number;
knifeDurab: number;
PrimaryDistance: number;
SecondryDistance: number;
SlashPenetration: number;
StabPenetration: number;
PrimaryConsumption: number;
SecondryConsumption: number;
DeflectionConsumption: number;
MaxResource: number;
AppliedTrunkRotation: Xyz;
AppliedHeadRotation: Xyz;
DisplayOnModel: boolean;
AdditionalAnimationLayer: number;
StaminaBurnRate: number;
ColliderScaleMultiplier: Xyz;
ammoType: string;
InitialSpeed: number;
BallisticCoeficient: number;
BulletMassGram: number;
BulletDiameterMilimeters: number;
Damage: number;
ammoAccr: number;
ammoRec: number;
ammoDist: number;
buckshotBullets: number;
PenetrationPower: number;
PenetrationPowerDiviation: number;
ammoHear: number;
ammoSfx: string;
MisfireChance: number;
MinFragmentsCount: number;
MaxFragmentsCount: number;
ammoShiftChance: number;
casingName: string;
casingEjectPower: number;
casingMass: number;
casingSounds: string;
ProjectileCount: number;
PenetrationChance: number;
RicochetChance: number;
FragmentationChance: number;
Deterioration: number;
SpeedRetardation: number;
Tracer: boolean;
TracerColor: string;
TracerDistance: number;
ArmorDamage: number;
Caliber: string;
StaminaBurnPerDamage: number;
HeavyBleedingDelta: number;
LightBleedingDelta: number;
ShowBullet: boolean;
HasGrenaderComponent: boolean;
FuzeArmTimeSec: number;
ExplosionStrength: number;
MinExplosionDistance: number;
MaxExplosionDistance: number;
FragmentsCount: number;
FragmentType: string;
ShowHitEffectOnExplode: boolean;
ExplosionType: string;
AmmoLifeTimeSec: number;
Contusion: Xyz;
ArmorDistanceDistanceDamage: Xyz;
Blindness: Xyz;
IsLightAndSoundShot: boolean;
LightAndSoundShotAngle: number;
LightAndSoundShotSelfContusionTime: number;
LightAndSoundShotSelfContusionStrength: number;
MalfMisfireChance: number;
DurabilityBurnModificator: number;
HeatFactor: number;
MalfFeedChance: number;
Accuracy: number;
Recoil: number;
Loudness: number;
EffectiveDistance: number;
RaidModdable: boolean;
ToolModdable: boolean;
BlocksFolding: boolean;
BlocksCollapsible: boolean;
IsAnimated: boolean;
HasShoulderContact: boolean;
DoubleActionAccuracyPenaltyMult: number;
magAnimationIndex: number;
Cartridges: Slot[];
CanFast: boolean;
CanHit: boolean;
CanAdmin: boolean;
LoadUnloadModifier: number;
CheckTimeModifier: number;
CheckOverride: number;
ReloadMagType: string;
VisibleAmmoRangesString: string;
MalfunctionChance: number;
TagColor: number;
TagName: string;
MaximumNumberOfUsage: number;
CustomAimPlane: string;
sightModType: string;
aimingSensitivity: number;
SightModesCount: number;
OpticCalibrationDistances: number[];
ScopesCount: number;
AimSensitivity: number[][];
ModesCount: number[];
Zooms: number[][];
CalibrationDistances: number[][];
Intensity: number;
Mask: string;
MaskSize: number;
NoiseIntensity: number;
NoiseScale: number;
Color: Color;
DiffuseIntensity: number;
HasHinge: boolean;
Resource?: number; Resource?: number;
DogTagQualities?: boolean;
Grids?: Grid[];
Slots?: Slot[];
CanPutIntoDuringTheRaid?: boolean;
CantRemoveFromSlotsDuringRaid?: string[];
KeyIds?: string[];
TagColor?: number;
TagName?: string;
Durability?: number;
Accuracy?: number;
Recoil?: number;
Loudness?: number;
EffectiveDistance?: number;
Ergonomics?: number;
Velocity?: number;
RaidModdable?: boolean;
ToolModdable?: boolean;
BlocksFolding?: boolean;
BlocksCollapsible?: boolean;
IsAnimated?: boolean;
HasShoulderContact?: boolean;
SightingRange?: number;
DoubleActionAccuracyPenaltyMult?: number;
ModesCount: any;
DurabilityBurnModificator?: number;
HeatFactor?: number;
CoolFactor?: number; CoolFactor?: number;
foodUseTime?: number; muzzleModType?: string;
foodEffectType?: string; CustomAimPlane?: string;
MaxRepairResource: number; sightModType?: string;
RepairQuality: number; aimingSensitivity?: number;
RepairType: string; SightModesCount?: number;
TargetItemFilter: string[]; OpticCalibrationDistances?: number[];
apResource: number; ScopesCount?: number;
krResource: number; AimSensitivity: any;
Zooms?: number[][];
CalibrationDistances?: number[][];
Intensity?: number;
Mask?: string;
MaskSize?: number;
NoiseIntensity?: number;
NoiseScale?: number;
Color?: Color;
DiffuseIntensity?: number;
HasHinge?: boolean;
RampPalette?: string;
DepthFade?: number;
RoughnessCoef?: number;
SpecularCoef?: number;
MainTexColorCoef?: number;
MinimumTemperatureValue?: number;
RampShift?: number;
HeatMin?: number;
ColdMax?: number;
IsNoisy?: boolean;
IsFpsStuck?: boolean;
IsGlitch?: boolean;
IsMotionBlurred?: boolean;
IsPixelated?: boolean;
PixelationBlockCount?: number;
ShiftsAimCamera?: number;
magAnimationIndex?: number;
Cartridges?: Slot[];
CanFast?: boolean;
CanHit?: boolean;
CanAdmin?: boolean;
LoadUnloadModifier?: number;
CheckTimeModifier?: number;
CheckOverride?: number;
ReloadMagType?: string;
VisibleAmmoRangesString?: string;
MalfunctionChance?: number;
IsShoulderContact?: boolean;
Foldable?: boolean;
Retractable?: boolean;
SizeReduceRight?: number;
CenterOfImpact?: number;
ShotgunDispersion?: number;
IsSilencer?: boolean;
DeviationCurve?: number;
DeviationMax?: number;
SearchSound?: string;
BlocksArmorVest?: boolean;
speedPenaltyPercent?: number;
GridLayoutName?: string;
SpawnFilter?: any[];
containType?: any[];
sizeWidth?: number;
sizeHeight?: number;
isSecured?: boolean;
spawnTypes?: string;
lootFilter?: any[];
spawnRarity?: string;
minCountSpawn?: number;
maxCountSpawn?: number;
openedByKeyID?: any[];
RigLayoutName?: string;
MaxDurability?: number;
armorZone?: string[];
armorClass: any;
mousePenalty?: number;
weaponErgonomicPenalty?: number;
BluntThroughput?: number;
ArmorMaterial?: string;
weapClass?: string;
weapUseType?: string;
ammoCaliber?: string;
OperatingResource?: number;
RepairComplexity?: number;
durabSpawnMin?: number;
durabSpawnMax?: number;
isFastReload?: boolean;
RecoilForceUp?: number;
RecoilForceBack?: number;
Convergence?: number;
RecoilAngle?: number;
weapFireType?: string[];
RecolDispersion?: number;
SingleFireRate?: number;
CanQueueSecondShot?: boolean;
bFirerate?: number;
bEffDist?: number;
bHearDist?: number;
isChamberLoad?: boolean;
chamberAmmoCount?: number;
isBoltCatch?: boolean;
defMagType?: string;
defAmmo?: string;
AdjustCollimatorsToTrajectory?: boolean;
shotgunDispersion?: number;
Chambers?: Slot[];
CameraRecoil?: number;
CameraSnap?: number;
ReloadMode?: string;
AimPlane?: number;
TacticalReloadStiffnes?: Xyz;
TacticalReloadFixation?: number;
RecoilCenter?: Xyz;
RotationCenter?: Xyz;
RotationCenterNoStock?: Xyz;
FoldedSlot?: string;
CompactHandling?: boolean;
MinRepairDegradation?: number;
MaxRepairDegradation?: number;
IronSightRange?: number;
MustBoltBeOpennedForExternalReload?: boolean;
MustBoltBeOpennedForInternalReload?: boolean;
BoltAction?: boolean;
HipAccuracyRestorationDelay?: number;
HipAccuracyRestorationSpeed?: number;
HipInnaccuracyGain?: number;
ManualBoltCatch?: boolean;
BurstShotsCount?: number;
BaseMalfunctionChance?: number;
AllowJam?: boolean;
AllowFeed?: boolean;
AllowMisfire?: boolean;
AllowSlide?: boolean;
DurabilityBurnRatio?: number;
HeatFactorGun?: number;
CoolFactorGun?: number;
CoolFactorGunMods?: number;
HeatFactorByShot?: number;
AllowOverheat?: boolean;
DoubleActionAccuracyPenalty?: number;
RecoilPosZMult?: number;
MinRepairKitDegradation?: number;
MaxRepairKitDegradation?: number;
BlocksEarpiece?: boolean; BlocksEarpiece?: boolean;
BlocksEyewear?: boolean; BlocksEyewear?: boolean;
BlocksHeadwear?: boolean; BlocksHeadwear?: boolean;
BlocksFaceCover?: boolean; BlocksFaceCover?: boolean;
Indestructibility?: number;
headSegments?: string[];
FaceShieldComponent?: boolean;
FaceShieldMask?: string;
MaterialType?: string;
RicochetParams?: Xyz;
DeafStrength?: string;
BlindnessProtection?: number;
Distortion?: number; Distortion?: number;
CompressorTreshold?: number; CompressorTreshold?: number;
CompressorAttack?: number; CompressorAttack?: number;
@ -299,11 +245,120 @@ export interface Props {
CompressorVolume?: number; CompressorVolume?: number;
AmbientVolume?: number; AmbientVolume?: number;
DryVolume?: number; DryVolume?: number;
headSegments?: string[]; foodUseTime?: number;
FaceShieldComponent?: boolean; foodEffectType?: string;
RicochetParams?: Xyz; StimulatorBuffs?: string;
DeafStrength?: string; effects_health: any;
BlindnessProtection: number; effects_damage: any;
MaximumNumberOfUsage?: number;
knifeHitDelay?: number;
knifeHitSlashRate?: number;
knifeHitStabRate?: number;
knifeHitRadius?: number;
knifeHitSlashDam?: number;
knifeHitStabDam?: number;
knifeDurab?: number;
PrimaryDistance?: number;
SecondryDistance?: number;
SlashPenetration?: number;
StabPenetration?: number;
PrimaryConsumption?: number;
SecondryConsumption?: number;
DeflectionConsumption?: number;
AppliedTrunkRotation?: Xyz;
AppliedHeadRotation?: Xyz;
DisplayOnModel?: boolean;
AdditionalAnimationLayer?: number;
StaminaBurnRate?: number;
ColliderScaleMultiplier?: Xyz;
ConfigPathStr?: string;
MaxMarkersCount?: number;
scaleMin?: number;
scaleMax?: number;
medUseTime?: number;
medEffectType?: string;
MaxHpResource?: number;
hpResourceRate?: number;
apResource?: number;
krResource?: number;
MaxOpticZoom?: number;
MaxRepairResource?: number;
TargetItemFilter?: string[];
RepairQuality?: number;
RepairType?: string;
StackMinRandom?: number;
StackMaxRandom?: number;
ammoType?: string;
InitialSpeed?: number;
BallisticCoeficient?: number;
BulletMassGram?: number;
BulletDiameterMilimeters?: number;
Damage?: number;
ammoAccr?: number;
ammoRec?: number;
ammoDist?: number;
buckshotBullets?: number;
PenetrationPower?: number;
PenetrationPowerDiviation?: number;
ammoHear?: number;
ammoSfx?: string;
MisfireChance?: number;
MinFragmentsCount?: number;
MaxFragmentsCount?: number;
ammoShiftChance?: number;
casingName?: string;
casingEjectPower?: number;
casingMass?: number;
casingSounds?: string;
ProjectileCount?: number;
PenetrationChance?: number;
RicochetChance?: number;
FragmentationChance?: number;
Deterioration?: number;
SpeedRetardation?: number;
Tracer?: boolean;
TracerColor?: string;
TracerDistance?: number;
ArmorDamage?: number;
Caliber?: string;
StaminaBurnPerDamage?: number;
HeavyBleedingDelta?: number;
LightBleedingDelta?: number;
ShowBullet?: boolean;
HasGrenaderComponent?: boolean;
FuzeArmTimeSec?: number;
ExplosionStrength?: number;
MinExplosionDistance?: number;
MaxExplosionDistance?: number;
FragmentsCount?: number;
FragmentType?: string;
ShowHitEffectOnExplode?: boolean;
ExplosionType?: string;
AmmoLifeTimeSec?: number;
Contusion?: Xyz;
ArmorDistanceDistanceDamage?: Xyz;
Blindness?: Xyz;
IsLightAndSoundShot?: boolean;
LightAndSoundShotAngle?: number;
LightAndSoundShotSelfContusionTime?: number;
LightAndSoundShotSelfContusionStrength?: number;
MalfMisfireChance?: number;
MalfFeedChance?: number;
StackSlots?: StackSlot[];
type?: string;
eqMin?: number;
eqMax?: number;
rate?: number;
ThrowType?: string;
ExplDelay?: number;
Strength?: number;
ContusionDistance?: number;
throwDamMax?: number;
explDelay?: number;
EmitTime?: number;
CanBeHiddenDuringThrow?: boolean;
MinTimeToContactExplode?: number;
ExplosionEffectType?: string;
} }
export interface Prefab { export interface Prefab {
path: string; path: string;

View File

@ -1,6 +1,7 @@
export interface IPackageJsonData { export interface IPackageJsonData {
incompatibilities?: string[]; incompatibilities?: string[];
dependencies?: string[]; dependencies?: string[];
modDependencies?: Record<string, string>;
name: string; name: string;
author: string; author: string;
version: string; version: string;

View File

@ -5,6 +5,7 @@ import { IBotType } from "../../eft/common/tables/IBotType";
import { ICustomizationItem } from "../../eft/common/tables/ICustomizationItem"; import { ICustomizationItem } from "../../eft/common/tables/ICustomizationItem";
import { IHandbookBase } from "../../eft/common/tables/IHandbookBase"; import { IHandbookBase } from "../../eft/common/tables/IHandbookBase";
import { ILootBase } from "../../eft/common/tables/ILootBase"; import { ILootBase } from "../../eft/common/tables/ILootBase";
import { IMatch } from "../../eft/common/tables/IMatch";
import { IQuest } from "../../eft/common/tables/IQuest"; import { IQuest } from "../../eft/common/tables/IQuest";
import { IRepeatableQuestDatabase } from "../../eft/common/tables/IRepeatableQuests"; import { IRepeatableQuestDatabase } from "../../eft/common/tables/IRepeatableQuests";
import { ITemplateItem } from "../../eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../../eft/common/tables/ITemplateItem";
@ -18,22 +19,22 @@ import { ILocations } from "./ILocations";
import { IServerBase } from "./IServerBase"; import { IServerBase } from "./IServerBase";
import { ISettingsBase } from "./ISettingsBase"; import { ISettingsBase } from "./ISettingsBase";
export interface IDatabaseTables { export interface IDatabaseTables {
bots: { bots?: {
types: Record<string, IBotType>; types: Record<string, IBotType>;
base: IBotBase; base: IBotBase;
core: IBotCore; core: IBotCore;
}; };
hideout: { hideout?: {
areas: IHideoutArea[]; areas: IHideoutArea[];
production: IHideoutProduction[]; production: IHideoutProduction[];
scavcase: IHideoutScavCase[]; scavcase: IHideoutScavCase[];
settings: IHideoutSettingsBase; settings: IHideoutSettingsBase;
}; };
locales: ILocaleBase; locales?: ILocaleBase;
locations: ILocations; locations?: ILocations;
loot: ILootBase; loot?: ILootBase;
match: any; match?: IMatch;
templates: { templates?: {
character: string[]; character: string[];
items: Record<string, ITemplateItem>; items: Record<string, ITemplateItem>;
quests: IQuest[]; quests: IQuest[];
@ -44,8 +45,8 @@ export interface IDatabaseTables {
profiles: any; profiles: any;
prices: Record<string, number>; prices: Record<string, number>;
}; };
traders: Record<string, ITrader>; traders?: Record<string, ITrader>;
globals: IGlobals; globals?: IGlobals;
server: IServerBase; server?: IServerBase;
settings: ISettingsBase; settings?: ISettingsBase;
} }

View File

@ -0,0 +1,5 @@
import { Preset } from "../../eft/common/IGlobals";
export interface CustomPreset {
key: string;
preset: Preset;
}

View File

@ -0,0 +1,6 @@
import { ITraderAssort } from "../../eft/common/tables/ITrader";
import { Traders } from "../../enums/Traders";
export interface CustomTraderAssortData {
traderId: Traders;
assorts: ITraderAssort;
}

View File

@ -0,0 +1,13 @@
import { HandbookItem } from "../models/eft/common/tables/IHandbookBase";
import { ILogger } from "../models/spt/utils/ILogger";
export declare class CustomHandbookItemService {
protected logger: ILogger;
private customHandbookItems;
constructor(logger: ILogger);
/**
* Add handbook item
* @param handbookItem item to add
*/
add(handbookItem: HandbookItem): void;
get(): HandbookItem[];
}

View File

@ -0,0 +1,11 @@
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer";
export declare class CustomItemService {
protected logger: ILogger;
protected databaseServer: DatabaseServer;
private customItems;
constructor(logger: ILogger, databaseServer: DatabaseServer);
add(itemToAdd: ITemplateItem): void;
get(): ITemplateItem[];
}

View File

@ -0,0 +1,14 @@
import { CustomTraderAssortData } from "../models/spt/services/CustomTraderAssortData";
import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer";
export declare class CustomTraderAssortService {
protected logger: ILogger;
protected databaseServer: DatabaseServer;
private customAssorts;
constructor(logger: ILogger, databaseServer: DatabaseServer);
/**
* Add assorts to a specific trader
*/
add(assortsToAdd: CustomTraderAssortData): void;
get(): CustomTraderAssortData[];
}

View File

@ -0,0 +1,19 @@
import { Preset } from "../models/eft/common/IGlobals";
import { CustomPreset } from "../models/spt/services/CustomPreset";
import { ILogger } from "../models/spt/utils/ILogger";
export declare class CustomPresetService {
protected logger: ILogger;
private customPresets;
constructor(logger: ILogger);
/**
* Add custom preset to internal array
* @param presetKey presets key
* @param presetToAdd preset item to add
*/
add(presetKey: string, presetToAdd: Preset): void;
/**
* Get all custom presets
* @returns
*/
get(): CustomPreset[];
}

View File

@ -1,18 +1,52 @@
import { VFS } from "./VFS";
import { JsonUtil } from "./JsonUtil";
import { DatabaseServer } from "../servers/DatabaseServer";
import { ImageRouter } from "../routers/ImageRouter";
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
import { IDatabaseTables } from "../models/spt/server/IDatabaseTables";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ImageRouter } from "../routers/ImageRouter";
import { DatabaseServer } from "../servers/DatabaseServer";
import { CustomHandbookItemService } from "../services/CustomHandbookItemService";
import { CustomItemService } from "../services/CustomItemService";
import { CustomPresetService } from "../services/customPresetService";
import { CustomTraderAssortService } from "../services/CustomTraderAssortService";
import { JsonUtil } from "./JsonUtil";
import { VFS } from "./VFS";
export declare class DatabaseImporter extends OnLoad { export declare class DatabaseImporter extends OnLoad {
protected logger: ILogger; protected logger: ILogger;
protected vfs: VFS; protected vfs: VFS;
protected jsonUtil: JsonUtil; protected jsonUtil: JsonUtil;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected customItemService: CustomItemService;
protected customTraderAssortService: CustomTraderAssortService;
protected customHandbookItemService: CustomHandbookItemService;
protected customPresetService: CustomPresetService;
protected imageRouter: ImageRouter; protected imageRouter: ImageRouter;
constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, imageRouter: ImageRouter); constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, customItemService: CustomItemService, customTraderAssortService: CustomTraderAssortService, customHandbookItemService: CustomHandbookItemService, customPresetService: CustomPresetService, imageRouter: ImageRouter);
onLoad(): void; onLoad(): void;
/**
* Read all json files in database folder and map into a json object
* @param filepath path to database folder
*/
protected hydrateDatabase(filepath: string): void;
/**
* Get all items added through CustomItemService and add to database.templates.items
* @param dataToImport db data to amend
*/
protected addCustomItemsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all assorts added through CustomTraderAssortService and add to database.traders[x].assort
* @param dataToImport db data to amend
*/
protected addCustomTraderAssortsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all custom handbook items added through CustomHandbookItemService and add to database.templates.handbook.items
* @param dataToImport db data to amend
*/
protected addCustomHandbookItemsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all custom preset items added through CustomPresetService and add to database.globals.ItemPresets
* @param dataToImport
*/
protected addCustomPresetsToDb(dataToImport: IDatabaseTables): void;
getRoute(): string; getRoute(): string;
loadRecursive(filepath: string): any; loadRecursive(filepath: string): IDatabaseTables;
loadImages(filepath: string): void; loadImages(filepath: string): void;
} }

View File

@ -55,7 +55,7 @@ export declare class InitialModLoader implements IModLoader {
protected executeMods(container: DependencyContainer): void; protected executeMods(container: DependencyContainer): void;
sortModsLoadOrder(): string[]; sortModsLoadOrder(): string[];
protected addMod(mod: string): Promise<void>; protected addMod(mod: string): Promise<void>;
protected areModDependenciesFulfilled(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean; protected areModDependenciesFulfilled(pkg: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean; protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected validMod(mod: string): boolean; protected validMod(mod: string): boolean;
protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void; protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void;

View File

@ -0,0 +1,10 @@
export interface IMatch {
metrics: Metrics;
}
export interface Metrics {
Keys: number[];
NetProcessingBins: number[];
RenderBins: number[];
GameUpdateBins: number[];
MemoryMeasureInterval: number;
}

View File

@ -7,288 +7,234 @@ export interface ITemplateItem {
_proto: string; _proto: string;
} }
export interface Props { export interface Props {
Name: string; Name?: string;
ShortName: string; ShortName?: string;
Description: string; Description?: string;
Weight: number; Weight?: number;
BackgroundColor: string; BackgroundColor?: string;
Width: number; Width?: number;
Height: number; Height?: number;
StackMaxSize: number; StackMaxSize?: number;
Rarity?: string; Rarity?: string;
SpawnChance?: number; SpawnChance?: number;
CreditsPrice?: number; CreditsPrice?: number;
ItemSound: string; ItemSound?: string;
Prefab: Prefab; Prefab?: Prefab;
UsePrefab: Prefab; UsePrefab?: Prefab;
StackObjectsCount: number; StackObjectsCount?: number;
NotShownInSlot: boolean; NotShownInSlot?: boolean;
ExaminedByDefault: boolean; ExaminedByDefault?: boolean;
ExamineTime: number; ExamineTime?: number;
IsUndiscardable: boolean; IsUndiscardable?: boolean;
IsUnsaleable: boolean; IsUnsaleable?: boolean;
IsUnbuyable: boolean; IsUnbuyable?: boolean;
IsUngivable: boolean; IsUngivable?: boolean;
IsLockedafterEquip: boolean; IsLockedafterEquip?: boolean;
QuestItem: boolean; QuestItem?: boolean;
LootExperience: number; LootExperience?: number;
ExamineExperience: number; ExamineExperience?: number;
HideEntrails: boolean; HideEntrails?: boolean;
RepairCost: number; RepairCost?: number;
RepairSpeed: number; RepairSpeed?: number;
ExtraSizeLeft: number; ExtraSizeLeft?: number;
ExtraSizeRight: number; ExtraSizeRight?: number;
ExtraSizeUp: number; ExtraSizeUp?: number;
ExtraSizeDown: number; ExtraSizeDown?: number;
ExtraSizeForceAdd: boolean; ExtraSizeForceAdd?: boolean;
MergesWithChildren: boolean; MergesWithChildren?: boolean;
CanSellOnRagfair: boolean; CanSellOnRagfair?: boolean;
CanRequireOnRagfair: boolean; CanRequireOnRagfair?: boolean;
ConflictingItems: string[]; ConflictingItems?: string[];
DiscardLimit: number; Unlootable?: boolean;
Unlootable: boolean; UnlootableFromSlot?: string;
UnlootableFromSlot: string; UnlootableFromSide?: string[];
UnlootableFromSide: string[]; AnimationVariantsNumber?: number;
AnimationVariantsNumber: number; DiscardingBlock?: boolean;
DiscardingBlock: boolean; RagFairCommissionModifier?: number;
RagFairCommissionModifier: number; IsAlwaysAvailableForInsurance?: boolean;
IsAlwaysAvailableForInsurance: boolean; DiscardLimit?: number;
Grids: Grid[]; MaxResource?: number;
Slots: Slot[];
CanPutIntoDuringTheRaid: boolean;
CantRemoveFromSlotsDuringRaid: string[];
weapClass: string;
weapUseType: string;
ammoCaliber: string;
Durability: number;
MaxDurability: number;
OperatingResource: number;
RepairComplexity: number;
durabSpawnMin: number;
durabSpawnMax: number;
isFastReload: boolean;
RecoilForceUp: number;
RecoilForceBack: number;
Convergence: number;
RecoilAngle: number;
weapFireType: string[];
RecolDispersion: number;
SingleFireRate: number;
CanQueueSecondShot: boolean;
bFirerate: number;
Ergonomics: number;
Velocity: number;
bEffDist: number;
bHearDist: number;
isChamberLoad: boolean;
chamberAmmoCount: number;
isBoltCatch: boolean;
defMagType: string;
defAmmo: string;
AdjustCollimatorsToTrajectory: boolean;
shotgunDispersion: number;
Chambers: Slot[];
CameraRecoil: number;
CameraSnap: number;
ReloadMode: string;
CenterOfImpact: number;
AimPlane: number;
DeviationCurve: number;
DeviationMax: number;
Foldable: boolean;
Retractable: boolean;
TacticalReloadStiffnes: Xyz;
TacticalReloadFixation: number;
RecoilCenter: Xyz;
RotationCenter: Xyz;
RotationCenterNoStock: Xyz;
SizeReduceRight: number;
FoldedSlot: string;
CompactHandling: boolean;
SightingRange: number;
MinRepairDegradation: number;
MaxRepairDegradation: number;
MinRepairKitDegradation: number;
MaxRepairKitDegradation: number;
IronSightRange: number;
MustBoltBeOpennedForExternalReload: boolean;
MustBoltBeOpennedForInternalReload: boolean;
BoltAction: boolean;
HipAccuracyRestorationDelay: number;
HipAccuracyRestorationSpeed: number;
HipInnaccuracyGain: number;
ManualBoltCatch: boolean;
BurstShotsCount: number;
BaseMalfunctionChance: number;
AllowJam: boolean;
AllowFeed: boolean;
AllowMisfire: boolean;
AllowSlide: boolean;
DurabilityBurnRatio: number;
HeatFactorGun: number;
CoolFactorGun: number;
CoolFactorGunMods: number;
HeatFactorByShot: number;
AllowOverheat: boolean;
DoubleActionAccuracyPenalty: number;
RecoilPosZMult: number;
ShotgunDispersion: number;
StackMinRandom: number;
StackMaxRandom: number;
StackSlots: StackSlot[];
SearchSound: string;
BlocksArmorVest: boolean;
RigLayoutName: string;
armorZone: string[];
armorClass: number;
speedPenaltyPercent: number;
mousePenalty: number;
weaponErgonomicPenalty: number;
BluntThroughput: number;
ArmorMaterial: string;
medUseTime: number;
medEffectType: string;
MaxHpResource: number;
hpResourceRate: number;
StimulatorBuffs: string;
effects_health: EffectsHealth;
effects_damage: EffectsDamage;
knifeHitDelay: number;
knifeHitSlashRate: number;
knifeHitStabRate: number;
knifeHitRadius: number;
knifeHitSlashDam: number;
knifeHitStabDam: number;
knifeDurab: number;
PrimaryDistance: number;
SecondryDistance: number;
SlashPenetration: number;
StabPenetration: number;
PrimaryConsumption: number;
SecondryConsumption: number;
DeflectionConsumption: number;
MaxResource: number;
AppliedTrunkRotation: Xyz;
AppliedHeadRotation: Xyz;
DisplayOnModel: boolean;
AdditionalAnimationLayer: number;
StaminaBurnRate: number;
ColliderScaleMultiplier: Xyz;
ammoType: string;
InitialSpeed: number;
BallisticCoeficient: number;
BulletMassGram: number;
BulletDiameterMilimeters: number;
Damage: number;
ammoAccr: number;
ammoRec: number;
ammoDist: number;
buckshotBullets: number;
PenetrationPower: number;
PenetrationPowerDiviation: number;
ammoHear: number;
ammoSfx: string;
MisfireChance: number;
MinFragmentsCount: number;
MaxFragmentsCount: number;
ammoShiftChance: number;
casingName: string;
casingEjectPower: number;
casingMass: number;
casingSounds: string;
ProjectileCount: number;
PenetrationChance: number;
RicochetChance: number;
FragmentationChance: number;
Deterioration: number;
SpeedRetardation: number;
Tracer: boolean;
TracerColor: string;
TracerDistance: number;
ArmorDamage: number;
Caliber: string;
StaminaBurnPerDamage: number;
HeavyBleedingDelta: number;
LightBleedingDelta: number;
ShowBullet: boolean;
HasGrenaderComponent: boolean;
FuzeArmTimeSec: number;
ExplosionStrength: number;
MinExplosionDistance: number;
MaxExplosionDistance: number;
FragmentsCount: number;
FragmentType: string;
ShowHitEffectOnExplode: boolean;
ExplosionType: string;
AmmoLifeTimeSec: number;
Contusion: Xyz;
ArmorDistanceDistanceDamage: Xyz;
Blindness: Xyz;
IsLightAndSoundShot: boolean;
LightAndSoundShotAngle: number;
LightAndSoundShotSelfContusionTime: number;
LightAndSoundShotSelfContusionStrength: number;
MalfMisfireChance: number;
DurabilityBurnModificator: number;
HeatFactor: number;
MalfFeedChance: number;
Accuracy: number;
Recoil: number;
Loudness: number;
EffectiveDistance: number;
RaidModdable: boolean;
ToolModdable: boolean;
BlocksFolding: boolean;
BlocksCollapsible: boolean;
IsAnimated: boolean;
HasShoulderContact: boolean;
DoubleActionAccuracyPenaltyMult: number;
magAnimationIndex: number;
Cartridges: Slot[];
CanFast: boolean;
CanHit: boolean;
CanAdmin: boolean;
LoadUnloadModifier: number;
CheckTimeModifier: number;
CheckOverride: number;
ReloadMagType: string;
VisibleAmmoRangesString: string;
MalfunctionChance: number;
TagColor: number;
TagName: string;
MaximumNumberOfUsage: number;
CustomAimPlane: string;
sightModType: string;
aimingSensitivity: number;
SightModesCount: number;
OpticCalibrationDistances: number[];
ScopesCount: number;
AimSensitivity: number[][];
ModesCount: number[];
Zooms: number[][];
CalibrationDistances: number[][];
Intensity: number;
Mask: string;
MaskSize: number;
NoiseIntensity: number;
NoiseScale: number;
Color: Color;
DiffuseIntensity: number;
HasHinge: boolean;
Resource?: number; Resource?: number;
DogTagQualities?: boolean;
Grids?: Grid[];
Slots?: Slot[];
CanPutIntoDuringTheRaid?: boolean;
CantRemoveFromSlotsDuringRaid?: string[];
KeyIds?: string[];
TagColor?: number;
TagName?: string;
Durability?: number;
Accuracy?: number;
Recoil?: number;
Loudness?: number;
EffectiveDistance?: number;
Ergonomics?: number;
Velocity?: number;
RaidModdable?: boolean;
ToolModdable?: boolean;
BlocksFolding?: boolean;
BlocksCollapsible?: boolean;
IsAnimated?: boolean;
HasShoulderContact?: boolean;
SightingRange?: number;
DoubleActionAccuracyPenaltyMult?: number;
ModesCount: any;
DurabilityBurnModificator?: number;
HeatFactor?: number;
CoolFactor?: number; CoolFactor?: number;
foodUseTime?: number; muzzleModType?: string;
foodEffectType?: string; CustomAimPlane?: string;
MaxRepairResource: number; sightModType?: string;
RepairQuality: number; aimingSensitivity?: number;
RepairType: string; SightModesCount?: number;
TargetItemFilter: string[]; OpticCalibrationDistances?: number[];
apResource: number; ScopesCount?: number;
krResource: number; AimSensitivity: any;
Zooms?: number[][];
CalibrationDistances?: number[][];
Intensity?: number;
Mask?: string;
MaskSize?: number;
NoiseIntensity?: number;
NoiseScale?: number;
Color?: Color;
DiffuseIntensity?: number;
HasHinge?: boolean;
RampPalette?: string;
DepthFade?: number;
RoughnessCoef?: number;
SpecularCoef?: number;
MainTexColorCoef?: number;
MinimumTemperatureValue?: number;
RampShift?: number;
HeatMin?: number;
ColdMax?: number;
IsNoisy?: boolean;
IsFpsStuck?: boolean;
IsGlitch?: boolean;
IsMotionBlurred?: boolean;
IsPixelated?: boolean;
PixelationBlockCount?: number;
ShiftsAimCamera?: number;
magAnimationIndex?: number;
Cartridges?: Slot[];
CanFast?: boolean;
CanHit?: boolean;
CanAdmin?: boolean;
LoadUnloadModifier?: number;
CheckTimeModifier?: number;
CheckOverride?: number;
ReloadMagType?: string;
VisibleAmmoRangesString?: string;
MalfunctionChance?: number;
IsShoulderContact?: boolean;
Foldable?: boolean;
Retractable?: boolean;
SizeReduceRight?: number;
CenterOfImpact?: number;
ShotgunDispersion?: number;
IsSilencer?: boolean;
DeviationCurve?: number;
DeviationMax?: number;
SearchSound?: string;
BlocksArmorVest?: boolean;
speedPenaltyPercent?: number;
GridLayoutName?: string;
SpawnFilter?: any[];
containType?: any[];
sizeWidth?: number;
sizeHeight?: number;
isSecured?: boolean;
spawnTypes?: string;
lootFilter?: any[];
spawnRarity?: string;
minCountSpawn?: number;
maxCountSpawn?: number;
openedByKeyID?: any[];
RigLayoutName?: string;
MaxDurability?: number;
armorZone?: string[];
armorClass: any;
mousePenalty?: number;
weaponErgonomicPenalty?: number;
BluntThroughput?: number;
ArmorMaterial?: string;
weapClass?: string;
weapUseType?: string;
ammoCaliber?: string;
OperatingResource?: number;
RepairComplexity?: number;
durabSpawnMin?: number;
durabSpawnMax?: number;
isFastReload?: boolean;
RecoilForceUp?: number;
RecoilForceBack?: number;
Convergence?: number;
RecoilAngle?: number;
weapFireType?: string[];
RecolDispersion?: number;
SingleFireRate?: number;
CanQueueSecondShot?: boolean;
bFirerate?: number;
bEffDist?: number;
bHearDist?: number;
isChamberLoad?: boolean;
chamberAmmoCount?: number;
isBoltCatch?: boolean;
defMagType?: string;
defAmmo?: string;
AdjustCollimatorsToTrajectory?: boolean;
shotgunDispersion?: number;
Chambers?: Slot[];
CameraRecoil?: number;
CameraSnap?: number;
ReloadMode?: string;
AimPlane?: number;
TacticalReloadStiffnes?: Xyz;
TacticalReloadFixation?: number;
RecoilCenter?: Xyz;
RotationCenter?: Xyz;
RotationCenterNoStock?: Xyz;
FoldedSlot?: string;
CompactHandling?: boolean;
MinRepairDegradation?: number;
MaxRepairDegradation?: number;
IronSightRange?: number;
MustBoltBeOpennedForExternalReload?: boolean;
MustBoltBeOpennedForInternalReload?: boolean;
BoltAction?: boolean;
HipAccuracyRestorationDelay?: number;
HipAccuracyRestorationSpeed?: number;
HipInnaccuracyGain?: number;
ManualBoltCatch?: boolean;
BurstShotsCount?: number;
BaseMalfunctionChance?: number;
AllowJam?: boolean;
AllowFeed?: boolean;
AllowMisfire?: boolean;
AllowSlide?: boolean;
DurabilityBurnRatio?: number;
HeatFactorGun?: number;
CoolFactorGun?: number;
CoolFactorGunMods?: number;
HeatFactorByShot?: number;
AllowOverheat?: boolean;
DoubleActionAccuracyPenalty?: number;
RecoilPosZMult?: number;
MinRepairKitDegradation?: number;
MaxRepairKitDegradation?: number;
BlocksEarpiece?: boolean; BlocksEarpiece?: boolean;
BlocksEyewear?: boolean; BlocksEyewear?: boolean;
BlocksHeadwear?: boolean; BlocksHeadwear?: boolean;
BlocksFaceCover?: boolean; BlocksFaceCover?: boolean;
Indestructibility?: number;
headSegments?: string[];
FaceShieldComponent?: boolean;
FaceShieldMask?: string;
MaterialType?: string;
RicochetParams?: Xyz;
DeafStrength?: string;
BlindnessProtection?: number;
Distortion?: number; Distortion?: number;
CompressorTreshold?: number; CompressorTreshold?: number;
CompressorAttack?: number; CompressorAttack?: number;
@ -299,11 +245,120 @@ export interface Props {
CompressorVolume?: number; CompressorVolume?: number;
AmbientVolume?: number; AmbientVolume?: number;
DryVolume?: number; DryVolume?: number;
headSegments?: string[]; foodUseTime?: number;
FaceShieldComponent?: boolean; foodEffectType?: string;
RicochetParams?: Xyz; StimulatorBuffs?: string;
DeafStrength?: string; effects_health: any;
BlindnessProtection: number; effects_damage: any;
MaximumNumberOfUsage?: number;
knifeHitDelay?: number;
knifeHitSlashRate?: number;
knifeHitStabRate?: number;
knifeHitRadius?: number;
knifeHitSlashDam?: number;
knifeHitStabDam?: number;
knifeDurab?: number;
PrimaryDistance?: number;
SecondryDistance?: number;
SlashPenetration?: number;
StabPenetration?: number;
PrimaryConsumption?: number;
SecondryConsumption?: number;
DeflectionConsumption?: number;
AppliedTrunkRotation?: Xyz;
AppliedHeadRotation?: Xyz;
DisplayOnModel?: boolean;
AdditionalAnimationLayer?: number;
StaminaBurnRate?: number;
ColliderScaleMultiplier?: Xyz;
ConfigPathStr?: string;
MaxMarkersCount?: number;
scaleMin?: number;
scaleMax?: number;
medUseTime?: number;
medEffectType?: string;
MaxHpResource?: number;
hpResourceRate?: number;
apResource?: number;
krResource?: number;
MaxOpticZoom?: number;
MaxRepairResource?: number;
TargetItemFilter?: string[];
RepairQuality?: number;
RepairType?: string;
StackMinRandom?: number;
StackMaxRandom?: number;
ammoType?: string;
InitialSpeed?: number;
BallisticCoeficient?: number;
BulletMassGram?: number;
BulletDiameterMilimeters?: number;
Damage?: number;
ammoAccr?: number;
ammoRec?: number;
ammoDist?: number;
buckshotBullets?: number;
PenetrationPower?: number;
PenetrationPowerDiviation?: number;
ammoHear?: number;
ammoSfx?: string;
MisfireChance?: number;
MinFragmentsCount?: number;
MaxFragmentsCount?: number;
ammoShiftChance?: number;
casingName?: string;
casingEjectPower?: number;
casingMass?: number;
casingSounds?: string;
ProjectileCount?: number;
PenetrationChance?: number;
RicochetChance?: number;
FragmentationChance?: number;
Deterioration?: number;
SpeedRetardation?: number;
Tracer?: boolean;
TracerColor?: string;
TracerDistance?: number;
ArmorDamage?: number;
Caliber?: string;
StaminaBurnPerDamage?: number;
HeavyBleedingDelta?: number;
LightBleedingDelta?: number;
ShowBullet?: boolean;
HasGrenaderComponent?: boolean;
FuzeArmTimeSec?: number;
ExplosionStrength?: number;
MinExplosionDistance?: number;
MaxExplosionDistance?: number;
FragmentsCount?: number;
FragmentType?: string;
ShowHitEffectOnExplode?: boolean;
ExplosionType?: string;
AmmoLifeTimeSec?: number;
Contusion?: Xyz;
ArmorDistanceDistanceDamage?: Xyz;
Blindness?: Xyz;
IsLightAndSoundShot?: boolean;
LightAndSoundShotAngle?: number;
LightAndSoundShotSelfContusionTime?: number;
LightAndSoundShotSelfContusionStrength?: number;
MalfMisfireChance?: number;
MalfFeedChance?: number;
StackSlots?: StackSlot[];
type?: string;
eqMin?: number;
eqMax?: number;
rate?: number;
ThrowType?: string;
ExplDelay?: number;
Strength?: number;
ContusionDistance?: number;
throwDamMax?: number;
explDelay?: number;
EmitTime?: number;
CanBeHiddenDuringThrow?: boolean;
MinTimeToContactExplode?: number;
ExplosionEffectType?: string;
} }
export interface Prefab { export interface Prefab {
path: string; path: string;

View File

@ -1,6 +1,7 @@
export interface IPackageJsonData { export interface IPackageJsonData {
incompatibilities?: string[]; incompatibilities?: string[];
dependencies?: string[]; dependencies?: string[];
modDependencies?: Record<string, string>;
name: string; name: string;
author: string; author: string;
version: string; version: string;

View File

@ -5,6 +5,7 @@ import { IBotType } from "../../eft/common/tables/IBotType";
import { ICustomizationItem } from "../../eft/common/tables/ICustomizationItem"; import { ICustomizationItem } from "../../eft/common/tables/ICustomizationItem";
import { IHandbookBase } from "../../eft/common/tables/IHandbookBase"; import { IHandbookBase } from "../../eft/common/tables/IHandbookBase";
import { ILootBase } from "../../eft/common/tables/ILootBase"; import { ILootBase } from "../../eft/common/tables/ILootBase";
import { IMatch } from "../../eft/common/tables/IMatch";
import { IQuest } from "../../eft/common/tables/IQuest"; import { IQuest } from "../../eft/common/tables/IQuest";
import { IRepeatableQuestDatabase } from "../../eft/common/tables/IRepeatableQuests"; import { IRepeatableQuestDatabase } from "../../eft/common/tables/IRepeatableQuests";
import { ITemplateItem } from "../../eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../../eft/common/tables/ITemplateItem";
@ -18,22 +19,22 @@ import { ILocations } from "./ILocations";
import { IServerBase } from "./IServerBase"; import { IServerBase } from "./IServerBase";
import { ISettingsBase } from "./ISettingsBase"; import { ISettingsBase } from "./ISettingsBase";
export interface IDatabaseTables { export interface IDatabaseTables {
bots: { bots?: {
types: Record<string, IBotType>; types: Record<string, IBotType>;
base: IBotBase; base: IBotBase;
core: IBotCore; core: IBotCore;
}; };
hideout: { hideout?: {
areas: IHideoutArea[]; areas: IHideoutArea[];
production: IHideoutProduction[]; production: IHideoutProduction[];
scavcase: IHideoutScavCase[]; scavcase: IHideoutScavCase[];
settings: IHideoutSettingsBase; settings: IHideoutSettingsBase;
}; };
locales: ILocaleBase; locales?: ILocaleBase;
locations: ILocations; locations?: ILocations;
loot: ILootBase; loot?: ILootBase;
match: any; match?: IMatch;
templates: { templates?: {
character: string[]; character: string[];
items: Record<string, ITemplateItem>; items: Record<string, ITemplateItem>;
quests: IQuest[]; quests: IQuest[];
@ -44,8 +45,8 @@ export interface IDatabaseTables {
profiles: any; profiles: any;
prices: Record<string, number>; prices: Record<string, number>;
}; };
traders: Record<string, ITrader>; traders?: Record<string, ITrader>;
globals: IGlobals; globals?: IGlobals;
server: IServerBase; server?: IServerBase;
settings: ISettingsBase; settings?: ISettingsBase;
} }

View File

@ -0,0 +1,5 @@
import { Preset } from "../../eft/common/IGlobals";
export interface CustomPreset {
key: string;
preset: Preset;
}

View File

@ -0,0 +1,6 @@
import { ITraderAssort } from "../../eft/common/tables/ITrader";
import { Traders } from "../../enums/Traders";
export interface CustomTraderAssortData {
traderId: Traders;
assorts: ITraderAssort;
}

View File

@ -0,0 +1,13 @@
import { HandbookItem } from "../models/eft/common/tables/IHandbookBase";
import { ILogger } from "../models/spt/utils/ILogger";
export declare class CustomHandbookItemService {
protected logger: ILogger;
private customHandbookItems;
constructor(logger: ILogger);
/**
* Add handbook item
* @param handbookItem item to add
*/
add(handbookItem: HandbookItem): void;
get(): HandbookItem[];
}

View File

@ -0,0 +1,11 @@
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer";
export declare class CustomItemService {
protected logger: ILogger;
protected databaseServer: DatabaseServer;
private customItems;
constructor(logger: ILogger, databaseServer: DatabaseServer);
add(itemToAdd: ITemplateItem): void;
get(): ITemplateItem[];
}

View File

@ -0,0 +1,14 @@
import { CustomTraderAssortData } from "../models/spt/services/CustomTraderAssortData";
import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer";
export declare class CustomTraderAssortService {
protected logger: ILogger;
protected databaseServer: DatabaseServer;
private customAssorts;
constructor(logger: ILogger, databaseServer: DatabaseServer);
/**
* Add assorts to a specific trader
*/
add(assortsToAdd: CustomTraderAssortData): void;
get(): CustomTraderAssortData[];
}

View File

@ -0,0 +1,19 @@
import { Preset } from "../models/eft/common/IGlobals";
import { CustomPreset } from "../models/spt/services/CustomPreset";
import { ILogger } from "../models/spt/utils/ILogger";
export declare class CustomPresetService {
protected logger: ILogger;
private customPresets;
constructor(logger: ILogger);
/**
* Add custom preset to internal array
* @param presetKey presets key
* @param presetToAdd preset item to add
*/
add(presetKey: string, presetToAdd: Preset): void;
/**
* Get all custom presets
* @returns
*/
get(): CustomPreset[];
}

View File

@ -1,18 +1,52 @@
import { VFS } from "./VFS";
import { JsonUtil } from "./JsonUtil";
import { DatabaseServer } from "../servers/DatabaseServer";
import { ImageRouter } from "../routers/ImageRouter";
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
import { IDatabaseTables } from "../models/spt/server/IDatabaseTables";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ImageRouter } from "../routers/ImageRouter";
import { DatabaseServer } from "../servers/DatabaseServer";
import { CustomHandbookItemService } from "../services/CustomHandbookItemService";
import { CustomItemService } from "../services/CustomItemService";
import { CustomPresetService } from "../services/customPresetService";
import { CustomTraderAssortService } from "../services/CustomTraderAssortService";
import { JsonUtil } from "./JsonUtil";
import { VFS } from "./VFS";
export declare class DatabaseImporter extends OnLoad { export declare class DatabaseImporter extends OnLoad {
protected logger: ILogger; protected logger: ILogger;
protected vfs: VFS; protected vfs: VFS;
protected jsonUtil: JsonUtil; protected jsonUtil: JsonUtil;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected customItemService: CustomItemService;
protected customTraderAssortService: CustomTraderAssortService;
protected customHandbookItemService: CustomHandbookItemService;
protected customPresetService: CustomPresetService;
protected imageRouter: ImageRouter; protected imageRouter: ImageRouter;
constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, imageRouter: ImageRouter); constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, customItemService: CustomItemService, customTraderAssortService: CustomTraderAssortService, customHandbookItemService: CustomHandbookItemService, customPresetService: CustomPresetService, imageRouter: ImageRouter);
onLoad(): void; onLoad(): void;
/**
* Read all json files in database folder and map into a json object
* @param filepath path to database folder
*/
protected hydrateDatabase(filepath: string): void;
/**
* Get all items added through CustomItemService and add to database.templates.items
* @param dataToImport db data to amend
*/
protected addCustomItemsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all assorts added through CustomTraderAssortService and add to database.traders[x].assort
* @param dataToImport db data to amend
*/
protected addCustomTraderAssortsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all custom handbook items added through CustomHandbookItemService and add to database.templates.handbook.items
* @param dataToImport db data to amend
*/
protected addCustomHandbookItemsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all custom preset items added through CustomPresetService and add to database.globals.ItemPresets
* @param dataToImport
*/
protected addCustomPresetsToDb(dataToImport: IDatabaseTables): void;
getRoute(): string; getRoute(): string;
loadRecursive(filepath: string): any; loadRecursive(filepath: string): IDatabaseTables;
loadImages(filepath: string): void; loadImages(filepath: string): void;
} }

View File

@ -55,7 +55,7 @@ export declare class InitialModLoader implements IModLoader {
protected executeMods(container: DependencyContainer): void; protected executeMods(container: DependencyContainer): void;
sortModsLoadOrder(): string[]; sortModsLoadOrder(): string[];
protected addMod(mod: string): Promise<void>; protected addMod(mod: string): Promise<void>;
protected areModDependenciesFulfilled(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean; protected areModDependenciesFulfilled(pkg: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean; protected isModCompatible(mod: IPackageJsonData, loadedMods: Record<string, IPackageJsonData>): boolean;
protected validMod(mod: string): boolean; protected validMod(mod: string): boolean;
protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void; protected getLoadOrderRecursive(mod: string, result: Record<string, string>, visited: Record<string, string>): void;

View File

@ -0,0 +1,10 @@
export interface IMatch {
metrics: Metrics;
}
export interface Metrics {
Keys: number[];
NetProcessingBins: number[];
RenderBins: number[];
GameUpdateBins: number[];
MemoryMeasureInterval: number;
}

View File

@ -7,288 +7,234 @@ export interface ITemplateItem {
_proto: string; _proto: string;
} }
export interface Props { export interface Props {
Name: string; Name?: string;
ShortName: string; ShortName?: string;
Description: string; Description?: string;
Weight: number; Weight?: number;
BackgroundColor: string; BackgroundColor?: string;
Width: number; Width?: number;
Height: number; Height?: number;
StackMaxSize: number; StackMaxSize?: number;
Rarity?: string; Rarity?: string;
SpawnChance?: number; SpawnChance?: number;
CreditsPrice?: number; CreditsPrice?: number;
ItemSound: string; ItemSound?: string;
Prefab: Prefab; Prefab?: Prefab;
UsePrefab: Prefab; UsePrefab?: Prefab;
StackObjectsCount: number; StackObjectsCount?: number;
NotShownInSlot: boolean; NotShownInSlot?: boolean;
ExaminedByDefault: boolean; ExaminedByDefault?: boolean;
ExamineTime: number; ExamineTime?: number;
IsUndiscardable: boolean; IsUndiscardable?: boolean;
IsUnsaleable: boolean; IsUnsaleable?: boolean;
IsUnbuyable: boolean; IsUnbuyable?: boolean;
IsUngivable: boolean; IsUngivable?: boolean;
IsLockedafterEquip: boolean; IsLockedafterEquip?: boolean;
QuestItem: boolean; QuestItem?: boolean;
LootExperience: number; LootExperience?: number;
ExamineExperience: number; ExamineExperience?: number;
HideEntrails: boolean; HideEntrails?: boolean;
RepairCost: number; RepairCost?: number;
RepairSpeed: number; RepairSpeed?: number;
ExtraSizeLeft: number; ExtraSizeLeft?: number;
ExtraSizeRight: number; ExtraSizeRight?: number;
ExtraSizeUp: number; ExtraSizeUp?: number;
ExtraSizeDown: number; ExtraSizeDown?: number;
ExtraSizeForceAdd: boolean; ExtraSizeForceAdd?: boolean;
MergesWithChildren: boolean; MergesWithChildren?: boolean;
CanSellOnRagfair: boolean; CanSellOnRagfair?: boolean;
CanRequireOnRagfair: boolean; CanRequireOnRagfair?: boolean;
ConflictingItems: string[]; ConflictingItems?: string[];
DiscardLimit: number; Unlootable?: boolean;
Unlootable: boolean; UnlootableFromSlot?: string;
UnlootableFromSlot: string; UnlootableFromSide?: string[];
UnlootableFromSide: string[]; AnimationVariantsNumber?: number;
AnimationVariantsNumber: number; DiscardingBlock?: boolean;
DiscardingBlock: boolean; RagFairCommissionModifier?: number;
RagFairCommissionModifier: number; IsAlwaysAvailableForInsurance?: boolean;
IsAlwaysAvailableForInsurance: boolean; DiscardLimit?: number;
Grids: Grid[]; MaxResource?: number;
Slots: Slot[];
CanPutIntoDuringTheRaid: boolean;
CantRemoveFromSlotsDuringRaid: string[];
weapClass: string;
weapUseType: string;
ammoCaliber: string;
Durability: number;
MaxDurability: number;
OperatingResource: number;
RepairComplexity: number;
durabSpawnMin: number;
durabSpawnMax: number;
isFastReload: boolean;
RecoilForceUp: number;
RecoilForceBack: number;
Convergence: number;
RecoilAngle: number;
weapFireType: string[];
RecolDispersion: number;
SingleFireRate: number;
CanQueueSecondShot: boolean;
bFirerate: number;
Ergonomics: number;
Velocity: number;
bEffDist: number;
bHearDist: number;
isChamberLoad: boolean;
chamberAmmoCount: number;
isBoltCatch: boolean;
defMagType: string;
defAmmo: string;
AdjustCollimatorsToTrajectory: boolean;
shotgunDispersion: number;
Chambers: Slot[];
CameraRecoil: number;
CameraSnap: number;
ReloadMode: string;
CenterOfImpact: number;
AimPlane: number;
DeviationCurve: number;
DeviationMax: number;
Foldable: boolean;
Retractable: boolean;
TacticalReloadStiffnes: Xyz;
TacticalReloadFixation: number;
RecoilCenter: Xyz;
RotationCenter: Xyz;
RotationCenterNoStock: Xyz;
SizeReduceRight: number;
FoldedSlot: string;
CompactHandling: boolean;
SightingRange: number;
MinRepairDegradation: number;
MaxRepairDegradation: number;
MinRepairKitDegradation: number;
MaxRepairKitDegradation: number;
IronSightRange: number;
MustBoltBeOpennedForExternalReload: boolean;
MustBoltBeOpennedForInternalReload: boolean;
BoltAction: boolean;
HipAccuracyRestorationDelay: number;
HipAccuracyRestorationSpeed: number;
HipInnaccuracyGain: number;
ManualBoltCatch: boolean;
BurstShotsCount: number;
BaseMalfunctionChance: number;
AllowJam: boolean;
AllowFeed: boolean;
AllowMisfire: boolean;
AllowSlide: boolean;
DurabilityBurnRatio: number;
HeatFactorGun: number;
CoolFactorGun: number;
CoolFactorGunMods: number;
HeatFactorByShot: number;
AllowOverheat: boolean;
DoubleActionAccuracyPenalty: number;
RecoilPosZMult: number;
ShotgunDispersion: number;
StackMinRandom: number;
StackMaxRandom: number;
StackSlots: StackSlot[];
SearchSound: string;
BlocksArmorVest: boolean;
RigLayoutName: string;
armorZone: string[];
armorClass: number;
speedPenaltyPercent: number;
mousePenalty: number;
weaponErgonomicPenalty: number;
BluntThroughput: number;
ArmorMaterial: string;
medUseTime: number;
medEffectType: string;
MaxHpResource: number;
hpResourceRate: number;
StimulatorBuffs: string;
effects_health: EffectsHealth;
effects_damage: EffectsDamage;
knifeHitDelay: number;
knifeHitSlashRate: number;
knifeHitStabRate: number;
knifeHitRadius: number;
knifeHitSlashDam: number;
knifeHitStabDam: number;
knifeDurab: number;
PrimaryDistance: number;
SecondryDistance: number;
SlashPenetration: number;
StabPenetration: number;
PrimaryConsumption: number;
SecondryConsumption: number;
DeflectionConsumption: number;
MaxResource: number;
AppliedTrunkRotation: Xyz;
AppliedHeadRotation: Xyz;
DisplayOnModel: boolean;
AdditionalAnimationLayer: number;
StaminaBurnRate: number;
ColliderScaleMultiplier: Xyz;
ammoType: string;
InitialSpeed: number;
BallisticCoeficient: number;
BulletMassGram: number;
BulletDiameterMilimeters: number;
Damage: number;
ammoAccr: number;
ammoRec: number;
ammoDist: number;
buckshotBullets: number;
PenetrationPower: number;
PenetrationPowerDiviation: number;
ammoHear: number;
ammoSfx: string;
MisfireChance: number;
MinFragmentsCount: number;
MaxFragmentsCount: number;
ammoShiftChance: number;
casingName: string;
casingEjectPower: number;
casingMass: number;
casingSounds: string;
ProjectileCount: number;
PenetrationChance: number;
RicochetChance: number;
FragmentationChance: number;
Deterioration: number;
SpeedRetardation: number;
Tracer: boolean;
TracerColor: string;
TracerDistance: number;
ArmorDamage: number;
Caliber: string;
StaminaBurnPerDamage: number;
HeavyBleedingDelta: number;
LightBleedingDelta: number;
ShowBullet: boolean;
HasGrenaderComponent: boolean;
FuzeArmTimeSec: number;
ExplosionStrength: number;
MinExplosionDistance: number;
MaxExplosionDistance: number;
FragmentsCount: number;
FragmentType: string;
ShowHitEffectOnExplode: boolean;
ExplosionType: string;
AmmoLifeTimeSec: number;
Contusion: Xyz;
ArmorDistanceDistanceDamage: Xyz;
Blindness: Xyz;
IsLightAndSoundShot: boolean;
LightAndSoundShotAngle: number;
LightAndSoundShotSelfContusionTime: number;
LightAndSoundShotSelfContusionStrength: number;
MalfMisfireChance: number;
DurabilityBurnModificator: number;
HeatFactor: number;
MalfFeedChance: number;
Accuracy: number;
Recoil: number;
Loudness: number;
EffectiveDistance: number;
RaidModdable: boolean;
ToolModdable: boolean;
BlocksFolding: boolean;
BlocksCollapsible: boolean;
IsAnimated: boolean;
HasShoulderContact: boolean;
DoubleActionAccuracyPenaltyMult: number;
magAnimationIndex: number;
Cartridges: Slot[];
CanFast: boolean;
CanHit: boolean;
CanAdmin: boolean;
LoadUnloadModifier: number;
CheckTimeModifier: number;
CheckOverride: number;
ReloadMagType: string;
VisibleAmmoRangesString: string;
MalfunctionChance: number;
TagColor: number;
TagName: string;
MaximumNumberOfUsage: number;
CustomAimPlane: string;
sightModType: string;
aimingSensitivity: number;
SightModesCount: number;
OpticCalibrationDistances: number[];
ScopesCount: number;
AimSensitivity: number[][];
ModesCount: number[];
Zooms: number[][];
CalibrationDistances: number[][];
Intensity: number;
Mask: string;
MaskSize: number;
NoiseIntensity: number;
NoiseScale: number;
Color: Color;
DiffuseIntensity: number;
HasHinge: boolean;
Resource?: number; Resource?: number;
DogTagQualities?: boolean;
Grids?: Grid[];
Slots?: Slot[];
CanPutIntoDuringTheRaid?: boolean;
CantRemoveFromSlotsDuringRaid?: string[];
KeyIds?: string[];
TagColor?: number;
TagName?: string;
Durability?: number;
Accuracy?: number;
Recoil?: number;
Loudness?: number;
EffectiveDistance?: number;
Ergonomics?: number;
Velocity?: number;
RaidModdable?: boolean;
ToolModdable?: boolean;
BlocksFolding?: boolean;
BlocksCollapsible?: boolean;
IsAnimated?: boolean;
HasShoulderContact?: boolean;
SightingRange?: number;
DoubleActionAccuracyPenaltyMult?: number;
ModesCount: any;
DurabilityBurnModificator?: number;
HeatFactor?: number;
CoolFactor?: number; CoolFactor?: number;
foodUseTime?: number; muzzleModType?: string;
foodEffectType?: string; CustomAimPlane?: string;
MaxRepairResource: number; sightModType?: string;
RepairQuality: number; aimingSensitivity?: number;
RepairType: string; SightModesCount?: number;
TargetItemFilter: string[]; OpticCalibrationDistances?: number[];
apResource: number; ScopesCount?: number;
krResource: number; AimSensitivity: any;
Zooms?: number[][];
CalibrationDistances?: number[][];
Intensity?: number;
Mask?: string;
MaskSize?: number;
NoiseIntensity?: number;
NoiseScale?: number;
Color?: Color;
DiffuseIntensity?: number;
HasHinge?: boolean;
RampPalette?: string;
DepthFade?: number;
RoughnessCoef?: number;
SpecularCoef?: number;
MainTexColorCoef?: number;
MinimumTemperatureValue?: number;
RampShift?: number;
HeatMin?: number;
ColdMax?: number;
IsNoisy?: boolean;
IsFpsStuck?: boolean;
IsGlitch?: boolean;
IsMotionBlurred?: boolean;
IsPixelated?: boolean;
PixelationBlockCount?: number;
ShiftsAimCamera?: number;
magAnimationIndex?: number;
Cartridges?: Slot[];
CanFast?: boolean;
CanHit?: boolean;
CanAdmin?: boolean;
LoadUnloadModifier?: number;
CheckTimeModifier?: number;
CheckOverride?: number;
ReloadMagType?: string;
VisibleAmmoRangesString?: string;
MalfunctionChance?: number;
IsShoulderContact?: boolean;
Foldable?: boolean;
Retractable?: boolean;
SizeReduceRight?: number;
CenterOfImpact?: number;
ShotgunDispersion?: number;
IsSilencer?: boolean;
DeviationCurve?: number;
DeviationMax?: number;
SearchSound?: string;
BlocksArmorVest?: boolean;
speedPenaltyPercent?: number;
GridLayoutName?: string;
SpawnFilter?: any[];
containType?: any[];
sizeWidth?: number;
sizeHeight?: number;
isSecured?: boolean;
spawnTypes?: string;
lootFilter?: any[];
spawnRarity?: string;
minCountSpawn?: number;
maxCountSpawn?: number;
openedByKeyID?: any[];
RigLayoutName?: string;
MaxDurability?: number;
armorZone?: string[];
armorClass: any;
mousePenalty?: number;
weaponErgonomicPenalty?: number;
BluntThroughput?: number;
ArmorMaterial?: string;
weapClass?: string;
weapUseType?: string;
ammoCaliber?: string;
OperatingResource?: number;
RepairComplexity?: number;
durabSpawnMin?: number;
durabSpawnMax?: number;
isFastReload?: boolean;
RecoilForceUp?: number;
RecoilForceBack?: number;
Convergence?: number;
RecoilAngle?: number;
weapFireType?: string[];
RecolDispersion?: number;
SingleFireRate?: number;
CanQueueSecondShot?: boolean;
bFirerate?: number;
bEffDist?: number;
bHearDist?: number;
isChamberLoad?: boolean;
chamberAmmoCount?: number;
isBoltCatch?: boolean;
defMagType?: string;
defAmmo?: string;
AdjustCollimatorsToTrajectory?: boolean;
shotgunDispersion?: number;
Chambers?: Slot[];
CameraRecoil?: number;
CameraSnap?: number;
ReloadMode?: string;
AimPlane?: number;
TacticalReloadStiffnes?: Xyz;
TacticalReloadFixation?: number;
RecoilCenter?: Xyz;
RotationCenter?: Xyz;
RotationCenterNoStock?: Xyz;
FoldedSlot?: string;
CompactHandling?: boolean;
MinRepairDegradation?: number;
MaxRepairDegradation?: number;
IronSightRange?: number;
MustBoltBeOpennedForExternalReload?: boolean;
MustBoltBeOpennedForInternalReload?: boolean;
BoltAction?: boolean;
HipAccuracyRestorationDelay?: number;
HipAccuracyRestorationSpeed?: number;
HipInnaccuracyGain?: number;
ManualBoltCatch?: boolean;
BurstShotsCount?: number;
BaseMalfunctionChance?: number;
AllowJam?: boolean;
AllowFeed?: boolean;
AllowMisfire?: boolean;
AllowSlide?: boolean;
DurabilityBurnRatio?: number;
HeatFactorGun?: number;
CoolFactorGun?: number;
CoolFactorGunMods?: number;
HeatFactorByShot?: number;
AllowOverheat?: boolean;
DoubleActionAccuracyPenalty?: number;
RecoilPosZMult?: number;
MinRepairKitDegradation?: number;
MaxRepairKitDegradation?: number;
BlocksEarpiece?: boolean; BlocksEarpiece?: boolean;
BlocksEyewear?: boolean; BlocksEyewear?: boolean;
BlocksHeadwear?: boolean; BlocksHeadwear?: boolean;
BlocksFaceCover?: boolean; BlocksFaceCover?: boolean;
Indestructibility?: number;
headSegments?: string[];
FaceShieldComponent?: boolean;
FaceShieldMask?: string;
MaterialType?: string;
RicochetParams?: Xyz;
DeafStrength?: string;
BlindnessProtection?: number;
Distortion?: number; Distortion?: number;
CompressorTreshold?: number; CompressorTreshold?: number;
CompressorAttack?: number; CompressorAttack?: number;
@ -299,11 +245,120 @@ export interface Props {
CompressorVolume?: number; CompressorVolume?: number;
AmbientVolume?: number; AmbientVolume?: number;
DryVolume?: number; DryVolume?: number;
headSegments?: string[]; foodUseTime?: number;
FaceShieldComponent?: boolean; foodEffectType?: string;
RicochetParams?: Xyz; StimulatorBuffs?: string;
DeafStrength?: string; effects_health: any;
BlindnessProtection: number; effects_damage: any;
MaximumNumberOfUsage?: number;
knifeHitDelay?: number;
knifeHitSlashRate?: number;
knifeHitStabRate?: number;
knifeHitRadius?: number;
knifeHitSlashDam?: number;
knifeHitStabDam?: number;
knifeDurab?: number;
PrimaryDistance?: number;
SecondryDistance?: number;
SlashPenetration?: number;
StabPenetration?: number;
PrimaryConsumption?: number;
SecondryConsumption?: number;
DeflectionConsumption?: number;
AppliedTrunkRotation?: Xyz;
AppliedHeadRotation?: Xyz;
DisplayOnModel?: boolean;
AdditionalAnimationLayer?: number;
StaminaBurnRate?: number;
ColliderScaleMultiplier?: Xyz;
ConfigPathStr?: string;
MaxMarkersCount?: number;
scaleMin?: number;
scaleMax?: number;
medUseTime?: number;
medEffectType?: string;
MaxHpResource?: number;
hpResourceRate?: number;
apResource?: number;
krResource?: number;
MaxOpticZoom?: number;
MaxRepairResource?: number;
TargetItemFilter?: string[];
RepairQuality?: number;
RepairType?: string;
StackMinRandom?: number;
StackMaxRandom?: number;
ammoType?: string;
InitialSpeed?: number;
BallisticCoeficient?: number;
BulletMassGram?: number;
BulletDiameterMilimeters?: number;
Damage?: number;
ammoAccr?: number;
ammoRec?: number;
ammoDist?: number;
buckshotBullets?: number;
PenetrationPower?: number;
PenetrationPowerDiviation?: number;
ammoHear?: number;
ammoSfx?: string;
MisfireChance?: number;
MinFragmentsCount?: number;
MaxFragmentsCount?: number;
ammoShiftChance?: number;
casingName?: string;
casingEjectPower?: number;
casingMass?: number;
casingSounds?: string;
ProjectileCount?: number;
PenetrationChance?: number;
RicochetChance?: number;
FragmentationChance?: number;
Deterioration?: number;
SpeedRetardation?: number;
Tracer?: boolean;
TracerColor?: string;
TracerDistance?: number;
ArmorDamage?: number;
Caliber?: string;
StaminaBurnPerDamage?: number;
HeavyBleedingDelta?: number;
LightBleedingDelta?: number;
ShowBullet?: boolean;
HasGrenaderComponent?: boolean;
FuzeArmTimeSec?: number;
ExplosionStrength?: number;
MinExplosionDistance?: number;
MaxExplosionDistance?: number;
FragmentsCount?: number;
FragmentType?: string;
ShowHitEffectOnExplode?: boolean;
ExplosionType?: string;
AmmoLifeTimeSec?: number;
Contusion?: Xyz;
ArmorDistanceDistanceDamage?: Xyz;
Blindness?: Xyz;
IsLightAndSoundShot?: boolean;
LightAndSoundShotAngle?: number;
LightAndSoundShotSelfContusionTime?: number;
LightAndSoundShotSelfContusionStrength?: number;
MalfMisfireChance?: number;
MalfFeedChance?: number;
StackSlots?: StackSlot[];
type?: string;
eqMin?: number;
eqMax?: number;
rate?: number;
ThrowType?: string;
ExplDelay?: number;
Strength?: number;
ContusionDistance?: number;
throwDamMax?: number;
explDelay?: number;
EmitTime?: number;
CanBeHiddenDuringThrow?: boolean;
MinTimeToContactExplode?: number;
ExplosionEffectType?: string;
} }
export interface Prefab { export interface Prefab {
path: string; path: string;

View File

@ -1,6 +1,7 @@
export interface IPackageJsonData { export interface IPackageJsonData {
incompatibilities?: string[]; incompatibilities?: string[];
dependencies?: string[]; dependencies?: string[];
modDependencies?: Record<string, string>;
name: string; name: string;
author: string; author: string;
version: string; version: string;

View File

@ -5,6 +5,7 @@ import { IBotType } from "../../eft/common/tables/IBotType";
import { ICustomizationItem } from "../../eft/common/tables/ICustomizationItem"; import { ICustomizationItem } from "../../eft/common/tables/ICustomizationItem";
import { IHandbookBase } from "../../eft/common/tables/IHandbookBase"; import { IHandbookBase } from "../../eft/common/tables/IHandbookBase";
import { ILootBase } from "../../eft/common/tables/ILootBase"; import { ILootBase } from "../../eft/common/tables/ILootBase";
import { IMatch } from "../../eft/common/tables/IMatch";
import { IQuest } from "../../eft/common/tables/IQuest"; import { IQuest } from "../../eft/common/tables/IQuest";
import { IRepeatableQuestDatabase } from "../../eft/common/tables/IRepeatableQuests"; import { IRepeatableQuestDatabase } from "../../eft/common/tables/IRepeatableQuests";
import { ITemplateItem } from "../../eft/common/tables/ITemplateItem"; import { ITemplateItem } from "../../eft/common/tables/ITemplateItem";
@ -18,22 +19,22 @@ import { ILocations } from "./ILocations";
import { IServerBase } from "./IServerBase"; import { IServerBase } from "./IServerBase";
import { ISettingsBase } from "./ISettingsBase"; import { ISettingsBase } from "./ISettingsBase";
export interface IDatabaseTables { export interface IDatabaseTables {
bots: { bots?: {
types: Record<string, IBotType>; types: Record<string, IBotType>;
base: IBotBase; base: IBotBase;
core: IBotCore; core: IBotCore;
}; };
hideout: { hideout?: {
areas: IHideoutArea[]; areas: IHideoutArea[];
production: IHideoutProduction[]; production: IHideoutProduction[];
scavcase: IHideoutScavCase[]; scavcase: IHideoutScavCase[];
settings: IHideoutSettingsBase; settings: IHideoutSettingsBase;
}; };
locales: ILocaleBase; locales?: ILocaleBase;
locations: ILocations; locations?: ILocations;
loot: ILootBase; loot?: ILootBase;
match: any; match?: IMatch;
templates: { templates?: {
character: string[]; character: string[];
items: Record<string, ITemplateItem>; items: Record<string, ITemplateItem>;
quests: IQuest[]; quests: IQuest[];
@ -44,8 +45,8 @@ export interface IDatabaseTables {
profiles: any; profiles: any;
prices: Record<string, number>; prices: Record<string, number>;
}; };
traders: Record<string, ITrader>; traders?: Record<string, ITrader>;
globals: IGlobals; globals?: IGlobals;
server: IServerBase; server?: IServerBase;
settings: ISettingsBase; settings?: ISettingsBase;
} }

View File

@ -0,0 +1,5 @@
import { Preset } from "../../eft/common/IGlobals";
export interface CustomPreset {
key: string;
preset: Preset;
}

View File

@ -0,0 +1,6 @@
import { ITraderAssort } from "../../eft/common/tables/ITrader";
import { Traders } from "../../enums/Traders";
export interface CustomTraderAssortData {
traderId: Traders;
assorts: ITraderAssort;
}

View File

@ -0,0 +1,13 @@
import { HandbookItem } from "../models/eft/common/tables/IHandbookBase";
import { ILogger } from "../models/spt/utils/ILogger";
export declare class CustomHandbookItemService {
protected logger: ILogger;
private customHandbookItems;
constructor(logger: ILogger);
/**
* Add handbook item
* @param handbookItem item to add
*/
add(handbookItem: HandbookItem): void;
get(): HandbookItem[];
}

View File

@ -0,0 +1,11 @@
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer";
export declare class CustomItemService {
protected logger: ILogger;
protected databaseServer: DatabaseServer;
private customItems;
constructor(logger: ILogger, databaseServer: DatabaseServer);
add(itemToAdd: ITemplateItem): void;
get(): ITemplateItem[];
}

View File

@ -0,0 +1,14 @@
import { CustomTraderAssortData } from "../models/spt/services/CustomTraderAssortData";
import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer";
export declare class CustomTraderAssortService {
protected logger: ILogger;
protected databaseServer: DatabaseServer;
private customAssorts;
constructor(logger: ILogger, databaseServer: DatabaseServer);
/**
* Add assorts to a specific trader
*/
add(assortsToAdd: CustomTraderAssortData): void;
get(): CustomTraderAssortData[];
}

View File

@ -0,0 +1,19 @@
import { Preset } from "../models/eft/common/IGlobals";
import { CustomPreset } from "../models/spt/services/CustomPreset";
import { ILogger } from "../models/spt/utils/ILogger";
export declare class CustomPresetService {
protected logger: ILogger;
private customPresets;
constructor(logger: ILogger);
/**
* Add custom preset to internal array
* @param presetKey presets key
* @param presetToAdd preset item to add
*/
add(presetKey: string, presetToAdd: Preset): void;
/**
* Get all custom presets
* @returns
*/
get(): CustomPreset[];
}

View File

@ -1,18 +1,52 @@
import { VFS } from "./VFS";
import { JsonUtil } from "./JsonUtil";
import { DatabaseServer } from "../servers/DatabaseServer";
import { ImageRouter } from "../routers/ImageRouter";
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
import { IDatabaseTables } from "../models/spt/server/IDatabaseTables";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ImageRouter } from "../routers/ImageRouter";
import { DatabaseServer } from "../servers/DatabaseServer";
import { CustomHandbookItemService } from "../services/CustomHandbookItemService";
import { CustomItemService } from "../services/CustomItemService";
import { CustomPresetService } from "../services/customPresetService";
import { CustomTraderAssortService } from "../services/CustomTraderAssortService";
import { JsonUtil } from "./JsonUtil";
import { VFS } from "./VFS";
export declare class DatabaseImporter extends OnLoad { export declare class DatabaseImporter extends OnLoad {
protected logger: ILogger; protected logger: ILogger;
protected vfs: VFS; protected vfs: VFS;
protected jsonUtil: JsonUtil; protected jsonUtil: JsonUtil;
protected databaseServer: DatabaseServer; protected databaseServer: DatabaseServer;
protected customItemService: CustomItemService;
protected customTraderAssortService: CustomTraderAssortService;
protected customHandbookItemService: CustomHandbookItemService;
protected customPresetService: CustomPresetService;
protected imageRouter: ImageRouter; protected imageRouter: ImageRouter;
constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, imageRouter: ImageRouter); constructor(logger: ILogger, vfs: VFS, jsonUtil: JsonUtil, databaseServer: DatabaseServer, customItemService: CustomItemService, customTraderAssortService: CustomTraderAssortService, customHandbookItemService: CustomHandbookItemService, customPresetService: CustomPresetService, imageRouter: ImageRouter);
onLoad(): void; onLoad(): void;
/**
* Read all json files in database folder and map into a json object
* @param filepath path to database folder
*/
protected hydrateDatabase(filepath: string): void;
/**
* Get all items added through CustomItemService and add to database.templates.items
* @param dataToImport db data to amend
*/
protected addCustomItemsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all assorts added through CustomTraderAssortService and add to database.traders[x].assort
* @param dataToImport db data to amend
*/
protected addCustomTraderAssortsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all custom handbook items added through CustomHandbookItemService and add to database.templates.handbook.items
* @param dataToImport db data to amend
*/
protected addCustomHandbookItemsToDb(dataToImport: IDatabaseTables): void;
/**
* Get all custom preset items added through CustomPresetService and add to database.globals.ItemPresets
* @param dataToImport
*/
protected addCustomPresetsToDb(dataToImport: IDatabaseTables): void;
getRoute(): string; getRoute(): string;
loadRecursive(filepath: string): any; loadRecursive(filepath: string): IDatabaseTables;
loadImages(filepath: string): void; loadImages(filepath: string): void;
} }

View File

@ -5,8 +5,8 @@ import { IBotBase } from "../models/eft/common/tables/IBotBase";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class BotCallbacks { export declare class BotCallbacks {
private botController; protected botController: BotController;
private httpResponse; protected httpResponse: HttpResponseUtil;
constructor(botController: BotController, httpResponse: HttpResponseUtil); constructor(botController: BotController, httpResponse: HttpResponseUtil);
getBotLimit(url: string, info: IEmptyRequestData, sessionID: string): string; getBotLimit(url: string, info: IEmptyRequestData, sessionID: string): string;
getBotDifficulty(url: string, info: IEmptyRequestData, sessionID: string): string; getBotDifficulty(url: string, info: IEmptyRequestData, sessionID: string): string;

View File

@ -1,15 +1,16 @@
import { BundleLoader } from "../loaders/BundleLoader"; import { BundleLoader } from "../loaders/BundleLoader";
import { IHttpConfig } from "../models/spt/config/IHttpConfig";
import { IHttpServer } from "../models/spt/server/IHttpServer"; import { IHttpServer } from "../models/spt/server/IHttpServer";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class BundleCallbacks { export declare class BundleCallbacks {
private logger; protected logger: ILogger;
private httpResponse; protected httpResponse: HttpResponseUtil;
private httpServer; protected httpServer: IHttpServer;
private bundleLoader; protected bundleLoader: BundleLoader;
private configServer; protected configServer: ConfigServer;
private httpConfig; protected httpConfig: IHttpConfig;
constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpServer: IHttpServer, bundleLoader: BundleLoader, configServer: ConfigServer); constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpServer: IHttpServer, bundleLoader: BundleLoader, configServer: ConfigServer);
sendBundle(sessionID: string, req: any, resp: any, body: any): any; sendBundle(sessionID: string, req: any, resp: any, body: any): any;
getBundles(url: string, info: any, sessionID: string): string; getBundles(url: string, info: any, sessionID: string): string;

View File

@ -9,9 +9,9 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class CustomizationCallbacks { export declare class CustomizationCallbacks {
private customizationController; protected customizationController: CustomizationController;
private saveServer; protected saveServer: SaveServer;
private httpResponse; protected httpResponse: HttpResponseUtil;
constructor(customizationController: CustomizationController, saveServer: SaveServer, httpResponse: HttpResponseUtil); constructor(customizationController: CustomizationController, saveServer: SaveServer, httpResponse: HttpResponseUtil);
getSuits(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<{ getSuits(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<{
_id: string; _id: string;

View File

@ -12,8 +12,8 @@ import { ISettingsBase } from "../models/spt/server/ISettingsBase";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class DataCallbacks { export declare class DataCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private databaseServer; protected databaseServer: DatabaseServer;
constructor(httpResponse: HttpResponseUtil, databaseServer: DatabaseServer); constructor(httpResponse: HttpResponseUtil, databaseServer: DatabaseServer);
getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ISettingsBase>; getSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ISettingsBase>;
getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGlobals>; getGlobals(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGlobals>;

View File

@ -21,10 +21,10 @@ import { HashUtil } from "../utils/HashUtil";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class DialogueCallbacks extends OnUpdate { export declare class DialogueCallbacks extends OnUpdate {
private hashUtil; protected hashUtil: HashUtil;
private timeUtil; protected timeUtil: TimeUtil;
private httpResponse; protected httpResponse: HttpResponseUtil;
private dialogueController; protected dialogueController: DialogueController;
constructor(hashUtil: HashUtil, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, dialogueController: DialogueController); constructor(hashUtil: HashUtil, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, dialogueController: DialogueController);
getFriendList(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGetFriendListDataResponse>; getFriendList(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<IGetFriendListDataResponse>;
getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<any[]>; getChatServerList(url: string, info: IGetChatServerListRequestData, sessionID: string): IGetBodyResponseData<any[]>;

View File

@ -8,9 +8,9 @@ import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { Watermark } from "../utils/Watermark"; import { Watermark } from "../utils/Watermark";
declare class GameCallbacks { declare class GameCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private watermark; protected watermark: Watermark;
private gameController; protected gameController: GameController;
constructor(httpResponse: HttpResponseUtil, watermark: Watermark, gameController: GameController); constructor(httpResponse: HttpResponseUtil, watermark: Watermark, gameController: GameController);
versionValidate(url: string, info: IVersionValidateRequestData, sessionID: string): INullResponseData; versionValidate(url: string, info: IVersionValidateRequestData, sessionID: string): INullResponseData;
gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>; gameStart(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;

View File

@ -1,7 +1,7 @@
import { HandbookController } from "../controllers/HandbookController"; import { HandbookController } from "../controllers/HandbookController";
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
export declare class HandbookCallbacks extends OnLoad { export declare class HandbookCallbacks extends OnLoad {
private handbookController; protected handbookController: HandbookController;
constructor(handbookController: HandbookController); constructor(handbookController: HandbookController);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;

View File

@ -9,9 +9,9 @@ import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyRespons
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class HealthCallbacks { export declare class HealthCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private profileHelper; protected profileHelper: ProfileHelper;
private healthController; protected healthController: HealthController;
constructor(httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, healthController: HealthController); constructor(httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, healthController: HealthController);
syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): IGetBodyResponseData<string>; syncHealth(url: string, info: ISyncHealthRequestData, sessionID: string): IGetBodyResponseData<string>;
offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse; offraidEat(pmcData: IPmcData, body: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -11,11 +11,12 @@ import { IHideoutToggleAreaRequestData } from "../models/eft/hideout/IHideoutTog
import { IHideoutUpgradeCompleteRequestData } from "../models/eft/hideout/IHideoutUpgradeCompleteRequestData"; import { IHideoutUpgradeCompleteRequestData } from "../models/eft/hideout/IHideoutUpgradeCompleteRequestData";
import { IHideoutUpgradeRequestData } from "../models/eft/hideout/IHideoutUpgradeRequestData"; import { IHideoutUpgradeRequestData } from "../models/eft/hideout/IHideoutUpgradeRequestData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IHideoutConfig } from "../models/spt/config/IHideoutConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
export declare class HideoutCallbacks extends OnUpdate { export declare class HideoutCallbacks extends OnUpdate {
private hideoutController; protected hideoutController: HideoutController;
private configServer; protected configServer: ConfigServer;
private hideoutConfig; protected hideoutConfig: IHideoutConfig;
constructor(hideoutController: HideoutController, // TODO: delay needed constructor(hideoutController: HideoutController, // TODO: delay needed
configServer: ConfigServer); configServer: ConfigServer);
upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse; upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -1,7 +1,7 @@
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
import { IHttpServer } from "../models/spt/server/IHttpServer"; import { IHttpServer } from "../models/spt/server/IHttpServer";
export declare class HttpCallbacks extends OnLoad { export declare class HttpCallbacks extends OnLoad {
private httpServer; protected httpServer: IHttpServer;
constructor(httpServer: IHttpServer); constructor(httpServer: IHttpServer);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;

View File

@ -3,14 +3,16 @@ import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData"; import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
import { IRegisterPlayerRequestData } from "../models/eft/inRaid/IRegisterPlayerRequestData"; import { IRegisterPlayerRequestData } from "../models/eft/inRaid/IRegisterPlayerRequestData";
import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData";
import { IAirdropConfig } from "../models/spt/config/IAirdropConfig";
import { IInRaidConfig } from "../models/spt/config/IInRaidConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class InraidCallbacks { export declare class InraidCallbacks {
private inraidController; protected inraidController: InraidController;
private httpResponse; protected httpResponse: HttpResponseUtil;
private configServer; protected configServer: ConfigServer;
private airdropConfig; protected airdropConfig: IAirdropConfig;
private inraidConfig; protected inraidConfig: IInRaidConfig;
constructor(inraidController: InraidController, httpResponse: HttpResponseUtil, configServer: ConfigServer); constructor(inraidController: InraidController, httpResponse: HttpResponseUtil, configServer: ConfigServer);
registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData;
saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData;

View File

@ -5,15 +5,16 @@ import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyRespons
import { IGetInsuranceCostRequestData } from "../models/eft/insurance/IGetInsuranceCostRequestData"; import { IGetInsuranceCostRequestData } from "../models/eft/insurance/IGetInsuranceCostRequestData";
import { IInsureRequestData } from "../models/eft/insurance/IInsureRequestData"; import { IInsureRequestData } from "../models/eft/insurance/IInsureRequestData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IInsuranceConfig } from "../models/spt/config/IInsuranceConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { InsuranceService } from "../services/InsuranceService"; import { InsuranceService } from "../services/InsuranceService";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class InsuranceCallbacks extends OnLoadOnUpdate { export declare class InsuranceCallbacks extends OnLoadOnUpdate {
private insuranceController; protected insuranceController: InsuranceController;
private insuranceService; protected insuranceService: InsuranceService;
private httpResponse; protected httpResponse: HttpResponseUtil;
private configServer; protected configServer: ConfigServer;
private insuranceConfig; protected insuranceConfig: IInsuranceConfig;
constructor(insuranceController: InsuranceController, insuranceService: InsuranceService, httpResponse: HttpResponseUtil, configServer: ConfigServer); constructor(insuranceController: InsuranceController, insuranceService: InsuranceService, httpResponse: HttpResponseUtil, configServer: ConfigServer);
onLoad(): void; onLoad(): void;
getInsuranceCost(url: string, info: IGetInsuranceCostRequestData, sessionID: string): IGetBodyResponseData<any>; getInsuranceCost(url: string, info: IGetInsuranceCostRequestData, sessionID: string): IGetBodyResponseData<any>;

View File

@ -18,7 +18,7 @@ import { IInventoryToggleRequestData } from "../models/eft/inventory/IInventoryT
import { IInventoryTransferRequestData } from "../models/eft/inventory/IInventoryTransferRequestData"; import { IInventoryTransferRequestData } from "../models/eft/inventory/IInventoryTransferRequestData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
export declare class InventoryCallbacks { export declare class InventoryCallbacks {
private inventoryController; protected inventoryController: InventoryController;
constructor(inventoryController: InventoryController); constructor(inventoryController: InventoryController);
moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse; moveItem(pmcData: IPmcData, body: IInventoryMoveRequestData, sessionID: string): IItemEventRouterResponse;
removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse; removeItem(pmcData: IPmcData, body: IInventoryRemoveRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -4,8 +4,8 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class ItemEventCallbacks { export declare class ItemEventCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
constructor(httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter); constructor(httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter);
handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): IGetBodyResponseData<IItemEventRouterResponse>; handleEvents(url: string, info: IItemEventRouterRequest, sessionID: string): IGetBodyResponseData<IItemEventRouterResponse>;
} }

View File

@ -8,10 +8,10 @@ import { SaveServer } from "../servers/SaveServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { Watermark } from "../utils/Watermark"; import { Watermark } from "../utils/Watermark";
declare class LauncherCallbacks { declare class LauncherCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private launcherController; protected launcherController: LauncherController;
private saveServer; protected saveServer: SaveServer;
private watermark; protected watermark: Watermark;
constructor(httpResponse: HttpResponseUtil, launcherController: LauncherController, saveServer: SaveServer, watermark: Watermark); constructor(httpResponse: HttpResponseUtil, launcherController: LauncherController, saveServer: SaveServer, watermark: Watermark);
connect(): string; connect(): string;
login(url: string, info: ILoginRequestData, sessionID: string): string; login(url: string, info: ILoginRequestData, sessionID: string): string;

View File

@ -6,8 +6,8 @@ import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyRespons
import { IGetLocationRequestData } from "../models/eft/location/IGetLocationRequestData"; import { IGetLocationRequestData } from "../models/eft/location/IGetLocationRequestData";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class LocationCallbacks { export declare class LocationCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private locationController; protected locationController: LocationController;
constructor(httpResponse: HttpResponseUtil, locationController: LocationController); constructor(httpResponse: HttpResponseUtil, locationController: LocationController);
getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ILocationsGenerateAllResponse>; getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<ILocationsGenerateAllResponse>;
getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData<ILocationBase>; getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData<ILocationBase>;

View File

@ -9,10 +9,10 @@ import { DatabaseServer } from "../servers/DatabaseServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
export declare class MatchCallbacks { export declare class MatchCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private jsonUtil; protected jsonUtil: JsonUtil;
private matchController; protected matchController: MatchController;
private databaseServer; protected databaseServer: DatabaseServer;
constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseServer: DatabaseServer); constructor(httpResponse: HttpResponseUtil, jsonUtil: JsonUtil, matchController: MatchController, databaseServer: DatabaseServer);
updatePing(url: string, info: any, sessionID: string): INullResponseData; updatePing(url: string, info: any, sessionID: string): INullResponseData;
exitMatch(url: string, info: any, sessionID: string): INullResponseData; exitMatch(url: string, info: any, sessionID: string): INullResponseData;

View File

@ -1,16 +1,17 @@
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
import { DelayedModLoader } from "../loaders/DelayedModLoader"; import { DelayedModLoader } from "../loaders/DelayedModLoader";
import { IHttpConfig } from "../models/spt/config/IHttpConfig";
import { IHttpServer } from "../models/spt/server/IHttpServer"; import { IHttpServer } from "../models/spt/server/IHttpServer";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
declare class ModCallbacks extends OnLoad { declare class ModCallbacks extends OnLoad {
private logger; protected logger: ILogger;
private httpResponse; protected httpResponse: HttpResponseUtil;
private httpServer; protected httpServer: IHttpServer;
private modLoader; protected modLoader: DelayedModLoader;
private configServer; protected configServer: ConfigServer;
private httpConfig; protected httpConfig: IHttpConfig;
constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpServer: IHttpServer, modLoader: DelayedModLoader, configServer: ConfigServer); constructor(logger: ILogger, httpResponse: HttpResponseUtil, httpServer: IHttpServer, modLoader: DelayedModLoader, configServer: ConfigServer);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;

View File

@ -3,7 +3,7 @@ import { IPmcData } from "../models/eft/common/IPmcData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { INoteActionData } from "../models/eft/notes/INoteActionData"; import { INoteActionData } from "../models/eft/notes/INoteActionData";
export declare class NoteCallbacks { export declare class NoteCallbacks {
private noteController; protected noteController: NoteController;
constructor(noteController: NoteController); constructor(noteController: NoteController);
addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;

View File

@ -6,9 +6,9 @@ import { INotifierChannel } from "../models/eft/notifier/INotifier";
import { ISelectProfileRequestData } from "../models/eft/notifier/ISelectProfileRequestData"; import { ISelectProfileRequestData } from "../models/eft/notifier/ISelectProfileRequestData";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class NotifierCallbacks { export declare class NotifierCallbacks {
private httpServerHelper; protected httpServerHelper: HttpServerHelper;
private httpResponse; protected httpResponse: HttpResponseUtil;
private notifierController; protected notifierController: NotifierController;
constructor(httpServerHelper: HttpServerHelper, httpResponse: HttpResponseUtil, notifierController: NotifierController); constructor(httpServerHelper: HttpServerHelper, httpResponse: HttpResponseUtil, notifierController: NotifierController);
/** /**
* If we don't have anything to send, it's ok to not send anything back * If we don't have anything to send, it's ok to not send anything back
@ -16,7 +16,7 @@ export declare class NotifierCallbacks {
* until we actually have something to send because otherwise we'd spam the client * until we actually have something to send because otherwise we'd spam the client
* and the client would abort the connection due to spam. * and the client would abort the connection due to spam.
*/ */
sendNotification(sessionID: string, req: any, resp: any, data: any): void; sendNotification(_sessionID: string, req: any, resp: any, _data: any): void;
getNotifier(url: string, info: any, sessionID: string): IGetBodyResponseData<any[]>; getNotifier(url: string, info: any, sessionID: string): IGetBodyResponseData<any[]>;
createNotifierChannel(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<INotifierChannel>; createNotifierChannel(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<INotifierChannel>;
selectProfile(url: string, info: ISelectProfileRequestData, sessionID: string): IGetBodyResponseData<any>; selectProfile(url: string, info: ISelectProfileRequestData, sessionID: string): IGetBodyResponseData<any>;

View File

@ -6,8 +6,8 @@ import { IPresetBuildActionRequestData } from "../models/eft/presetBuild/IPreset
import { WeaponBuild } from "../models/eft/profile/IAkiProfile"; import { WeaponBuild } from "../models/eft/profile/IAkiProfile";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class PresetBuildCallbacks { export declare class PresetBuildCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private presetBuildController; protected presetBuildController: PresetBuildController;
constructor(httpResponse: HttpResponseUtil, presetBuildController: PresetBuildController); constructor(httpResponse: HttpResponseUtil, presetBuildController: PresetBuildController);
getHandbookUserlist(url: string, info: any, sessionID: string): IGetBodyResponseData<WeaponBuild[]>; getHandbookUserlist(url: string, info: any, sessionID: string): IGetBodyResponseData<WeaponBuild[]>;
saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -1,7 +1,7 @@
import { PresetController } from "../controllers/PresetController"; import { PresetController } from "../controllers/PresetController";
import { OnLoad } from "../di/OnLoad"; import { OnLoad } from "../di/OnLoad";
export declare class PresetCallbacks extends OnLoad { export declare class PresetCallbacks extends OnLoad {
private presetController; protected presetController: PresetController;
constructor(presetController: PresetController); constructor(presetController: PresetController);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;

View File

@ -12,9 +12,9 @@ import { IValidateNicknameRequestData } from "../models/eft/profile/IValidateNic
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class ProfileCallbacks { export declare class ProfileCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private timeUtil; protected timeUtil: TimeUtil;
private profileController; protected profileController: ProfileController;
constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, profileController: ProfileController); constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, profileController: ProfileController);
createProfile(url: string, info: IProfileCreateRequestData, sessionID: string): IGetBodyResponseData<any>; createProfile(url: string, info: IProfileCreateRequestData, sessionID: string): IGetBodyResponseData<any>;
getProfileData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>; getProfileData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;

View File

@ -13,9 +13,9 @@ import { IListQuestsRequestData } from "../models/eft/quests/IListQuestsRequestD
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest"; import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class QuestCallbacks { export declare class QuestCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private questController; protected questController: QuestController;
private repeatableQuestController; protected repeatableQuestController: RepeatableQuestController;
constructor(httpResponse: HttpResponseUtil, questController: QuestController, repeatableQuestController: RepeatableQuestController); constructor(httpResponse: HttpResponseUtil, questController: QuestController, repeatableQuestController: RepeatableQuestController);
changeRepeatableQuest(pmcData: IPmcData, body: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse; changeRepeatableQuest(pmcData: IPmcData, body: IRepeatableQuestChangeRequest, sessionID: string): IItemEventRouterResponse;
acceptQuest(pmcData: IPmcData, body: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; acceptQuest(pmcData: IPmcData, body: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -3,6 +3,7 @@ import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData"; import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
import { IPmcData } from "../models/eft/common/IPmcData"; import { IPmcData } from "../models/eft/common/IPmcData";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { INullResponseData } from "../models/eft/httpResponse/INullResponseData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IAddOfferRequestData } from "../models/eft/ragfair/IAddOfferRequestData"; import { IAddOfferRequestData } from "../models/eft/ragfair/IAddOfferRequestData";
import { IExtendOfferRequestData } from "../models/eft/ragfair/IExtendOfferRequestData"; import { IExtendOfferRequestData } from "../models/eft/ragfair/IExtendOfferRequestData";
@ -10,19 +11,20 @@ import { IGetItemPriceResult } from "../models/eft/ragfair/IGetItemPriceResult";
import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPriceRequestData"; import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPriceRequestData";
import { IRemoveOfferRequestData } from "../models/eft/ragfair/IRemoveOfferRequestData"; import { IRemoveOfferRequestData } from "../models/eft/ragfair/IRemoveOfferRequestData";
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData"; import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { RagfairServer } from "../servers/RagfairServer"; import { RagfairServer } from "../servers/RagfairServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
export declare class RagfairCallbacks extends OnLoadOnUpdate { export declare class RagfairCallbacks extends OnLoadOnUpdate {
private httpResponse; protected httpResponse: HttpResponseUtil;
private logger; protected logger: ILogger;
private jsonUtil; protected jsonUtil: JsonUtil;
private ragfairServer; protected ragfairServer: RagfairServer;
private ragfairController; protected ragfairController: RagfairController;
private configServer; protected configServer: ConfigServer;
private ragfairConfig; protected ragfairConfig: IRagfairConfig;
constructor(httpResponse: HttpResponseUtil, logger: ILogger, jsonUtil: JsonUtil, ragfairServer: RagfairServer, ragfairController: RagfairController, configServer: ConfigServer); constructor(httpResponse: HttpResponseUtil, logger: ILogger, jsonUtil: JsonUtil, ragfairServer: RagfairServer, ragfairController: RagfairController, configServer: ConfigServer);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;
@ -33,4 +35,5 @@ export declare class RagfairCallbacks extends OnLoadOnUpdate {
removeOffer(pmcData: IPmcData, info: IRemoveOfferRequestData, sessionID: string): IItemEventRouterResponse; removeOffer(pmcData: IPmcData, info: IRemoveOfferRequestData, sessionID: string): IItemEventRouterResponse;
extendOffer(pmcData: IPmcData, info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse; extendOffer(pmcData: IPmcData, info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse;
onUpdate(timeSinceLastRun: number): boolean; onUpdate(timeSinceLastRun: number): boolean;
sendReport(url: string, info: any, sessionID: string): INullResponseData;
} }

View File

@ -4,7 +4,7 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout
import { IRepairActionDataRequest } from "../models/eft/repair/IRepairActionDataRequest"; import { IRepairActionDataRequest } from "../models/eft/repair/IRepairActionDataRequest";
import { ITraderRepairActionDataRequest } from "../models/eft/repair/ITraderRepairActionDataRequest"; import { ITraderRepairActionDataRequest } from "../models/eft/repair/ITraderRepairActionDataRequest";
export declare class RepairCallbacks { export declare class RepairCallbacks {
private repairController; protected repairController: RepairController;
constructor(repairController: RepairController); constructor(repairController: RepairController);
traderRepair(pmcData: IPmcData, body: ITraderRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; traderRepair(pmcData: IPmcData, body: ITraderRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;
repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;

View File

@ -1,7 +1,7 @@
import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate"; import { OnLoadOnUpdate } from "../di/OnLoadOnUpdate";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
export declare class SaveCallbacks extends OnLoadOnUpdate { export declare class SaveCallbacks extends OnLoadOnUpdate {
private saveServer; protected saveServer: SaveServer;
constructor(saveServer: SaveServer); constructor(saveServer: SaveServer);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;

View File

@ -4,7 +4,7 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout
import { IProcessBaseTradeRequestData } from "../models/eft/trade/IProcessBaseTradeRequestData"; import { IProcessBaseTradeRequestData } from "../models/eft/trade/IProcessBaseTradeRequestData";
import { IProcessRagfairTradeRequestData } from "../models/eft/trade/IProcessRagfairTradeRequestData"; import { IProcessRagfairTradeRequestData } from "../models/eft/trade/IProcessRagfairTradeRequestData";
export declare class TradeCallbacks { export declare class TradeCallbacks {
private tradeController; protected tradeController: TradeController;
constructor(tradeController: TradeController); constructor(tradeController: TradeController);
processTrade(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse; processTrade(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string): IItemEventRouterResponse;
processRagfairTrade(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; processRagfairTrade(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -5,8 +5,8 @@ import { IBarterScheme, ITraderAssort, ITraderBase } from "../models/eft/common/
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class TraderCallbacks extends OnLoadOnUpdate { export declare class TraderCallbacks extends OnLoadOnUpdate {
private httpResponse; protected httpResponse: HttpResponseUtil;
private traderController; protected traderController: TraderController;
constructor(httpResponse: HttpResponseUtil, traderController: TraderController); constructor(httpResponse: HttpResponseUtil, traderController: TraderController);
onLoad(): void; onLoad(): void;
getRoute(): string; getRoute(): string;

View File

@ -3,8 +3,8 @@ import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class WeatherCallbacks { export declare class WeatherCallbacks {
private httpResponse; protected httpResponse: HttpResponseUtil;
private weatherController; protected weatherController: WeatherController;
constructor(httpResponse: HttpResponseUtil, weatherController: WeatherController); constructor(httpResponse: HttpResponseUtil, weatherController: WeatherController);
getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>; getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData<any>;
} }

View File

@ -3,7 +3,7 @@ import { IPmcData } from "../models/eft/common/IPmcData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IWishlistActionData } from "../models/eft/wishlist/IWishlistActionData"; import { IWishlistActionData } from "../models/eft/wishlist/IWishlistActionData";
export declare class WishlistCallbacks { export declare class WishlistCallbacks {
private wishlistController; protected wishlistController: WishlistController;
constructor(wishlistController: WishlistController); constructor(wishlistController: WishlistController);
addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;
removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;

View File

@ -4,17 +4,32 @@ import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequest
import { IBotBase } from "../models/eft/common/tables/IBotBase"; import { IBotBase } from "../models/eft/common/tables/IBotBase";
import { IBotCore } from "../models/eft/common/tables/IBotCore"; import { IBotCore } from "../models/eft/common/tables/IBotCore";
import { Difficulty } from "../models/eft/common/tables/IBotType"; import { Difficulty } from "../models/eft/common/tables/IBotType";
import { IBotConfig } from "../models/spt/config/IBotConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
export declare class BotController { export declare class BotController {
private databaseServer; protected databaseServer: DatabaseServer;
private botGenerator; protected botGenerator: BotGenerator;
private botHelper; protected botHelper: BotHelper;
private configServer; protected configServer: ConfigServer;
private botConfig; protected botConfig: IBotConfig;
constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer); constructor(databaseServer: DatabaseServer, botGenerator: BotGenerator, botHelper: BotHelper, configServer: ConfigServer);
getBotLimit(type: string): number; /**
getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; * Return the number of bot loadout varieties to be generated
* @param type bot Type we want the loadout gen count for
* @returns
*/
getBotPresetGenerationLimit(type: string): number;
getBotCoreDifficulty(): IBotCore;
/**
* Get bot difficulty settings
* adjust PMC settings to ensure they engage the correct bot types
* @param type what bot the server is requesting settings for
* @param difficulty difficulty level server requested settings for
* @returns Difficulty object
*/
getBotDifficulty(type: string, difficulty: string): Difficulty;
protected getPmcDifficultySettings(pmcType: "bear" | "usec", difficulty: string): Difficulty;
generate(info: IGenerateBotsRequestData, playerScav?: boolean): IBotBase[]; generate(info: IGenerateBotsRequestData, playerScav?: boolean): IBotBase[];
getBotCap(): number; getBotCap(): number;
} }

View File

@ -9,14 +9,14 @@ import { ItemEventRouter } from "../routers/ItemEventRouter";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
export declare class CustomizationController { export declare class CustomizationController {
private logger; protected logger: ILogger;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private databaseServer; protected databaseServer: DatabaseServer;
private saveServer; protected saveServer: SaveServer;
private profileHelper; protected profileHelper: ProfileHelper;
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper); constructor(logger: ILogger, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, saveServer: SaveServer, profileHelper: ProfileHelper);
getTraderSuits(traderID: string, sessionID: string): ISuit[]; getTraderSuits(traderID: string, sessionID: string): ISuit[];
wearClothing(pmcData: IPmcData, body: IWearClothingRequestData, sessionID: string): IItemEventRouterResponse; wearClothing(pmcData: IPmcData, body: IWearClothingRequestData, sessionID: string): IItemEventRouterResponse;
buyClothing(pmcData: IPmcData, body: IBuyClothingRequestData, sessionID: string): IItemEventRouterResponse; buyClothing(pmcData: IPmcData, body: IBuyClothingRequestData, sessionID: string): IItemEventRouterResponse;
private getAllTraderSuits; protected getAllTraderSuits(sessionID: string): ISuit[];
} }

View File

@ -3,13 +3,13 @@ import { IGetAllAttachmentsResponse } from "../models/eft/dialog/IGetAllAttachme
import { IGetFriendListDataResponse } from "../models/eft/dialog/IGetFriendListDataResponse"; import { IGetFriendListDataResponse } from "../models/eft/dialog/IGetFriendListDataResponse";
import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData"; import { IGetMailDialogViewResponseData } from "../models/eft/dialog/IGetMailDialogViewResponseData";
import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData"; import { IGetBodyResponseData } from "../models/eft/httpResponse/IGetBodyResponseData";
import { DialogueInfo } from "../models/eft/profile/IAkiProfile"; import { DialogueInfo, Message } from "../models/eft/profile/IAkiProfile";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
export declare class DialogueController { export declare class DialogueController {
private httpResponse; protected httpResponse: HttpResponseUtil;
private saveServer; protected saveServer: SaveServer;
private dialogueHelper; protected dialogueHelper: DialogueHelper;
constructor(httpResponse: HttpResponseUtil, saveServer: SaveServer, dialogueHelper: DialogueHelper); constructor(httpResponse: HttpResponseUtil, saveServer: SaveServer, dialogueHelper: DialogueHelper);
getFriendList(sessionID: string): IGetFriendListDataResponse; getFriendList(sessionID: string): IGetFriendListDataResponse;
generateDialogueList(sessionID: string): IGetBodyResponseData<DialogueInfo[]>; generateDialogueList(sessionID: string): IGetBodyResponseData<DialogueInfo[]>;
@ -19,7 +19,7 @@ export declare class DialogueController {
setDialoguePin(dialogueID: string, shouldPin: boolean, sessionID: string): void; setDialoguePin(dialogueID: string, shouldPin: boolean, sessionID: string): void;
setRead(dialogueIDs: string[], sessionID: string): void; setRead(dialogueIDs: string[], sessionID: string): void;
getAllAttachments(dialogueID: string, sessionID: string): IGetAllAttachmentsResponse; getAllAttachments(dialogueID: string, sessionID: string): IGetAllAttachmentsResponse;
private messagesHaveUncollectedRewards; protected messagesHaveUncollectedRewards(messages: Message[]): boolean;
private removeExpiredItems; protected removeExpiredItems(sessionID: string): void;
update(): void; update(): void;
} }

View File

@ -1,28 +1,33 @@
import { GameHelper } from "../helpers/GameHelper";
import { HttpServerHelper } from "../helpers/HttpServerHelper"; import { HttpServerHelper } from "../helpers/HttpServerHelper";
import { ProfileHelper } from "../helpers/ProfileHelper"; import { ProfileHelper } from "../helpers/ProfileHelper";
import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData"; import { IEmptyRequestData } from "../models/eft/common/IEmptyRequestData";
import { IPmcData } from "../models/eft/common/IPmcData";
import { IPmcDataRepeatableQuest, IRepeatableQuest } from "../models/eft/common/tables/IRepeatableQuests";
import { IGameConfigResponse } from "../models/eft/game/IGameConfigResponse"; import { IGameConfigResponse } from "../models/eft/game/IGameConfigResponse";
import { IAkiProfile } from "../models/eft/profile/IAkiProfile";
import { IHttpConfig } from "../models/spt/config/IHttpConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { Watermark } from "../utils/Watermark"; import { Watermark } from "../utils/Watermark";
export declare class GameController { export declare class GameController {
private logger; protected logger: ILogger;
private watermark; protected watermark: Watermark;
private httpServerHelper; protected httpServerHelper: HttpServerHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private configServer; protected gameHelper: GameHelper;
private httpConfig; protected configServer: ConfigServer;
constructor(logger: ILogger, watermark: Watermark, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, configServer: ConfigServer); protected httpConfig: IHttpConfig;
constructor(logger: ILogger, watermark: Watermark, httpServerHelper: HttpServerHelper, profileHelper: ProfileHelper, gameHelper: GameHelper, configServer: ConfigServer);
gameStart(_url: string, _info: IEmptyRequestData, sessionID: string): void; gameStart(_url: string, _info: IEmptyRequestData, sessionID: string): void;
private addMissingBonusesProperty; protected addMissingBonusesProperty(pmcProfile: IPmcData): void;
private addMissingRepeatableQuestsProperty; protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void;
private addMissingWeaponRepairSkill; protected addMissingWeaponRepairSkill(pmcProfile: IPmcData): void;
private addMissingAkiVersionTagToProfile; protected addMissingAkiVersionTagToProfile(fullProfile: IAkiProfile): void;
private addMissingArmorRepairSkill; protected addMissingArmorRepairSkill(pmcProfile: IPmcData): void;
private fixNullTraderSalesSums; protected fixNullTraderSalesSums(pmcProfile: IPmcData): void;
private removeDanglingConditionCounters; protected removeDanglingBackendCounters(pmcProfile: IPmcData): void;
private removeDanglingBackendCounters;
getGameConfig(sessionID: string): IGameConfigResponse; getGameConfig(sessionID: string): IGameConfigResponse;
getServer(): any[]; getServer(): any[];
private getActiveRepeatableQuests; protected getActiveRepeatableQuests(repeatableQuests: IPmcDataRepeatableQuest[]): IRepeatableQuest[];
} }

View File

@ -1,8 +1,8 @@
import { HandbookHelper } from "../helpers/HandbookHelper"; import { HandbookHelper } from "../helpers/HandbookHelper";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
export declare class HandbookController { export declare class HandbookController {
private databaseServer; protected databaseServer: DatabaseServer;
private handbookHelper; protected handbookHelper: HandbookHelper;
constructor(databaseServer: DatabaseServer, handbookHelper: HandbookHelper); constructor(databaseServer: DatabaseServer, handbookHelper: HandbookHelper);
load(): void; load(): void;
} }

View File

@ -11,12 +11,12 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
export declare class HealthController { export declare class HealthController {
private logger; protected logger: ILogger;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private itemHelper; protected itemHelper: ItemHelper;
private paymentService; protected paymentService: PaymentService;
private inventoryHelper; protected inventoryHelper: InventoryHelper;
private healthHelper; protected healthHelper: HealthHelper;
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, itemHelper: ItemHelper, paymentService: PaymentService, inventoryHelper: InventoryHelper, healthHelper: HealthHelper); constructor(logger: ILogger, itemEventRouter: ItemEventRouter, itemHelper: ItemHelper, paymentService: PaymentService, inventoryHelper: InventoryHelper, healthHelper: HealthHelper);
saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string): void; saveVitality(pmcData: IPmcData, info: ISyncHealthRequestData, sessionID: string): void;
offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse; offraidHeal(pmcData: IPmcData, body: IOffraidHealRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -3,10 +3,12 @@ import { InventoryHelper } from "../helpers/InventoryHelper";
import { PaymentHelper } from "../helpers/PaymentHelper"; import { PaymentHelper } from "../helpers/PaymentHelper";
import { PresetHelper } from "../helpers/PresetHelper"; import { PresetHelper } from "../helpers/PresetHelper";
import { ProfileHelper } from "../helpers/ProfileHelper"; import { ProfileHelper } from "../helpers/ProfileHelper";
import { IPmcData } from "../models/eft/common/IPmcData"; import { HideoutArea, IPmcData, Product } from "../models/eft/common/IPmcData";
import { HideoutUpgradeCompleteRequestData } from "../models/eft/hideout/HideoutUpgradeCompleteRequestData"; import { HideoutUpgradeCompleteRequestData } from "../models/eft/hideout/HideoutUpgradeCompleteRequestData";
import { IHideoutContinousProductionStartRequestData } from "../models/eft/hideout/IHideoutContinousProductionStartRequestData"; import { IHideoutContinousProductionStartRequestData } from "../models/eft/hideout/IHideoutContinousProductionStartRequestData";
import { IHideoutProduction } from "../models/eft/hideout/IHideoutProduction";
import { IHideoutPutItemInRequestData } from "../models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutPutItemInRequestData } from "../models/eft/hideout/IHideoutPutItemInRequestData";
import { IHideoutScavCase } from "../models/eft/hideout/IHideoutScavCase";
import { IHideoutScavCaseStartRequestData } from "../models/eft/hideout/IHideoutScavCaseStartRequestData"; import { IHideoutScavCaseStartRequestData } from "../models/eft/hideout/IHideoutScavCaseStartRequestData";
import { IHideoutSingleProductionStartRequestData } from "../models/eft/hideout/IHideoutSingleProductionStartRequestData"; import { IHideoutSingleProductionStartRequestData } from "../models/eft/hideout/IHideoutSingleProductionStartRequestData";
import { IHideoutTakeItemOutRequestData } from "../models/eft/hideout/IHideoutTakeItemOutRequestData"; import { IHideoutTakeItemOutRequestData } from "../models/eft/hideout/IHideoutTakeItemOutRequestData";
@ -14,6 +16,7 @@ import { IHideoutTakeProductionRequestData } from "../models/eft/hideout/IHideou
import { IHideoutToggleAreaRequestData } from "../models/eft/hideout/IHideoutToggleAreaRequestData"; import { IHideoutToggleAreaRequestData } from "../models/eft/hideout/IHideoutToggleAreaRequestData";
import { IHideoutUpgradeRequestData } from "../models/eft/hideout/IHideoutUpgradeRequestData"; import { IHideoutUpgradeRequestData } from "../models/eft/hideout/IHideoutUpgradeRequestData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IHideoutConfig } from "../models/spt/config/IHideoutConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
@ -25,32 +28,41 @@ import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { RandomUtil } from "../utils/RandomUtil"; import { RandomUtil } from "../utils/RandomUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class HideoutController { export declare class HideoutController {
private logger; protected logger: ILogger;
private hashUtil; protected hashUtil: HashUtil;
private timeUtil; protected timeUtil: TimeUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private randomUtil; protected randomUtil: RandomUtil;
private inventoryHelper; protected inventoryHelper: InventoryHelper;
private saveServer; protected saveServer: SaveServer;
private playerService; protected playerService: PlayerService;
private presetHelper; protected presetHelper: PresetHelper;
private paymentHelper; protected paymentHelper: PaymentHelper;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private httpResponse; protected httpResponse: HttpResponseUtil;
private profileHelper; protected profileHelper: ProfileHelper;
private hideoutHelper; protected hideoutHelper: HideoutHelper;
private configServer; protected configServer: ConfigServer;
private hideoutConfig; protected hideoutConfig: IHideoutConfig;
constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, itemEventRouter: ItemEventRouter, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, configServer: ConfigServer); constructor(logger: ILogger, hashUtil: HashUtil, timeUtil: TimeUtil, databaseServer: DatabaseServer, randomUtil: RandomUtil, inventoryHelper: InventoryHelper, saveServer: SaveServer, playerService: PlayerService, presetHelper: PresetHelper, paymentHelper: PaymentHelper, itemEventRouter: ItemEventRouter, httpResponse: HttpResponseUtil, profileHelper: ProfileHelper, hideoutHelper: HideoutHelper, configServer: ConfigServer);
upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse; upgrade(pmcData: IPmcData, body: IHideoutUpgradeRequestData, sessionID: string): IItemEventRouterResponse;
upgradeComplete(pmcData: IPmcData, body: HideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse; upgradeComplete(pmcData: IPmcData, body: HideoutUpgradeCompleteRequestData, sessionID: string): IItemEventRouterResponse;
putItemsInAreaSlots(pmcData: IPmcData, body: IHideoutPutItemInRequestData, sessionID: string): IItemEventRouterResponse; putItemsInAreaSlots(pmcData: IPmcData, body: IHideoutPutItemInRequestData, sessionID: string): IItemEventRouterResponse;
takeItemsFromAreaSlots(pmcData: IPmcData, body: IHideoutTakeItemOutRequestData, sessionID: string): IItemEventRouterResponse; takeItemsFromAreaSlots(pmcData: IPmcData, body: IHideoutTakeItemOutRequestData, sessionID: string): IItemEventRouterResponse;
protected removeItemFromGenerator(sessionID: string, pmcData: IPmcData, body: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse;
toggleArea(pmcData: IPmcData, body: IHideoutToggleAreaRequestData, sessionID: string): IItemEventRouterResponse; toggleArea(pmcData: IPmcData, body: IHideoutToggleAreaRequestData, sessionID: string): IItemEventRouterResponse;
singleProductionStart(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData, sessionID: string): IItemEventRouterResponse; singleProductionStart(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
scavCaseProductionStart(pmcData: IPmcData, body: IHideoutScavCaseStartRequestData, sessionID: string): IItemEventRouterResponse; scavCaseProductionStart(pmcData: IPmcData, body: IHideoutScavCaseStartRequestData, sessionID: string): IItemEventRouterResponse;
protected getRandomisedItemRarityCounter(recipe: IHideoutScavCase): {
[x: string]: number;
};
protected getRandomisedScavRewards(rarityItemCounter: {
[x: string]: number;
}): Product[];
continuousProductionStart(pmcData: IPmcData, body: IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse; continuousProductionStart(pmcData: IPmcData, body: IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
takeProduction(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse; takeProduction(pmcData: IPmcData, body: IHideoutTakeProductionRequestData, sessionID: string): IItemEventRouterResponse;
protected handleRecipie(sessionID: string, recipe: IHideoutProduction, pmcData: IPmcData, body: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse;
protected handleScavCase(sessionID: string, pmcData: IPmcData, body: IHideoutTakeProductionRequestData, output: IItemEventRouterResponse): IItemEventRouterResponse;
registerProduction(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData | IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse; registerProduction(pmcData: IPmcData, body: IHideoutSingleProductionStartRequestData | IHideoutContinousProductionStartRequestData, sessionID: string): IItemEventRouterResponse;
update(): void; update(): void;
} }

View File

@ -6,24 +6,25 @@ import { QuestHelper } from "../helpers/QuestHelper";
import { TraderHelper } from "../helpers/TraderHelper"; import { TraderHelper } from "../helpers/TraderHelper";
import { IRegisterPlayerRequestData } from "../models/eft/inRaid/IRegisterPlayerRequestData"; import { IRegisterPlayerRequestData } from "../models/eft/inRaid/IRegisterPlayerRequestData";
import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData"; import { ISaveProgressRequestData } from "../models/eft/inRaid/ISaveProgressRequestData";
import { IInRaidConfig } from "../models/spt/config/IInRaidConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { InsuranceService } from "../services/InsuranceService"; import { InsuranceService } from "../services/InsuranceService";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
export declare class InraidController { export declare class InraidController {
private saveServer; protected saveServer: SaveServer;
private jsonUtil; protected jsonUtil: JsonUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private questHelper; protected questHelper: QuestHelper;
private itemHelper; protected itemHelper: ItemHelper;
private extendedProfileHelper; protected extendedProfileHelper: ExtendedProfileHelper;
private healthHelper; protected healthHelper: HealthHelper;
private traderHelper; protected traderHelper: TraderHelper;
private insuranceService; protected insuranceService: InsuranceService;
private inRaidHelper; protected inRaidHelper: InRaidHelper;
private configServer; protected configServer: ConfigServer;
private inraidConfig; protected inraidConfig: IInRaidConfig;
constructor(saveServer: SaveServer, jsonUtil: JsonUtil, databaseServer: DatabaseServer, questHelper: QuestHelper, itemHelper: ItemHelper, extendedProfileHelper: ExtendedProfileHelper, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, configServer: ConfigServer); constructor(saveServer: SaveServer, jsonUtil: JsonUtil, databaseServer: DatabaseServer, questHelper: QuestHelper, itemHelper: ItemHelper, extendedProfileHelper: ExtendedProfileHelper, healthHelper: HealthHelper, traderHelper: TraderHelper, insuranceService: InsuranceService, inRaidHelper: InRaidHelper, configServer: ConfigServer);
addPlayer(sessionID: string, info: IRegisterPlayerRequestData): void; addPlayer(sessionID: string, info: IRegisterPlayerRequestData): void;
saveProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; saveProgress(offraidData: ISaveProgressRequestData, sessionID: string): void;

View File

@ -5,6 +5,7 @@ import { IPmcData } from "../models/eft/common/IPmcData";
import { IGetInsuranceCostRequestData } from "../models/eft/insurance/IGetInsuranceCostRequestData"; import { IGetInsuranceCostRequestData } from "../models/eft/insurance/IGetInsuranceCostRequestData";
import { IInsureRequestData } from "../models/eft/insurance/IInsureRequestData"; import { IInsureRequestData } from "../models/eft/insurance/IInsureRequestData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IInsuranceConfig } from "../models/spt/config/IInsuranceConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
@ -15,19 +16,19 @@ import { PaymentService } from "../services/PaymentService";
import { RandomUtil } from "../utils/RandomUtil"; import { RandomUtil } from "../utils/RandomUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class InsuranceController { export declare class InsuranceController {
private logger; protected logger: ILogger;
private randomUtil; protected randomUtil: RandomUtil;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private timeUtil; protected timeUtil: TimeUtil;
private saveServer; protected saveServer: SaveServer;
private databaseServer; protected databaseServer: DatabaseServer;
private itemHelper; protected itemHelper: ItemHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private dialogueHelper; protected dialogueHelper: DialogueHelper;
private paymentService; protected paymentService: PaymentService;
private insuranceService; protected insuranceService: InsuranceService;
private configServer; protected configServer: ConfigServer;
private insuranceConfig; protected insuranceConfig: IInsuranceConfig;
constructor(logger: ILogger, randomUtil: RandomUtil, itemEventRouter: ItemEventRouter, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, paymentService: PaymentService, // TODO: delay required constructor(logger: ILogger, randomUtil: RandomUtil, itemEventRouter: ItemEventRouter, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, profileHelper: ProfileHelper, dialogueHelper: DialogueHelper, paymentService: PaymentService, // TODO: delay required
insuranceService: InsuranceService, configServer: ConfigServer); insuranceService: InsuranceService, configServer: ConfigServer);
processReturn(): void; processReturn(): void;

View File

@ -27,15 +27,15 @@ import { DatabaseServer } from "../servers/DatabaseServer";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
export declare class InventoryController { export declare class InventoryController {
private logger; protected logger: ILogger;
private hashUtil; protected hashUtil: HashUtil;
private jsonUtil; protected jsonUtil: JsonUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private presetHelper; protected presetHelper: PresetHelper;
private inventoryHelper; protected inventoryHelper: InventoryHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private paymentHelper; protected paymentHelper: PaymentHelper;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, itemEventRouter: ItemEventRouter); constructor(logger: ILogger, hashUtil: HashUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, presetHelper: PresetHelper, inventoryHelper: InventoryHelper, profileHelper: ProfileHelper, paymentHelper: PaymentHelper, itemEventRouter: ItemEventRouter);
/** /**
* Move Item * Move Item

View File

@ -3,23 +3,24 @@ import { IChangeRequestData } from "../models/eft/launcher/IChangeRequestData";
import { ILoginRequestData } from "../models/eft/launcher/ILoginRequestData"; import { ILoginRequestData } from "../models/eft/launcher/ILoginRequestData";
import { IRegisterData } from "../models/eft/launcher/IRegisterData"; import { IRegisterData } from "../models/eft/launcher/IRegisterData";
import { Info } from "../models/eft/profile/IAkiProfile"; import { Info } from "../models/eft/profile/IAkiProfile";
import { ICoreConfig } from "../models/spt/config/ICoreConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
export declare class LauncherController { export declare class LauncherController {
private hashUtil; protected hashUtil: HashUtil;
private saveServer; protected saveServer: SaveServer;
private httpServerHelper; protected httpServerHelper: HttpServerHelper;
private databaseServer; protected databaseServer: DatabaseServer;
private configServer; protected configServer: ConfigServer;
private coreConfig; protected coreConfig: ICoreConfig;
constructor(hashUtil: HashUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, databaseServer: DatabaseServer, configServer: ConfigServer); constructor(hashUtil: HashUtil, saveServer: SaveServer, httpServerHelper: HttpServerHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
connect(): any; connect(): any;
find(sessionIdKey: string): Info; find(sessionIdKey: string): Info;
login(info: ILoginRequestData): string; login(info: ILoginRequestData): string;
register(info: IRegisterData): string; register(info: IRegisterData): string;
private createAccount; protected createAccount(info: IRegisterData): string;
changeUsername(info: IChangeRequestData): string; changeUsername(info: IChangeRequestData): string;
changePassword(info: IChangeRequestData): string; changePassword(info: IChangeRequestData): string;
wipe(info: IRegisterData): string; wipe(info: IRegisterData): string;

View File

@ -6,11 +6,11 @@ import { DatabaseServer } from "../servers/DatabaseServer";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class LocationController { export declare class LocationController {
private jsonUtil; protected jsonUtil: JsonUtil;
private logger; protected logger: ILogger;
private locationGenerator; protected locationGenerator: LocationGenerator;
private databaseServer; protected databaseServer: DatabaseServer;
private timeUtil; protected timeUtil: TimeUtil;
constructor(jsonUtil: JsonUtil, logger: ILogger, locationGenerator: LocationGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil); constructor(jsonUtil: JsonUtil, logger: ILogger, locationGenerator: LocationGenerator, databaseServer: DatabaseServer, timeUtil: TimeUtil);
get(location: string): ILocationBase; get(location: string): ILocationBase;
generate(name: string): ILocationBase; generate(name: string): ILocationBase;

View File

@ -4,21 +4,23 @@ import { IPmcData } from "../models/eft/common/IPmcData";
import { IEndOfflineRaidRequestData } from "../models/eft/match/IEndOfflineRaidRequestData"; import { IEndOfflineRaidRequestData } from "../models/eft/match/IEndOfflineRaidRequestData";
import { IGetProfileRequestData } from "../models/eft/match/IGetProfileRequestData"; import { IGetProfileRequestData } from "../models/eft/match/IGetProfileRequestData";
import { IStartOfflineRaidRequestData } from "../models/eft/match/IStartOffineRaidRequestData"; import { IStartOfflineRaidRequestData } from "../models/eft/match/IStartOffineRaidRequestData";
import { IInRaidConfig } from "../models/spt/config/IInRaidConfig";
import { IMatchConfig } from "../models/spt/config/IMatchConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { MatchLocationService } from "../services/MatchLocationService"; import { MatchLocationService } from "../services/MatchLocationService";
export declare class MatchController { export declare class MatchController {
private saveServer; protected saveServer: SaveServer;
private profileHelper; protected profileHelper: ProfileHelper;
private matchLocationService; protected matchLocationService: MatchLocationService;
private traderHelper; protected traderHelper: TraderHelper;
private configServer; protected configServer: ConfigServer;
private matchConfig; protected matchConfig: IMatchConfig;
private inraidConfig; protected inraidConfig: IInRaidConfig;
constructor(saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, configServer: ConfigServer); constructor(saveServer: SaveServer, profileHelper: ProfileHelper, matchLocationService: MatchLocationService, traderHelper: TraderHelper, configServer: ConfigServer);
getEnabled(): boolean; getEnabled(): boolean;
getProfile(info: IGetProfileRequestData): IPmcData[]; getProfile(info: IGetProfileRequestData): IPmcData[];
private getMatch; protected getMatch(location: any): any;
createGroup(sessionID: string, info: any): any; createGroup(sessionID: string, info: any): any;
deleteGroup(info: any): void; deleteGroup(info: any): void;
joinMatch(info: any, sessionID: string): any[]; joinMatch(info: any, sessionID: string): any[];

View File

@ -3,7 +3,7 @@ import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRout
import { INoteActionData } from "../models/eft/notes/INoteActionData"; import { INoteActionData } from "../models/eft/notes/INoteActionData";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
declare class NoteController { declare class NoteController {
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
constructor(itemEventRouter: ItemEventRouter); constructor(itemEventRouter: ItemEventRouter);
addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; addNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;
editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse; editNote(pmcData: IPmcData, body: INoteActionData, sessionID: string): IItemEventRouterResponse;

View File

@ -3,11 +3,11 @@ import { NotificationService } from "../services/NotificationService";
import { INotifierChannel } from "../models/eft/notifier/INotifier"; import { INotifierChannel } from "../models/eft/notifier/INotifier";
import { HttpServerHelper } from "../helpers/HttpServerHelper"; import { HttpServerHelper } from "../helpers/HttpServerHelper";
export declare class NotifierController { export declare class NotifierController {
private notifierHelper; protected notifierHelper: NotifierHelper;
private httpServerHelper; protected httpServerHelper: HttpServerHelper;
private notificationService; protected notificationService: NotificationService;
private pollInterval; protected pollInterval: number;
private timeout; protected timeout: number;
constructor(notifierHelper: NotifierHelper, httpServerHelper: HttpServerHelper, notificationService: NotificationService); constructor(notifierHelper: NotifierHelper, httpServerHelper: HttpServerHelper, notificationService: NotificationService);
/** /**
* Resolve an array of session notifications. * Resolve an array of session notifications.

View File

@ -7,10 +7,10 @@ import { ItemEventRouter } from "../routers/ItemEventRouter";
import { SaveServer } from "../servers/SaveServer"; import { SaveServer } from "../servers/SaveServer";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
export declare class PresetBuildController { export declare class PresetBuildController {
private hashUtil; protected hashUtil: HashUtil;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private itemHelper; protected itemHelper: ItemHelper;
private saveServer; protected saveServer: SaveServer;
constructor(hashUtil: HashUtil, itemEventRouter: ItemEventRouter, itemHelper: ItemHelper, saveServer: SaveServer); constructor(hashUtil: HashUtil, itemEventRouter: ItemEventRouter, itemHelper: ItemHelper, saveServer: SaveServer);
getUserBuilds(sessionID: string): WeaponBuild[]; getUserBuilds(sessionID: string): WeaponBuild[];
saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse; saveBuild(pmcData: IPmcData, body: IPresetBuildActionRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -1,8 +1,8 @@
import { PresetHelper } from "../helpers/PresetHelper"; import { PresetHelper } from "../helpers/PresetHelper";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
export declare class PresetController { export declare class PresetController {
private presetHelper; protected presetHelper: PresetHelper;
private databaseServer; protected databaseServer: DatabaseServer;
constructor(presetHelper: PresetHelper, databaseServer: DatabaseServer); constructor(presetHelper: PresetHelper, databaseServer: DatabaseServer);
initialize(): void; initialize(): void;
} }

View File

@ -14,13 +14,13 @@ import { SaveServer } from "../servers/SaveServer";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class ProfileController { export declare class ProfileController {
private hashUtil; protected hashUtil: HashUtil;
private timeUtil; protected timeUtil: TimeUtil;
private saveServer; protected saveServer: SaveServer;
private databaseServer; protected databaseServer: DatabaseServer;
private itemHelper; protected itemHelper: ItemHelper;
private traderHelper; protected traderHelper: TraderHelper;
private extendedProfileHelper; protected extendedProfileHelper: ExtendedProfileHelper;
constructor(hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, traderHelper: TraderHelper, extendedProfileHelper: ExtendedProfileHelper); constructor(hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, databaseServer: DatabaseServer, itemHelper: ItemHelper, traderHelper: TraderHelper, extendedProfileHelper: ExtendedProfileHelper);
getMiniProfiles(): IMiniProfile[]; getMiniProfiles(): IMiniProfile[];
getMiniProfile(sessionID: string): any; getMiniProfile(sessionID: string): any;

View File

@ -4,11 +4,12 @@ import { ProfileHelper } from "../helpers/ProfileHelper";
import { QuestConditionHelper } from "../helpers/QuestConditionHelper"; import { QuestConditionHelper } from "../helpers/QuestConditionHelper";
import { QuestHelper } from "../helpers/QuestHelper"; import { QuestHelper } from "../helpers/QuestHelper";
import { IPmcData } from "../models/eft/common/IPmcData"; import { IPmcData } from "../models/eft/common/IPmcData";
import { IQuest } from "../models/eft/common/tables/IQuest"; import { IQuest, Reward } from "../models/eft/common/tables/IQuest";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData"; import { IAcceptQuestRequestData } from "../models/eft/quests/IAcceptQuestRequestData";
import { ICompleteQuestRequestData } from "../models/eft/quests/ICompleteQuestRequestData"; import { ICompleteQuestRequestData } from "../models/eft/quests/ICompleteQuestRequestData";
import { IHandoverQuestRequestData } from "../models/eft/quests/IHandoverQuestRequestData"; import { IHandoverQuestRequestData } from "../models/eft/quests/IHandoverQuestRequestData";
import { IQuestConfig } from "../models/spt/config/IQuestConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
@ -16,22 +17,58 @@ import { DatabaseServer } from "../servers/DatabaseServer";
import { PlayerService } from "../services/PlayerService"; import { PlayerService } from "../services/PlayerService";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class QuestController { export declare class QuestController {
private logger; protected logger: ILogger;
private timeUtil; protected timeUtil: TimeUtil;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private databaseServer; protected databaseServer: DatabaseServer;
private itemHelper; protected itemHelper: ItemHelper;
private dialogueHelper; protected dialogueHelper: DialogueHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private questHelper; protected questHelper: QuestHelper;
private questConditionHelper; protected questConditionHelper: QuestConditionHelper;
private playerService; protected playerService: PlayerService;
private configServer; protected configServer: ConfigServer;
private questConfig; protected questConfig: IQuestConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, configServer: ConfigServer); constructor(logger: ILogger, timeUtil: TimeUtil, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, itemHelper: ItemHelper, dialogueHelper: DialogueHelper, profileHelper: ProfileHelper, questHelper: QuestHelper, questConditionHelper: QuestConditionHelper, playerService: PlayerService, configServer: ConfigServer);
/**
* Get all quests visible to player
* Exclude quests with incomplete preconditions (level/loyalty)
* @param sessionID session id
* @returns array of IQuest
*/
getClientQuests(sessionID: string): IQuest[]; getClientQuests(sessionID: string): IQuest[];
acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
acceptRepeatableQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; acceptRepeatableQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse;
/**
* Remove completed quest from profile
* Add newly unlocked quests to profile
* Also recalculate thier level due to exp rewards
* @param pmcData Player profile
* @param body completed quest request
* @param sessionID session id
* @returns ItemEvent response
*/
completeQuest(pmcData: IPmcData, body: ICompleteQuestRequestData, sessionID: string): IItemEventRouterResponse; completeQuest(pmcData: IPmcData, body: ICompleteQuestRequestData, sessionID: string): IItemEventRouterResponse;
/**
* Send a popup to player on completion of a quest
* @param sessionID session id
* @param pmcData player profile
* @param completedQuestId completed quest id
* @param questRewards rewards given to player
*/
protected sendDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: Reward[]): void;
/**
* Returns a list of quests that should be failed when a quest is completed
* @param completedQuestId quest completed id
* @returns array of quests
*/
protected getQuestsFailedByCompletingQuest(completedQuestId: string): IQuest[];
/**
* Fail the quests provided
* @param sessionID session id
* @param pmcData player profile
* @param questsToFail quests to fail
*/
protected failQuests(sessionID: string, pmcData: IPmcData, questsToFail: IQuest[]): void;
handoverQuest(pmcData: IPmcData, body: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse; handoverQuest(pmcData: IPmcData, body: IHandoverQuestRequestData, sessionID: string): IItemEventRouterResponse;
} }

View File

@ -20,6 +20,7 @@ import { IGetMarketPriceRequestData } from "../models/eft/ragfair/IGetMarketPric
import { IGetOffersResult } from "../models/eft/ragfair/IGetOffersResult"; import { IGetOffersResult } from "../models/eft/ragfair/IGetOffersResult";
import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer"; import { IRagfairOffer } from "../models/eft/ragfair/IRagfairOffer";
import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData"; import { ISearchRequestData } from "../models/eft/ragfair/ISearchRequestData";
import { IRagfairConfig } from "../models/spt/config/IRagfairConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
@ -33,30 +34,30 @@ import { RagfairRequiredItemsService } from "../services/RagfairRequiredItemsSer
import { HttpResponseUtil } from "../utils/HttpResponseUtil"; import { HttpResponseUtil } from "../utils/HttpResponseUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class RagfairController { export declare class RagfairController {
private logger; protected logger: ILogger;
private timeUtil; protected timeUtil: TimeUtil;
private httpResponse; protected httpResponse: HttpResponseUtil;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private ragfairServer; protected ragfairServer: RagfairServer;
private ragfairPriceService; protected ragfairPriceService: RagfairPriceService;
private databaseServer; protected databaseServer: DatabaseServer;
private itemHelper; protected itemHelper: ItemHelper;
private saveServer; protected saveServer: SaveServer;
private ragfairSellHelper; protected ragfairSellHelper: RagfairSellHelper;
private ragfairTaxHelper; protected ragfairTaxHelper: RagfairTaxHelper;
private ragfairSortHelper; protected ragfairSortHelper: RagfairSortHelper;
private ragfairOfferHelper; protected ragfairOfferHelper: RagfairOfferHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private paymentService; protected paymentService: PaymentService;
private handbookHelper; protected handbookHelper: HandbookHelper;
private paymentHelper; protected paymentHelper: PaymentHelper;
private inventoryHelper; protected inventoryHelper: InventoryHelper;
private ragfairHelper; protected ragfairHelper: RagfairHelper;
private ragfairOfferService; protected ragfairOfferService: RagfairOfferService;
private ragfairRequiredItemsService; protected ragfairRequiredItemsService: RagfairRequiredItemsService;
private ragfairOfferGenerator; protected ragfairOfferGenerator: RagfairOfferGenerator;
private configServer; protected configServer: ConfigServer;
private ragfairConfig; protected ragfairConfig: IRagfairConfig;
constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseServer: DatabaseServer, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxHelper: RagfairTaxHelper, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, configServer: ConfigServer); constructor(logger: ILogger, timeUtil: TimeUtil, httpResponse: HttpResponseUtil, itemEventRouter: ItemEventRouter, ragfairServer: RagfairServer, ragfairPriceService: RagfairPriceService, databaseServer: DatabaseServer, itemHelper: ItemHelper, saveServer: SaveServer, ragfairSellHelper: RagfairSellHelper, ragfairTaxHelper: RagfairTaxHelper, ragfairSortHelper: RagfairSortHelper, ragfairOfferHelper: RagfairOfferHelper, profileHelper: ProfileHelper, paymentService: PaymentService, handbookHelper: HandbookHelper, paymentHelper: PaymentHelper, inventoryHelper: InventoryHelper, ragfairHelper: RagfairHelper, ragfairOfferService: RagfairOfferService, ragfairRequiredItemsService: RagfairRequiredItemsService, ragfairOfferGenerator: RagfairOfferGenerator, configServer: ConfigServer);
getOffers(sessionID: string, info: ISearchRequestData): IGetOffersResult; getOffers(sessionID: string, info: ISearchRequestData): IGetOffersResult;
update(): void; update(): void;

View File

@ -5,21 +5,23 @@ import { IPmcData } from "../models/eft/common/IPmcData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IRepairActionDataRequest } from "../models/eft/repair/IRepairActionDataRequest"; import { IRepairActionDataRequest } from "../models/eft/repair/IRepairActionDataRequest";
import { ITraderRepairActionDataRequest } from "../models/eft/repair/ITraderRepairActionDataRequest"; import { ITraderRepairActionDataRequest } from "../models/eft/repair/ITraderRepairActionDataRequest";
import { IRepairConfig } from "../models/spt/config/IRepairConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { PaymentService } from "../services/PaymentService"; import { PaymentService } from "../services/PaymentService";
export declare class RepairController { export declare class RepairController {
private logger; protected logger: ILogger;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private databaseServer; protected databaseServer: DatabaseServer;
private questHelper; protected questHelper: QuestHelper;
private traderHelper; protected traderHelper: TraderHelper;
private paymentService; protected paymentService: PaymentService;
private repairHelper; protected repairHelper: RepairHelper;
private configServer; protected configServer: ConfigServer;
private repairConfig; protected repairConfig: IRepairConfig;
protected readonly WEAPON_SKILL_REPAIR_GAIN: number;
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, configServer: ConfigServer); constructor(logger: ILogger, itemEventRouter: ItemEventRouter, databaseServer: DatabaseServer, questHelper: QuestHelper, traderHelper: TraderHelper, paymentService: PaymentService, repairHelper: RepairHelper, configServer: ConfigServer);
/** /**
* Repair with trader * Repair with trader
@ -36,5 +38,5 @@ export declare class RepairController {
* @param sessionID session id * @param sessionID session id
* @returns item event router action * @returns item event router action
*/ */
repair(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse; repairWithKit(pmcData: IPmcData, body: IRepairActionDataRequest, sessionID: string): IItemEventRouterResponse;
} }

View File

@ -1,3 +1,4 @@
import { GameHelper } from "../helpers/GameHelper";
import { ItemHelper } from "../helpers/ItemHelper"; import { ItemHelper } from "../helpers/ItemHelper";
import { PresetHelper } from "../helpers/PresetHelper"; import { PresetHelper } from "../helpers/PresetHelper";
import { ProfileHelper } from "../helpers/ProfileHelper"; import { ProfileHelper } from "../helpers/ProfileHelper";
@ -9,7 +10,7 @@ import { ICompletion, ICompletionAvailableFor, IElimination, IEliminationConditi
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest"; import { IRepeatableQuestChangeRequest } from "../models/eft/quests/IRepeatableQuestChangeRequest";
import { ELocationName } from "../models/enums/ELocationName"; import { ELocationName } from "../models/enums/ELocationName";
import { IRepeatableQuestConfig } from "../models/spt/config/IQuestConfig"; import { IQuestConfig, IRepeatableQuestConfig } from "../models/spt/config/IQuestConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
@ -48,22 +49,23 @@ export interface ITargetLocation {
locations: string[]; locations: string[];
} }
export declare class RepeatableQuestController { export declare class RepeatableQuestController {
private timeUtil; protected timeUtil: TimeUtil;
private logger; protected logger: ILogger;
private randomUtil; protected randomUtil: RandomUtil;
private mathUtil; protected mathUtil: MathUtil;
private jsonUtil; protected jsonUtil: JsonUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private itemHelper; protected itemHelper: ItemHelper;
private presetHelper; protected presetHelper: PresetHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private ragfairServerHelper; protected gameHelper: GameHelper;
private itemEventRouter; protected ragfairServerHelper: RagfairServerHelper;
private paymentService; protected itemEventRouter: ItemEventRouter;
private objectId; protected paymentService: PaymentService;
private configServer; protected objectId: ObjectId;
private questConfig; protected configServer: ConfigServer;
constructor(timeUtil: TimeUtil, logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, ragfairServerHelper: RagfairServerHelper, itemEventRouter: ItemEventRouter, paymentService: PaymentService, objectId: ObjectId, configServer: ConfigServer); protected questConfig: IQuestConfig;
constructor(timeUtil: TimeUtil, logger: ILogger, randomUtil: RandomUtil, mathUtil: MathUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, gameHelper: GameHelper, ragfairServerHelper: RagfairServerHelper, itemEventRouter: ItemEventRouter, paymentService: PaymentService, objectId: ObjectId, configServer: ConfigServer);
/** /**
* This is the method reached by the /client/repeatalbeQuests/activityPeriods endpoint * This is the method reached by the /client/repeatalbeQuests/activityPeriods endpoint
* Returns an array of objects in the format of repeatable quests to the client. * Returns an array of objects in the format of repeatable quests to the client.

View File

@ -9,11 +9,11 @@ import { IProcessBaseTradeRequestData } from "../models/eft/trade/IProcessBaseTr
import { ItemEventRouter } from "../routers/ItemEventRouter"; import { ItemEventRouter } from "../routers/ItemEventRouter";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
declare class TradeController { declare class TradeController {
private logger; protected logger: ILogger;
private itemEventRouter; protected itemEventRouter: ItemEventRouter;
private tradeHelper; protected tradeHelper: TradeHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private ragfairServer; protected ragfairServer: RagfairServer;
constructor(logger: ILogger, itemEventRouter: ItemEventRouter, tradeHelper: TradeHelper, profileHelper: ProfileHelper, ragfairServer: RagfairServer); constructor(logger: ILogger, itemEventRouter: ItemEventRouter, tradeHelper: TradeHelper, profileHelper: ProfileHelper, ragfairServer: RagfairServer);
confirmTrading(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string, foundInRaid?: boolean, upd?: Upd): IItemEventRouterResponse; confirmTrading(pmcData: IPmcData, body: IProcessBaseTradeRequestData, sessionID: string, foundInRaid?: boolean, upd?: Upd): IItemEventRouterResponse;
confirmRagfairTrading(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse; confirmRagfairTrading(pmcData: IPmcData, body: IProcessRagfairTradeRequestData, sessionID: string): IItemEventRouterResponse;

View File

@ -8,14 +8,14 @@ import { TraderAssortService } from "../services/TraderAssortService";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
import { TimeUtil } from "../utils/TimeUtil"; import { TimeUtil } from "../utils/TimeUtil";
export declare class TraderController { export declare class TraderController {
private logger; protected logger: ILogger;
private databaseServer; protected databaseServer: DatabaseServer;
private traderAssortHelper; protected traderAssortHelper: TraderAssortHelper;
private profileHelper; protected profileHelper: ProfileHelper;
private traderHelper; protected traderHelper: TraderHelper;
private timeUtil; protected timeUtil: TimeUtil;
private traderAssortService; protected traderAssortService: TraderAssortService;
private jsonUtil; protected jsonUtil: JsonUtil;
constructor(logger: ILogger, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, timeUtil: TimeUtil, traderAssortService: TraderAssortService, jsonUtil: JsonUtil); constructor(logger: ILogger, databaseServer: DatabaseServer, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, timeUtil: TimeUtil, traderAssortService: TraderAssortService, jsonUtil: JsonUtil);
load(): void; load(): void;
getTrader(traderID: string, sessionID: string): ITraderBase; getTrader(traderID: string, sessionID: string): ITraderBase;

View File

@ -1,10 +1,11 @@
import { WeatherGenerator } from "../generators/WeatherGenerator"; import { WeatherGenerator } from "../generators/WeatherGenerator";
import { IWeatherData } from "../models/eft/weather/IWeatherData"; import { IWeatherData } from "../models/eft/weather/IWeatherData";
import { IWeatherConfig } from "../models/spt/config/IWeatherConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
export declare class WeatherController { export declare class WeatherController {
private weatherGenerator; protected weatherGenerator: WeatherGenerator;
private configServer; protected configServer: ConfigServer;
private weatherConfig; protected weatherConfig: IWeatherConfig;
constructor(weatherGenerator: WeatherGenerator, configServer: ConfigServer); constructor(weatherGenerator: WeatherGenerator, configServer: ConfigServer);
generate(): IWeatherData; generate(): IWeatherData;
} }

View File

@ -3,7 +3,7 @@ import { IPmcData } from "../models/eft/common/IPmcData";
import { IWishlistActionData } from "../models/eft/wishlist/IWishlistActionData"; import { IWishlistActionData } from "../models/eft/wishlist/IWishlistActionData";
import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "../models/eft/itemEvent/IItemEventRouterResponse";
export declare class WishlistController { export declare class WishlistController {
private itemEvenRouter; protected itemEvenRouter: ItemEventRouter;
constructor(itemEvenRouter: ItemEventRouter); constructor(itemEvenRouter: ItemEventRouter);
addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;
removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse;

View File

@ -1,7 +1,10 @@
import { BotHelper } from "../helpers/BotHelper"; import { BotHelper } from "../helpers/BotHelper";
import { GameEventHelper } from "../helpers/GameEventHelper"; import { GameEventHelper } from "../helpers/GameEventHelper";
import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequestData"; import { IGenerateBotsRequestData } from "../models/eft/bot/IGenerateBotsRequestData";
import { Health as PmcHealth } from "../models/eft/common/IPmcData";
import { IBotBase } from "../models/eft/common/tables/IBotBase"; import { IBotBase } from "../models/eft/common/tables/IBotBase";
import { Health, Inventory, Skills } from "../models/eft/common/tables/IBotType";
import { IBotConfig } from "../models/spt/config/IBotConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
@ -9,28 +12,35 @@ import { HashUtil } from "../utils/HashUtil";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
import { RandomUtil } from "../utils/RandomUtil"; import { RandomUtil } from "../utils/RandomUtil";
import { BotInventoryGenerator } from "./BotInventoryGenerator"; import { BotInventoryGenerator } from "./BotInventoryGenerator";
declare namespace BotGenerator {
interface IRandomisedBotLevelResult {
level: number;
exp: number;
}
}
export declare class BotGenerator { export declare class BotGenerator {
private logger; protected logger: ILogger;
private hashUtil; protected hashUtil: HashUtil;
private randomUtil; protected randomUtil: RandomUtil;
private jsonUtil; protected jsonUtil: JsonUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private botInventoryGenerator; protected botInventoryGenerator: BotInventoryGenerator;
private botHelper; protected botHelper: BotHelper;
private gameEventHelper; protected gameEventHelper: GameEventHelper;
private configServer; protected configServer: ConfigServer;
private botConfig; protected botConfig: IBotConfig;
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer); constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, jsonUtil: JsonUtil, databaseServer: DatabaseServer, botInventoryGenerator: BotInventoryGenerator, botHelper: BotHelper, gameEventHelper: GameEventHelper, configServer: ConfigServer);
generate(info: IGenerateBotsRequestData, playerScav?: boolean): IBotBase[]; generate(info: IGenerateBotsRequestData, playerScav?: boolean): IBotBase[];
private generateBot; protected generateBot(bot: IBotBase, role: string, isPmc: boolean): IBotBase;
private generateRandomLevel; protected generateRandomLevel(min: number, max: number): BotGenerator.IRandomisedBotLevelResult;
/** Converts health object to the required format */ /** Converts health object to the required format */
private generateHealth; protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth;
private generateSkills; protected generateSkills(skillsObj: Skills): Skills;
private getPmcRole; protected getPmcRole(pmcSide: string): string;
private removeChristmasItemsFromBotInventory; protected removeChristmasItemsFromBotInventory(nodeInventory: Inventory): void;
private generateId; protected generateId(bot: IBotBase): IBotBase;
private generateInventoryID; protected generateInventoryID(profile: IBotBase): IBotBase;
private getPMCDifficulty; protected getPMCDifficulty(requestedDifficulty: string): string;
private generateDogtag; protected generateDogtag(bot: IBotBase): IBotBase;
} }
export {};

View File

@ -1,5 +1,5 @@
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData"; import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
import { Inventory, Chances, Generation } from "../models/eft/common/tables/IBotType"; import { Inventory, Chances, Generation, Mods } from "../models/eft/common/tables/IBotType";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
import { RandomUtil } from "../utils/RandomUtil"; import { RandomUtil } from "../utils/RandomUtil";
import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper"; import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
@ -9,16 +9,16 @@ import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper"; import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
export declare class BotInventoryGenerator { export declare class BotInventoryGenerator {
private logger; protected logger: ILogger;
private hashUtil; protected hashUtil: HashUtil;
private randomUtil; protected randomUtil: RandomUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private botWeaponGenerator; protected botWeaponGenerator: BotWeaponGenerator;
private botLootGenerator; protected botLootGenerator: BotLootGenerator;
private botGeneratorHelper; protected botGeneratorHelper: BotGeneratorHelper;
private weightedRandomHelper; protected weightedRandomHelper: WeightedRandomHelper;
constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper); constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, botWeaponGenerator: BotWeaponGenerator, botLootGenerator: BotLootGenerator, botGeneratorHelper: BotGeneratorHelper, weightedRandomHelper: WeightedRandomHelper);
generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory;
private generateEquipment; protected generateEquipment(equipmentSlot: string, equipmentPool: Record<string, number>, modPool: Mods, spawnChances: Chances, botRole: string, inventory: PmcInventory): void;
private generateInventoryBase; protected generateInventoryBase(): PmcInventory;
} }

View File

@ -3,25 +3,27 @@ import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
import { HandbookHelper } from "../helpers/HandbookHelper"; import { HandbookHelper } from "../helpers/HandbookHelper";
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData"; import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
import { ItemMinMax, Items } from "../models/eft/common/tables/IBotType"; import { ItemMinMax, Items } from "../models/eft/common/tables/IBotType";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { IBotConfig } from "../models/spt/config/IBotConfig";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
import { RandomUtil } from "../utils/RandomUtil"; import { RandomUtil } from "../utils/RandomUtil";
export declare class BotLootGenerator { export declare class BotLootGenerator {
private jsonUtil; protected jsonUtil: JsonUtil;
private hashUtil; protected hashUtil: HashUtil;
private randomUtil; protected randomUtil: RandomUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private handbookHelper; protected handbookHelper: HandbookHelper;
private botGeneratorHelper; protected botGeneratorHelper: BotGeneratorHelper;
private pmcLootGenerator; protected pmcLootGenerator: PMCLootGenerator;
private configServer; protected configServer: ConfigServer;
private botConfig; protected botConfig: IBotConfig;
constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, pmcLootGenerator: PMCLootGenerator, configServer: ConfigServer); constructor(jsonUtil: JsonUtil, hashUtil: HashUtil, randomUtil: RandomUtil, databaseServer: DatabaseServer, handbookHelper: HandbookHelper, botGeneratorHelper: BotGeneratorHelper, pmcLootGenerator: PMCLootGenerator, configServer: ConfigServer);
generateLoot(lootPool: Items, itemCounts: ItemMinMax, isPmc: boolean, inventory: PmcInventory): void; generateLoot(lootPool: Items, itemCounts: ItemMinMax, isPmc: boolean, inventory: PmcInventory): void;
private getRandomisedCount; protected getRandomisedCount(min: number, max: number, nValue: number): number;
private addLootFromPool; protected addLootFromPool(pool: ITemplateItem[], equipmentSlots: string[], count: number, inventory: PmcInventory, totalValueLimit?: number, useLimits?: boolean): void;
/** Compares two item templates by their price to spawn chance ratio */ /** Compares two item templates by their price to spawn chance ratio */
private compareByValue; protected compareByValue(a: ITemplateItem, b: ITemplateItem): number;
} }

View File

@ -2,43 +2,87 @@ import { BotGeneratorHelper } from "../helpers/BotGeneratorHelper";
import { ItemHelper } from "../helpers/ItemHelper"; import { ItemHelper } from "../helpers/ItemHelper";
import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper"; import { WeightedRandomHelper } from "../helpers/WeightedRandomHelper";
import { Inventory as PmcInventory } from "../models/eft/common/IPmcData"; import { Inventory as PmcInventory } from "../models/eft/common/IPmcData";
import { MinMax, Mods, ModsChances } from "../models/eft/common/tables/IBotType"; import { Inventory, MinMax, ModsChances } from "../models/eft/common/tables/IBotType";
import { Item } from "../models/eft/common/tables/IItem";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { HashUtil } from "../utils/HashUtil"; import { HashUtil } from "../utils/HashUtil";
import { RandomUtil } from "../utils/RandomUtil"; import { RandomUtil } from "../utils/RandomUtil";
export declare class BotWeaponGenerator { export declare class BotWeaponGenerator {
private logger; protected logger: ILogger;
private hashUtil; protected hashUtil: HashUtil;
private databaseServer; protected databaseServer: DatabaseServer;
private itemHelper; protected itemHelper: ItemHelper;
private weightedRandomHelper; protected weightedRandomHelper: WeightedRandomHelper;
private botGeneratorHelper; protected botGeneratorHelper: BotGeneratorHelper;
private randomUtil; protected randomUtil: RandomUtil;
private readonly modMagazineSlotId;
constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil); constructor(logger: ILogger, hashUtil: HashUtil, databaseServer: DatabaseServer, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, botGeneratorHelper: BotGeneratorHelper, randomUtil: RandomUtil);
generateWeapon(equipmentSlot: string, weaponPool: Record<string, number>, modPool: Mods, modChances: ModsChances, magCounts: MinMax, botRole: string, isPmc: boolean, inventory: PmcInventory): void; generateWeapon(equipmentSlot: string, templateInventory: Inventory, modChances: ModsChances, magCounts: MinMax, botRole: string, isPmc: boolean, inventory: PmcInventory): void;
/**
* Get the mods necessary to kit out a weapon to its preset level
* @param weaponTpl weapon to find preset for
* @param equipmentSlot the slot the weapon will be placed in
* @param weaponParentId
* @returns array of weapon mods
*/
protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[];
/** Checks if all required slots are occupied on a weapon and all it's mods */ /** Checks if all required slots are occupied on a weapon and all it's mods */
private isWeaponValid; protected isWeaponValid(itemList: Item[]): boolean;
/** /**
* Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets.
* Additionally, adds extra bullets to SecuredContainer * Additionally, adds extra bullets to SecuredContainer
* * @param weaponMods
* @param {*} weaponMods * @param weaponTemplate
* @param {*} weaponTemplate * @param magCounts
* @param {*} magCounts * @param ammoTpl
* @param {*} ammoTpl * @param inventory
* @returns * @returns
*/ */
private generateExtraMagazines; protected generateExtraMagazines(weaponMods: Item[], weaponTemplate: ITemplateItem, magCounts: MinMax, ammoTpl: string, inventory: PmcInventory): void;
private addBullets;
/** /**
* Finds and returns tpl of ammo that should be used, while making sure it's compatible * Get a randomised count of magazines
* @param magCounts min and max value returned value can be between
* @returns numberical value of magazine count
*/
protected getRandomisedMagazineCount(magCounts: MinMax): number;
/**
* Add ammo to the secure container
* @param stackCount How many stacks of ammo to add
* @param ammoTpl Ammo type to add
* @param stackSize Size of the ammo stack to add
* @param inventory Player inventory
*/
protected addAmmoToSecureContainer(stackCount: number, ammoTpl: string, stackSize: number, inventory: PmcInventory): void;
/**
* Get a weapons magazine tpl from a weapon template
* @param weaponMods mods from a weapon template
* @param weaponTemplate Weapon to get magazine tpl for
* @returns magazine tpl string
*/
protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem): string;
protected addBulletsToVestAndPockets(ammoTpl: string, bulletCount: number, inventory: PmcInventory): void;
/**
* Finds and returns compatible ammo tpl
* *
* @param {*} weaponMods * @param {*} weaponMods
* @param {*} weaponTemplate * @param {*} weaponTemplate
* @returns * @returns compatible ammo tpl
*/ */
private getCompatibleAmmo; protected getCompatibleAmmo(weaponMods: Item[], weaponTemplate: ITemplateItem): string;
/** Fill existing magazines to full, while replacing their contents with specified ammo */ /**
private fillExistingMagazines; * Fill existing magazines to full, while replacing their contents with specified ammo
* @param weaponMods
* @param magazine
* @param ammoTpl
*/
protected fillExistingMagazines(weaponMods: Item[], magazine: Item, ammoTpl: string): void;
/**
* Fill each Camora with a bullet
* @param weaponMods Weapon mods to find and update camora mod(s) from
* @param magazineId magazine id to find and add to
* @param ammoTpl ammo template id to hydate with
*/
protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void;
} }

View File

@ -6,6 +6,8 @@ import { RagfairServerHelper } from "../helpers/RagfairServerHelper";
import { ILooseLoot, SpawnpointTemplate } from "../models/eft/common/ILooseLoot"; import { ILooseLoot, SpawnpointTemplate } from "../models/eft/common/ILooseLoot";
import { Item } from "../models/eft/common/tables/IItem"; import { Item } from "../models/eft/common/tables/IItem";
import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "../models/eft/common/tables/ILootBase"; import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "../models/eft/common/tables/ILootBase";
import { ITemplateItem } from "../models/eft/common/tables/ITemplateItem";
import { ILocationConfig } from "../models/spt/config/ILocationConfig";
import { ILogger } from "../models/spt/utils/ILogger"; import { ILogger } from "../models/spt/utils/ILogger";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { JsonUtil } from "../utils/JsonUtil"; import { JsonUtil } from "../utils/JsonUtil";
@ -18,27 +20,27 @@ export interface IContainerItem {
height: number; height: number;
} }
export declare class LocationGenerator { export declare class LocationGenerator {
private logger; protected logger: ILogger;
private jsonUtil; protected jsonUtil: JsonUtil;
private objectId; protected objectId: ObjectId;
private randomUtil; protected randomUtil: RandomUtil;
private ragfairServerHelper; protected ragfairServerHelper: RagfairServerHelper;
private itemHelper; protected itemHelper: ItemHelper;
private mathUtil; protected mathUtil: MathUtil;
private gameEventHelper; protected gameEventHelper: GameEventHelper;
private containerHelper; protected containerHelper: ContainerHelper;
private presetHelper; protected presetHelper: PresetHelper;
private configServer; protected configServer: ConfigServer;
private locationConfig; protected locationConfig: ILocationConfig;
constructor(logger: ILogger, jsonUtil: JsonUtil, objectId: ObjectId, randomUtil: RandomUtil, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, mathUtil: MathUtil, gameEventHelper: GameEventHelper, containerHelper: ContainerHelper, presetHelper: PresetHelper, configServer: ConfigServer); constructor(logger: ILogger, jsonUtil: JsonUtil, objectId: ObjectId, randomUtil: RandomUtil, ragfairServerHelper: RagfairServerHelper, itemHelper: ItemHelper, mathUtil: MathUtil, gameEventHelper: GameEventHelper, containerHelper: ContainerHelper, presetHelper: PresetHelper, configServer: ConfigServer);
generateContainerLoot(containerIn: IStaticContainerProps, staticForced: IStaticForcedProps[], staticLootDist: Record<string, IStaticLootDetails>, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, locationName: string): IStaticContainerProps; generateContainerLoot(containerIn: IStaticContainerProps, staticForced: IStaticForcedProps[], staticLootDist: Record<string, IStaticLootDetails>, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, locationName: string): IStaticContainerProps;
private getLooseLootMultiplerForLocation; protected getLooseLootMultiplerForLocation(location: string): number;
private getStaticLootMultiplerForLocation; protected getStaticLootMultiplerForLocation(location: string): number;
generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, locationName: string): SpawnpointTemplate[]; generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, locationName: string): SpawnpointTemplate[];
private createItem; protected createItem(tpl: string, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, parentId?: string): IContainerItem;
private getRandomCompatibleCaliberTemplateId; protected getRandomCompatibleCaliberTemplateId(item: ITemplateItem): string;
private getRandomValidCaliber; protected getRandomValidCaliber(magTemplate: ITemplateItem): string;
private drawAmmoTpl; protected drawAmmoTpl(caliber: string, staticAmmoDist: Record<string, IStaticAmmoDetails[]>): string;
private createRandomMagCartridges; protected createRandomMagCartridges(magTemplate: ITemplateItem, parentId: string, staticAmmoDist: Record<string, IStaticAmmoDetails[]>, caliber?: string): Item;
private createCartidges; protected createCartidges(parentId: string, ammoTpl: string, stackCount: number): Item;
} }

View File

@ -1,13 +1,14 @@
import { ItemHelper } from "../helpers/ItemHelper"; import { ItemHelper } from "../helpers/ItemHelper";
import { DatabaseServer } from "../servers/DatabaseServer"; import { DatabaseServer } from "../servers/DatabaseServer";
import { ConfigServer } from "../servers/ConfigServer"; import { ConfigServer } from "../servers/ConfigServer";
import { IBotConfig } from "../models/spt/config/IBotConfig";
export declare class PMCLootGenerator { export declare class PMCLootGenerator {
private itemHelper; protected itemHelper: ItemHelper;
private databaseServer; protected databaseServer: DatabaseServer;
private configServer; protected configServer: ConfigServer;
private pocketLootPool; protected pocketLootPool: string[];
private backpackLootPool; protected backpackLootPool: string[];
private botConfig; protected botConfig: IBotConfig;
constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer); constructor(itemHelper: ItemHelper, databaseServer: DatabaseServer, configServer: ConfigServer);
generatePMCPocketLootPool(): string[]; generatePMCPocketLootPool(): string[];
generatePMCBackpackLootPool(): string[]; generatePMCBackpackLootPool(): string[];

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