Understanding Structure
Common
The common.jsonc outlays all the general elements and logic for the contract type. Some structure is required, whilst others is flexible.
{"Key": "SoloDuel", // Required. Links to the ContractType Name"ContractObjective": [{}], // Optional. Not fully implemented in v1.0.0 yet so does nothing"Plots": [// Optional. Enables plots in the map. See the Plots section in the API],"Chunks": [// Required. Chunks go here. See the Chunks section in the API docs],"Triggers": [// Required. Triggers go here. See the Triggers section in the API docs]}
Plots
BattleTech maps use a system called Plots. Plots are typically collections of buildings, or bases that help make vanilla maps seem a bit more dynamic. They are turned on and off by the HBS designer when they created each contract type on a map.
From this section you can decide which plots you want to enable to help create varied experiences.
Read the Plots API section for detailed information.
Chunks
A chunk is a collection of game logic game objects which are related. A named chunk, e.g. PlayerLance, often has special logic associated with it whilst using chunks purely as a logical collection of 'like' logics can also be used, e.g. Container.
Under a chunk you create Node children. A node is a specific logic piece like the ability to place a Spawner or create an Objective.
Read the Chunks API section for detailed information.
Triggers
BattleTech's encounter system makes use of a Trigger, Condition and Result system.
- A
Triggeris an event that is sent out. For example,OnEncounterBegin,OnObjectiveUpdatedorOnDialogueComplete - A
Conditionis a check on a set criteria to determine if the linkedResultshould run. For example, if an objective's status is 'Success' - A
Resultis an action that is taken. This can be anything like activate anotherChunk, enable anObjective, change theCamerafocus or fire artillery
Read the Triggers API section for detailed information.
Map Specific
For every map the contract type is set up to run on a .jsonc for map specific settings (most often positions and rotations), for example deathvalley_desert_open_area.jsonc (the name can be anything you want but it's a good idea to include the map name, biome and any other specifier)
// This file overrides the contract type 'common.json' file with map specific values (such as locations and rotations){"EncounterLayerId": "mapGeneral_frostySlopes_iTnd.d8bb1d16-3a64-40a9-a081-03a365fd0fcf", // Same Id set in the `EncounterLayerId`"Overrides": [// Required. Overrides go here, for example positions and rotations unique to the map]}
Encounter Layer Id
This must be the exact EncounterLayerId set in your encounter layer you created (see Setup - Create an encounter layer). This allows you to have multiple override files for the same map and same contact type if you created a second encounter layer for it.
Overrides
This allows you to specify which information from common.jsonc to override. The format of overrides is the Json.NET query/select system.
An example of information to override would be turning on a Plot specific to a map, setting the lance spawn positions or setting the encounter boundary size and position.
Read the Overrides API section for detailed information.