s2cfgtojson 3.13.0 → 3.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/enums.mts +2 -0
  2. package/package.json +1 -1
  3. package/types.mts +79 -152
package/enums.mts CHANGED
@@ -1,3 +1,5 @@
1
+ // noinspection JSUnusedGlobalSymbols
2
+
1
3
  export type EAIConstraintType = `EAIConstraintType::${"PrepareForEmission"}`;
2
4
 
3
5
  export type EAIMovementPose = `EAIMovementPose::${"Stand"}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "s2cfgtojson",
3
- "version": "3.13.0",
3
+ "version": "3.14.0",
4
4
  "description": "Converts Stalker 2 Cfg file into POJOs",
5
5
  "keywords": [
6
6
  "stalker",
package/types.mts CHANGED
@@ -108,6 +108,7 @@ import {
108
108
  ESaveType,
109
109
  EModifyAbilitySequenceQuestNodeMode,
110
110
  EHealingType,
111
+ ELairType,
111
112
  } from "./enums.mts";
112
113
 
113
114
  import { Struct } from "./Struct.mjs";
@@ -396,9 +397,7 @@ export type ALifeDirectorScenarioPrototype = GetStructType<{
396
397
  ScenarioGroups: {
397
398
  [key: string]: {
398
399
  SID: string;
399
- ScenarioSIDs: {
400
- [key: string]: { ScenarioWeight: number };
401
- };
400
+ ScenarioSIDs: { [key: string]: { ScenarioWeight: number } };
402
401
  SpawnDelayMin: number;
403
402
  SpawnDelayMax: number;
404
403
  PostSpawnDirectorTimeoutMin: number;
@@ -468,7 +467,7 @@ interface IDialogPrototype {
468
467
  WithEquipped: boolean;
469
468
  GlobalVariablePrototypeSID: string;
470
469
  ChangeValueMode: EChangeValueMode;
471
- VariableValue: number;
470
+ VariableValue: any;
472
471
  ConsumablePrototypeSID: Param;
473
472
  }[];
474
473
  DialogMemberName: string;
@@ -478,10 +477,7 @@ interface IDialogPrototype {
478
477
  TargetLocation: string;
479
478
  SelfLocation: string;
480
479
  RotationTime: number;
481
- Actions: {
482
- DialogAction: EDialogAction;
483
- DialogActionParam: Param;
484
- }[];
480
+ Actions: { DialogAction: EDialogAction; DialogActionParam: Param }[];
485
481
  }
486
482
 
487
483
  export type DialogPrototype = GetStructType<IDialogPrototype>;
@@ -661,6 +657,7 @@ export type Gamepass_ItemGenerator = GetStructType<{
661
657
  SID: string;
662
658
  ItemGenerator: ItemGenerator[];
663
659
  }>;
660
+
664
661
  export type _QuestReward = GetStructType<{
665
662
  SID: string;
666
663
  MoneyGenerator: { MinCount: number; MaxCount: number };
@@ -1379,10 +1376,7 @@ export type QuestNodePrototype = GetStructType<{
1379
1376
  BrokenGameDataFilter: EBrokenGameDataFilter;
1380
1377
  Launchers: {
1381
1378
  Excluding: boolean;
1382
- Connections: {
1383
- SID: string;
1384
- Name: string;
1385
- }[];
1379
+ Connections: { SID: string; Name: string }[];
1386
1380
  }[];
1387
1381
  ExcludeAllNodesInContainer: boolean;
1388
1382
  TargetQuestGuid: string;
@@ -1482,7 +1476,7 @@ export type QuestNodePrototype = GetStructType<{
1482
1476
  PinWeights: number[];
1483
1477
  GlobalVariablePrototypeSID: string;
1484
1478
  ChangeValueMode: EChangeValueMode;
1485
- VariableValue: boolean;
1479
+ VariableValue: any;
1486
1480
  AIThreatState: number;
1487
1481
  Activate: boolean;
1488
1482
  ForceDespawn: boolean;
@@ -1859,7 +1853,7 @@ interface IArtifactPrototype extends IItemPrototype {
1859
1853
  MaxCharge: number;
1860
1854
  ChargeThreshold: number;
1861
1855
  ChargingSpeed: number;
1862
- bUseCharge: boolean; // defines whether damage deflection should be constant or proportional to current artifact charge level;
1856
+ bUseCharge: boolean;
1863
1857
  AnomalyDamageDeflections: {
1864
1858
  AnomalyType: EAnomalyType;
1865
1859
  ChargeQuantity: number;
@@ -1884,12 +1878,8 @@ interface IArmorPrototype extends IItemPrototype {
1884
1878
  Protection: Protection;
1885
1879
  ProtectionNPC: Protection;
1886
1880
  UpgradePrototypeSIDs: string[];
1887
- MeshGenerator: {
1888
- MeshGeneratorPrototypeSID: string;
1889
- }[];
1890
- NpcMeshGenerator: {
1891
- MeshGeneratorPrototypeSID: string;
1892
- }[];
1881
+ MeshGenerator: { MeshGeneratorPrototypeSID: string }[];
1882
+ NpcMeshGenerator: { MeshGeneratorPrototypeSID: string }[];
1893
1883
  VoiceModulatorSID: string;
1894
1884
  PreinstalledUpgrades: string[];
1895
1885
  SectionSettings: {
@@ -1924,32 +1914,20 @@ interface IAttachPrototype extends IItemPrototype {
1924
1914
  MaxAmmo: number;
1925
1915
  BindBulletsToAttach: boolean;
1926
1916
  HasMultipleMeshes: boolean;
1927
- MeshArray: {
1928
- MagazineMeshType: EMagazineMeshType;
1929
- }[];
1917
+ MeshArray: { MagazineMeshType: EMagazineMeshType }[];
1930
1918
  };
1931
1919
  Scope: {
1932
1920
  ZoomCoefficients: number[];
1933
1921
  BaseZoomCoefficientIndex: number;
1934
1922
  ChangeZoomScopeSound: string;
1935
1923
  bOverrideAimingEffects: boolean;
1936
- AimingEffects: {
1937
- PlayerOnlyEffects: string[];
1938
- };
1924
+ AimingEffects: { PlayerOnlyEffects: string[] };
1939
1925
  AimingCutoutRadius: number;
1940
1926
  AimingCutoutThreshold: number;
1941
1927
  };
1942
- WeaponFlashlight: {
1943
- FlashlightPrototypeID: number;
1944
- };
1945
- IronSight: {
1946
- MeshArray: {
1947
- Socket: string;
1948
- }[];
1949
- };
1950
- ShootingAttach: {
1951
- WeaponPrototypeSID: string;
1952
- };
1928
+ WeaponFlashlight: { FlashlightPrototypeID: number };
1929
+ IronSight: { MeshArray: { Socket: string }[] };
1930
+ ShootingAttach: { WeaponPrototypeSID: string };
1953
1931
  Slot: EAttachSlot;
1954
1932
  InventoryActionTime: number;
1955
1933
  bPermanent: boolean;
@@ -1997,9 +1975,7 @@ interface IConsumablePrototype extends IItemPrototype {
1997
1975
  MeshPath: string;
1998
1976
  AnimBlueprint: string;
1999
1977
  AlternativeEffectPrototypeSIDs: string[];
2000
- NegativeEffectPrototypeSIDs: {
2001
- Effect: string;
2002
- }[];
1978
+ NegativeEffectPrototypeSIDs: { Effect: string }[];
2003
1979
  NegativeEffectsChance: number;
2004
1980
  IsQuestItemPrototype: boolean;
2005
1981
  ItemTags: string[];
@@ -2012,12 +1988,12 @@ export type ConsumablePrototype = GetStructType<IConsumablePrototype>;
2012
1988
 
2013
1989
  interface IDetectorPrototype extends IItemPrototype {
2014
1990
  DetectorType: EDetectorType;
2015
- ShowArtifactRadius: number; // artifats become visible in this radius";
1991
+ ShowArtifactRadius: number;
2016
1992
  AnimBlueprint: string;
2017
1993
  DisplayUpdateInterval: number;
2018
1994
  DangerLevelSoundParameter: string;
2019
1995
  MinDetectRadius: number;
2020
- DetectorWorkRadius: number; // detection sound is playing is this radius";
1996
+ DetectorWorkRadius: number;
2021
1997
  DetectorWorkSFX: string;
2022
1998
  DetectorWorkCurve: string;
2023
1999
  ArtifactSignalCurve: string;
@@ -2187,9 +2163,7 @@ export type SpawnActorPrototype = GetStructType<{
2187
2163
  StashPrototypeSID: string;
2188
2164
  ItemGeneratorSettings: {
2189
2165
  PlayerRank: ERank;
2190
- ItemGenerators: {
2191
- PrototypeSID: string;
2192
- }[];
2166
+ ItemGenerators: { PrototypeSID: string }[];
2193
2167
  }[];
2194
2168
  TileOffsetIndex: number;
2195
2169
  ItemSID: string;
@@ -2204,17 +2178,8 @@ export type SpawnActorPrototype = GetStructType<{
2204
2178
  NodeCreationVersion: number;
2205
2179
  DataLayers: string[];
2206
2180
  Rank: ERank;
2207
- SignalReceivers: {
2208
- DestroyReceiver: {
2209
- Guid: string;
2210
- };
2211
- };
2212
- SignalSenders: {
2213
- DestroySender: {
2214
- Guid: string;
2215
- Signals: string[];
2216
- };
2217
- };
2181
+ SignalReceivers: { DestroyReceiver: { Guid: string } };
2182
+ SignalSenders: { DestroySender: { Guid: string; Signals: string[] } };
2218
2183
  DisablePhysics: boolean;
2219
2184
  DisableCollision: boolean;
2220
2185
  DisableDespawn: boolean;
@@ -2239,7 +2204,8 @@ export type SpawnActorPrototype = GetStructType<{
2239
2204
  RespawnMembers: boolean;
2240
2205
  }>;
2241
2206
 
2242
- type Faction = string; // for performance
2207
+ type Faction = string;
2208
+
2243
2209
  export type RelationPrototype = GetStructType<{
2244
2210
  SID: string;
2245
2211
  FactionsInvolvedDistance: number;
@@ -2248,20 +2214,14 @@ export type RelationPrototype = GetStructType<{
2248
2214
  RelationVersion: number;
2249
2215
  RelationLevelRanges: { start: number; end: number }[];
2250
2216
  MinRelationLevelToTrade: ERelationLevel;
2251
- CharacterReactions: ({
2252
- Type: ERelationChangingEvent;
2253
- } & {
2217
+ CharacterReactions: ({ Type: ERelationChangingEvent } & {
2254
2218
  [key in `${Reactions}->${Reactions}`]: number;
2255
2219
  })[];
2256
- FactionReactions: ({
2257
- Type: ERelationChangingEvent;
2258
- } & {
2220
+ FactionReactions: ({ Type: ERelationChangingEvent } & {
2259
2221
  [key in `${Reactions}->${Reactions}`]: number;
2260
2222
  })[];
2261
2223
  Factions: Record<Faction, Faction>;
2262
- Relations: {
2263
- [key in `${Faction}<->${Faction}`]: number;
2264
- };
2224
+ Relations: { [key in `${Faction}<->${Faction}`]: number };
2265
2225
  PositiveReactionsExcludedFactions: `${Faction}<->${Faction}`[];
2266
2226
  NegativeReactionsExcludedFactions: `${Faction}<->${Faction}`[];
2267
2227
  FactionRollbackCooldowns: Record<Faction, number>;
@@ -2441,14 +2401,10 @@ export type DialogPoolPrototype = GetStructType<{
2441
2401
  ShouldLockPersonalRelationship: boolean;
2442
2402
  DataLayerCombination: string;
2443
2403
  DLC: string;
2444
-
2445
2404
  OutputPinNames: string[];
2446
2405
  Launchers: {
2447
2406
  Excluding: boolean;
2448
- Connections: {
2449
- SID: string;
2450
- Name: string;
2451
- }[];
2407
+ Connections: { SID: string; Name: string }[];
2452
2408
  }[];
2453
2409
  LastPhrases: {
2454
2410
  FinishNode: boolean;
@@ -2458,28 +2414,18 @@ export type DialogPoolPrototype = GetStructType<{
2458
2414
  DialogMembers: string[];
2459
2415
  TalkThroughRadio: boolean[];
2460
2416
  DialogObjectLocation: Location[];
2461
-
2462
2417
  Conditions: GetStructType<Condition[][]> & {
2463
2418
  ConditionCheckType: EConditionCheckType;
2464
2419
  };
2465
-
2466
2420
  DialogEventType: EDialogEventType;
2467
2421
  RequiresGroup: boolean;
2468
2422
  RequiredMembersCount: number;
2469
2423
  OptionalMembersCount: number;
2470
2424
  DialogMemberRestrictions: {
2471
- FactionRestrictions: {
2472
- Faction: Faction;
2473
- };
2474
- ExcludedFactions: {
2475
- Faction: Faction;
2476
- };
2477
- ObjPrototypeRestrictions: {
2478
- NPCPrototypeSID: string;
2479
- };
2480
- ExcludedObjPrototypes: {
2481
- NPCPrototypeSID: string;
2482
- };
2425
+ FactionRestrictions: { Faction: Faction };
2426
+ ExcludedFactions: { Faction: Faction };
2427
+ ObjPrototypeRestrictions: { NPCPrototypeSID: string };
2428
+ ExcludedObjPrototypes: { NPCPrototypeSID: string };
2483
2429
  };
2484
2430
  AvailableDialogs: string[];
2485
2431
  }>;
@@ -2490,7 +2436,7 @@ export type Condition = GetStructType<{
2490
2436
  Money: number | Param;
2491
2437
  GlobalVariablePrototypeSID: string;
2492
2438
  ChangeValueMode: EChangeValueMode;
2493
- VariableValue: number;
2439
+ VariableValue: any;
2494
2440
  Rank: ERank;
2495
2441
  Faction: string;
2496
2442
  Relationships: ERelationLevel;
@@ -2521,24 +2467,15 @@ export type Condition = GetStructType<{
2521
2467
  JournalQuestStageSID: string;
2522
2468
  TargetNode: string;
2523
2469
  NodeState: EQuestNodeState;
2524
-
2525
2470
  IncludePartialOverload: boolean;
2526
2471
  ThreatAwareness: EThreatAwareness;
2527
2472
  EmissionPrototypeSID: string;
2528
2473
  }>;
2529
2474
 
2530
- export type Location = GetStructType<{
2531
- X: number;
2532
- Y: number;
2533
- Z: number;
2534
- }>;
2475
+ export type Location = GetStructType<{ X: number; Y: number; Z: number }>;
2535
2476
 
2536
2477
  export type LocationAndRotation = GetStructType<
2537
- Location & {
2538
- Pitch: number;
2539
- Yaw: number;
2540
- Roll: number;
2541
- }
2478
+ Location & { Pitch: number; Yaw: number; Roll: number }
2542
2479
  >;
2543
2480
 
2544
2481
  export type Param = GetStructType<{
@@ -2650,70 +2587,60 @@ export type DialogChainPrototype = GetStructType<{
2650
2587
  CanBeInterrupted: boolean;
2651
2588
  ContinueAfterInterrupt: boolean;
2652
2589
  IsInteractive: boolean;
2653
- DialogMembers: {
2654
- DialogMemberName: string;
2655
- OptionalMember: boolean;
2656
- }[];
2590
+ DialogMembers: { DialogMemberName: string; OptionalMember: boolean }[];
2657
2591
  IsPCDialogMember: boolean;
2658
2592
  }>;
2659
2593
 
2660
- type CommonMeshSlots =
2661
- | "BodyArmor"
2662
- | "Face"
2663
- | "Hea"
2664
- | "Lhi_a"
2665
- | "Rhi_a"
2666
- | "Rhi_b"
2667
- | "Han"
2668
- | "Clo"
2669
- | "Fbe_b"
2670
- | "Fbe_f"
2671
- | "Gla"
2672
- | "Rch"
2673
- | "Lhi_a_c"
2674
- | "Lhi_b"
2675
- | "Rhi_c"
2676
- | "Leg"
2677
- | "Fbe"
2678
- | "Cap"
2679
- | "Rhi"
2680
- | "Lhi"
2681
- | "Hands"
2682
- | "Hea_a_e_f"
2683
- | "Lhi_f"
2684
- | "Rhi_f"
2685
- | "Rhi_g"
2686
- | "Fbe_g"
2687
- | "Fbe_a"
2688
- | "Fbe_d"
2689
- | "Lhi_d"
2690
- | "Rhi_e"
2691
- | "Fbe_c_d_e_f"
2692
- | "Mas";
2693
-
2694
2594
  export type MeshGeneratorPrototype = GetStructType<{
2695
2595
  SID: string;
2696
2596
  ParentMeshGeneratorSID: string;
2697
2597
  Attachments: Record<
2698
- CommonMeshSlots | `${number}`,
2598
+ string | `${number}`,
2699
2599
  { SlotName: string; Attaches: { BodyMeshSID: string; Weight: number }[] }
2700
2600
  >;
2701
- Materials: {
2702
- MaterialGroup: string;
2703
- Variations: Variation[];
2704
- }[];
2705
- CustomData: {
2706
- MaterialGroup: string;
2707
- Variations: Variation[];
2708
- }[];
2709
- Groom: {
2710
- CategoryName: string;
2711
- Variations: Variation[];
2712
- }[];
2601
+ Materials: { MaterialGroup: string; Variations: Variation[] }[];
2602
+ CustomData: { MaterialGroup: string; Variations: Variation[] }[];
2603
+ Groom: { CategoryName: string; Variations: Variation[] }[];
2713
2604
  MergedMesh: string;
2714
2605
  }>;
2715
2606
 
2716
- export type Variation = {
2717
- VariationIndex: number;
2718
- Weight: number;
2719
- };
2607
+ export type Variation = { VariationIndex: number; Weight: number };
2608
+
2609
+ export type LairPrototype = GetStructType<{
2610
+ SID: string;
2611
+ Preset: {
2612
+ InitialInhabitantFaction: string;
2613
+ IsALifePoint: true;
2614
+ PossibleInhabitantFactions: Record<
2615
+ Faction,
2616
+ {
2617
+ Faction: Faction;
2618
+ SpawnSettingsPerPlayerRanks: Record<
2619
+ "Newbie" | "Experienced" | "Veteran" | "Master",
2620
+ {
2621
+ MaxSpawnQuantity: number;
2622
+ InitialSpawnQuantityPercent: number;
2623
+ InitialSpawnQuantityRespawnTimeSeconds: number;
2624
+ MaxSpawnQuantityRespawnTimeSeconds: number;
2625
+ WipeRespawnTimeoutSeconds: number;
2626
+ SpawnSettingsPerArchetypes: Record<
2627
+ string,
2628
+ { MinQuantityPerArchetype: number; SpawnWeight: number }
2629
+ >;
2630
+ }
2631
+ >;
2632
+ }
2633
+ >;
2634
+ LairType: ELairType;
2635
+ RestingLairInstantSpawnScenarioChance: number;
2636
+ RestingLairShortDelayedSpawnScenarioChance: number;
2637
+ RestingLairMinNPCCount: number;
2638
+ RestingLairMaxNPCCount: number;
2639
+ RestingLairShortDelaySpawnMin: number;
2640
+ RestingLairShortDelaySpawnMax: number;
2641
+ RestingLairLongDelaySpawnMin: number;
2642
+ RestingLairLongDelaySpawnMax: number;
2643
+ ALifeLairsSearchRadius: number;
2644
+ GameTimeOfflineToRerollLairData: number;
2645
+ };
2646
+ }>;