s2cfgtojson 3.9.0 → 3.10.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 (4) hide show
  1. package/Struct.mts +3 -0
  2. package/enums.mts +100 -0
  3. package/package.json +1 -1
  4. package/types.mts +406 -542
package/Struct.mts CHANGED
@@ -105,6 +105,9 @@ export class Struct {
105
105
  .pop();
106
106
  this[nextIndex !== undefined ? nextIndex + 1 : 0] = value;
107
107
  } else {
108
+ if (value instanceof Struct) {
109
+ value.__internal__.rawName = String(key);
110
+ }
108
111
  this[key] = value;
109
112
  }
110
113
  return this;
package/enums.mts CHANGED
@@ -1986,3 +1986,103 @@ export type EActionType = `EActionType::${
1986
1986
  | "UseMainItem"
1987
1987
  | "Vault"
1988
1988
  | "ThrowItem"}`;
1989
+
1990
+ export type Reactions =
1991
+ | "Enemy"
1992
+ | "Disaffection"
1993
+ | "Neutral"
1994
+ | "Friend"
1995
+ | "Self";
1996
+
1997
+ export type Factions =
1998
+ | ""
1999
+ | "Humanoid"
2000
+ | "Player"
2001
+ | "Bandits"
2002
+ | "Monolith"
2003
+ | "FreeStalkers"
2004
+ | "Army"
2005
+ | "Duty"
2006
+ | "Freedom"
2007
+ | "Varta"
2008
+ | "Neutrals"
2009
+ | "Militaries"
2010
+ | "Noon"
2011
+ | "Scientists"
2012
+ | "Mercenaries"
2013
+ | "Flame"
2014
+ | "Law"
2015
+ | "Spark"
2016
+ | "Corpus"
2017
+ | "WildBandits"
2018
+ | "GarmataMilitaries"
2019
+ | "SphereMilitaries"
2020
+ | "NeutralBandits"
2021
+ | "VaranBandits"
2022
+ | "RooseveltBandits"
2023
+ | "ShahBandits"
2024
+ | "LokotBandits"
2025
+ | "DepoBandits"
2026
+ | "DepoVictims"
2027
+ | "DocentBandits"
2028
+ | "VaranStashBandits"
2029
+ | "Diggers"
2030
+ | "KosakBandits"
2031
+ | "AzimutVarta"
2032
+ | "UdavMercenaries"
2033
+ | "SafariHunters"
2034
+ | "AzimuthMilitaries"
2035
+ | "SultanBandits"
2036
+ | "ShevchenkoStalkers"
2037
+ | "VartaLesnichestvo"
2038
+ | "SparkLesnichestvo"
2039
+ | "IkarVarta"
2040
+ | "KabanBandits"
2041
+ | "CrazyGuardians"
2042
+ | "ArenaEnemy"
2043
+ | "ArenaFriend"
2044
+ | "DrozdMilitaries"
2045
+ | "EnemyVarta"
2046
+ | "NeutralMSOP"
2047
+ | "YanovCorpus"
2048
+ | "MoleStalkers"
2049
+ | "Mutant"
2050
+ | "Controller"
2051
+ | "Poltergeist"
2052
+ | "Bloodsucker"
2053
+ | "Zombie"
2054
+ | "Chimera"
2055
+ | "Burer"
2056
+ | "Pseudogiant"
2057
+ | "Anamorph"
2058
+ | "Sinister"
2059
+ | "Pseudobear"
2060
+ | "Snork"
2061
+ | "Pseudodog"
2062
+ | "Boar"
2063
+ | "Flesh"
2064
+ | "Beaver"
2065
+ | "Ratwolf"
2066
+ | "Deer"
2067
+ | "Rat"
2068
+ | "Tushkan"
2069
+ | "Stickman"
2070
+ | "Blinddog"
2071
+ | "Bayun"
2072
+ | "CorpusStorm"
2073
+ | "DocileLabMutants"
2074
+ | "VartaSIRCAA"
2075
+ | "YantarZombie"
2076
+ | "FriendlyBlinddog"
2077
+ | "Lessy"
2078
+ | "AlliedMutants"
2079
+ | "NoahLesya"
2080
+ | "KlenMercenaries"
2081
+ | "SIRCAA_Scientist"
2082
+ | "MALACHITE_Scientist"
2083
+ | "NoonFaustians"
2084
+ | "SQ89_SidorMercs"
2085
+ | "ScarBoss_Faction"
2086
+ | "KorshunovBoss_Faction"
2087
+ | "StrelokBoss_Faction"
2088
+ | "FaustBoss_Faction";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "s2cfgtojson",
3
- "version": "3.9.0",
3
+ "version": "3.10.0",
4
4
  "description": "Converts Stalker 2 Cfg file into POJOs",
5
5
  "keywords": [
6
6
  "stalker",
package/types.mts CHANGED
@@ -85,6 +85,21 @@ import {
85
85
  EBrokenGameDataFilter,
86
86
  EDialogAnimationType,
87
87
  ERelationChangingEvent,
88
+ EModifiedCharacterParam,
89
+ EJournalAction,
90
+ EQuestEventType,
91
+ ESpawnNodeExcludeType,
92
+ EGoalPriority,
93
+ EWeaponState,
94
+ EBehaviorType,
95
+ EHideViewType,
96
+ EMovementBehaviour,
97
+ EWeather,
98
+ EApplyRestrictionType,
99
+ EAttractionPointType,
100
+ Reactions,
101
+ EDialogEventType,
102
+ EConditionCheckType,
88
103
  } from "./enums.mts";
89
104
 
90
105
  import { Struct } from "./Struct.mjs";
@@ -410,38 +425,7 @@ interface IDialogPrototype {
410
425
  AnswerTo: number;
411
426
  IncludeBy: string[];
412
427
  ExcludeBy: string[];
413
- Conditions: {
414
- ConditionType: EQuestConditionType;
415
- ConditionComparance: EConditionComparance;
416
- JournalEntity: EJournalEntity;
417
- JournalState: EJournalState;
418
- JournalQuestSID: string;
419
- JournalQuestStageSID: string;
420
- TargetCharacter: string;
421
- ItemPrototypeSID:
422
- | string
423
- | { VariableType: EGlobalVariableType; VariableValue: string };
424
- ItemsCount:
425
- | number
426
- | { VariableType: EGlobalVariableType; VariableValue: number };
427
- WithEquipped: boolean;
428
- WithInventory: boolean;
429
- RandomProbability: number;
430
- Money:
431
- | number
432
- | { VariableType: EGlobalVariableType; VariableValue: number };
433
- LinkedNodePrototypeSID: string;
434
- CompletedNodeLauncherNames: string[];
435
- TargetNode: string;
436
- NodeState: EQuestNodeState;
437
- GlobalVariablePrototypeSID: string;
438
- ChangeValueMode: EChangeValueMode;
439
- VariableValue: number;
440
- Rank: ERank;
441
- Faction: string;
442
- Relationships: ERelationLevel;
443
- Equipment: EMainHandEquipmentType;
444
- }[][];
428
+ Conditions: Condition[][];
445
429
  }[];
446
430
  HasVOInSequence: boolean;
447
431
  VisibleOnFailedCondition: boolean;
@@ -451,41 +435,7 @@ interface IDialogPrototype {
451
435
  Text: string;
452
436
  AnswerText: string;
453
437
  CanBeInterrupted: boolean;
454
- TopicAvailabilityConditions: ({
455
- ConditionType: EQuestConditionType;
456
- TargetNPC: string;
457
- TargetContextualActionPlaceholder: string;
458
- ConditionComparance: EConditionComparance;
459
- Money: {
460
- VariableType: EGlobalVariableType;
461
- VariableValue: number;
462
- };
463
- TargetCharacter: string;
464
- IncludePartialOverload: boolean;
465
- ItemPrototypeSID:
466
- | string
467
- | { VariableType: EGlobalVariableType; VariableValue: string };
468
- ItemsCount:
469
- | number
470
- | { VariableType: EGlobalVariableType; VariableValue: number };
471
- WithEquipped: boolean;
472
- WithInventory: boolean;
473
- ThreatAwareness: EThreatAwareness;
474
- RequiredSquadMembers: ERequiredSquadMembers;
475
- EmissionPrototypeSID: string;
476
- NumericValue: number;
477
- TargetPoint: {
478
- X: number;
479
- Y: number;
480
- Z: number;
481
- };
482
- Rank: ERank;
483
- Faction: string;
484
- Relationships: ERelationLevel;
485
- Trigger: string;
486
- bTriggersByAnybody: boolean;
487
- ReactType: ETriggerReact;
488
- }[] & {
438
+ TopicAvailabilityConditions: (Condition[] & {
489
439
  ConditionType: EQuestConditionType;
490
440
  ConditionComparance: EConditionComparance;
491
441
  EmissionPrototypeSID: string;
@@ -498,59 +448,16 @@ interface IDialogPrototype {
498
448
  SpeechDuration: number;
499
449
  ShowNextDialogOptionsAsAnswers: boolean;
500
450
  WaitForSequenceToFinish: boolean;
501
- Conditions: {
502
- ConditionType: EQuestConditionType;
503
- ConditionComparance: EConditionComparance;
504
- NumericValue: number;
505
- TargetCharacter: string;
506
- ItemPrototypeSID:
507
- | string
508
- | {
509
- VariableType: EGlobalVariableType;
510
- VariableValue: string;
511
- };
512
- WithEquipped: boolean;
513
- WithInventory: boolean;
514
- DialogMemberIndex: number;
515
- ItemsCount: {
516
- VariableType: EGlobalVariableType;
517
- VariableValue: number;
518
- };
519
- TargetNode: string;
520
- NodeState: EQuestNodeState;
521
- TargetNPC: string;
522
- TargetContextualActionPlaceholder: string;
523
- GlobalVariablePrototypeSID: string;
524
- ChangeValueMode: EChangeValueMode;
525
- VariableValue: number;
526
- JournalEntity: EJournalEntity;
527
- JournalState: EJournalState;
528
- JournalQuestSID: string;
529
- Rank: ERank;
530
- Faction: string;
531
- Relationships: ERelationLevel;
532
- LinkedNodePrototypeSID: string;
533
- CompletedNodeLauncherNames: string[];
534
- RequiredSquadMembers: ERequiredSquadMembers;
535
- }[][];
451
+ Conditions: Condition[][];
536
452
  DialogAnswerActions: {
537
453
  DialogAction: EDialogAction;
538
- DialogActionParam: {
539
- VariableType: EGlobalVariableType;
540
- VariableValue: string | number;
541
- };
542
- ItemsCount: {
543
- VariableType: EGlobalVariableType;
544
- VariableValue: number;
545
- };
454
+ DialogActionParam: Param;
455
+ ItemsCount: Param;
546
456
  WithEquipped: boolean;
547
457
  GlobalVariablePrototypeSID: string;
548
458
  ChangeValueMode: EChangeValueMode;
549
459
  VariableValue: number;
550
- ConsumablePrototypeSID: {
551
- VariableType: EGlobalVariableType;
552
- VariableValue: string;
553
- };
460
+ ConsumablePrototypeSID: Param;
554
461
  }[];
555
462
  DialogMemberName: string;
556
463
  AssetsSubPath: string;
@@ -561,10 +468,7 @@ interface IDialogPrototype {
561
468
  RotationTime: number;
562
469
  Actions: {
563
470
  DialogAction: EDialogAction;
564
- DialogActionParam: {
565
- VariableType: EGlobalVariableType;
566
- VariableValue: string | number;
567
- };
471
+ DialogActionParam: Param;
568
472
  }[];
569
473
  }
570
474
 
@@ -737,84 +641,13 @@ export type EffectPrototype = GetStructType<{
737
641
 
738
642
  export type DynamicItemGenerator = GetStructType<{
739
643
  SID: string;
740
- ItemGenerator: {
741
- [key: number]: {
742
- Category: EItemGenerationCategory;
743
- PlayerRank: ERank;
744
- bAllowSameCategoryGeneration: boolean;
745
- ReputationThreshold: number;
746
- RefreshTime: string;
747
- PossibleItems: {
748
- ItemPrototypeSID: string;
749
- Weight: number;
750
- MinDurability: number;
751
- MaxDurability: number;
752
- AmmoMinCount: number;
753
- AmmoMaxCount: number;
754
- ItemGeneratorPrototypeSID: string;
755
- Chance: number;
756
- MinCount: number;
757
- MaxCount: number;
758
- }[];
759
- };
760
- Head: {
761
- Category: EItemGenerationCategory;
762
- PlayerRank: ERank;
763
- bAllowSameCategoryGeneration: boolean;
764
- PossibleItems: {
765
- ItemPrototypeSID: string;
766
- Chance: number;
767
- Weight: number;
768
- }[];
769
- };
770
- BodyArmor: {
771
- Category: EItemGenerationCategory;
772
- PlayerRank: ERank;
773
- bAllowSameCategoryGeneration: boolean;
774
- PossibleItems: { ItemPrototypeSID: string; Weight: number }[];
775
- };
776
- Attach: {
777
- Category: EItemGenerationCategory;
778
- PlayerRank: ERank;
779
- bAllowSameCategoryGeneration: boolean;
780
- PossibleItems: { ItemPrototypeSID: string; Chance: number }[];
781
- };
782
- WeaponPrimary: {
783
- Category: EItemGenerationCategory;
784
- PlayerRank: ERank;
785
- bAllowSameCategoryGeneration: boolean;
786
- PossibleItems: {
787
- ItemPrototypeSID: string;
788
- Chance: number;
789
- MinDurability: number;
790
- MaxDurability: number;
791
- }[];
792
- };
793
- };
644
+ ItemGenerator: ItemGenerator[];
794
645
  RefreshTime: string;
795
646
  }>;
796
647
 
797
648
  export type Gamepass_ItemGenerator = GetStructType<{
798
649
  SID: string;
799
- ItemGenerator: {
800
- Category: EItemGenerationCategory;
801
- Diff: EGameDifficulty;
802
- bAllowSameCategoryGeneration: boolean;
803
- PossibleItems: {
804
- ItemPrototypeSID: string;
805
- Chance: number;
806
- MinCount: number;
807
- MaxCount: number;
808
- ItemGeneratorPrototypeSID: string;
809
- Weight: number;
810
- MinDurability: number;
811
- MaxDurability: number;
812
- AmmoMinCount: number;
813
- AmmoMaxCount: number;
814
- bRequireWeapon: boolean;
815
- }[];
816
- PlayerRank: ERank;
817
- }[];
650
+ ItemGenerator: ItemGenerator[];
818
651
  }>;
819
652
  export type _QuestReward = GetStructType<{
820
653
  SID: string;
@@ -825,21 +658,7 @@ export type _QuestReward = GetStructType<{
825
658
  export type ItemGeneratorPrototype = GetStructType<{
826
659
  SID: string;
827
660
  SpecificRewardSound: EUISound;
828
- ItemGenerator: {
829
- Category: EItemGenerationCategory;
830
- PossibleItems: {
831
- ItemPrototypeSID: string;
832
- Chance: number;
833
- ItemGeneratorPrototypeSID: string;
834
- MinDurability: number;
835
- MaxDurability: number;
836
- MinCount: number;
837
- MaxCount: number;
838
- AmmoMinCount: number;
839
- AmmoMaxCount: number;
840
- }[];
841
- bAllowSameCategoryGeneration: boolean;
842
- }[];
661
+ ItemGenerator: ItemGenerator[];
843
662
  MoneyGenerator: { MinCount: number; MaxCount: number };
844
663
  ID: number;
845
664
  }>;
@@ -959,51 +778,11 @@ export type GeneralNPCObjPrototype = GetStructType<{
959
778
  OneHandedWeaponRelax: { StartDistance: number; Animation: string };
960
779
  TwoHandedWeaponRelax: { StartDistance: number; Animation: string };
961
780
  };
962
- MovementParams: {
963
- WalkSpeed: number;
964
- RunSpeed: number;
965
- CrouchSpeed: number;
966
- LowCrouchSpeed: number;
967
- SprintSpeed: number;
968
- ClimbSpeedCoef: number;
969
- JumpSpeedCoef: number;
970
- LimpSpeedCoef: number;
971
- RunDiagonalBackCoef: number;
972
- WalkDiagonalBackCoef: number;
973
- WalkBackCoef: number;
974
- RunBackCoef: number;
975
- MoveBackCrouchCoef: number;
976
- MoveBackLowCrouchCoef: number;
977
- AirControlCoef: number;
978
- WalkTransitionCoef: number;
979
- BaseTurnRate: number;
980
- BaseLookUpRate: number;
981
- MaxSlowdownValue: number;
982
- StaggerAngle: number;
983
- CanDash: boolean;
984
- MovementSpeedCoef: number;
985
- };
781
+ MovementParams: MovementParams;
986
782
  ReactOnApproachWithWeapon: boolean;
987
783
  FlairSensorPrototypeSID: string;
988
- VitalParams: {
989
- MaxHP: number;
990
- MaxSP: number;
991
- DegenBleeding: number;
992
- DegenRadiation: number;
993
- DegenPsyPoints: number;
994
- DegenSuppressionPoints: number;
995
- RegenHP: number;
996
- RegenHPDelayTimeSeconds: number;
997
- };
998
- Protection: {
999
- Burn: number;
1000
- Shock: number;
1001
- ChemicalBurn: number;
1002
- Radiation: number;
1003
- PSY: number;
1004
- Strike: number;
1005
- Fall: number;
1006
- };
784
+ VitalParams: VitalParams;
785
+ Protection: Protection;
1007
786
  NPCType: ENPCType;
1008
787
  NeedsPresetSID: string;
1009
788
  IgnoreEmission: boolean;
@@ -1035,52 +814,17 @@ export type MutantBase = GetStructType<{
1035
814
  Climb: number;
1036
815
  Jump: number;
1037
816
  };
1038
- VitalParams: {
1039
- MaxHP: number;
1040
- MaxFP: number;
1041
- MaxBleeding: number;
1042
- MaxRadiation: number;
1043
- MaxSleepinessPoints: string;
1044
- MaxHungerPoints: number;
1045
- MaxThirstPoints: number;
1046
- MaxSuppressionPoints: number;
1047
- RegenHungerPoints: number;
1048
- RegenThirstPoints: number;
1049
- DegenBleeding: number;
1050
- DegenRadiation: number;
1051
- RegenSleepinessPoints: number;
1052
- RegenHP: number;
1053
- RegenFP: number;
1054
- };
1055
- MovementParams: {
1056
- WalkSpeed: number;
1057
- RunSpeed: number;
1058
- SprintSpeed: number;
1059
- ClimbSpeedCoef: number;
1060
- JumpSpeedCoef: number;
1061
- AimSpeedCoef: number;
1062
- AirControlCoef: number;
1063
- BaseTurnRate: number;
1064
- BaseLookUpRate: number;
1065
- AimTurnCoef: number;
1066
- AimLookUpCoef: number;
1067
- CrouchSpeed: number;
1068
- LowCrouchSpeed: number;
1069
- RunDiagonalBackCoef: number;
1070
- WalkDiagonalBackCoef: number;
1071
- WalkBackCoef: number;
1072
- RunBackCoef: number;
1073
- MoveBackCrouchCoef: number;
1074
- MoveBackLowCrouchCoef: number;
1075
- };
817
+ VitalParams: VitalParams;
818
+ MovementParams: MovementParams;
1076
819
  AttackParams: {
1077
820
  MeleeDamage: number;
1078
821
  MeleeAttackAcceptanceDistance: number;
1079
822
  MeleeAttackHeight: number;
1080
823
  MeleeAttackRadius: number;
1081
824
  ForceDistance: number;
1082
- MutantAttackParams: {
1083
- JumpAttack: {
825
+ MutantAttackParams: Record<
826
+ string,
827
+ {
1084
828
  MutantAttackType: EMutantAttackType;
1085
829
  DamageSource: EDamageSource;
1086
830
  MinAttackDistance: number;
@@ -1092,20 +836,8 @@ export type MutantBase = GetStructType<{
1092
836
  BleedingChanceIncrement: number;
1093
837
  Cooldown: number;
1094
838
  Effects: { EffectPrototypeSID: string; Chance: number }[];
1095
- };
1096
- ExampleAttack: {
1097
- MutantAttackType: EMutantAttackType;
1098
- DamageSource: EDamageSource;
1099
- MinAttackDistance: number;
1100
- MaxAttackAngle: number;
1101
- AttackRootMotionTravelDistance: number;
1102
- Damage: number;
1103
- ArmorPiercing: number;
1104
- Bleeding: number;
1105
- BleedingChanceIncrement: number;
1106
- Effects: { EffectPrototypeSID: string; Chance: number }[];
1107
- };
1108
- };
839
+ }
840
+ >;
1109
841
  FireDispersionParams: {
1110
842
  Default: number;
1111
843
  DefaultAim: number;
@@ -1115,15 +847,7 @@ export type MutantBase = GetStructType<{
1115
847
  Jump: number;
1116
848
  };
1117
849
  };
1118
- Protection: {
1119
- Burn: number;
1120
- Shock: number;
1121
- ChemicalBurn: number;
1122
- Radiation: number;
1123
- PSY: number;
1124
- Strike: number;
1125
- Fall: number;
1126
- };
850
+ Protection: Protection;
1127
851
  SpawnPhantomParams: {
1128
852
  PhantomBlueprint: string;
1129
853
  PermanentEffects: string[];
@@ -1219,61 +943,8 @@ export type ObjPrototype = GetStructType<{
1219
943
  };
1220
944
  IsZombie: boolean;
1221
945
  ZombieLayingIdleTime: number;
1222
- VitalParams: {
1223
- MaxHP: number;
1224
- MaxSP: number;
1225
- MaxBleeding: number;
1226
- MaxRadiation: number;
1227
- MaxDrunknessPoints: number;
1228
- MaxOverDrunknessPoints: number;
1229
- MaxSleepinessPoints: number;
1230
- MaxHungerPoints: number;
1231
- MaxThirstPoints: number;
1232
- MaxSuppressionPoints: number;
1233
- RegenHungerPoints: number;
1234
- RegenThirstPoints: number;
1235
- DegenBleeding: number;
1236
- DegenRadiation: number;
1237
- DegenPsyPoints: number;
1238
- DegenSuppressionPoints: number;
1239
- DegenDrunknessPoints: number;
1240
- RegenSleepinessPoints: string;
1241
- RegenHP: number;
1242
- RegenHPDelayTimeSeconds: number;
1243
- DegenSuppressionDelayTimeSeconds: number;
1244
- RegenSP: number;
1245
- RegenPoppyFieldSleepiness: number;
1246
- RegenHealthModifier: number;
1247
- StaminaDisableThresholds: {
1248
- Threshold: number;
1249
- RegenerationDelay: number;
1250
- StateTags: EStateTag[];
1251
- }[];
1252
- };
1253
- MovementParams: {
1254
- WalkSpeed: number;
1255
- RunSpeed: number;
1256
- CrouchSpeed: number;
1257
- LowCrouchSpeed: number;
1258
- SprintSpeed: number;
1259
- ClimbSpeedCoef: number;
1260
- JumpSpeedCoef: number;
1261
- LimpSpeedCoef: number;
1262
- RunDiagonalBackCoef: number;
1263
- WalkDiagonalBackCoef: number;
1264
- WalkBackCoef: number;
1265
- RunBackCoef: number;
1266
- MoveBackCrouchCoef: number;
1267
- MoveBackLowCrouchCoef: number;
1268
- AirControlCoef: number;
1269
- WalkTransitionCoef: number;
1270
- BaseTurnRate: number;
1271
- BaseLookUpRate: number;
1272
- MaxSlowdownValue: number;
1273
- StaggerAngle: number;
1274
- CanDash: boolean;
1275
- MovementSpeedCoef: number;
1276
- };
946
+ VitalParams: VitalParams;
947
+ MovementParams: MovementParams;
1277
948
  VaultingParams: {
1278
949
  MaxAngle: number;
1279
950
  MaxTestDistance: number;
@@ -1393,15 +1064,7 @@ export type ObjPrototype = GetStructType<{
1393
1064
  SpaceTraceOffsetModifier: number;
1394
1065
  AvailabilityDelayTimeSeconds: string;
1395
1066
  };
1396
- Protection: {
1397
- Burn: number;
1398
- Shock: number;
1399
- ChemicalBurn: number;
1400
- Radiation: number;
1401
- PSY: number;
1402
- Strike: number;
1403
- Fall: number;
1404
- };
1067
+ Protection: Protection;
1405
1068
  ItemGeneratorPrototypeSID: string;
1406
1069
  Mesh: EObjMesh;
1407
1070
  MeshGeneratorPrototypeSID: string;
@@ -1509,29 +1172,7 @@ export type ObjPrototype = GetStructType<{
1509
1172
  AddedShootingDistanceOnTheGo: number;
1510
1173
  MaxShootingAngle: number;
1511
1174
  };
1512
- ZombieAllowedEquipItems: {
1513
- GunAKU_PP: ERank;
1514
- GunViper_PP: ERank;
1515
- GunObrez_SG: ERank;
1516
- GunAK74_ST: ERank;
1517
- GunM16_ST: ERank;
1518
- GunBucket_PP: ERank;
1519
- GunTOZ_SG: ERank;
1520
- GunG37_ST: ERank;
1521
- GunFora_ST: ERank;
1522
- GunGvintar_ST: ERank;
1523
- GunGrim_ST: ERank;
1524
- GunSPSA_SG: ERank;
1525
- GunIntegral_PP: ERank;
1526
- GunLavina_ST: ERank;
1527
- GunKharod_ST: ERank;
1528
- GunDnipro_ST: ERank;
1529
- GunZubr_PP: ERank;
1530
- GunD12_SG: ERank;
1531
- GunRam2_SG: ERank;
1532
- GunKora_HG: ERank;
1533
- GunThreeLine_SP: ERank;
1534
- };
1175
+ ZombieAllowedEquipItems: Record<string, ERank>;
1535
1176
  };
1536
1177
  PostResurrectionEffects: string[];
1537
1178
  WaterContactInfo: {
@@ -1742,11 +1383,7 @@ export type QuestNodePrototype = GetStructType<{
1742
1383
  DialogChainPrototypeSID: string;
1743
1384
  DialogMembers: string[];
1744
1385
  TalkThroughRadio: boolean[];
1745
- DialogObjectLocation: {
1746
- X: number;
1747
- Y: number;
1748
- Z: number;
1749
- };
1386
+ DialogObjectLocation: Point;
1750
1387
  NPCToStartDialog: number;
1751
1388
  StartForcedDialog: boolean;
1752
1389
  WaitAllDialogEndingsToFinish: boolean;
@@ -1762,19 +1399,7 @@ export type QuestNodePrototype = GetStructType<{
1762
1399
  ChangeValueMode: EChangeValueMode;
1763
1400
  VariableValue: any;
1764
1401
  PinWeights: number[];
1765
- Conditions: {
1766
- ConditionType: EQuestConditionType;
1767
- ConditionComparance: EConditionComparance;
1768
- LinkedNodePrototypeSID: string;
1769
- CompletedNodeLauncherNames: never[];
1770
- TargetNPC: string;
1771
- TargetContextualActionPlaceholder: string;
1772
- TargetCharacter: string;
1773
- Trigger: string;
1774
- bTriggersByAnybody: boolean;
1775
- ReactType: ETriggerReact;
1776
- RequiredSquadMembers: ERequiredSquadMembers;
1777
- }[][];
1402
+ Conditions: Condition[][];
1778
1403
  }>;
1779
1404
 
1780
1405
  export type MeshPrototype = GetStructType<{
@@ -1932,11 +1557,7 @@ interface IArtifactPrototype extends IItemPrototype {
1932
1557
  Blueprint: string;
1933
1558
  ParticleOnImpact: string;
1934
1559
  FakeArtifactHaloVFX: string;
1935
- ViewOffset: {
1936
- X: number;
1937
- Y: number;
1938
- Z: number;
1939
- };
1560
+ ViewOffset: Point;
1940
1561
  LocalizationSID: string;
1941
1562
  DamageToStaminaCoefficient: number;
1942
1563
  DamageToWeightCoefficient: number;
@@ -1976,24 +1597,8 @@ interface IArmorPrototype extends IItemPrototype {
1976
1597
  NoiseCoef: number;
1977
1598
  ArmorSoundType: string;
1978
1599
  StaggerEffectPrototypeSID: string;
1979
- Protection: {
1980
- Strike: number;
1981
- Radiation: number;
1982
- Burn: number;
1983
- Shock: number;
1984
- ChemicalBurn: number;
1985
- PSY: number;
1986
- Fall: number;
1987
- };
1988
- ProtectionNPC: {
1989
- Strike: number;
1990
- Radiation: number;
1991
- Burn: number;
1992
- Shock: number;
1993
- ChemicalBurn: number;
1994
- PSY: number;
1995
- Fall: number;
1996
- };
1600
+ Protection: Protection;
1601
+ ProtectionNPC: Protection;
1997
1602
  UpgradePrototypeSIDs: string[];
1998
1603
  MeshGenerator: {
1999
1604
  MeshGeneratorPrototypeSID: string;
@@ -2123,12 +1728,12 @@ export type ConsumablePrototype = GetStructType<IConsumablePrototype>;
2123
1728
 
2124
1729
  interface IDetectorPrototype extends IItemPrototype {
2125
1730
  DetectorType: EDetectorType;
2126
- ShowArtifactRadius: "250.0 // artifats become visible in this radius";
1731
+ ShowArtifactRadius: number; // artifats become visible in this radius";
2127
1732
  AnimBlueprint: string;
2128
1733
  DisplayUpdateInterval: number;
2129
1734
  DangerLevelSoundParameter: string;
2130
1735
  MinDetectRadius: number;
2131
- DetectorWorkRadius: "10000.0 // detection sound is playing is this radius";
1736
+ DetectorWorkRadius: number; // detection sound is playing is this radius";
2132
1737
  DetectorWorkSFX: string;
2133
1738
  DetectorWorkCurve: string;
2134
1739
  ArtifactSignalCurve: string;
@@ -2343,106 +1948,6 @@ export type SpawnActorPrototype = GetStructType<{
2343
1948
  AllowSpawnOnIsolatedNavMesh: boolean;
2344
1949
  }>;
2345
1950
 
2346
- export type Reactions =
2347
- | "Enemy"
2348
- | "Disaffection"
2349
- | "Neutral"
2350
- | "Friend"
2351
- | "Self";
2352
-
2353
- export type Factions =
2354
- | ""
2355
- | "Humanoid"
2356
- | "Player"
2357
- | "Bandits"
2358
- | "Monolith"
2359
- | "FreeStalkers"
2360
- | "Army"
2361
- | "Duty"
2362
- | "Freedom"
2363
- | "Varta"
2364
- | "Neutrals"
2365
- | "Militaries"
2366
- | "Noon"
2367
- | "Scientists"
2368
- | "Mercenaries"
2369
- | "Flame"
2370
- | "Law"
2371
- | "Spark"
2372
- | "Corpus"
2373
- | "WildBandits"
2374
- | "GarmataMilitaries"
2375
- | "SphereMilitaries"
2376
- | "NeutralBandits"
2377
- | "VaranBandits"
2378
- | "RooseveltBandits"
2379
- | "ShahBandits"
2380
- | "LokotBandits"
2381
- | "DepoBandits"
2382
- | "DepoVictims"
2383
- | "DocentBandits"
2384
- | "VaranStashBandits"
2385
- | "Diggers"
2386
- | "KosakBandits"
2387
- | "AzimutVarta"
2388
- | "UdavMercenaries"
2389
- | "SafariHunters"
2390
- | "AzimuthMilitaries"
2391
- | "SultanBandits"
2392
- | "ShevchenkoStalkers"
2393
- | "VartaLesnichestvo"
2394
- | "SparkLesnichestvo"
2395
- | "IkarVarta"
2396
- | "KabanBandits"
2397
- | "CrazyGuardians"
2398
- | "ArenaEnemy"
2399
- | "ArenaFriend"
2400
- | "DrozdMilitaries"
2401
- | "EnemyVarta"
2402
- | "NeutralMSOP"
2403
- | "YanovCorpus"
2404
- | "MoleStalkers"
2405
- | "Mutant"
2406
- | "Controller"
2407
- | "Poltergeist"
2408
- | "Bloodsucker"
2409
- | "Zombie"
2410
- | "Chimera"
2411
- | "Burer"
2412
- | "Pseudogiant"
2413
- | "Anamorph"
2414
- | "Sinister"
2415
- | "Pseudobear"
2416
- | "Snork"
2417
- | "Pseudodog"
2418
- | "Boar"
2419
- | "Flesh"
2420
- | "Beaver"
2421
- | "Ratwolf"
2422
- | "Deer"
2423
- | "Rat"
2424
- | "Tushkan"
2425
- | "Stickman"
2426
- | "Blinddog"
2427
- | "Bayun"
2428
- | "CorpusStorm"
2429
- | "DocileLabMutants"
2430
- | "VartaSIRCAA"
2431
- | "YantarZombie"
2432
- | "FriendlyBlinddog"
2433
- | "Lessy"
2434
- | "AlliedMutants"
2435
- | "NoahLesya"
2436
- | "KlenMercenaries"
2437
- | "SIRCAA_Scientist"
2438
- | "MALACHITE_Scientist"
2439
- | "NoonFaustians"
2440
- | "SQ89_SidorMercs"
2441
- | "ScarBoss_Faction"
2442
- | "KorshunovBoss_Faction"
2443
- | "StrelokBoss_Faction"
2444
- | "FaustBoss_Faction";
2445
-
2446
1951
  type Faction = string; // for performance
2447
1952
  export type RelationPrototype = GetStructType<{
2448
1953
  SID: string;
@@ -2484,3 +1989,362 @@ export type BarbedWirePrototype = GetStructType<{
2484
1989
  bOverlappable: boolean;
2485
1990
  NegativeEffectPrototypeSIDs: string[];
2486
1991
  }>;
1992
+
1993
+ export type DialogPoolPrototype = GetStructType<{
1994
+ SID: string;
1995
+ NodePrototypeVersion: number;
1996
+ QuestSID: string;
1997
+ NodeType: EQuestNodeType;
1998
+ StartDelay: number;
1999
+ LaunchOnQuestStart: boolean;
2000
+ ExcludeAllNodesInContainer: boolean;
2001
+ TargetQuestGuid: string;
2002
+ TriggerQuestGuid: string;
2003
+ bTriggersByAnybody: boolean;
2004
+ TriggerAction: number;
2005
+ RequiredSquadMembers: ERequiredSquadMembers;
2006
+ ReactType: ETriggerReact;
2007
+ TrackBeforeActive: boolean;
2008
+ ItemSID: string;
2009
+ ItemsCount: number;
2010
+ AddToPlayerStash: boolean;
2011
+ JournalEntity: EJournalEntity;
2012
+ JournalAction: EJournalAction;
2013
+ JournalQuestSID: string;
2014
+ JournalQuestStageSID: string;
2015
+ Markers: string;
2016
+ EventType: EQuestEventType;
2017
+ BrokenGameDataFilter: EBrokenGameDataFilter;
2018
+ Params: {
2019
+ ModifiedCharacterParam: EModifiedCharacterParam;
2020
+ ChangeValueMode: EChangeValueMode;
2021
+ ChangeValue: number;
2022
+ }[];
2023
+ InGameHours: number;
2024
+ InGameMinutes: number;
2025
+ ReplaceInventory: boolean;
2026
+ EquipItems: boolean;
2027
+ ItemGeneratorSID: string;
2028
+ JournalQuestDescriptionIndex: number;
2029
+ SetQuestActive: boolean;
2030
+ IgnoreDamageType: EIgnoreDamageType;
2031
+ SpawnHidden: boolean;
2032
+ SpawnNodeExcludeType: ESpawnNodeExcludeType;
2033
+ Repeatable: boolean;
2034
+ TeleportLocationAndRotation: LocationAndRotation;
2035
+ TeleportType: EGSCTeleportType;
2036
+ ShouldBlendViaFade: boolean;
2037
+ GoalPriority: EGoalPriority;
2038
+ IgnoreRadiationFeilds: boolean;
2039
+ IgnoreAnomalyFields: boolean;
2040
+ IgnoreEmission: boolean;
2041
+ IgnoreCombat: boolean;
2042
+ IgnoreThreat: boolean;
2043
+ ReactOnApproachWithWeapon: boolean;
2044
+ ReactOnNonEnemySounds: boolean;
2045
+ FailureByEmission: boolean;
2046
+ FailureByCombat: boolean;
2047
+ FailureByThreat: boolean;
2048
+ FailureByTargetLost: boolean;
2049
+ FailureByPlayerKill: boolean;
2050
+ FailureByHumanKil: boolean;
2051
+ FailureByMutantKill: boolean;
2052
+ ThreatsReactRange: number;
2053
+ CanBeInterrupted: boolean;
2054
+ WeaponState: EWeaponState;
2055
+ UseSecondaryWeapon: boolean;
2056
+ BehaviorType: EBehaviorType;
2057
+ SimulateBattle: boolean;
2058
+ ImmediatelyIdentifyEnemy: boolean;
2059
+ TargetQuestGuids: string[];
2060
+ DialogChainPrototypeSID: string;
2061
+ NPCToStartDialog: number;
2062
+ StartForcedDialog: boolean;
2063
+ WaitAllDialogEndingsToFinish: boolean;
2064
+ IsComment: boolean;
2065
+ OverrideDialogTopic: EOverrideDialogTopic;
2066
+ CanExitAnytime: boolean;
2067
+ ContinueThroughRadio: boolean;
2068
+ CallPlayer: boolean;
2069
+ SeekPlayer: boolean;
2070
+ CallPlayerRadius: number;
2071
+ EquipmentTypeFilter: EMainHandEquipmentType;
2072
+ EquipmentItemSID: string;
2073
+ HideViewType: EHideViewType;
2074
+ MovementType: EMovementBehaviour;
2075
+ RotationAfterMoveTo: LocationAndRotation;
2076
+ MoveToPath: string;
2077
+ MoveToSuccessRange: number;
2078
+ MoveToFailureRange: number;
2079
+ ContaineredQuestPrototypeSID: string;
2080
+ SignalSenderGuid: string;
2081
+ ItemPrototypeSID: string;
2082
+ ExpectedItemsCount: number;
2083
+ WithEquipped: boolean;
2084
+ LocalizedSequences: string[];
2085
+ LoopSequence: boolean;
2086
+ PreblendSequence: boolean;
2087
+ PreblendTime: number;
2088
+ BlendExpForEaseInOut: number;
2089
+ NotePrototypeSID: string;
2090
+ PlayWhenReceived: boolean;
2091
+ SoundLocation: Point;
2092
+ AKEventPath: string;
2093
+ MasterAKEventForLoad: string;
2094
+ FinishOnAKEvent: boolean;
2095
+ DataLayerName: string;
2096
+ IsDataLayerEnabled: boolean;
2097
+ Continue: boolean;
2098
+ SignalReceiverGuid: string;
2099
+ SpecificItemDespawn: boolean;
2100
+ PauseEmission: boolean;
2101
+ StayContextualAction: string;
2102
+ CanBeTeleported: boolean;
2103
+ VolumeGuid: number;
2104
+ MarkerSID: string;
2105
+ Explored: boolean;
2106
+ Weather: EWeather;
2107
+ Force: boolean;
2108
+ VideoAssetPath: string;
2109
+ TimeToStartNextNodeBeforeEnd: number;
2110
+ IsFinalVideo: boolean;
2111
+ GlobalVariablePrototypeSID: string;
2112
+ ChangeValueMode: EChangeValueMode;
2113
+ VariableValue: any;
2114
+ NewZoneState: boolean;
2115
+ OverrideScenarioGroupSID: string;
2116
+ HitProducer: string;
2117
+ HitReceiver: string;
2118
+ QuestItem: boolean;
2119
+ RestrictDialogInteractions: boolean;
2120
+ RestrictDefeatStateInteraction: boolean;
2121
+ RestrictDefeatStateMovementInteraction: boolean;
2122
+ RestrictDeadBodyMovementInteraction: boolean;
2123
+ RestrictDeadBodyLootInteraction: boolean;
2124
+ RestrictDeadBodyDespawn: boolean;
2125
+ LookAtLocation: Point;
2126
+ Duration: number;
2127
+ EnteringDuration: number;
2128
+ LookAtActorFName: string;
2129
+ AttractionPointType: EAttractionPointType;
2130
+ ActorBoneName: string;
2131
+ ReactionTime: number;
2132
+ Priority: number;
2133
+ CollisionChannel: number;
2134
+ ApplyRestrictionType: EApplyRestrictionType;
2135
+ RotationFreemoveEdge: number;
2136
+ RotationStopEdge: number;
2137
+ PresetName: string;
2138
+ ShootingPosition: Point;
2139
+ ShootTargetLocation: Point;
2140
+ ShotsQueueCount: number;
2141
+ AIThreatState: number;
2142
+ AssetsToLoad: string[];
2143
+ AudioLocalizedAssetsToLoad: string[][];
2144
+ FirstTargetSID: string;
2145
+ SecondTargetSID: string;
2146
+ UseDeltaValue: boolean;
2147
+ UsePreset: boolean;
2148
+ RelationshipValue: number;
2149
+ SetFactionRelationshipAsPersonal: boolean;
2150
+ ShouldLockPersonalRelationship: boolean;
2151
+ DataLayerCombination: string;
2152
+ DLC: string;
2153
+
2154
+ OutputPinNames: string[];
2155
+ Launchers: {
2156
+ Excluding: boolean;
2157
+ Connections: {
2158
+ SID: string;
2159
+ Name: string;
2160
+ }[];
2161
+ }[];
2162
+ LastPhrases: {
2163
+ FinishNode: boolean;
2164
+ LastPhraseSID: string;
2165
+ NextLaunchedPhraseSID: string;
2166
+ }[];
2167
+ DialogMembers: string[];
2168
+ TalkThroughRadio: boolean[];
2169
+ DialogObjectLocation: Point[];
2170
+
2171
+ Conditions: Condition[][];
2172
+
2173
+ DialogEventType: EDialogEventType;
2174
+ RequiresGroup: boolean;
2175
+ RequiredMembersCount: number;
2176
+ OptionalMembersCount: number;
2177
+ DialogMemberRestrictions: {
2178
+ FactionRestrictions: {
2179
+ Faction: Faction;
2180
+ };
2181
+ ExcludedFactions: {
2182
+ Faction: Faction;
2183
+ };
2184
+ ObjPrototypeRestrictions: {
2185
+ NPCPrototypeSID: string;
2186
+ };
2187
+ ExcludedObjPrototypes: {
2188
+ NPCPrototypeSID: string;
2189
+ };
2190
+ };
2191
+ AvailableDialogs: string[];
2192
+ }>;
2193
+
2194
+ export type Condition = GetStructType<{
2195
+ DialogMemberIndex: number;
2196
+ RandomProbability: number;
2197
+ Money: number | Param;
2198
+ GlobalVariablePrototypeSID: string;
2199
+ ChangeValueMode: EChangeValueMode;
2200
+ VariableValue: number;
2201
+ Rank: ERank;
2202
+ Faction: string;
2203
+ Relationships: ERelationLevel;
2204
+ Equipment: EMainHandEquipmentType;
2205
+ ConditionCheckType: EConditionCheckType;
2206
+ ConditionType: EQuestConditionType;
2207
+ ConditionComparance: EConditionComparance;
2208
+ LinkedNodePrototypeSID: string;
2209
+ CompletedNodeLauncherNames: never[];
2210
+ TargetNPC: string;
2211
+ TargetContextualActionPlaceholder: string;
2212
+ TargetCharacter: string;
2213
+ Trigger: string;
2214
+ bTriggersByAnybody: boolean;
2215
+ ReactType: ETriggerReact;
2216
+ RequiredSquadMembers: ERequiredSquadMembers;
2217
+ NumericValue: number;
2218
+ TargetPoint: Point;
2219
+ ItemPrototypeSID: Param;
2220
+ ItemsCount: Param;
2221
+ WithEquipped: boolean;
2222
+ WithInventory: boolean;
2223
+ BoolValue: boolean;
2224
+ PointToLookAt: Point;
2225
+ JournalEntity: EJournalEntity;
2226
+ JournalState: EJournalState;
2227
+ JournalQuestSID: string;
2228
+ JournalQuestStageSID: string;
2229
+ TargetNode: string;
2230
+ NodeState: EQuestNodeState;
2231
+
2232
+ IncludePartialOverload: boolean;
2233
+ ThreatAwareness: EThreatAwareness;
2234
+ EmissionPrototypeSID: string;
2235
+ }>;
2236
+
2237
+ export type Point = GetStructType<{
2238
+ X: number;
2239
+ Y: number;
2240
+ Z: number;
2241
+ }>;
2242
+
2243
+ export type LocationAndRotation = GetStructType<
2244
+ Point & {
2245
+ Pitch: number;
2246
+ Yaw: number;
2247
+ Roll: number;
2248
+ }
2249
+ >;
2250
+
2251
+ export type Param = GetStructType<{
2252
+ VariableType: EGlobalVariableType;
2253
+ VariableValue: any;
2254
+ }>;
2255
+
2256
+ export type Protection = GetStructType<{
2257
+ Strike: number;
2258
+ Radiation: number;
2259
+ Burn: number;
2260
+ Shock: number;
2261
+ ChemicalBurn: number;
2262
+ PSY: number;
2263
+ Fall: number;
2264
+ }>;
2265
+
2266
+ export type MovementParams = GetStructType<{
2267
+ WalkSpeed: number;
2268
+ RunSpeed: number;
2269
+ CrouchSpeed: number;
2270
+ LowCrouchSpeed: number;
2271
+ SprintSpeed: number;
2272
+ ClimbSpeedCoef: number;
2273
+ JumpSpeedCoef: number;
2274
+ LimpSpeedCoef: number;
2275
+ RunDiagonalBackCoef: number;
2276
+ WalkDiagonalBackCoef: number;
2277
+ WalkBackCoef: number;
2278
+ RunBackCoef: number;
2279
+ MoveBackCrouchCoef: number;
2280
+ MoveBackLowCrouchCoef: number;
2281
+ AirControlCoef: number;
2282
+ WalkTransitionCoef: number;
2283
+ BaseTurnRate: number;
2284
+ BaseLookUpRate: number;
2285
+ MaxSlowdownValue: number;
2286
+ StaggerAngle: number;
2287
+ CanDash: boolean;
2288
+ MovementSpeedCoef: number;
2289
+ AimSpeedCoef: number;
2290
+ AimTurnCoef: number;
2291
+ AimLookUpCoef: number;
2292
+ }>;
2293
+
2294
+ export type PossibleItem = GetStructType<{
2295
+ ItemPrototypeSID: string;
2296
+ Weight: number;
2297
+ MinDurability: number;
2298
+ MaxDurability: number;
2299
+ AmmoMinCount: number;
2300
+ AmmoMaxCount: number;
2301
+ ItemGeneratorPrototypeSID: string;
2302
+ Chance: number;
2303
+ MinCount: number;
2304
+ MaxCount: number;
2305
+ bRequireWeapon: boolean;
2306
+ }>;
2307
+
2308
+ export type ItemGenerator = GetStructType<{
2309
+ Category: EItemGenerationCategory;
2310
+ PlayerRank: ERank;
2311
+ bAllowSameCategoryGeneration: boolean;
2312
+ ReputationThreshold: number;
2313
+ RefreshTime: string;
2314
+ PossibleItems: PossibleItem[];
2315
+ Diff: EGameDifficulty;
2316
+ }>;
2317
+
2318
+ export type VitalParams = GetStructType<{
2319
+ MaxHP: number;
2320
+ MaxSP: number;
2321
+ MaxFP: number;
2322
+ RegenFP: number;
2323
+ MaxBleeding: number;
2324
+ MaxRadiation: number;
2325
+ MaxDrunknessPoints: number;
2326
+ MaxOverDrunknessPoints: number;
2327
+ MaxSleepinessPoints: number;
2328
+ MaxHungerPoints: number;
2329
+ MaxThirstPoints: number;
2330
+ MaxSuppressionPoints: number;
2331
+ RegenHungerPoints: number;
2332
+ RegenThirstPoints: number;
2333
+ DegenBleeding: number;
2334
+ DegenRadiation: number;
2335
+ DegenPsyPoints: number;
2336
+ DegenSuppressionPoints: number;
2337
+ DegenDrunknessPoints: number;
2338
+ RegenSleepinessPoints: string;
2339
+ RegenHP: number;
2340
+ RegenHPDelayTimeSeconds: number;
2341
+ DegenSuppressionDelayTimeSeconds: number;
2342
+ RegenSP: number;
2343
+ RegenPoppyFieldSleepiness: number;
2344
+ RegenHealthModifier: number;
2345
+ StaminaDisableThresholds: {
2346
+ Threshold: number;
2347
+ RegenerationDelay: number;
2348
+ StateTags: EStateTag[];
2349
+ }[];
2350
+ }>;