Hands-On Usage
is_researching_technology is commonly used to dynamically unlock decisions, trigger events, or grant rewards while a particular technology is being researched. For example, you can pop an intelligence event or accelerate research progress when a nation is researching a specific tank technology. It can also be used in the limit block of AI strategies to prevent the AI from repeatedly triggering research-related behaviors.
# Only allow activating a specific decision when the country is researching mechanised infantry
available = {
is_researching_technology = mechanised_infantry
}
Synergy
[can_research](/wiki/trigger/can_research): First use can_research to confirm whether the technology is legally researchable, then use is_researching_technology to confirm whether it's already in the queue. Using both together avoids logical gaps.
[add_tech_bonus](/wiki/effect/add_tech_bonus): Award research bonuses while research is in progress, using is_researching_technology as the trigger condition to implement the "add buff during research" design pattern.
[has_completed_focus](/wiki/trigger/has_completed_focus): A common combination is to first check if a certain national focus is completed, then check whether the corresponding technology is being researched, creating hierarchical unlock conditions.
[amount_research_slots](/wiki/trigger/amount_research_slots): Use alongside research slot quantity conditions to ensure the nation triggers relevant rewards or events only when resources are sufficient.
Common Pitfalls
- Using it as "already researched":
is_researching_technology only checks if a technology is currently being researched (i.e., occupying a research slot), not whether it has been fully unlocked. To determine if a technology has been completed, use has_tech instead (note: has_tech is not on this scope's whitelist, but it is a built-in game trigger—do not confuse it with this trigger).
- Incorrect technology key: The technology name must exactly match the token defined in the
technologies folder (case-sensitive). Using display names or localization strings will cause the condition to always return false without error, making it extremely difficult to debug.