Skip to content
k-mods.com

Availability Dependency Classes

Every FGAvailabilityDependency subclass, with abstract status, concrete path, exact field types, accepted values, and owner lists.

Availability dependencies gate content without granting rewards. KDataForge instances them in four explicit lists:

  • schematic dependencies: → UFGSchematic::mSchematicDependencies;
  • research unlockDependencies: → UFGResearchTree::mUnlockDependencies;
  • research visibilityDependencies: → UFGResearchTree::mVisibilityDependencies;
  • KAPI delivery-task dependencies: → UKAPIDeliveryTask::mTaskDependencies.

Each entry uses a block map containing class: and properties:. Known native paths with Blueprint children automatically remap to concrete generated classes; exact Blueprint paths remain valid. Linter emits warning class.native-remapped for mapped native form. Abstract classes without Blueprint variants cannot be instanced.

dependencies:
- class: /Script/FactoryGame.FGSchematicPurchasedDependency
properties:
- path: mSchematics
value:
- /Game/FactoryGame/Schematics/Progression/Schematic_1-1.Schematic_1-1_C
- path: mRequireAllSchematicsToBePurchased
value: true

Unreal Asset Registry scan found 33 native classes and 17 shipped Blueprint variants in FGAvailabilityDependency hierarchy.

Native classAbstractBlueprint variant / concrete pathConfigurable fields and accepted typesPurpose
FGAvailabilityDependencyyesbase onlyBase only; never instance
FGActorsBuiltDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_ActorsBuiltDependency.BP_ActorsBuiltDependency_CmActorsBuiltCount: TMap<TSubclassOf<AActor>, int32>
mType: EActorBuiltDependencyType
mIsPlayerSpecific: bool
Requires configured actor/buildable counts
FGCalendarOpenedDependencyno/Script/FactoryGame.FGCalendarOpenedDependencymFirstTimeOnly: boolRequires FICSMAS calendar open
FGCalendarSlotUnlockedDependencyno/Script/FactoryGame.FGCalendarSlotUnlockedDependencymSlot: int32
mUnlockType: EUnlockDependencyType
mUnlockedItemClassesRequirement: EItemUnlockRequirement
mUnlockedItemClasses: TArray<TSubclassOf<UFGItemDescriptor>>
Requires calendar slot/item state
FGConsumablesConsumedDependencyyesmConsumablesConsumedCount: TMap<TSubclassOf<UFGConsumableDescriptor>, int32>Requires counts of consumed items
FGCreaturesKilledDependencyyesmCreaturesKilledCount: TMap<TSubclassOf<AFGCreature>, int32>Requires creature kill counts
FGCurrentOnboardingStepDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_CurrentOnboardingStepDependency.BP_CurrentOnboardingStepDependency_CmOnboardingStep: TObjectPtr<UFGOnboardingStep>Requires current onboarding step
FGEventDisabledDependencyno/Script/FactoryGame.FGEventDisabledDependencymEvents: TArray<EEvents>Requires selected seasonal events disabled
FGGameCompletedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_GameCompletedDependency.BP_GameCompletedDependency_CRequires game completion
FGGamePhaseReachedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_GamePhaseReachedDependency.BP_GamePhaseReachedDependency_CmGamePhase: TEnumAsByte<EGamePhase>
mOnlyAllowInSelectedPhase: bool
Requires or pins game phase
FGItemFailedToSinkDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_ItemFailedToSinkDependency.BP_ItemFailedToSinkDependency_CmItemsFailedToSink: TArray<TSubclassOf<UFGItemDescriptor>>Requires configured item to fail AWESOME Sink
FGItemPickedUpDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_ItemPickedUpDependency.BP_ItemPickedUpDependency_CmItems: TMap<TSubclassOf<UFGItemDescriptor>, int32>
mRequireAllItemsToBePickedUp: bool
Requires item pickup counts
FGItemSinkDependencyno/Script/FactoryGame.FGItemSinkDependencymItemClasses: TArray<TSubclassOf<UFGItemDescriptor>>Requires configured items to be sunk
FGItemsManuallyCraftedDependencyyesmItemsManuallyCraftedCount: TMap<TSubclassOf<UFGItemDescriptor>, int32>Requires manual-craft counts
FGLockSpaceElevatorShipmentDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_LockSpaceElevatorShipmentDependency.BP_LockSpaceElevatorShipmentDependency_CmGamePhase: TEnumAsByte<EGamePhase>Locks Space Elevator shipment for phase
FGMessageInterruptedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_MessageInterruptedDependency.BP_MessageInterruptedDependency_CRequires narrative message interruption state
FGMessageNotPlayedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_MessageNotPlayedDependency.BP_MessageNotPlayedDependency_Cinherited mMessages: TArray<TObjectPtr<UFGMessage>>
inherited mRequireAllMessagesToBePlayed: bool
Inverse of message-played requirement
FGMessagePlayedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_MessagePlayedDependency.BP_MessagePlayedDependency_CmMessages: TArray<TObjectPtr<UFGMessage>>
mRequireAllMessagesToBePlayed: bool
Requires ADA messages played
FGPersonalElevatorDependencyno/Script/FactoryGame.FGPersonalElevatorDependencymEvents: uint8 bitmask (EElevatorDependencyEvent)
mMinimumRequiredTravelTime: float
Requires Personal Elevator interaction/travel
FGProximityToItemDependencyyesmItemClass: TSubclassOf<UFGItemDescriptor>
mItemAsResourceNode: bool
Requires player proximity to item/resource
FGRandomChanceDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_RandomChanceDependency.BP_RandomChanceDependency_CmRandomChance: float (0..1)Random probability gate
FGRecipeCategoryBuiltDependencyno/Script/FactoryGame.FGRecipeCategoryBuiltDependencymCategories: TArray<TSubclassOf<UFGBuildCategory>>Requires build from recipe categories
FGRecipeUnlockedDependencyyesmRecipes: TArray<TSubclassOf<UFGRecipe>>
mRequireAllRecipesToBeUnlocked: bool
Requires recipe unlock state
FGResearchTreeProgressionDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_ResearchTreeProgressionDependency.BP_ResearchTreeProgressionDependency_CmResearchTrees: TMap<TSubclassOf<UFGResearchTree>, TEnumAsByte<EResearchTreeStatus>>
mRequireAllTreesToBeMatched: bool
Requires research-tree status
FGSameDirNotPlayedDependencyyesmTimeInterval: floatNarrative same-directory cooldown gate
FGSchematicNotPurchasedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_SchematicNotPurchasedDependency.BP_SchematicNotPurchasedDependency_Cinherited mSchematics: TArray<TSubclassOf<UFGSchematic>>
inherited mRequireAllSchematicsToBePurchased: bool
Requires schematic not purchased
FGSchematicPurchasedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_SchematicPurchasedDependency.BP_SchematicPurchasedDependency_CmSchematics: TArray<TSubclassOf<UFGSchematic>>
mRequireAllSchematicsToBePurchased: bool
Requires schematic purchase
FGSchematicSpammedDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_SchematicSpammedDependency.BP_SchematicSpammedDependency_CmSchematicType: ESchematicType
mTimeInterval: float (seconds)
mRequiredPurchaseCount: int32
Requires repeated schematic purchases in interval
FGSchematicTypeDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_SchematicTypeDependency.BP_SchematicTypeDependency_CmSchematicType: ESchematicType
mShouldCategoryMatch: bool
mShouldSubCategoriesMatch: bool
mSchematicCategory: TSubclassOf<UFGSchematicCategory>
mSchematicSubcategories: TArray<TSubclassOf<UFGSchematicCategory>>
Requires schematic type/category progress
FGSpaceElevatorFullyBuiltDependencyyes/Game/FactoryGame/AvailabilityDependencies/BP_SpaceElevatorFullyBuiltDependency.BP_SpaceElevatorFullyBuiltDependency_CRequires Space Elevator fully built
FGTakeDamageDependencyno/Script/FactoryGame.FGTakeDamageDependencymDamageInteraction: ETakeDamagePlayerInteraction
mDamageTypes: TArray<TSubclassOf<UDamageType>>
mActorClassContextFilter: TArray<TSubclassOf<AActor>>
mOnlyKillingBlow: bool
Requires configured damage interaction
FGToiletFlushDependencyno/Script/FactoryGame.FGToiletFlushDependencymFlushedItemClass: TArray<TSubclassOf<UFGItemDescriptor>>Requires configured items flushed
FGWeatherReactionSeenDependencyno/Script/FactoryGame.FGWeatherReactionSeenDependencymWeatherReactionClass: TSubclassOf<AFGWeatherReaction>Requires weather reaction observed

Each properties entry’s path uses exact reflected member name. TSubclassOf<T> accepts Unreal class path; TObjectPtr<T> accepts object asset path or null; TArray<T> accepts YAML sequence; TMap<TKey, TValue> accepts YAML mapping with keys and values matching declared generic types. TEnumAsByte<E> accepts same enum token as E. C++ access (protected/private) does not change property path because KDataForge writes through Unreal reflection.

TypeAccepted tokens / values
EActorBuiltDependencyTypeABT_Built, ABT_BuiltTotal, ABT_DismantledTotal
EUnlockDependencyTypeAny, Random
EItemUnlockRequirementAny, All
EEventsEV_None, EV_Christmas, EV_Birthday, EV_CSSBirthday, EV_FirstOfApril
EGamePhaseEGP_EarlyGame, EGP_MidGame, EGP_LateGame, EGP_EndGame, EGP_FoodCourt, EGP_Victory, EGP_NA
EElevatorDependencyEvent bitmask stored in mEventsBeginMove, EndMove, or a block sequence containing both; raw integer masks 0..3 also work (None=0, BeginMove=1, EndMove=2)
EResearchTreeStatusERTS_Locked, ERTS_Unlocked, ERTS_StartedResearch, ERTS_FinishedAllResearch
ESchematicTypeEST_Custom, EST_Cheat, EST_Tutorial, EST_Milestone, EST_Alternate, EST_Story, EST_MAM, EST_ResourceSink, EST_HardDrive, EST_Prototype, EST_Customization
ETakeDamagePlayerInteractionAny, PlayerWasDamaged, PlayerDealtDamage

No loaded mod added native FGAvailabilityDependency subclasses during this scan. Catalog still accepts known Blueprint class paths and linter warns on unknown paths instead of failing validation.

Run Mods/GameFeatures/KDataForge/Tools/scan_instanced_class_catalog.py inside Unreal Python. It combines Asset Registry’s transitive derived-class set and Blueprint ParentClass tags with native header metadata, then writes Saved/KDataForge/instanced-class-catalog.json by default. Set KDF_CLASS_CATALOG_OUTPUT to write a temp comparison file instead. The bundled KDataForge-Linter/src/kdataforge_linter/catalogs/instanced_classes.json snapshot already matches the current Unreal scan, so it does not need regeneration unless classes or Blueprint variants change.

type: research
research:
- id: MyTree
unlockDependencies:
- class: /Script/FactoryGame.FGItemPickedUpDependency
properties:
- path: mItems
value:
/Game/FactoryGame/Resource/RawResources/SAM/Desc_SAM.Desc_SAM_C: 1
visibilityDependencies:
- class: /Script/FactoryGame.FGGamePhaseReachedDependency
properties:
- path: mGamePhase
value: EGP_EarlyGame
---
type: dataasset
conditions:
hasMod: KAPI
assets:
- id: MyDeliveryTask
class: /Script/KAPI.KAPIDeliveryTask
dependencies:
- class: /Script/FactoryGame.FGSchematicPurchasedDependency
properties:
- path: mSchematics
value:
- Schematic_MyPrerequisite

Related: Schematics, Research Trees, and Delivery Task Trees.