Custom Contract Types
Mission Control adds and builds custom contract types into the game. It does this using a builder approach. A json contract type build file defines how the encounter layer should be and behave, then a normal contract .json file interacts with it like normal.
Custom contract types can even be used to create new story contracts, or make much more unique flashpoint missions. It's still a heavy work in progress but more features will be added to it to support great contract creation.
Contract Type Build File
The contract type build files exist in the MissionControl/contractTypeBuilds/
folder. Each file defines how the custom contract type should be built.
{"Key": "SoloDuel", // Links to the ContractType Name"Chunks": [{"Name": "Chunk_PlayerLance","Type": "Chunk","SubType": "PlayerLance","Children": [{"Name": "Spawner_PlayerLance","Type": "Spawner","SubType": "SimpleSpawner","Position": {"Type": "World", // World, Local"Value": { "x": -90, "y": 86, "z": 40 }},"Rotation": {"Type": "World", // World, Local"Value": { "x": 0, "y": 30, "z": 0 }},"Team": "Player1","Guid": "76b654a6-4f2c-4a6f-86e6-d4cf868335fe", // Must be this Guid and the contract .json must have this specific. It's hardcoded in BT for PlayerLance."SpawnPoints": 1,"SpawnPointGuids": ["ec9d2280-ca9a-4d90-8a20-963d8a4c0a39"], // Must match the unit spawn guids in the contract .json"SpawnType": "Instant" // Leopard, DropPod, Instant}]},{"Name": "Chunk_DestroyWholeLance","Type": "Chunk","SubType": "DestroyWholeLance","Position": {"Type": "World", // World, Local"Value": { "x": 0, "y": 0, "z": 0 }},"Children": [{"Name": "Lance_Enemy_OpposingForce","Type": "Spawner","SubType": "SimpleSpawner","Position": {"Type": "World", // World, Local"Value": { "x": 0, "y": 60, "z": 650 }},"Rotation": {"Type": "World", // World, Local"Value": { "x": 0, "y": 180, "z": 0 }},"Team": "Target","Guid": "f426f0dc-969d-477d-81a9-d02f9e1eff79", // Must match the spawner guids in the contract .json"SpawnPoints": 1,"SpawnPointGuids": ["6cd3107e-0f9d-4809-ab8c-fb30faf4cd80"], // Must match the unit spawn guids in the contract .json"SpawnType": "Instant" // Leopard, DropPod, Instant},{"Name": "Objective_DestroyLance","Type": "Objective","SubType": "DestroyLance","Guid": "a0b9c5b2-c594-4c5a-be1d-028a51c51519", // 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 enemy lance","Priority": 1,"IsPrimaryObjective": true,"LanceToDestroyGuid": "f426f0dc-969d-477d-81a9-d02f9e1eff79"}]},{"Name": "Chunk_EncounterBoundary","Type": "Chunk","SubType": "EncounterBoundary","Children": [{"Name": "EncounterBoundaryRect","Type": "Region","SubType": "Boundary","Position": {"Type": "World", // World, Local"Value": { "x": 15, "y": 50, "z": 450 }},"Width": 900,"Length": 1024}]},{"Name": "Chunk_DefaultDialogue","Type": "Chunk","SubType": "Dialogue","Children": [{"Name": "Dialogue_MissionStart","Type": "Dialogue","SubType": "Simple","Guid": "73df8d9c-a274-48fd-98c9-2bd0d7860e83", // Must match the dialogue guid in the contract .json"ShowOnlyOnce": true},{"Name": "Dialogue_MissionSuccess","Type": "Dialogue","SubType": "Simple","Guid": "4011a4c3-cba2-4d22-b2b3-3b19a3297ab9", // Must match the dialogue guid in the contract .json"ShowOnlyOnce": true},{"Name": "Dialogue_MissionFailure","Type": "Dialogue","SubType": "Simple","Guid": "d3d33d95-9ed7-4686-b9eb-954ebe51cc02", // Must match the dialogue guid in the contract .json"ShowOnlyOnce": true}]},{"Name": "Chunk_DuelTaunt","Type": "Chunk","SubType": "Dialogue","Children": [{"Name": "Dialogue_DuelTaunt","Type": "Dialogue","SubType": "Simple","Guid": "8971ddc6-a882-4066-923f-f8be03450ce2", // Must match the dialogue guid in the contract .json"Trigger": "OnFirstContact"}]},{"Name": "Chunk_SwapSpawnerPlacement","Type": "Chunk","SubType": "Placement","ControlledByContract": true,"Guid": "ed007c52-f4cb-4bfc-842a-a50454d8a82a","Children": [{"Name": "SwapPlacement_SwapLanceSpawners","Type": "SwapPlacement","SubType": "EncounterStructure","TargetGuid1": "76b654a6-4f2c-4a6f-86e6-d4cf868335fe", // Player spawner"TargetGuid2": "f426f0dc-969d-477d-81a9-d02f9e1eff79" // Enemy spawner}]}]}
A full breakdown explaining the above will be added soon