-
Notifications
You must be signed in to change notification settings - Fork 36
Bonuses
Bonuses are a collection of tracked effects, conditions, or value modifications that are applied to a pilot, mech, or NPC. Bonuses are handled mechanically by COMP/CON to modify values on NPCs, Pilots, Mechs, other items or features, etc. In-game effects that are unable to be represented by bonuses should be handled by effect text and/or a synergy object.
In these documents, the data form for Bonuses are represented by IBonusData objects, structured as follows:
{
"id": string,
"val": string | number,
"accuracy":? number,
"damage_types"?: DamageType[],
"range_types"?: RangeType[],
"weapon_types"?: WeaponType[],
"weapon_sizes"?: WeaponSize[],
"overwrite"?: boolean,
"replace"?: boolean
}The id of a bonus from the Bonus List.
A string or number value of the allowed type for the bonus.
Most bonuses that can take an integer value can also take a special string value. These values can be used to create dynamic bonuses based on the current state of the pilot, mech, or NPC.
The damage_types, range_types, weapon_types, and weapon_sizes fields are exclusive, meaning that an item must satisfy all conditions to receive the bonus. For example, a Bonus that included an Explosive damage type and a Launcher weapon type would only apply to Launchers that dealt Explosive damage.
To create eg. a system that increases the damage of all explosive weapons and all ranged weapons, two Bonus objects should be used.
An integer. Adds Accuracy (if positive) or Difficulty (if negative) to the bonus.
An array of damage types that the bonus applies to. If this field is not present, the bonus will apply to all damage types (if applicable). Valid damage types are: Kinetic, Explosive, Energy, Heat, and Burn.
An array of range types that the bonus applies to. If this field is not present, the bonus will apply to all range types (if applicable). Valid range types are: Melee, Threat, Range, Line, Burst, Blast, and Cone.
An array of weapon types that the bonus applies to. Valid weapon types are: Improvised, Melee, CQC, Rifle, Nexus, Cannon, Launcher, and any. This defaults to any if not present.
An array of weapon sizes that the bonus applies to. Valid weapon sizes are: Auxiliary, Main, Heavy, Superheavy, and any. This defaults to any if not present.
The overwrite flag will overwrite any integer value bonus with the highest bonus of the same type from any source that has an overwrite flag. Which is to say: all applicable bonuses of that bonus ID will be collected and everything will be discarded except for the bonus of the highest value that has an overwrite flag.
Eg: a mech with items that give +4, +2, +3 (overwrite) and +2 (overwrite) bonus will result in a +3 bonus. This flag is not necessary for non-integer values.
The replace flag will replace any integer value in the target item, pilot, or mech with the total collected replace bonus value. Eg. a mech with a base HP of 8 and the following bonuses: +1, +1 and 3 (replace) will result in a mech with a final HP of 5 (5 replaced by 3, +1 +1). A mech with a base HP of 8 and the following bonuses: +1, 3 (replace), and 3 (replace) will result in a mech with a final HP of 7 (5 replaced by 3 + 3, then +1).
The overwrite and replace flags can be used together to create equipment that overrides the final computed bonus value with a flat value.
Bonuses are collected and added to the pilot, meaning that they will persist as long as the item granting the bonus is equipped or active. The definition of "active" can change based on item type:
| Item | Active State Condition |
|---|---|
| Talent | Always active |
| Frame / Frame Trait | Always active |
| Passive CORE Power | Always active |
| CORE Bonus | Always active |
| Active CORE Power | CORE Power has been activated, bonus removed when CORE Power deactivates |
| Mod | Mod is equipped to equipment that is not destroyed |
| Pilot Gear | Always active |
| Reserve | Always active until reserve is used or deleted |
| System | Always active unless system is destroyed or in cascade |
| Weapon | Always active unless weapon is destroyed |
| Weapon Profile | Active only when the profile is selected and the weapon is not destroyed |
| Deployable | Deployable has been deployed |
NPC bonuses are collected and added to the NPC, meaning that they will persist as long as the feature granting the bonus is equipped or active. Bonuses on NPC deployables will be applied to the deployable itself.
NPC bonus values can be a single value or an array of three values, one per tier. If only one value is provided, it will be treated as the value for all three tiers.
| ID | Detail | Values | Applies |
|---|---|---|---|
range |
Add Range (including Threat) to weapons | integer | All |
damage |
Add Damage to weapons | integer | All |
attack_roll |
Add to attack rolls for weapons | integer | All |
tech_attack |
Add to tech attack rolls | integer | All |
hp |
Add Mech/NPC HP | integer | All |
armor |
Add Mech/NPC Armor | integer | All |
structure |
Add Mech/NPC Structure | integer | All |
stress |
Add Mech/NPC Reactor Stress | integer | All |
heatcap |
Add Mech/NPC Heat Capacity | integer | All |
repcap |
Add Mech/NPC Repair Capacity | integer | All |
speed |
Add Mech/NPC Speed | integer | All |
evasion |
Add Mech/NPC Evasion | integer | All |
edef |
Add Mech/NPC E-Defense | integer | All |
sensor |
Add Mech/NPC Sensor Range | integer | All |
attack |
Add Mech/NPC Attack Bonus | integer | All |
tech_attack |
Add Mech/NPC Tech Attack | integer | All |
grapple |
Add Mech/NPC Grapple Value | integer | All |
ram |
Add Mech/NPC Ram Value | integer | All |
save |
Add Mech/NPC Save | integer | All |
sp |
Add Mech/NPC SP | integer | All |
size |
Add Mech/NPC Size | integer | All |
boost |
Add Mech/NPC Boost Speed | integer | All |
armor_max |
Modify Max Armor Cap | integer | All |
accuracy |
Add Accuracy to weapons | integer | All |
thrown |
Add Thrown to weapons | integer | All |
threat |
Add Threat to weapons | integer | All |
hull |
Hull checks and saves | integer | All |
agi |
Agility checks and saves | integer | All |
eng |
Engineering checks and saves | integer | All |
sys |
Systems checks and saves | integer | All |
deployable_hp |
Add HP to all deployed Deployables | integer | All |
deployable_size |
Add size to all deployed Deployables | integer | All |
deployable_charges |
Add charges to all deployed Deployables | integer | All |
deployable_armor |
Add armor to all deployed Deployables | integer | All |
deployable_evasion |
Add evasion to all deployed Deployables | integer | All |
deployable_edef |
Add edef to all deployed Deployables | integer | All |
deployable_heatcap |
Add heatcap to all deployed Deployables | integer | All |
deployable_repcap |
Add repcap to all deployed Deployables | integer | All |
deployable_sensor_range |
Add sensor range to all deployed Deployables | integer | All |
deployable_tech_attack |
Add tech attack to all deployed Deployables | integer | All |
deployable_save |
Add save to all deployed Deployables | integer | All |
deployable_speed |
Add speed to all deployed Deployables | integer | All |
drone_hp |
Add HP to all deployed Drones | integer | All |
drone_size |
Add size to all deployed Drones | integer | All |
drone_charges |
Add charges to all deployed Drones | integer | All |
drone_armor |
Add armor to all deployed Drones | integer | All |
drone_evasion |
Add evasion to all deployed Drones | integer | All |
drone_edef |
Add edef to all deployed Drones | integer | All |
drone_heatcap |
Add heatcap to all deployed Drones | integer | All |
drone_repcap |
Add repcap to all deployed Drones | integer | All |
drone_sensor_range |
Add sensor range to all deployed Drones | integer | All |
drone_tech_attack |
Add tech attack to all deployed Drones | integer | All |
drone_save |
Add save to all deployed Drones | integer | All |
drone_speed |
Add speed to all deployed Drones | integer | All |
deploy_count |
Gain additional deployable deploy action |
integer | All |
skill_point |
Add Pilot Skill Trigger point | integer | PC only |
mech_skill_point |
Add Mech Skill (HASE) point | integer | PC only |
talent_point |
Add Pilot Talent point | integer | PC only |
license_point |
Add Pilot License point | integer | PC only |
cb_point |
Add Pilot CORE Bonus point | integer | PC only |
ai_cap |
Add AI Capacity | integer | PC only |
cheap_struct |
Half cost for Structure repairs | boolean | PC only |
cheap_stress |
Half cost for Reactor Stress repairs | boolean | PC only |
overcharge |
Overcharge Track | DieRoll[] | PC only |
limited_bonus |
Add Limited equipment uses | integer | PC only |
pilot_hp |
Add Pilot HP | integer | PC only |
pilot_armor |
Add Pilot Armor | integer | PC only |
pilot_evasion |
Add Pilot Evasion | integer | PC only |
pilot_edef |
Add Pilot E-Defense | integer | PC only |
pilot_speed |
Add Pilot Speed | integer | PC only |
pilot_armor_slots |
Increase Pilot Armor capacity | integer | PC only |
pilot_gear_slots |
Increase Pilot Gear capacity | integer | PC only |
pilot_weapon_slots |
Increase Pilot Weapon capacity | integer | PC only |
mount_accuracy |
Add Accuracy to all mounted weapons | integer | PC only |
mount_range |
Add Range to all mounted weapons | integer | PC only |
mount_damage |
Add Damage to all mounted weapons | integer | PC only |
mount_damage_type |
Override damage type of all mounted weapons | DamageType | PC only |
mount_range_type |
Override range type of all mounted weapons | RangeType | PC only |
mount_weapon_type |
Override weapon type of all mounted weapons | WeaponType | PC only |
add_mount |
Gain additional mount | string* | PC only |
sizes |
Add NPC creation size choice | size[] | NPC only |
activations |
Add Activations per round | integer | NPC only |
activations_pct |
Additional activation/round @ PC count X | integer | NPC only |
no_mods |
Cannot equip mods | boolean | NPC only |
add_mount values take a string of the following format: mount_type:max_mounts where mount_type is one of Aux|Aux/Aux|Aux/Main|Main|Heavy|Superheavy and max_mounts is an integer representing the maximum number of mounts of that the Mech can have, at or over which the additional mount will not be added.
For examples, a values of main:3 will add an additional main mount to the mech if it has 2 or fewer total mounts, but will not add a mount if the mech already has 3 or more total mounts.
A bonus ID can also be the ID of a Status or Condition. This will confer that status or condition until removed or until the bonus expires.
Certain fields take a "DieRoll" format. This is a shorthand for rolling dice within COMP/CON. The format is:
XdY+N
Where X is number of dice, Y is number of die sides, and N (optional) is a flat bonus. Examples:
1d6 2d20-2 3d6+1d20
DieRolls can be chained together with + and - operators. For example:
1d6+2d20-2+3d6+1d20
This will roll 1d6, 2d20, subtract 2, add 3d6, and add 1d20. The result will be the sum of all the rolls.
Any integer type bonus can be replaced with one of the following special value strings surrounded in brackets (eg. "{ll}"):
| ID | Value |
|---|---|
ll |
Pilot License Level |
tier |
NPC Tier |
grit |
Pilot Grit |
size |
Mech/NPC Size |
hp |
Mech/NPC Max HP |
current_hp |
Mech/NPC Current HP |
speed |
Mech/NPC Speed |
evasion |
Mech/NPC Evasion |
edef |
Mech/NPC E-Defense |
tech_attack |
Mech/NPC Tech Attack |
overshield |
Mech/NPC Overshield |
armor |
Mech/NPC Armor |
heatcap |
Mech/NPC Heat Capacity |
heat |
Mech/NPC Current Heat |
stress |
Mech/NPC Max Reactor Stress |
current_stress |
Mech/NPC Current Reactor Stress |
structure |
Mech/NPC Structure |
current_structure |
Mech/NPC Current Structure |
repcap |
Mech/NPC Repair Capacity |
sensor |
Mech Sensor Range |
save |
Mech/NPC Save |
sp |
Mech SP |
hull |
PC/NPC HASE Hull |
agi |
PC/NPC HASE Agility |
sys |
PC/NPC HASE Systems |
eng |
PC/NPC HASE Engineering |
additionally, strings will be evaluated as an expression, then rounded up to the nearest integer, so "2 + {ll}" or ({grit}/2) + 1 are both valid expressions.
Pilot Data
Licensed Data
Other
- Manifest (lcp_manifest.json)
- Base Actions (actions.json)
- Downtime Actions (actions.json)
- Environments (environments.json)
- Manufacturers (manufacturers.json)
- SITREPs (sitreps.json)
- Statuses & Conditions (statuses.json)
- Tables (tables.json)
- Lists (lists.json)
- Tags (tags.json)
- Custom Stat Data (custom_stats.json)