Hands-On Usage
Commonly used in Military Industrial Organization (MIO) mods to dynamically grant research bonuses to specific organizations—for example, when completing a task or meeting certain conditions to improve research efficiency. Can also be combined with variables to create configurable bonus values, allowing flexible adjustments across different difficulty levels or event branches.
# Grant research bonus to a specified MIO within an event option
mio:my_tank_manufacturer = {
add_mio_research_bonus = 0.15
}
# Dynamic assignment using variables
mio:my_tank_manufacturer = {
add_mio_research_bonus = var:research_reward_var
}
Synergy
[set_mio_research_bonus](/wiki/effect/set_mio_research_bonus): Use when you need to reset the research bonus to a fixed value rather than accumulating it. Together, these can implement an "initialize by clearing first, then set precise value" pattern.
[add_mio_funds](/wiki/effect/add_mio_funds): Research bonuses are typically awarded alongside fund grants as part of comprehensive incentive packages for MIOs in reward events.
[has_mio_size](/wiki/trigger/has_mio_size): Check whether the MIO's size meets the threshold before applying the bonus to avoid applying unbalanced bonuses to organizations that haven't yet grown.
[is_mio_trait_completed](/wiki/trigger/is_mio_trait_completed): Commonly used to stack research bonuses only after a specific trait is completed, forming an advanced reward chain of "unlock trait → receive additional bonus."
Common Pitfalls
- Forgetting the lower bound for negative values: When using negative numbers to reduce bonuses, it's easy to assume an error will occur or that a negative research bonus will appear—in reality, the game clamps the final value to 0 and produces no error or negative bonus. Be aware that logs will show no warning when debugging.
- Calling in the wrong scope: This effect only works within
INDUSTRIAL_ORG scope (i.e., inside a mio:xxx = { ... } block). If written directly under country or event scope, it silently fails. Beginners often forget to wrap it in mio:xxx = { }, causing the effect not to apply.