Hands-On Usage
has_breakthrough_points is commonly used in technology/nuclear weapon-related mods to check within the available or trigger blocks of focuses and decisions whether a country has accumulated sufficient breakthrough points in a specific specialization to unlock special options or trigger events. For example, to restrict a decision so that only countries with nuclear physics breakthroughs at a certain level can activate it:
available = {
has_breakthrough_points = {
specialization = specialization_nuclear
value = 2
}
}
Synergy
[add_breakthrough_points](/wiki/effect/add_breakthrough_points): Used in effect blocks to grant a country breakthrough points, forming a complete "accumulation-verification" loop with this trigger. First use the effect to accumulate, then use the trigger to check if the threshold is met.
[add_breakthrough_progress](/wiki/effect/add_breakthrough_progress): A progress-level advancement effect that pairs well with this trigger; after progress reaches a certain stage, verify whether breakthrough points have simultaneously met the requirement.
[complete_special_project](/wiki/effect/complete_special_project): Completes a special project effect, typically using has_breakthrough_points as a prerequisite condition to ensure sufficient research reserves before allowing the project completion to trigger.
[has_completed_track](/wiki/trigger/has_completed_track): Checks completion status of research tracks; when combined with has_breakthrough_points, it constructs multi-layered technology conditions and prevents a single breakthrough point condition from being too permissive.
Common Pitfalls
- Incorrect
specialization token: The specialization_token must use the exact string defined in-game (such as specialization_nuclear). When the token contains case mismatches or references a nonexistent token, the condition silently returns false without error reporting, making it extremely difficult to debug.
- Scope confusion: This trigger can only be used under COUNTRY scope. If mistakenly placed in STATE or CHARACTER scope (for example, within a sub-block of
every_owned_state), the script will not throw a direct error but the evaluation result becomes unpredictable. Always ensure the outer scope is a country.