Extended Lances

Increase the sizes of lances where it makes sense. For the vanilla game this does nothing if the LanceSizes section has not been set up by a player or modpack. A player or modpack can set up Clan stars (5 mechs) or Comstar Demi-lances / Reinforced lances (6 mechs).

This works for both vanilla spawn points for contract types and spawns created by Mission Control.

Extended Lances can change the lance size of vanilla lance spawns and ones created with Mission Control's Additional Lances feature.

Extended Lances is very flexible and allows for full control on how a player/modder wishes to extend a lance. You can extend it in four ways:

  • LanceSize determining the global lance size for the faction. See the below table.
  • Per-contract override (MissionControl/config/Contracts or MissionControl/config/Flashpoints) that sets a specific lance size
  • LanceDef that has a tag (defined in ForceLanceDefSizeWithTag in the settings.json) in its LanceTags/tagSetSourceFile property to enforce the unit size defined in the LanceDef
  • LanceOverride (in the contract json) that has a tag (defined in ForceLanceOverrideSizeWithTag in the settings.json) in its lanceTagSet/tagSetSourceFile property to enforce the LanceOverride unit size defined in the ContractOverride (contract json)

Settings Breakdown

"ExtendedLances": {
"Enable": true,
"EnableForFlashpoints": true,
"EnableForStory": false,
"EnableForTargetAlly": true,
"EnableForEmployerAlly": true,
"EnableForHostileToAll": true,
"EnableForNeutralToAll": true,
"Autofill": true,
"AutofillType": "RespectEmpty",
"AutofillUnitCopyType": "RandomInLance",
"ExcludeContractTypes": ["SoloDuel", "DuoDuel"],
"SkipWhenTaggedWithAny": ["lance_type_solo"],
"SkipWhenTaggedWithAll": [],
"SkipWhenExcludeTagsContain": ["mc_no_extended_lance", "no_extended_lance"],
"ForceLanceOverrideSizeWithTag": "mc_force_extended_lance",
"ForceLanceDefSizeWithTag": "mc_force_extended_lance",
"LanceSizes": {
"5": [
{
"Faction": "AuriganRestoration"
},
{
"Faction": "TaurianConcordat",
"DifficultyMod": -1
}
],
"6": [
{
"Faction": "Comstar",
"DifficultyMod": -3
}
]
}
}

All the below properties are optional.

PropertyDefaultDetails
EnabletrueShould this feature be enabled or not?
EnableForFlashpointstrueEnable feature for Flashpoints if EnableFlashpointOverrides is true
EnableForStoryfalseEnable feature for Story if EnableStoryOverrides is true
EnableForTargetAllytrueEnables this feature for TargetAlly team if true
EnableForEmployerAllytrueEnables this feature for EmployerAlly team if true
EnableForHostileToAlltrueEnables this feature for HostileToAll team if true
EnableForNeutralToAlltrueEnables this feature for NeutralToAll team if true
AutofilltrueIf true, EL will attempt to autofill a lance up to the lance size set below under LanceSizes. This is currently just a copy of the unit in the first lance slot
AutofillTypeRespectEmptyAllow for the autofill to be configured.

RespectEmpty is the legacy and default. When a LanceOverride or LanceDef has empty units defined (e.g. mechDef_None, vehicleDef_None) then it will respect those and not autofill them.

FillEmpty is a new autofill behaviour. When a LanceOverride or LanceDef has empty units defined (e.g. mechDef_None, vehicleDef_None) then it will autofill and replace them so units will spawn in those slots.
AutofillUnitCopyTypeRandomInLanceAt times Extended Lances needs to copy units to great a variable and interesting lance when autofilling it up to the Faction Size (or any overridden size). There are two behaviours for copying units. slot.

In this case EL tries to copy a 'Tagged' lance so to use this tagged UnitSpawnPointOverride and leverage the tags to provide variation. If there are no 'Tagged' lances available to copy it will use the defined behaviour in AutofillUnitCopyType in the settings.json.

FirstInLance is the legacy behaviour. It would pick the first unit (index 0) and copy it (giving it new identify/clearing custom names etc).

RandomInLance is the new behaviour and is now the default behaviour. It picks a random unit from the Lance to copy (giving it new identify/clearing custom names etc).
AutofillStartingFromContractDifficulty3Will not autofill units until the defined contract difficulty (real difficulty and not UI/visible UI difficulty). This was added to help make a fairer early game. LanceDefs selected that contain the units will still be used. This only affects autofilling LanceDefs/LanceOverrides that are below the Faction LanceSize and aren't filled with empty units (e.g. mechDef_None etc)
SkipWhenTaggedWithAny["lance_type_solo"]Skip if ANY of the set tags exist under a lance lanceTagSet in the contract override JSON being used
SkipWhenTaggedWithAll[]Skip if ALL of the set tags exist under a lance lanceTagSet in the contract override JSON being used
SkipWhenExcludeTagsContain["mc_no_extended_lance"]Skip if ANY of the set tags exist under a lance lanceExcludedTagSet in the contract override JSON
ForceLanceOverrideSizeWithTagmc_force_extended_lanceProvides a way to force EL to allow specific LanceOverride in a ContractOverride (the lance section in a contract json) set ups.

For example, A ContractOverride's LanceOverride 'Manual' lance set up has 8 UnitSpawnPointOverrides defined in it. The modder wants this contract to only spawn this exact set up. The modder would add the tag 'mc_force_extended_lance' in the 'lanceTagSet/tagSetSourceFile' property of the LanceOverride. Then exactly 8 units will be spawned no matter what EL settings exist (e.g. overriding of the settings.json Faction Size and per-contract overrides).
ForceLanceDefSizeWithTagmc_force_extended_lanceProvides a way to force EL to allow specific LanceDef set ups.

For example, A LanceDef of 3 units is selected. If it contains a special tag in the 'LanceTags/tagSetSourceFile' property 'mc_force_extended_lance' - then only exactly 3 units will be spawned no matter what EL settings exist (e.g. overriding of the settings.json Faction Size and per-contract overrides).
LanceSizesN/ASets which faction should have higher lance sizes. By default all faction lances are 4 units like vanilla.

Lance Sizes

PropertyRequired?DefaultExample
Any string number above 4 (e.g. "5")OptionalN/ASee Table Below

Lance Sizes Data

PropertyRequired?DefaultExample
FactiontruetrueThe faction short name is used to identify which faction should have the set number of units
DifficultyModOptionaltrueThe difficulty modifier changes the lance selection criteria so a lower, or higher, difficulty lance is selected

Faction Ids

The Faction name you use is taken from your BATTLETECH/BattleTech_Data/StreamingAssets/data/enums/Faction.json file and the Name property. You can also refer to modded factions here too in the same way, by using their Name property.

The vanilla factions are:

  • Davion
  • Liao
  • Kurita
  • Marik
  • Steiner
  • TaurianConcordat
  • MagistracyOfCanopus
  • AuriganDirectorate
  • AuriganRestoration
  • ComStar
  • MercenaryReviewBoard
  • AuriganPirates
  • AuriganMercenaries
  • Locals
  • Unknown
  • MagistracyCentrella
  • MajestyMetals
  • Nautilus
  • Betrayers
  • FlakJackals
  • LocalsBrockwayRefugees
  • SelfEmployed
  • MasonsMarauders
  • SteelBeast
  • KellHounds
  • RazorbackMercs
  • HostileMercenaries
  • EmeraldDawn
  • SianTriumphant
  • ProfHorvat
  • RedHareRegiment
  • EdCorbu
  • DuchyOfAndurien
  • BlackCalderaDefense
  • GrayDeathLegion
  • HouseNakano
  • SelfEmployed_Yang
  • SecuritySolutionsInc
  • PaladinProtectionLLC
  • HouseKhulan
  • BlackWidowCompany
  • BountyHunterAssociates
  • SelfEmployed_Farah
  • SelfEmployed_Sumire
  • Moderbjorn
  • BaumannGroup

Examples

For in-depth examples see the testing document for Extended Lances v2.