Release v1.4.0

This release introduces Extended Lances version 2, a major upgrade to Extended Lances, and some minor bugfixes.

The full release diff can be at the v1.4.0 pull request.

❗ Extended Lances v2 Upgrade ❗

As many of the features and fixes are related to EL - I'm drawing attention to it here. Some of the below fixes and improvements for EL v2 are covered below in the main changelog too.

  • Extended Lances v2 Upgrade
    • Extended Lances has been given a major upgrade. There were some fundamental issues and limitations with EL that preventing some modders achieving the results they wanted. Now EL should have fewer bugs and more flexibility.
    • Backwards compatible
    • Extensively tested

🚀 Features

  • Extended Lances: Support all other Teams
    • EL now supports TargetAlly, EmployerAlly, HostileToAll, NeutralToAll
    • This feature is on by default so modpacks might want to consider game balance
    • Support can be individually turned off in the settings.json in the EL section
    • Can be individually overridden with per-contract overrides
  • Extended Lances: Provide a way to force EL to allow specific LanceOverride set ups
    • A new settings.json property called ForceLanceOverrideSizeWithTag which controls this behaviour
    • When a LanceOverride (lance in the contract json) has this tag in its lanceTagSet/tagSetSourceFile then it will force EL to spawn this exact defined lance
    • lanceTagSet/tagSetSourceFile is not used in BattleTech so it's been adopted for this feature
  • Extended Lances: Provide a way to force EL to allow specific LanceDef set ups
    • A new settings.json property called ForceLanceDefSizeWithTag which controls this behaviour
    • When a LanceDef has this tag in its LanceTags/tagSetSourceFile then it will force EL to spawn this exact defined lance
    • LanceTags/tagSetSourceFile is not used in BattleTech so it's been adopted for this feature
  • Extended Lances: AutofillType setting
    • When EL autofills lances it has to decide how to handle units that are defined as empty (mechDef_None, vehicleDef_None)
    • A new settings.json property called AutofillType which controls this behaviour and it has two settings:
      • RespectEmpty is the legacy and still the default behaviour. When a LanceOverride or LanceDef has empty units defined (e.g. mechDef_None, vehicleDef_None) then it will respect those and not autofill them.
      • FillEmptyis 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.
  • Extended Lances: AutofillStartingFromContractDifficulty setting
    • A new settings.json property under ExtendedLances called AutofillStartingFromContractDifficulty
    • To aid in a fairer early game, you can now control when Extended Lances autofills units in lances that are below the faction's EL LanceSize by setting a contract difficulty (real difficulty - not UI/visible difficulty) to start autofilling from
    • This does not affect LanceDefs that fill up to the faction's LanceSize themselves (e.g. modpack Clan LanceDefs up to 5 or 6 etc)
    • For those who don't want this feature - set it to 1
  • Extended Lances: AutofillUnitCopyType setting
    • At times EL needs to copy units to create a varied and interesting lance when autofilling it up to the Faction Size (or any overridden size). 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.
    • A new settings.json property called AutofillUnitCopyType which controls this behaviour and it has two settings:
      • FirstInLance - The legacy behaviour. It would pick the first unit (index 0) and copy it (giving it new identify/clearing custom names etc)
      • RandomInLance - 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)

⚡Improvements

🐛 Bug Fixes

📝 Documentation / Website

  • Added ModTek v2 information in the setup page
  • Added per-contract override page
  • Added settings.json override with settings.modpack.json and settings.user.json in the settings page
  • Added SwapPlacement type EncounterStructure subtype node information in the contract builder API nodes area
  • Added CombatState type DisablePilotDeath subtype node information in the contract builder API nodes area
  • Updated Extended Lances information for version 2
  • Removed HBS mod loader information

🆙 Upgrade Instructions

  • If you're using MC without a modpack and none of your own changes, just delete the MC folder and move the new one into your mods folder
  • If you're using MC as part of a modpack, let the modpack authors update MC for you (using the below guide)
  • If you're using MC without a modpack but you've made some of your own changes to the configs, or you're a modpack author:
    • Copy into your Mods/MissionControl folder
      • MissionControl.dll
      • mod.json
      • config/Contracts/My_Contract_ID_Example.json
      • config/Contracts/My_FP_Contract_ID_Example.json

Add the following to your settings.json:

Under ExtendedLances add:

"EnableForTargetAlly": true,
"EnableForEmployerAlly": true,
"EnableForHostileToAll": true,
"EnableForNeutralToAll": true,
"AutofillType": "RespectEmpty",
"AutofillUnitCopyType": "RandomInLance",
"AutofillStartingFromContractDifficulty": 3,
"ForceLanceOverrideSizeWithTag": "mc_force_extended_lance",
"ForceLanceDefSizeWithTag": "mc_force_extended_lance",

and update to have mc_no_extended_lance:

"SkipWhenExcludeTagsContain": ["mc_no_extended_lance", "no_extended_lance"],

Under ExtendedBoundaries/Overrides add:

{
"ContractTypeName": "AmbushConvoy",
"IncreaseBoundarySizeByPercentage": 0.2
}