Skip to content

BattletechModders/TisButAScratch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TisButAScratch

Requires CustomComponents and CustomAmmoCategories

v1.1.0.0 and higher requires modtek v3 or higher

This mod overhauls the Battletech injury system, and lets modders apply different stat effects based on injuries a pilot receives. When a pilot receives an injury, a roll is made to determine both the location of the injury and the injury itself. Injuries are specific to a location; Valid injuryLocs are Head, ArmL, ArmR, Torso, LegL and LegR. This mod is fully save-game compatible, and pilots with existing injuries will roll random injury effects on the first time the mod is loaded.

Features included:

Injured Piloting:

Pilots with injuries are (mostly) allowed to drop on contracts; however, they suffer the penalties their injuries entail. In addition, they are at greater risk of being DEBILITATED (see below).

Injuries can by checked be hovering over the red "injured" indicator in pilot portraits, both in the barracks roster list and the lance selection panel, or by hovering over the "injured" status bar in the pilot details panel of the barracks. e.g.:

Pilot Portrait

TextPop

Barracks

TextPop

Debilitating Injuries:

If an injury severity in a single location exceeds a given threshold, a pilot may become debilitated, which incapacitates them for the current mission. Pilots that are debilitated are unable to drop on contracts, even after their injuries have healed. The debilitated status is tracked via pilot tags of the form DEBILITATED_InjuryLoc, depending on the injured location. Valid debilitated tags are DEBILITATED_Head, DEBILITATED_ArmL, DEBILITATED_Torso, DEBILITATED_ArmR, DEBILITATED_LegL, and DEBILITATED_LegR. These tags can therefore be removed by events (or other actions that alter tags). The timeHealsAllWounds setting is provided which allows debilitating injuries to heal given enough time. Multiple debilitating injuries will likewise take more time to heal. Example events have been included wherein the player can choose to pay for a "rehabilitation" which removes the debilitated tag for the injuried location, allowing the pilot to be used in contracts, although they will still suffer the effects of the initial injuries until they injuries heal. Note, that if multiple locations on the pilot have debilitating injuries, multiple events will need to fire.

TextPop

NEW - a line has been added to these tooltips to indicate the current severity of injuries and the threshold for becoming debilitated:

TextPop

Mission Killed Injuries:

If the total severity of injuries regardless of location exceeds a given threshold, a pilot can be Mission Killed, which incapacitates them for the current mission but does not prevent them from deploying on subsequent contracts. Think of it like "overcome by pain".

Bleeding Out Injuries:

Certain injuries can be defined that inflict an informal Bleeding Out status. These injuries have durationData defined that, when expired, render the pilot incapacitated and/or lethally injured (depending on settings) In versions 1.0.2.1 and higher, durationData for bleeding out has been replaced by calculations per-pilot based on Guts, Health, and other settings. Pilots now have a calculated "BloodBank". If their BloodBank reaches 0 at the end of their activation, they die. BloodBank is decreased every round by the severity of the "Bleeding Out" injury, modified by additiveBleedingFactor for any additional "Bleeding Out" injuries after the first.

In addition, escalating penalties can be defined, inflicting debuffs in-mission on pilots the longer they bleed out. Lastly, semi-persistent debuffs can optionally be inflicted on pilots the longer they bleed out, e.g. -3 Piloting for 20 days.

The status effect gives an indicator of activations remain before the pilot bleeds out. End the mission or eject the pilot to avoid death/incapacitation.

TextPop

Advanced Life Support Gear:

To completely disabled TBAS for a unit, give the unit def (not ChassisDef) a tag from setting disableTBASTag (by default "TBAS_Disabled")

Mech gear to influence injury effects:

Gear that sets DisablesBleeding to True will prevent the pilot from taking bleeding injuries.

	"statisticData": {
		"statName": "DisablesBleeding",
		"operation": "Set",
		"modValue": "true",
		"modType": "System.Boolean"
	}

Gear that sets NullifiesInjuryEffects to True will prevent any effects from TBAS injuries from affecting pilot. They will still take TBAS injuries, they just won't have an effect in combat.

	"statisticData": {
		"statName": "NullifiesInjuryEffects",
		"operation": "Set",
		"modValue": "true",
		"modType": "System.Boolean"
	}

Gear that alters BleedingRateMulti will decrease (if < 1) or increase (if >1) the rate at which pilots bleed out, e.g.:

	"statisticData": {
		"statName": "BleedingRateMulti",
		"operation": "Float_Multiply",
		"modValue": "0.25",
		"modType": "System.Single"
		"targetCollection": "Pilot"
	}

Gear that sets NullifiesInjuryEffects to True will prevent injuries from causing maluses in combat (and necessarily precludes taking bleeding injuries, although regular injuries will still be sustained).

Pain Shunt:

Pilots with a specific tag will ignore injuries from overheating, component/ammo explosions, or neural feedback from DNI/EI cockpits.

Piloting Requirements:

Units with certain component tags can require pilots have certain pilot tags in order to pilot those units, or prevent pilots with certain tags from piloting them. Intended to prevent just any old grunt from using a DNI/EI cockpit (pilot would need the "implant" tag), but could also be used to require "ECM Training" for a pilot to use a mech with advanced ECM gear, etc.

Increased Injury Heal Time:

Injuries take longer to heal, defined in the settings below.

In vanilla, healing time is a function of the # of injuries, whether a pilot was incapactiated or had a "lethal injury", and pilot health. All things being equal, a pilot with health 3 heals slower than a pilot with health 4. This behavior is not changed. The formula for injury healing cost follows, with vanilla settings prefixed by SimGameConstants:

([{SimGameConstants.BaseInjuryDamageCost / pilothealth] * injuryHealTimeMultiplier} + [severity * severityCost] + [debilitatedCost / {medtechDebilMultiplier * #medtech}]) / (SimGameConstants.DailyHealValue + [SimGameConstants.MedTechSkillMod * #medtech])

Vehicle Pilot Injuries:

The setting crewOrCockpitCustomID defines components that when damaged/destroyed automatically injure pilots, including vehicle pilots.

The setting injureVehiclePilotOnDestroy controls vehicle pilot injury behavior when vehicles are destroyed. Possible values are "MAX", "HIGH", "SINGLE", "OFF". MAX functions the same as a CT destruction for mechs (max injuries = pilot usually dies.) "HIGH" is effectively MAX - 1; pilot will be severely injured but not dead. "SINGLE" inflicts a single injury on Vehicle destruction. "OFF" means no guaranteed injury on vehicle destruction (does not disable injuries from crewOrCockpitCustomID however).

Injuries are defined in the settings.json, and have the following structure:

"InjuryEffectsList": [
		{
			"injuryID" : "ArmLBrokenCompound",
			"injuryID_Post" : "ArmLBroken",
			"injuryName" : "Compound Fracture - Left Arm",
			"injuryLoc" : "ArmL",
			"couldBeThermal" : false,
			"severity" : 1,
			"description" : "This pilot has a compound fracture in their arm, and is suffering an accuracy penalty.",
			"InjuryTags":[],
			"effectDataJO" : [
				{
					"durationData": {
						"duration": 4,
						"ticksOnActivations": true,
						"useActivationsOfTarget": true,
						"stackLimit": 1
					},
					"targetingData": {
						"effectTriggerType": "Passive",
						"effectTargetType": "Creator",
						"showInStatusPanel": true
					},
					"effectType": "StatisticEffect",
					"Description": {
						"Id": "ArmLCmpdBroken_bleedout",
						"Name": "Broken Arm, Compound - Left",
						"Details": "This pilot has a compound fracture in their arm, and is suffering an accuracy penalty.",
						"Icon": "brokenarm"
					},
					"nature": "Buff",
					"statisticData": {
						"modType": "System.Single",
						"modValue": "7.0",
						"operation": "Float_Add",
						"statName": "AccuracyModifier",
						"targetAmmoCategory": "NotSet",
						"targetCollection": "Weapon",
						"targetWeaponCategory": "NotSet",
						"targetWeaponSubType": "NotSet",
						"targetWeaponType": "NotSet"
					}
				}
			]
		},

injuryID - the unique ID of this injury.

injuryName - the human-legible name of this injury.

injuryID_Post - optionally defines the injuryID of an injury that will replace this injury after combat has ended; required for injuries that inflict Bleeding Out.

injuryLoc - the location of the injury. Valid injuryLocs are Head, ArmL, ArmR, Torso, LegL and LegR

couldBeThermal - used to determine if this injury can occur due to overheating or knockdown (it wouldn't make sense to have a broken arm from overheating, or to recieve severe burns from being knocked down, for example). IMPORTANT: There needs to be at least one injury defined for both every location and value of couldBeThermal.

severity - used in conjunction with both the below settings missionKillSeverityThreshold and debilSeverityThreshold. Although injured pilots are no longer prevented from piloting mechs, particularly severe or repeated injuries to the same location can result in the pilot becoming incapacitated, DEBILITATED, and unable to pilot if the total severity of injuries in a given location exceeds the value set in debilSeverityThreshold (value < 1 disables debilitating injuries). Similarly, a pilot will become incapacitated if the total severity of injuries sustained in the current contract exceeds their missionKillSeverityThreshold. The threshold set missionKillSeverityThreshold is the "default" threshold for all pilots. This value can be modified for individual pilots/units by altering the Pilot statistic "MissionKilledThreshold" via equipment, traits, etc.

description - human-legible description of this injury and its effects.

InjuryTags - list of tags that will be added to the pilotDef when this injury is inflicted. Requested feature for MechAffinity to use to create more permanent debuffs

effectDataJO - list of status effects this injury applies. Importantly, durationData is used in conjunction with the status effect name suffix and BleedingOutSuffix setting below to note than an injury should inflict Bleeding Out, and either incapacitate or kill the pilot on expiration.

Overcrowding Effects:

The number of available pilot slots in the barracks is now tracked via a company stat RosterCapacityRemaining which can be used in events, results blocks, etc. This statistic is automagically updated on save, save load, and when pilots are hired/fired/killed.

A new settings.json setting CanIntentionallyHotBunk allows players to intentionally hire more pilots than their barracks can support; otherwise players can only exceed the limit via events or other sources that directly add pilots to the roster without going through the hiring hall.

In addition, a settings mod.json setting OvercrowdingEffects has been added, allowing various malus'es to be applied to player pilots if the absolute value of RosterCapacityRemaining exceeds the Threshold value set for configured OvercrowdingEffects. Each pilot can only get one OvercrowdingEffect, which is chosen randomly from the pool of effects where the threshold is met.

An example OvercrowdingEffects follows, which can apply if the player has at least two pilots over their number of barracks slots (not including the commander).

"OvercrowdingEffects": [
		{
			"ID": "StinkySheets",
			"Threshold": 2,
			"Name": "Stinky Sheets",
			"description": "This pilot is tired from sleeping in stank ass sheets someone else used. Hotbunking sucks.",
			"effectDataJO": [
				{
					"durationData": {},
					"targetingData": {
						"effectTriggerType": "Passive",
						"effectTargetType": "Creator",
						"showInStatusPanel": true
					},
					"effectType": "StatisticEffect",
					"Description": {
						"Id": "StinkySheets_Effect",
						"Name": "Stinky Sheets",
						"Details": "This pilot is tired from sleeping in stank ass sheets someone else used. Hotbunking sucks.",
						"Icon": "seeingstars"
					},
					"nature": "Buff",
					"statisticData": {
						"statName": "ToHitThisActor",
						"operation": "Float_Multiply",
						"modValue": "2.0",
						"modType": "System.Single"
					}
				}
			]
		}
	]

General Settings:


{
	"enableLogging": true,
	"enableTrace": true,
	"enableLethalTorsoHead": true,
	"debilIncapacitates": false,
	"BleedingOutLethal": false,
	"BleedingOutSuffix": "_bleedout",
	"enableInternalDmgInjuries": true,
	"pilotPainShunt": "pilot_PainShunt",
	"pilotingReqs": {
		"PilotNeedsSpecialTag": {
			"PilotTags": [
				"commander_player",
				"!pilot_criminal"
			],
			"PilotTagDisplay": "Pilot must be commander and not criminal"
		}
	},
	"internalDmgStatName": "InjureOnStructDmg",
	"internalDmgInjuryLimit": 1,
	"internalDmgLvlReq": 20,
	"timeHealsAllWounds": true,
	"missionKillSeverityThreshold": 6,
	"reInjureWeightAppliesCurrentContract": false,
	"reInjureLocWeight": 11,
	"debilSeverityThreshold": 3,
	"severityCost": 360,
	"debilitatedCost": 4320,
	"medtechDebilMultiplier": 0.5,
	"injuryHealTimeMultiplier": 5.0,
	"crewOrCockpitCustomID": [
		"Cockpit",
		"CrewCompartment",
		"LifeSupportA",
		"LifeSupportB",
		"SensorsA",
		"SensorsB"
	],
	"lifeSupportCustomID": [
		"LifeSupportA",
		"LifeSupportB"
	],
	"OverheatInjuryStat": "InjureOnOverheat",
	"isTorsoMountStatName": "isTorsoMount",
	"lifeSupportSupportsLifeTM": true,
	"internalDmgInjuryLocs": [
		"Head",
		"CenterTorso"
	],
	"InjuryEffectsList": [],
	"InternalDmgInjuries": [],
	"additiveBleedingFactor": 0.75,
	"minBloodBank": 2,
	"baseBloodBankAdd": 0,
	"UseGutsForBloodBank": true,
	"factorBloodBankMult": 1,
	"UseBleedingEffects": true,
	"BleedingEffects": [],
	"UseSimBleedingEffects": true,
	"SimBleedingEffects": []
}

enableLogging - bool, enables logging.

enableTrace - bool, enables trace logging (not usually needed).

enableLethalTorsoHead - bool, if true, debilitated Torso or Head is lethal.

debilIncapacitates - bool, if 'true', becoming debilitated will immediately incapacitate pilots during missions

enableInternalDmgInjuries - bool, if true, enables a feature that injures pilots when they recieve structure damage if certain equipment is mounted (i.e DNI or EI cockpits).

pilotPainShunt - string, pilot tag that denotes pilot has a "Pain Shunt", rendering them immune to injuries from ammo/component explosions, overheating, and neural feedback.

pilotingReqs - NOTE: Format has changes as of 1.1.1.0! Dictionary of PilotingReqs. They Keys to this dictionary correspond to the ComponentTag for which you are setting requirements.:

  • ComponentTag - the tag on the component -> DEPRECATED
  • PilotTags - field name changes to PilotTags List of tags comprising piloting requirements. items starting with ! will be parsed as "not" tag; i.e. if !pilot_criminal, pilot must not have pilot_criminal tag. If multiple requirement tags set here, all requirements must be met, but pilots with any exclusion tag will be unable to pilot.
  • PilotTagDisplay - Human-legible display statement for PilotTag requirement not met message. Hard-coded strings have been removed from the error message, so this should be a statement on its own, e.g. "Pilot must be left-handed and not born on a Tuesday."

BleedingOutLethal - bool, determines whether Bleeding Out from an injury is lethal (true) or merely incapacitates (false)

BleedingOutSuffix - string, ending string of status effect Id, not the injuryID to denote whether the injury should inflict Bleeding Out and incapacitate or kill the pilot on expiration (per BleedingOutLethal)

internalDmgStatName - name of bool statistic being used in gear to determine whether internal structure damage results in injuries. Example stat effect added to DNI cockpit given below:

{
            "durationData": {
                "duration": -1,
                "stackLimit": -1
            },
            "targetingData": {
                "effectTargetsCreator": true,
                "effectTriggerType": "Passive",
                "effectTargetType": "Creator"
            },
            "effectType": "StatisticEffect",
            "Description": {
                "Id": "DNI-Penalty",
                "Name": "InjureOnStructDmg",
                "Details": "Pilot will recieve injury when internal structure damage is sustained.",
                "Icon": "uixSvgIcon_equipment_Cockpit"
            },
            "nature": "Debuff",
            "statisticData": {
                "statName": "InjureOnStructDmg",
                "operation": "Set",
                "modValue": "true",
                "modType": "System.Boolean"
            }
        },

internalDmgInjuryLimit - int, defines the maximum number of injuries a pilot can recieve due to the above effect. Disabled if < 1.

internalDmgLvlReq - float, required single-point internal damage for pilot to be injured. e.g., if this was set to 20, LRMs would never inflict an injury; even though the total damage of the salvo might by >20, no single missile inflicts >20 damage.

timeHealsAllWounds - bool, if true debilitating injuries will heal with time. if false, pilots will remain DEBILITATED until the tag is removed via event.

missionKillSeverityThreshold - int, as discussed above defines the total severity of injuries required for a pilot to be incapacitated. Disabled if < 1.

reInjureWeightAppliesCurrentContract - bool, determines whether additional likelihood of injuring a given pilot location (e.g, Left Leg) applies for injuries sustained in the current contract (true), or only for injuries sustained in previous contracts (false).

reInjureLocWeight - int, additional weight for currently injured locations to be more likely to be RE-injured. Effectively makes Debilitating Injuries more likely if you're already injured. Table for various values follows:

Weight Odds of Location Reinjury (x : 1 Odds) % Chance of Location Reinjury
0 0.166666667 14.29
1 0.333333333 25.00
2 0.5 33.33
3 0.666666667 40.00
4 0.833333333 45.45
5 1 50.00
6 1.166666667 53.85
7 1.333333333 57.14
8 1.5 60.00
9 1.666666667 62.50
10 1.833333333 64.71
11 2 66.67
12 2.166666667 68.42
13 2.333333333 70.00
14 2.5 71.43
15 2.666666667 72.73
16 2.833333333 73.91
17 3 75.00
18 3.166666667 76.00
19 3.333333333 76.92
20 3.5 77.78
21 3.666666667 78.57
22 3.833333333 79.31
23 4 80.00
24 4.166666667 80.65
25 4.333333333 81.25
26 4.5 81.82
27 4.666666667 82.35
28 4.833333333 82.86
29 5 83.33

debilSeverityThreshold - int, as discussed above defines the total severity of injuries in a single location required for a pilot to be DEBILITATED. Disabled if < 1.

severityCost - int, increases healing time required as a factor of severity

debilitatedCost - int, increases healing time required as a factor of pilot having DEBILITATED tag

medtechDebilMultiplier - float, multiplier for medtech skill divisor of debilitatedCost. E.g. for debiledCost = 2000, MedTechSkill = 10, and medtechDebilMultiplier = 0.5, injury healing cost would be 2000/ (10 * .5)

injuryHealTimeMultiplier - float, multiplier for vanilla healing time (severityCost and debiledCost are added after this multiplier)

crewOrCockpitCustomID - List - list of CustomId (from CustomComponents) that defines "cockpit components" which will inflict injuries on critical hits. Only for vehicles and non-head-mounted cockpits (in the case of head-mounted cockpits, injuries are inflicted by normal "head hit" system).

injureVehiclePilotOnDestroy - string. Controls vehicle pilot injury behavior when vehicles are destroyed. Possible values are "MAX", "HIGH", "SINGLE", "OFF". MAX functions the same as a CT destruction for mechs (max injuries = pilot usually dies.) "HIGH" is effectively MAX - 1; pilot will be severely injured but not dead. "SINGLE" inflicts a single injury on Vehicle destruction. "OFF" means no guaranteed injury on vehicle destruction (does not disable injuries from crewOrCockpitCustomID however).

lifeSupportCustomID - List - list of CustomId (from CustomComponents) that defines specific life support components which, if a torso-mounted cockpit is used and "lifeSupportSupportsLifeTM": true will cause an injury or pilot death when life support is critted or destroyed, respectively.

disableTBASTag - string, by default "TBAS_Disabled", unit Tag (MechDef, VehicleDef, etc) that disables TBAS functionality for that unit.

OverheatInjuryStat - string. name of bool statistic (on AbstractActor statcollection) set by critical effects, etc to note that a pilot should take an injury immediately upon overheating. primarily used by damaged life support, etc. similar setup as below.

isTorsoMountStatName - string, name of bool statistic being used in gear to determine whether a torso-mounted cockpit is being used. Example stat effect added to torso-mount cockpit component below:

{
            "durationData": {
                "duration": -1,
                "stackLimit": -1
            },
            "targetingData": {
                "effectTargetsCreator": true,
                "effectTriggerType": "Passive",
                "effectTargetType": "Creator"
            },
            "effectType": "StatisticEffect",
            "Description": {
                "Id": "Torso-Mounted",
                "Name": "isTorsoMount",
                "Details": "Torso mounted cockpit, no injuries on head hits.",
                "Icon": "uixSvgIcon_equipment_Cockpit"
            },
            "nature": "Debuff",
            "statisticData": {
                "statName": "isTorsoMount",
                "operation": "Set",
                "modValue": "true",
                "modType": "System.Boolean"
            }
        }

lifeSupportSupportsLifeTM - bool, determines whether damage and/or destruction of life-support (as defined in lifeSupportCustomID) causes injuries/death when torso-mounted cockpit is being used.

internalDmgInjuryLocs - List, internal damage must be in one of these ChassisLocations in order to inflict injuries from enableInternalDmgInjuries. If empty, all locations can inflict an injury.

InjuryEffectsList - List, list of all possible injuries. All injury locations need to have an injury for each value of couldBeThermal represented, with the exception of Head. Overheating will never inflict a head injury, so Head does not need an Injury where couldBeThermal :true

InternalDmgInjuries - List, list of all possible injuries from internal structure damage.

additiveBleedingFactor - float; if < 0, gets rounded to a whole number. this value is then subtracted from the timer of any preexisting bleeding injuries. if the value is between 0 and 1, then the timer of preexisting bleeding injuries is multiplied by this value. In all cases, the resulting "bleedout timer" will not become <1, ensuring players still have a chance to eject.

minBloodBank - int, defines a minimum "BloodBank" for pilots regardless of Guts/Health calculations.

baseBloodBankAdd - int, defines a baseline addition to "BloodBank" on top of Guts/Health calculations.

UseGutsForBloodBank - bool, if True - Guts level is used in BloodBank calculation. if False, Health is used in BloodBank calculation.

factorBloodBankMult - float, multiplier for BloodBank calculation; if UseGutsForBloodCap = True, final BloodBank formula is (Guts * factorBloodBankMult) + baseBloodBankAdd. If UseGutsForBloodCap = False, final BloodBank formula is (Health * factorBloodBankMult) + baseBloodBankAdd

UseBleedingEffects - bool, if True enables escalating bleeding effects applied in the current contract (defined in BleedingEffects below).

BleedingEffects - List - list of bleeding effects to be applied to pilots as they bleed out. In the BleedingEffect, the field bleedingEffectLvl defines the point at which that bleeding effect is applied, by converting the level to a % of the total number of bleeding effects defined in the settings + 1. If a pilot's % of their BloodBank goes below that thtreshold, the effect is applied.

For example, if 4 BleedingEffects are defined in settings, a BleedingEffect with bleedingEffectLvl: 1 would equate to a BloodBank % threshold of 0.8 (or 80%). If a pilot has BloodBank of 6 out of a starting BloodBank of 8, the effect would be applied (Pilot BloodBank 75% <= 80%). If more than one BleedingEffect is defined with the same bleedingEffectLvl, one of the effects will be chosen at random to apply.

Bleeding effects have the following structure:

{
	"bleedingEffectID": "BleedingShock",
	"bleedingName": "Shock",
	"bleedingEffectLvl": 1,
	"description": "This pilot has suffered minor blood loss and has reduced accuracy.",
	"effectDataJO": [
		{
			"durationData": {},
			"targetingData": {
				"effectTriggerType": "Passive",
				"effectTargetType": "Creator",
				"showInStatusPanel": true
			},
			"effectType": "StatisticEffect",
			"Description": {
				"Id": "BleedShock",
				"Name": "Blood Loss: Shock",
				"Details": "This pilot has suffered minor blood loss and has gone into minor shock, reducing accuracy.",
				"Icon": "crackedskull"
			},
			"nature": "Buff",
			"statisticData": {
				"modType": "System.Single",
				"modValue": "5.0",
				"operation": "Float_Add",
				"statName": "AccuracyModifier",
				"targetAmmoCategory": "NotSet",
				"targetCollection": "Weapon",
				"targetWeaponCategory": "NotSet",
				"targetWeaponSubType": "NotSet",
				"targetWeaponType": "NotSet"
			}
		}
	]
}

UseSimBleedingEffects - bool, if True enables escalating bleeding effects that are applied on subsequent contracts for a specified period of time (defined in SimBleedingEffects below).

SimBleedingEffects - List - list of bleeding effects to be applied to pilots during subsequent contract. SimBleedingEffects have the following structure:

{
	"simBleedingEffectID": "BleedGutsLvl1",
	"bleedingEffectLvl": 1,
	"simResultJO": [
		{
			"Scope": "MechWarrior",
			"Requirements": null,
			"AddedTags": {
				"tagSetSourceFile": "",
				"items": [
					"TBAS_SimBleed__Guts__-1"
				]
			},
			"RemovedTags": {
				"tagSetSourceFile": "",
				"items": []
			},
			"Stats": [],
			"Actions": [],
			"ForceEvents": null,
			"TemporaryResult": true,
			"ResultDuration": 10
		}
	]
},

Similar to BleedingEffects, SimBleedingEffects use bleedingEffectLvl to define if/when the effects are to be applied to a pilot that is/has been bleeding out, int the same manner. The remainder of the structure is identical to a SimGameEventResult that gives the pilot a specific temporary tag. The format of the tag (when present) is then parsed at the start of combat to generate certain effects. These tags are of the basic structure TBAS_SimBleed__StatName__Amount. In the above example, a Pilots' Guts statistic would be reduced by 1 at the start of the contract. Temporarily reducing skills directly in SimGame would efffectively allow players to purchase additional levels of the skill at discounted XP costs, which is why we are parsing a temporary tag instead; the tags are processed at contract start rather than directly through the SimGameEventResult to prevent "easy" leveling up. Of course the downside is that these stat mods are limited to statistics present on Pilots rather than AbstractActors (e.g. skill stats, but not things like AccuracyModifier), and the only available operation on the stat is Adding or Subtracting (if Amount is negative).

CanIntentionallyHotBunk - bool, allows player to intentionally hire more pilots than barracks can support

OvercrowdingEffects - overcrowding effects applied in combat. see overcrowding effects section for config