Objective

The Objective node allows for creation of any objective game logic.

There are various types of objectives and each suit a certain usecase.

DefendXUnits

This node creates an objective that allows you to create a defend objective for tagged buildings or units.

PropertyRequiredDefaultDetails
Nametrue-Name of the Node that will be used for the Unity game object
TypetrueObjectiveType of node
SubTypetrueDefendXUnitsSubtype of node
Guidtrue-A UUIDv4 that you then use in the contract json
ContractObjectiveGuidtrue-The UUIDv4 that you've specified for the contract objective (this is currently set in the contract json but in future versions of the contract type builder you'll be able to specify it in the contract build file)
Titletrue-The default title for the objective. This is always overriden by the contract json for contract specific titles
Prioritytrue-Specifies the priority, which is the order in the objective list it appears (higher or lower)
DisplayToUserfalsetrueControls if this objective should be displayed to the player or not. Useful for hidden objectives
IsPrimaryObjectivetrue-Controls if the objective should be a primary or secondary objective
RequiredTagsOnUnittrue-Specifies the tags of any building or unit that should be defended
NumberOfUnitsToDefendfalse1Specifies the number of units that should be defended. Be aware, if you specify too many units and you don't have enough tagged units to satisfy the objective - it will autofail
DurationToDefendfalse0, which means foreverControls how long to defend the objective for. Duration type is specified by DurationType
DurationTypefalseRoundsSpecifies the type of duration to use if a DurationToDefend is set.

Usable: Rounds, Phases
ProgressFormatfalse-The progress format has access to certain variables of the objective and can be set out in a title.

Usable: [numberOfUnitsToDefend], [numberOfUnitsToDefendRemaining], [durationRemaining], [durationToOccupy], [percentageComplete], [pluralDurationType]

Example: [numberOfUnitsToDefend] Must Survive, [numberOfUnitsToDefendRemaining] Remain
Descriptiontrue-Development description helpful for debugging but not displayed to the player

Example

{
"Name": "Objective_DefendBuildings",
"Type": "Objective",
"SubType": "DefendXUnits",
"Guid": "67b973aa-d770-4be7-bfee-36b516bc4699", // Must match the objective guid in the contract .json
"ContractObjectiveGuid": "73275787-720a-4c33-9f20-953b1bbf48bd", // Must match the contract guid in the contract .json
"Title": "Defend buildings",
"Priority": 1,
"IsPrimaryObjective": true,
"RequiredTagsOnUnit": ["defend_building_3b"],
"ProgressFormat": "[numberOfUnitsToDefend] Must Survive, [numberOfUnitsToDefendRemaining] Remain",
"Description": "The objective for the player to defend the buildings"
}

DestroyLance

This node creates an objective that allows you to specify a lance that should be destroyed.

PropertyRequiredDefaultDetails
Nametrue-Name of the Node that will be used for the Unity game object
TypetrueObjectiveType of node
SubTypetrueDestroyLanceSubtype of node
Guidtrue-A UUIDv4 that you then use in the contract json
ContractObjectiveGuidtrue-The UUIDv4 that you've specified for the contract objective (this is currently set in the contract json but in future versions of the contract type builder you'll be able to specify it in the contract build file)
Titletrue-The default title for the objective. This is always overriden by the contract json for contract specific titles
Prioritytrue-Specifies the priority, which is the order in the objective list it appears (higher or lower)
DisplayToUserfalsetrueControls if this objective should be displayed to the player or not. Useful for hidden objectives
IsPrimaryObjectivetrue-Controls if the objective should be a primary or secondary objective
LanceToDestroyGuidtrue-UUIDv4 of the enemy lance spawner that you wish to link this objective to

Example

{
"Name": "Objective_DestroyLance",
"Type": "Objective",
"SubType": "DestroyLance",
"Guid": "a96a7b04-85cf-4052-8ceb-1063b273c87f", // Must match the objective guid in the contract .json
"ContractObjectiveGuid": "73275787-720a-4c33-9f20-953b1bbf48bd", // Must match the contract guid in the contract .json
"Title": "Destroy the turret lance", // This would almost always be overridden by the contract override (json)
"Priority": 1,
"IsPrimaryObjective": true,
"LanceToDestroyGuid": "223fd528-c333-4367-883c-a817acf24360" // UUIDv4 of the enemy lance spawner
}

OccupyRegion

This node swaps the contract override's employer and target team.

PropertyRequiredDefaultDetails
Nametrue-Name of the Node that will be used for the Unity game object
TypetrueObjectiveType of node
SubTypetrueOccupyRegionSubtype of node
Guidtrue-A UUIDv4 that you then use in the contract json
ContractObjectiveGuidtrue-The UUIDv4 that you've specified for the contract objective (this is currently set in the contract json but in future versions of the contract type builder you'll be able to specify it in the contract build file)
Titletrue-The default title for the objective. This is always overriden by the contract json for contract specific titles
Prioritytrue-Specifies the priority, which is the order in the objective list it appears (higher or lower)
DisplayToUserfalsetrueControls if this objective should be displayed to the player or not. Useful for hidden objectives
IsPrimaryObjectivetrue-Controls if the objective should be a primary or secondary objective
RegionGuidtrue-The UUIDv4 of the region that has been created with a Region node
LanceToUseRegionGuidtrue-Lance spawner UUIDv4 of the lance you wish to track with this object heading to the region
ProgressFormatfalse-The progress format has access to certain variables of the objective and can be set out in a title.

Usable: [occupyUnitsRemaining], [unitsOccupyingSoFar], [numberOfUnitsToOccupy], [opposingUnitsInRegion], [durationRemaining], [pluralDurationType]

Example: with [unitsOccupyingSoFar]/[numberOfUnitsToOccupy] unit(s)
Descriptiontrue-Development description helpful for debugging but not displayed to the player
RequiredTagsOnUnittrue-The tags required on the units that trigger this region and occupy objective
RequiredTagsOpposingUnitsfalse-The tags used to select who is classified as OpposingUnits
NumberOfUnitsToOccupytrue-The number of units to occupy this region to satisfy the objective. This either instantly completes the objective or starts the duration countdown
DurationToOccupyfalse0, which is foreverSpecifies how long the units should remain in the region for
UseDropshipfalsefalseIf set to true, once the occupy duration is over the Leopard dropship will appear

Example

{
"Name": "Objective_Investigate_Region",
"Type": "Objective",
"SubType": "OccupyRegion",
"Guid": "786166e2-22ea-45c1-9786-68df31958bd8", // Must match the objective guid in the contract .json
"ContractObjectiveGuid": "73275787-720a-4c33-9f20-953b1bbf48bd", // Must match the contract guid in the contract .json
"Title": "Investigate the Blackout",
"Priority": 1,
"IsPrimaryObjective": true,
"RegionGuid": "e7e9f35b-7ed8-404e-9dae-69be61de2dd3",
"LanceToUseRegionGuid": "76b654a6-4f2c-4a6f-86e6-d4cf868335fe", // Player lance GUID
"ProgressFormat": "with [unitsOccupyingSoFar]/[numberOfUnitsToOccupy] unit(s)",
"Description": "The objective for the player to investigate the blackout",
"RequiredTagsOnUnit": ["Player 1"],
"NumberOfUnitsToOccupy": 2
}