WardenObjective
GameData_WardenObjectiveDataBlock_bin.json (filled)
Fields
Type - eWardenObjectiveType (enum)
No description provided.
Header - LocalizedText (nested type)
No description provided.
MainObjective - LocalizedText (nested type)
No description provided.
WardenObjectiveSpecialUpdateType - eWardenObjectiveSpecialUpdateType (enum)
No description provided.
GenericItemFromStart - UInt32 (ItemDataBlock)
No description provided.
DoNotMarkPickupItemsAsWardenObjectives - Boolean
No description provided.
FindLocationInfo - LocalizedText (nested type)
No description provided.
FindLocationInfoHelp - LocalizedText (nested type)
No description provided.
GoToZone - LocalizedText (nested type)
No description provided.
GoToZoneHelp - LocalizedText (nested type)
No description provided.
InZoneFindItem - LocalizedText (nested type)
No description provided.
InZoneFindItemHelp - LocalizedText (nested type)
No description provided.
SolveItem - LocalizedText (nested type)
No description provided.
SolveItemHelp - LocalizedText (nested type)
No description provided.
GoToWinCondition_Elevator - LocalizedText (nested type)
No description provided.
GoToWinConditionHelp_Elevator - LocalizedText (nested type)
No description provided.
GoToWinCondition_CustomGeo - LocalizedText (nested type)
No description provided.
GoToWinConditionHelp_CustomGeo - LocalizedText (nested type)
No description provided.
GoToWinCondition_ToMainLayer - LocalizedText (nested type)
No description provided.
GoToWinConditionHelp_ToMainLayer - LocalizedText (nested type)
No description provided.
ShowHelpDelay - Single
No description provided.
WavesOnElevatorLand - List GenericEnemyWaveData (nested type)
No description provided.
EventsOnElevatorLand - List WardenObjectiveEventData (nested type)
No description provided.
WaveOnElevatorWardenIntel - LocalizedText (nested type)
No description provided.
FogTransitionDataOnElevatorLand - UInt32 (FogSettingsDataBlock)
No description provided.
FogTransitionDurationOnElevatorLand - Single
No description provided.
OnActivateOnSolveItem - Boolean
No description provided.
WavesOnActivate - List GenericEnemyWaveData (nested type)
No description provided.
EventsOnActivate - List WardenObjectiveEventData (nested type)
No description provided.
StopAllWavesBeforeGotoWin - Boolean
No description provided.
WavesOnGotoWin - List GenericEnemyWaveData (nested type)
No description provided.
WaveOnGotoWinTrigger - eRetrieveExitWaveTrigger (enum)
No description provided.
EventsOnGotoWin - List WardenObjectiveEventData (nested type)
No description provided.
EventsOnGotoWinTrigger - eRetrieveExitWaveTrigger (enum)
No description provided.
FogTransitionDataOnGotoWin - UInt32 (FogSettingsDataBlock)
No description provided.
FogTransitionDurationOnGotoWin - Single
No description provided.
ChainedPuzzleToActive - UInt32 (ChainedPuzzleDataBlock)
No description provided.
ChainedPuzzleMidObjective - UInt32 (ChainedPuzzleDataBlock)
No description provided.
ChainedPuzzleAtExit - UInt32 (ChainedPuzzleDataBlock)
No description provided.
ChainedPuzzleAtExitScanSpeedMultiplier - Single
No description provided.
Gather_RequiredCount - Int32
No description provided.
Gather_ItemId - UInt32 (ItemDataBlock)
No description provided.
Gather_SpawnCount - Int32
No description provided.
Gather_MaxPerZone - Int32
No description provided.
Retrieve_Items - List UInt32 (ItemDataBlock)
No description provided.
ReactorWaves - List ReactorWaveData (nested type)
No description provided.
LightsOnFromBeginning - Boolean
No description provided.
LightsOnDuringIntro - Boolean
No description provided.
LightsOnWhenStartupComplete - Boolean
No description provided.
DoNotSolveObjectiveOnReactorComplete - Boolean
No description provided.
SpecialTerminalCommand - String
No description provided.
SpecialTerminalCommandDesc - LocalizedText (nested type)
No description provided.
PostCommandOutput - List String
No description provided.
SpecialCommandRule - TERM_CommandRule (enum)
No description provided.
PowerCellsToDistribute - Int32
No description provided.
Uplink_NumberOfVerificationRounds - Int32
No description provided.
Uplink_NumberOfTerminals - Int32
No description provided.
Uplink_WaveSpawnType - SurvivalWaveSpawnType (enum)
No description provided.
CentralPowerGenClustser_NumberOfGenerators - Int32
No description provided.
CentralPowerGenClustser_NumberOfPowerCells - Int32
No description provided.
CentralPowerGenClustser_FogDataSteps - List GeneralFogDataStep (nested type)
No description provided.
ActivateHSU_ItemFromStart - UInt32 (ItemDataBlock)
No description provided.
ActivateHSU_ItemAfterActivation - UInt32 (ItemDataBlock)
No description provided.
ActivateHSU_BringItemInElevator - Boolean
No description provided.
ActivateHSU_MarkItemInElevatorAsWardenObjective - Boolean
No description provided.
ActivateHSU_StopEnemyWavesOnActivation - Boolean
No description provided.
ActivateHSU_ObjectiveCompleteAfterInsertion - Boolean
No description provided.
ActivateHSU_RequireItemAfterActivationInExitScan - Boolean
No description provided.
ActivateHSU_Events - List WardenObjectiveEventData (nested type)
No description provided.
Survival_TimeToActivate - Single
No description provided.
Survival_TimeToSurvive - Single
No description provided.
Survival_TimerTitle - LocalizedText (nested type)
No description provided.
Survival_TimerToActivateTitle - LocalizedText (nested type)
No description provided.
GatherTerminal_SpawnCount - Int32
No description provided.
GatherTerminal_RequiredCount - Int32
No description provided.
GatherTerminal_Command - String
No description provided.
GatherTerminal_CommandHelp - LocalizedText (nested type)
No description provided.
GatherTerminal_DownloadingText - LocalizedText (nested type)
No description provided.
GatherTerminal_DownloadCompleteText - LocalizedText (nested type)
No description provided.
GatherTerminal_DownloadTime - Single
No description provided.
TimedTerminalSequence_NumberOfRounds - Int32
No description provided.
TimedTerminalSequence_NumberOfTerminals - Int32
No description provided.
TimedTerminalSequence_TimePerRound - Single
No description provided.
TimedTerminalSequence_TimeForConfirmation - Single
No description provided.
TimedTerminalSequence_UseFilterForSourceTerminalPicking - Boolean
No description provided.
TimedTerminalSequence_SourceTerminalWorldEventObjectFilter - String
No description provided.
TimedTerminalSequence_EventsOnSequenceStart - List List WardenObjectiveEventData (nested type)
No description provided.
TimedTerminalSequence_EventsOnSequenceDone - List List WardenObjectiveEventData (nested type)
No description provided.
TimedTerminalSequence_EventsOnSequenceFail - List List WardenObjectiveEventData (nested type)
No description provided.
Additional docs
All expeditions require at least 1 Warden Objective (for Main specifically), which determines if the objective for the level (or one of the layers within the level) is Reactor Startup, Central Generator Cluster and all that.
To begin with, you can find any of the DBs in GameData_WardenObjectiveDatablock.json
as your base reference.
At first glance it looks quite intimidating, right? Don’t worry. Let’s do some categorizations and split those fields up. To make it more succinct, I will use one of the datablock copy-pasted from GameData_WardenObjectiveDatablock.json
, but remove some redundant parts and add some comments where necessary.
General fields
Waves / Events / Fog / Chained Puzzle fields
These fields tells the objective manager to spawn enemy waves and execute events at given point.
On Elevator Land
Literally on elevator land (upon cage drop). The fields are all self-clarifying.
On Activate
At first glance it's rather perplexing that what is "On Activate". Sadly, I have no idea how to describe it clearly ; )
For now, you may refer to its usage in different objective type get some hints. "WavesOnActivate" and "EventsOnActivate" are not used as frequently as "WavesOnGotoWin" and "EventsOnGotoWin"; in addition, the first part, which is the explanation for field "OnActivateOnSolveItem", is quite long. So if you feel hard to understand this part, I suggest you skip this part and read "On Goto Win" first
On Goto Win
By "Goto Win", it means objective completion.
Objective Chained Puzzle
Objective-specific fields
The following fields are all Objective Specific. You can remove those irrelevant fields given your objective type.
Some objective types don't have their own objective-specific fields.
Some may require you to spawn certain item(s) in certain zone(s) in LevelLayoutDatablock
to make the objective work properly.
3 - Gather Small Item
Objective Type for R6C1 and R6D4.
6 - Retrieve Big Item
Objective Type for R6A1 and R6C2 Secondary.
Note: for zones that spawn those Big Pickup Items (no matter if they are objective item or not), don't forget to set "BigPickupDistribution"
in LevelLayoutDatablock
to "true"
1/2 - Reactor Startup/Shutdown
Geomorph-tied objective type. To make a Reactor Startup / Shutdown work properly, you must set certain geomorph in the level.
Here's a list of the name of Reactor geomorph (use Ctrl + F in the doc 'All Geomorph' to see what they look like):
Mining Reactor Open HA 1 ****"Assets/AssetPrefabs/Complex/Mining/Geomorphs/geo_64x64_mining_reactor_open_HA_01.prefab"
Mining Reactor HA 2 ****"Assets/AssetPrefabs/Complex/Mining/Geomorphs/geo_64x64_mining_reactor_HA_02.prefab"
Lab Reactor HA 1 ****"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_lab_reactor_HA_01.prefab"
Lab Reactor HA 2 ****"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_lab_reactor_HA_02.prefab"
Note: For Reactor Shutdown, you can only use the Mining Reactor HA 2 as your Reactor Geomorph. Without aid of a plugin, Reactor Shutdown would be broken if using the other 3 geomorphs.
Finally, there's no Floodway Reactor so far.
5 - Special Terminal Command
The most phenomenal use of this objective type is probably R5C2 Overload, in which "WavesOnActivate", "EventsOnActivate", "ChainedPuzzleMidObjective" are all well used.
Also R5B3 Secondary (or Extreme) is an example for how to use this objective type.
7 - Distribute Powercell
R6C2 Main Objective.
Note:
If you are using this objective type as your Main Layer objective, the required number of powercells will be given in the elevator cargo container.
Otherwise (you are using it as your Secondary/Overload objective), the powercells will spawn in the first zone of the layer. Don't forget to set those zones'
"ForceBigpickupDistribution"
to"true"
If you don't want the powercell to be given in the elevator cargo, you will need the help of
Tweaker
, a plugin that enables you to manipulate your elevator cargo.
In addition, you need to spawn the required number of PowerGenerator
(s) in LevelLayoutDatablock
in the desired zone(s). The objective manager would choose one of the unselected PowerGenerator
(s) spawned in the zone as the objective generator.
8/13 - Terminal Uplink / Corrupted Uplink
R6B2 Secondary / R6D2 Secondary
To use this objective types, you need to spawn required number of terminals for each uplink in LevelLayoutDatablock
.
Also, for Corrupted Uplink, sadly, for each Uplink, you CAN'T spawn the 2 terminals for the uplink in 2 different zone.
9 - Central Generator Cluster
Geomorph-tied objective type (same as Reactor Startup/Shutdown).
Here's a list of the name of valid generator geomorph (in which you can spawn a generator cluster) . Use Ctrl + F in the doc 'All Geomorph' to see what they look like:
Digsite hub HA 1 ****"Assets/AssetPrefabs/Complex/Mining/Geomorphs/Digsite/geo_64x64_mining_dig_site_hub_HA_01.prefab"
Digsite hub HA 2 ****"Assets/AssetPrefabs/Complex/Mining/Geomorphs/Digsite/geo_64x64_mining_dig_site_hub_HA_02.prefab"
Lab hub HA 2 ****"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_tech_lab_hub_HA_02.prefab"
Lab HA 2 [Standard Geomorph] ****"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_tech_lab_HA_02.prefab"
Lab HA 3 [Standard Geomorph] "Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_tech_lab_HA_03.prefab"
Note that I've marked the last 2 geomorph with [Standard Geomorph]. If you directly copy-paste them into "CustomGeomorph"
in LevelLayoutDatablock
, your console will flood with Errors. Without editing ComplexResourceSetDatablock
, if you want to use the 2 standard geomorphs, you will need to roll subseed
to change the Zone's layout and MarkerSubseed
to finally get a Generator Cluster. I suggest you read the 'All Geomorph' doc to find out why.
Oh, finally, in LevelLayoutDatablock
, don't forget to set "GeneratorClustersInZone"
to 1
in the desired zone.
10 - Activate Neonate_HSU / Datasphere. Unseal Hi-Sec Cargo Crate.
Geomorph-tied objective type (same as Reactor Startup/Shutdown).
Here's a list of the name of available geomorph. Use Ctrl + F in the doc 'All Geomorph' to see what they look like:
Lab Dead End Room 1 ****"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_Lab_dead_end_room_02.prefab"
Lab Dead End Room 2 ****"Assets/AssetPrefabs/Complex/Tech/Geomorphs/geo_64x64_Lab_dead_end_room_01.prefab"
Refinery Dead End HA 1 ****"Assets/AssetPrefabs/Complex/Mining/Geomorphs/Refinery/geo_64x64_mining_refinery_dead_end_HA_01.prefab"
11 - Survival
This type of objective begins upon entering the layer.
For example, if you set the Secondary objective as Survival, the timer won't starts until any of your teammates pace into the Secondary Bulkhead Door.
The objective completes upon the timer ends.
You can end the timer in advance by using a "ForceWin"
event.
After the "prepare time" ends, the objective manager will start executing events in "EventsOnActivate"
, and spawn waves in "WavesOnActivate"
.
12 - Gather Terminal
How to write an Event?
First, let's take a look at an event copy-pasted from the vanilla datablock:
A bit intimidating, right? Luckily, for a certain event type only few fields are used, which means we can remove unused fields to make our file look cleaner.
Here's a list of EventType:
0 - None
1 - OpenSecurityDoor
2 - UnlockSecurityDoor
3 - AllLightsOff
4 - AllLightsOn
5 - PlaySound
6 - SetFogSetting
7 - DimensionFlashTeam
8 - DimensionWarpTeam
9 - SpawnEnemyWave
10 - StopEnemyWaves
11 - UpdateCustomSubObjective
12 - ForceCompleteObjective
999 - EventBreak
In the following I will try to explain what each event type does, and which fields are used. Also an example is provided for you to refer to and copy-paste.
0 - None
Does nothing. You can use it to display Warden Intel.
1 - OpenSecurityDoor
Open a given Sec-Door, even the door is locked with a security alarm.
Note: Without aid of a plugin, you can't open a sec-door that has already been "approached".
2 - UnlockSecurityDoor
Works similarly as OpenSecurityDoor.
3 - AllLightsOff
Shutdown all lights in the current level.
4 - AllLightsOn
Turn on all lights in the current level.
5 - PlaySound
Play certain sound in/from specific zone. You will need to collect the sound ID from vanilla data.
6 - SetFogSettings
Changed the fog for the entire level.
7 - DimensionFlashTeam
[Not 100% sure if my explanation is correct. Rectify if anywhere wrong]
Teleport your team to a given dimension, and teleport back after a certain duration.
This event is used in R6A1 and R6C1.
8 - DimensionWarpTeam
[Not 100% sure if my explanation is correct. Rectify if anywhere wrong]
Teleport your team to a given dimension. You need to execute another "DimensionWarpTeam"
event in the dimension to teleport either to another dimension or back to reality.
This event is used in R6D1 and R6D4.
9 - SpawnEnemyWave
Like the name said.
Note: What's the difference between "WardenIntel"
and "IntelMessage"
?
I'm not pretty sure...
"WardenIntel"
display intel message after "Delay"
timer ends.
"IntelMessage"
won't change [ZONE_4] into actual zone name, and is displayed after "SpawnDelay"
timer ends.
10 - StopEnemyWave
Stop all waves. For example, scout wave, reactor wave, uplink wave... everything.
11 - UpdateCustomSubObjective
What's "Custom SubObjective"? It's the "[PROGRESSION]" shown in the upper left of your hud, right below the objective description text.
What's the difference between "CustomSubObjectiveHeader"
and "CustomSubObjective"
? I don't know how to explain this. It is used in R6D3 Overload, which tells you to shutdown the Error alarm in Zone 292.
Note: unlike "WardenIntel"
, "CustomSubObjectiveHeader"
and "CustomSubObjective"
only accept reference to datablock. Do not use string.
12 - ForceCompleteObjective
Used in R6D1 to make the Main objective complete after the boss death.
Use "Layer"
to specify which layer to force win.
999 - EventBreak
Used in "EventsOnActivate"
with "OnActivateOnSolveItem"
set to true
. Split up the event sequence to several parts and execute each on solving objective item.
Take R6C1, R6C2 Main, R6D4 as example.
Last updated