-
조건게임/게임 모딩-관련자료 2021. 10. 6. 22:30반응형
이런 트리거에는 특정 범위가 필요하지 않는다.
boolean 은 참 또는 거짓만 가능하다.
Name
이름Parameters
매계변수Examples
예Description
설명Notes
노트Version Added
버전always
항상<bool>
Boolean.
참 또는 거짓always = yes 반환함, 디버깅에 유용함 1.0 threat
긴장도<float>
The amount to check for.
매개변수 float
확인할 수 있는 양threat > 0.5
아마 긴장도가 50%보다 클경우? 라는 뜻인듯- 수정바람전체 긴장도의 양이랑 현재 트리거 발생에 필요한 긴장도가 초과하는지 확인하는듯? >랑 <만 사용가능 1.0 any_country
어떤 나라라도triggers
트리거any_country = { is_exiled_in = MEX } Executes the contained triggers as if they are contained in an AND with a country context for each country. Returns true on the first country yielding true, false otherwise.
포함된 트리거를 각 국가에 대한 국가 정보?와 함께 and에 포함된것처럼 실행함 true를 하는 국가에는 true를 반환하고 아니면 false를 반환함 잘 모르겠음 - 수정 필요해당 국가의 국가 범위 변경? 뭘 변경한다는거지? 1.0 date
날짜<date>
The date to check for.
날짜 체크date < 1950.01.01
1950년 1월1일 전에? 라는 뜻인듯지정된 날짜가 현재 날짜인지 확인한다.
date가 현재 날짜Year.Month.Day
> 또는 <를 이용해야됨1.0 difficulty
난이도<int>
The difficulty value.
난이도 값difficulty > 0 지정된 난이도가 현재 난이도인지 확인 > 또는 <를 이용 1.0 OR
또는triggers
트리거OR = {
original_tag = ENG
original_tag = USA
}
영국또는 미국하위 트리거가 true를 반환하면 true를 반환하고 아니면 false를 반환 첫번째 true 하위 트리거에서 판단여부가 중지된다. 음; 그냥 영국 또는 미국 같은데? 1.0 NOT
아님triggers NOT = {
has_stability > 0.5
has_war_support > 0.5
}
안정도 50이상
전쟁지지도 50이상 이 아닐때?하위 트리거가 true를 반환하면 false를 반환하고 그렇지 않으면 true를 반환합니다. 첫 번째 참 하위 트리거에서 평가가 중지됩니다. 1.0 is_tutorial <bool>
Boolean.is_tutorial = yes 현재 게임이 튜토리얼에서 실행중인지 확인. 1.0 is_ironman <bool>
Boolean.is_ironman = yes 현재 게임이 철인모드에서 실행되는지 확인 1.0 is_historical_focus_on <bool>
Boolean.is_historical_focus_on = yes 현재 게임이 역사적모드를 키고 실행중인지 확인 1.0 is_debug <bool>
Boolean.is_debug = yes 디버그 모드인지 확인 1.9 if limit = <AND-trigger>
The condition.
else_if = <if-trigger>
Alternative condition. Optional.
else = <AND-trigger>
Final alternative condition. Optional.
triggersif = {
limit = {
has_dlc = "Poland: United and Ready"
}
has_political_power > 100
else = {
has_war_support > 0.5
}
}
만약 dlc 폴란드 ~! 가 있으면
만약 정치력이 100 이상이면
만약 전쟁지지도가 50이상이면만약 limit가 true라면, 아래 트리거들이 and 트리거처럼 된다.
만일 아니라면, 블록을 순서대로 시도하고 마지막으로 다른 블록이 있는 경우 그렇지 않으면 true가 반환됨else_if그리고 else대신 중첩 된 존재의의 경우 트리거 직후에 따를 수 있음 1.0 hidden_trigger triggers hidden_trigger = {
country_exists = GER
}and트리거와 비슷하지만 조건이 툴팁에 표시되지 않음 has_start_date
시작 날짜<date>
The date to check for.has_start_date > 1950.01.01 지정된 날자가 현재 게임이 사용된 시작 날짜인지 확인 Year.Month.Day
> <로 사용1.0 has_global_flag <string>
The flag to check.
확인할 플래그has_global_flag = my_flag 지정된 플래그가 설정됬는지 확인 1.0 has_global_flag flag = <string>
확인할 플러그
value = <int>
확인할 플래그 값
date = <date>
확인할 플래그 생성 날짜
(몇일 이상부터 중점찍을수있음)
days = <int>
플래그가 존재한 기간
(국가이념이 어디까지 지속?)has_global_flag = {
flag = my_flag
days > 30
date > 1936.6.1
value > 0
}지정된 플래그의 마지막 설정 날짜, 마지막 설정 이후의 일수 및 또는 값을 비교 설정하지 않는다면, >0으로 설정됨. value is limited between -32768 and 32767. 1.0 has_game_rule <string>
확인할 게임 규칙
<string> / <bool>
확인하는 홉션has_game_rule = { rule = GER_can_remilitarize_rhineland option = yes } 게임 규칙이 특정 옵션으로 설정되어 있는지 확인 1.5 has_dlc <string>
확인할 dlc 이름has_dlc = "Waking the Tiger" 지정된 dlc가 활성화 되어있는지 확인 1.0 has_custom_difficulty_setting <string>
확인할 설정has_custom_difficulty_setting = custom_diff_strong_sov 1.0 has_any_custom_difficulty_setting <bool>
Boolean.has_any_custom_difficulty_setting = yes 사용자 지정 난이도 설정이 활성화된 국가가 있는지 확인 1.0 game_rules_allow_achievements <bool>
Boolean.game_rules_allow_achievements = yes 모든 활성 게임 규칙 옵션이 도전 과제를 허용 하는지 확인 1.9 custom_trigger_tooltip tooltip = <string>
triggerscustom_trigger_tooltip = {
tooltip = sunrise_invasion_tt
any_state = {
is_owned_by = JAP
is_on_continent = europe
is_coastal = yes
}
}and 트리거와 비슷하지만 툴팁에 tooltip으로 표시된다. country_exists <scope> / <variable>
확인할 국가country_exists = GER 지정된 국가가 현재 게임이 존재하는지 확인 1.0 count_triggers amount = <int>
triggerscount_triggers = {
amount = 2
10 = { state_population = 100000 }
11 = { state_population = 100000 }
12 = { state_population = 100000 }
}모든 하위 변수의 결과를 합하고(false=0, true=1) 합계가 최소 +일경우 참을 반환
*즉 하나라도 참일경우 실행1.5 any_state triggers any_state = {
is_controlled_by = MEX
is_coastal = yes
is_on_continent = europe
}포함된 트리거를 각 상태의 상태 컨텍스트와 함께 AND에 포함된 것처럼 실행합니다. 첫 번째 상태에서는 true를 반환하고 그렇지 않으면 false를 반환합니다. this 값을 해당 상태의 상태 범위로 변경합니다. 1.0 AND triggers AND = {
original_tag = GER
has_stability > 0.5
}하위 트리거에서 false를 반환하면 false를 반환하고 그렇지 않으면 true를 반환합니다. 첫 번째 잘못된 하위 트리거에서 평가가 중지됩니다. 트리거가 예상되는 거의 모든 장소는 암시적 AND 트리거를 사용합니다. 1.0 all_state triggers all_state = {
controller = {
OR = {
is_in_faction_with = ENG
is_puppet_of = ENG
tag = ENG
}
}
}포함된 트리거를 각 상태의 상태 컨텍스트와 함께 AND에 포함된 것처럼 실행합니다. false를 생성하는 첫 번째 상태에 대해 false를 반환하고 그렇지 않으면 true를 반환합니다. this 값을 해당 상태의 상태 범위로 변경합니다. 1.0 all_country triggers all_country = { has_government = fascism } 포함된 트리거를 각 국가에 대한 국가 컨텍스트와 함께 AND에 포함된 것처럼 실행합니다. false를 생성하는 첫 번째 국가에 대해 false를 반환합니다. 그렇지 않으면 true입니다. 값을 해당 국가의 국가 범위로 변경합니다. 1.0 Country scope
Can be used in country scope.
General
Name Parameters Examples Description Notes Version Added exists <bool>
Boolean.exists = yes Checks if the current scope exists in game. 1.0 tag <scope> / <variable>
The country to check.tag = GER
tag = var:my_countryChecks if the current scope is the specified country. 1.0 original_tag <scope> / <variable>
The country to check.original_tag = GER
original_tag = var:my_countryChecks if the current scope was ever the specified country. 1.0 is_ai <bool>
Boolean.is_ai = yes Checks if the current scope is AI. 1.0 has_collaboration <scope> / <variable>
The country to check.has_collaboration = { target = GER value > 0.5 }
has_collaboration@GER as variableChecks if the current scope has a collaboration level in the target scope. 1.9 has_country_flag <string>
The flag to check.has_country_flag = my_flag Checks if the current scope has the specified flag. 1.0 has_country_flag flag = <string>
The flag to check.
value = <int>
The flag value to check for. Optional.
date = <date>
The flag creation date to check for. Optional.
days = <int>
The duration the flag existed for. Optional.has_country_flag = {
flag = my_flag
days > 30
date > 1936.6.1
value > 0
}Compares the specified flag's last set date, days since last set, and/or value. If not set, the value comparison is >0. value is limited between -32768 and 32767. 1.0 has_cosmetic_tag <string>
The cosmetic tag to check.has_cosmetic_tag = SOV_custom Checks if the current scope has the specified cosmetic tag active. 1.5 has_event_target <event target>
The event target to check.has_event_target = my_var Checks if the current scope is assigned as the specified event target. 1.0 has_decision <string>
The decision to check.has_decision = my_decision Checks if the current scope has the specified decision activated. 1.5 has_dynamic_modifier modifier = <string>
The dynamic_modifier to check.
scope = <scope>
The country to check. Optional, if the original modifier has been targeted.has_dynamic_modifier = {
modifier = my_dynamic_modifier
scope = GER
}Checks if the current scope has the specified dynamic modifier activated. 1.6 has_active_mission <string>
The mission to check.has_active_mission = my_mission Checks if the current scope has the specified mission active. 1.5 has_focus_tree <string>
The focus tree to check.has_focus_tree = soviet_tree Checks if the current scope has the specified focus tree. 1.3 has_completed_focus <string>
The focus to check.has_completed_focus = my_focus Checks if the current scope has the specified focus completed. 1.0 focus_progress focus = <string>
The focus to check.
progress = <string>
The progress to check for.focus_progress = {
focus = my_focus
progress > 0.5
}Checks if the specified focus has been completed the specified percent for the current scope. Must use either > or < operators for progress. 1.0 has_custom_difficulty_setting <bool>
Boolean.has_custom_difficulty_setting = yes Checks if the current scope has any custom difficulty setting set. 1.0 Politics
Name Parameters Examples Description Notes Version Added has_political_power <float>
The amount to check for.has_political_power > 100 Checks if the current scope has the specified amount of political power. Must use either > or < operators. 1.0 political_power_daily <float> / <variable>
The amount to check for.political_power_daily > 1 Checks if the current scope has the specified amount of daily political power gain. Must use either > or < operators. 1.5 political_power_growth <float> / <variable>
The amount to check for.political_power_growth > 1 Checks if the current scope has the specified amount of daily political power gain. Must use either > or < operators. 1.5 command_power <float> / <variable>
The amount to check for.command_power > 1 Checks if the current scope has the specified amount of command power. Must use either > or < operators. 1.5 command_power_daily <float> / <variable>
The amount to check for.command_power_daily > 1 Checks if the current scope has the specified amount of daily command power gain. Must use either > or < operators. 1.5 has_war_support <float> / <variable>
The amount to check for.has_war_support > 0.5 Checks if the current scope has the specified percentage of War Support. Must use either > or < operators. 1.5 has_stability <float> / <variable>
The amount to check for.has_stability > 0.5 Checks if the current scope has the specified percentage of Stability. Must use either > or < operators. 1.5 <ideology> <ideology> = <float> / <variable>
The amount of the ideology to check for.fascism > 0.5
democratic > party_popularity@communismChecks if the current scope has the specified ideology above the specified amount. 1.0 has_government <string> / <Scope>
The ideology to check for.has_government = fascism / has_government = ROOT Checks if the current scope ruling party is the specified ideology. Can accept scopes to check if two scopes have the same government. 1.0 has_elections <bool>
Boolean.has_elections = yes Checks if the current scope holds elections. 1.0 is_staging_coup <bool>
Boolean.is_staging_coup = yes Checks if the current scope is staging a coup. 1.3 is_target_of_coup <bool>
Boolean.is_target_of_coup = yes Checks if the current scope is the target of a coup. 1.0 has_civil_war <bool>
Boolean.has_civil_war = yes Checks if the current scope has a civil war active. 1.0 civilwar_target <scope>
The target country.civilwar_target = GER Checks if the specified country is a target of a civil war. 1.0 has_manpower_for_recruit_change_to value = <float>
The amount to check for.
group = <group>
The group to check for.has_manpower_for_recruit_change_to = {
value > 0.05
group = mobilization_laws
}Checks if the current scope has the specified amount of manpower for changing the specified idea group. Must use either > or < operators as = operator checks for the exact value 1.0 has_country_leader id = <int>
The id to check for. Optional.
name = <string>
The name to check for. Optional.
ruling_only = yes
Limit check to ruling only.has_country_leader = {
id = 10
}
has_country_leader = {
name = "John Smith"
ruling_only = yes
}Checks if the current scope has the specified country leader. 1.3 has_country_leader_with_trait <string>
The trait to check.has_country_leader_with_trait = champion_of_peace_1 Checks if the leader of the country has a specific trait. 1.6 is_female <bool>
Boolean.is_female = yes Checks if the current country leader is female. 1.9 has_rule <string>
The rule to check for.has_rule = can_create_factions Checks if the current scope has the specified country rule. 1.6 Buildings
Name Parameters Examples Description Notes Version Added <building> <building> = <int>
The amount of the specified building to to check for.arms_factory > 10 Checks if the current scope has the specified amount of the specified building. Must use either > or < operators. 1.0 num_of_military_factories <int>
The amount to check for.num_of_military_factories > 10 Checks if the current scope has the specified amount of military factories. Must use either > or < operators. 1.0 num_of_civilian_factories <int>
The amount to check for.num_of_civilian_factories > 10 Checks if the current scope has the specified amount of civilian factories. Must use either > or < operators. 1.0 num_of_naval_factories <int>
The amount to check for.num_of_naval_factories > 10 Checks if the current scope has the specified amount of dockyards. Must use either > or < operators. 1.0 num_of_available_military_factories <int>
The amount to check for.num_of_available_military_factories > 10 Checks if the current scope has the specified amount of available military factories. Must use either > or < operators. 1.0 num_of_available_civilian_factories <int>
The amount to check for.num_of_available_civilian_factories > 10 Checks if the current scope has the specified amount of available civilian factories. Must use either > or < operators. 1.0 num_of_available_naval_factories <int>
The amount to check for.num_of_available_naval_factories > 10 Checks if the current scope has the specified amount of available dockyards. Must use either > or < operators. 1.0 num_of_factories <int>
The amount to check for.num_of_factories > 10 Checks if the current scope has the specified amount of military, civilian or dockyard factories. Must use either > or < operators. 1.0 num_of_civilian_factories_available_for_projects <int>
The amount to check for.num_of_civilian_factories_available_for_projects > 10 Checks if the current scope has the specified amount of civilian factories usable for projects. Must use either > or < operators. 1.5 ic_ratio tag = <scope>
The country to check.
ratio = <float>
The ratio to check for.ic_ratio = {
tag = GER
ratio > 0.5
}Checks if the current scope has the specified ratio of factories with the target country. Must use either > or < operators for ratio. 1.0 has_damaged_buildings <bool>
Boolean.has_damaged_buildings = yes Checks if the current scope has any damanged buildings in their states. 1.0 has_built type = <building>
The building to check for.
value = <int>
The amount to check for.has_built = {
type = arms_factory
value > 10
}Checks if the current scope has built the specified building the specified number of times. Must use either > or < operators for value. 1.0 Technology
Name Parameters Examples Description Notes Version Added has_tech <string>
The technology to check for.has_tech = my_technology Checks if the current scope has the specified technology. 1.0 is_researching_technology <string>
The technology to check for.is_researching_technology = my_tech Checks if the current scope is currently researching the specified technology. 1.0 can_research <string>
The technology to check for.can_research = my_tech Checks if the current scope can start researching the specified technology. 1.0 original_research_slots <int>
The amount to check for.original_research_slots > 3 Checks if the current scope had the specified amount of slots at game start. Must use either > or < operators. 1.0 amount_research_slots <int>
The amount to check for.amount_research_slots > 3 Checks if the current scope has the specified amount of research slots. Must use either > or < operators. 1.3 is_in_tech_sharing_group <string>
The group to check for.is_in_tech_sharing_group = us_research Checks if the current scope is in the specified technology sharing group. 1.3 num_tech_sharing_groups <int>
The amount to check for.num_tech_sharing_groups > 3 Checks if the current scope is in the specified amount of technology sharing groups. Must use either > or < operators. 1.3 has_tech_bonus technology = <string>
The technology to check for. Optional.
category = <string>
The category to check for. Optional.has_tech_bonus = {
technology = my_tech
has_tech_bonus = {
category = my_category
}Checks if the current scope has a technology bonus in the specified category, or for the specific technology. 1.3 land_doctrine_level <int>
The amount to check for.land_doctrine_level > 2 Checks if the current scope has the specified amount of land doctrine technologies. Must use either > or < operators. 1.0 num_researched_technologies <int>
The amount to check for.num_researched_technologies > 10 Checks how many technologies the target has researched. Must use either > or < operators. 1.3 Ideas
Name Parameters Examples Description Notes Version Added has_idea <string>
The idea to check for.has_idea = my_idea Checks if the current scope has the specified idea. has_idea_with_trait <string>
The trait to check for.has_idea_with_trait = my_trait Checks if the current scope has any ideas with the specified trait. 1.0 has_allowed_idea_with_traits idea = <string>
The trait to check for.
limit = <int>
The amount to check for. ignore = { <ideas> }If set, ignores the ideas inside. Optional.has_available_idea_with_traits = {
idea = my_trait
limit = 1
ignore = { generic_head_of_intelligence }
}Checks if the current scope has the specified amount of ideas with the specified trait. ignore = idea_name works for 1 idea. 1.9.1 has_available_idea_with_traits idea = <string>
The trait to check for.
limit = <int>
The amount to check for. ignore = { <ideas> }If set, ignores the ideas inside. Optional.has_available_idea_with_traits = {
idea = my_trait
limit = 1
ignore = { generic_head_of_intelligence }
}Checks if the current scope has the specified amount of ideas with the specified trait. ignore = idea_name works for 1 idea. 1.0 amount_taken_ideas amount = <int>
The amount to check for.
slots = { <string> }
The slot type.amount_taken_ideas = {
amount > 3
slots = {
political_advisor
}
}Checks if the current scope has the specified amount of ideas of the specified slot type. Excludes spirits, hidden ideas, and laws. Slots types are found in /Hearts of Iron IV/common/idea_tags/*.txt. 1.4 Diplomacy
Name Parameters Examples Description Notes Version Added is_major <bool>
Boolean.is_major = yes Checks if the current scope is considered a Major. 1.0 is_ally_with <scope> / <variable>
The country to check for.is_ally_with = GER
is_ally_with = var:countryChecks if the current scope is an ally (Faction members or subject-master relation). 1.0 is_in_faction_with <scope> / <variable>
The country to check for.is_in_faction_with = GER
is_in_faction_with = var:countryChecks if the current scope is in a faction with the specified country. 1.0 is_in_faction <bool>
Boolean.is_in_faction = yes Checks if the current scope is in a faction. 1.0 is_faction_leader <bool>
Boolean.is_faction_leader = yes Checks if the current scope is the leader of a faction. 1.0 is_spymaster <bool>
Boolean.is_spymaster = yes Checks if the current scope is the spymaster of a faction. 1.9 num_faction_members <int>
The amount to check for.num_faction_members > 1 Checks if the faction of the current scope has the specified amount of members. Must use either > or < operators. 1.0 has_non_aggression_pact_with <scope> / <variable>
The country to check for.has_non_aggression_pact_with = GER Checks if the current scope has a non-aggression pact with the specified country. 1.0 is_guaranteed_by <scope> / <variable>
The country to check for.is_guaranteed_by = GER Checks if the current scope has been guaranteed by the specified country. 1.0 has_guaranteed <scope> / <variable>
The country to check for.has_guaranteed = GER Checks if the current scope has guaranteed the specified country. 1.0 has_military_access_to <scope> / <variable>
The country to check for.has_military_access_to = GER Checks if the current scope has military access to the specified country. 1.0 gives_military_access_to <scope> / <variable>
The country to check for.gives_military_access_to = GER Checks if the current scope gives military to the specified country. 1.0 is_neighbor_of <scope> / <variable>
The country to check for.is_neighbor_of = GER Checks if the current scope is a neighbor of the specified country. 1.0 is_owner_neighbor_of <scope> / <variable>
The country to check for.is_owner_neighbor_of = GER Checks if the current scope is a neighbor of the specified country with their core territory only. 1.0 is_puppet_of <scope> / <variable>
The country to check for.is_puppet_of = GER Checks if the current scope is a puppet of the specified country. 1.0 is_subject_of <scope> / <variable>
The country to check for.is_subject_of = GER Checks if the current scope is a subject of the specified scope. 1.0 is_puppet <bool>
Boolean.is_puppet = yes Returns true if the current country has an autonomy level with is_puppet = yes, false otherwise. 1.0 is_subject <bool>
Boolean.is_subject = yes Checks if the current scope is a subject. 1.0 num_subjects <int>
The amount to check for.num_subjects > 3 Checks if the current scope has the specified amount of subjects. Must use either > or < operators. 1.3 has_autonomy_state <string>
The autonomy state to check for.has_autonomy_state = autonomy_dominion Checks if the current scope is in the specified autonomous state. 1.0 compare_autonomy_state <string>
The autonomy state to check for.compare_autonomy_state > autonomy_dominion Checks if the current scope autonomy state is less or greater than the specified autonomy state. Must use either > or < operators. 1.0 compare_autonomy_progress_ratio <float>
The amount to check for.compare_autonomy_progress_ratio > 0.5 Checks if the current scope autonomy progress is at the specified ratio. Must use either > or < operators. 1.3 has_opinion_modifier <string>
The opinion modifier to check for.has_opinion_modifier = my_modifier Checks if the current scope has the specified opinion modifier. 1.0 has_opinion target = <scope>
The country to check for.
value = <float>
The amount to check for.has_opinion = {
target = GER
value > 50
}Checks if the current scope has the specified opinion with the specified country. Must use either > or < operators. 1.0 has_relation_modifier target = <scope>
The country to check for.
modifier = <modifier>
The modifier to check for.has_relation_modifier = {
target = GER
modifier = my_modifier
}Checks if the current scope has the specified relation modifier with the specified country. 1.0 has_legitimacy <int>
Amount to check.has_legitimacy > 50 Checks how much legitimacy the current government in exile has. Must use either > or < operators. Legitimacy ranges from 0 to 100. 1.6 is_exile_host <bool>
Boolean.is_exile_host = yes Checks if the current country is hosting an exile. 1.6 is_hosting_exile <tag>
Country.is_hosting_exile = POL Checks if the current country is hosting a specific exile. 1.6 is_government_in_exile <bool>
Boolean.is_government_in_exile = yes Checks if the current country is exiled in a different country. 1.6 is_exiled_in <tag>
Country to be exiled in.is_exiled_in = POL Checks if the current country is exiled in a specific country. 1.6 received_expeditionary_forces sender = <tag>
Country which sent forces.
value <> <int>
Amount of forces.received_expeditionary_forces = {
sender = POL
value > 10
}Checks if the current country received X units in expeditions from the specified country. 1.6 can_declare_war_on <tag>
Country to check.can_declare_war_on = POL Checks if the current scope is able to declare war on the specified country. 1.9 foreign_manpower <int>
Amount to check.foreign_manpower > 10000 Checks how much foreign manpower we have received for garrisoning. Must use either > or < operators. 1.9 all_allied_country triggers all_allied_country = {
has_stability > 0.8
}Returns true if THIS is in a faction where all other countries fulfill the sub-triggers; false otherwise. Evaluation stops early if any ally fails the check. Within the trigger PREV is the country doing the check and THIS is the ally. any_allied_country triggers any_allied_country = {
has_stability > 0.8
}Returns true if THIS is in a faction where at least one other country fulfills the sub-triggers; false otherwise. Evaluation stops early if any ally passes the check. Within the trigger PREV is the country doing the check and THIS is the ally. any_neighbor_country triggers any_neighbor_country = {
has_stability > 0.8
}Returns true if at least one other country that controls a province adjacent to a province controlled by THIS fulfills the sub-triggers; false otherwise. Evaluation stops early if any neighbor passes the check. Within the trigger PREV is the country doing the check and THIS is the neighbor. all_neighbor_country triggers all_neighbor_country = {
has_stability > 0.8
}Returns false if any other country that controls a province adjacent to a province controlled by THIS fails the sub-triggers; true otherwise. Evaluation stops early if any neighbor fails the check. Within the trigger PREV is the country doing the check and THIS is the neighbor. The list of neighbor countries is pre-calculated. any_home_area_neighbor_country triggers any_home_area_neighbor_country = {
has_stability > 0.8
}Returns true if THIS has a home area and at least one country controlling an adjacent area to it fulfills the sub-triggers; false otherwise. The home area is the largest contiguous area controlled by THIS that contains at least one province of its capital state. Evaluation stops early if any neighbor passes the check. Within the trigger PREV is the country doing the check and THIS is the neighbor. War
Name Parameters Examples Description Notes Version Added has_war <bool>
Boolean.has_war = yes Checks if the current scope is at war. 1.0 has_war_with <scope> / <variable>
The country to check for.has_war_with = GER
has_war_with = var:countryChecks if the current scope is at war with the specified country. 1.0 has_offensive_war_with <scope> / <variable>
The country to check for.has_offensive_war_with = GER Checks if the current scope is in an offensive war against the specified country. 1.0 has_defensive_war_with <scope> / <variable>
The country to check for.has_defensive_war_with = GER Checks if the current scope is in an defensive war against the specified country. 1.0 has_offensive_war <bool>
Boolean.has_offensive_war = yes Checks if the current scope is in an offensive war. 1.0 has_defensive_war <bool>
Boolean.has_defensive_war = yes Checks if the current scope is in a defensive war. 1.0 has_war_together_with <scope> / <variable>
The country to check for.has_war_together_with = GER Checks if the current scope is in a war alongside the specified country. 1.0 surrender_progress <float> / <variable>
The amount to check for.surrender_progress > 0.1 Checks if the current scope has the specified amount of surrender progress. Must use either > or < operators. 1.0 any_war_score <float>
The amount to check for.any_war_score > 10 Checks if the current scope has the specified amount of war progress (not war participation)[1] in any war. Must use either > or < operators. 1.0 has_capitulated <bool>
Boolean.has_capitulated = yes Checks if the current scope has capitulated. 1.0 days_since_capitulated <int>
Amount of days.days_since_capitulated > 10 Checks the amount of days since the target last capitulated. If the target never capitulated, the amount of days is extremely large. Recommended to combine with has_capitulated. 1.9 has_border_war_with <scope> / <variable>
The country to check for.has_border_war_with = GER Checks if the current scope has a border war with the specified country. 1.5 has_border_war_between attacker = <scope> / <variable>
The state to check for.
defender = <scope> / <variable>
The state to check for.has_border_war_between = {
attacker = 1
defender = 2
}Checks if their is a border war between the two specified states. 1.5 has_border_war <bool>
Boolean.has_border_war = yes Checks if the current scope has a border war active. 1.5 has_added_tension_amount <float> / <variable>
The amount to check for.has_added_tension_amount = 10 Checks if the current scope has caused the specified amount of World Tension. Must use either > or < operators. 1.0 has_wargoal_against <scope> / <variable>
The country to check for.has_wargoal_against = GER Checks if the current scope has any wargoal against the specified country. 1.0 has_wargoal_against target = <scope> / <variable>
The country to check for.
type = <string>
The type of wargoal to check for.has_wargoal_against = {
target = FROM
type = take_state
}Checks if the current scope has a specific wargoal type against the specified country. 1.8 is_justifying_wargoal_against <scope> / <variable>
The country to check for.is_justifying_wargoal_against = GER Checks if the current scope is justifying a wargoal against the specified country. 1.0 has_annex_war_goal <scope> / <variable>
The country to check for.has_annex_war_goal = GER Checks if the current scope has the Annex wargoal against the specified country. 1.0 any_claim <bool>
Boolean.any_claim = yes Checks if the current scope has any claims on another country. 1.0 is_in_peace_conference <bool>
Boolean.is_in_peace_conference = yes Checks if the current scope is in a Peace Conference. 1.0 controls_province <id>
The province to check for.controls_province = 1239 Checks if the current scope has control of the specified province. 1.9 any_enemy_country triggers any_enemy_country = {
has_stability > 0.8
}Returns true if any country is at war with THIS, exists, and fulfills the sub-triggers; false otherwise. Evaluation stops at the first true sub-trigger. Within the trigger PREV is the country doing the check and THIS is the enemy. all_enemy_country triggers all_enemy_country = {
has_stability > 0.8
}Returns false if any country is at war with THIS, exists, and fails the sub-triggers; true otherwise. Evaluation stops at the first false sub-trigger. Within the trigger PREV is the country doing the check and THIS is the enemy. State
Name Parameters Examples Description Notes Version Added controls_state <scope> / <variable>
The state to check for.controls_state = 39
controls_state = var:stateChecks if the current scope has control of the specified state. 1.0 owns_state <scope> / <variable>
The state to check for.owns_state = 39 Checks if the current scope owns the specified state. 1.0 num_of_controlled_states <int>
The amount to check for.num_of_controlled_states = 5 Checks if the current scope has the specified amount of controlled states. Must use either > or < operators. 1.0 num_occupied_states <int>
The amount to check for.num_occupied_states = 5 Checks if the current scope has the specified amount of occupied states. Must use either > or < operators. 1.0 has_full_control_of_state <scope> / <variable>
The state to check for.has_full_control_of_state = 39 Checks if the current scope has total control (100% occupation) of the specified state. 1.3 has_resources_amount resource = <string>
The resource to check for.
amount = <int>
The amount to check for.
state = <scope>
The estate to check for. Defaults to the current state in a state scope.has_resources_amount = {
resource = oil
amount > 10
state = 49
}Checks if the specified state has the specified amount of the specified resource. Must use either > or < operators for amount. 1.3 core_compliance occupied_country_tag = <TAG>
The country for which to check compliance.
value = <int>
The value to check for.core_compliance = {
occupied_country_tag = ITA
value > 10
}Compares the average compliance of core states of the specified country within controlled states of the current scope. Must use either > or < operators for value. 1.9 core_resistance occupied_country_tag = <TAG>
The country for which to check resistance.
value = <int>
The value to check for.core_resistance = {
occupied_country_tag = ITA
value > 10
}Compares the average resistance of core states of the specified country within controlled states of the current scope. Must use either > or < operators for value. 1.9 garrison_manpower_need <int>
Amount to check.garrison_manpower_need > 10000 Checks how much garrison manpower we need for resistance in controlled states. Must use either > or < operators. 1.9 has_core_occupation_modifier occupied_country_tag = <scope> / <variable>
The country to check.
modifier = <token>The modifier to check.has_core_occupation_modifier = { occupied_country_tag = ITA modifier = token } Checks if the current scope has an occupation modifier for resistance/compliance that applies to our occupied states of a specified country. 1.9 any_owned_state triggers (state scope) any_owned_state = {
is_coastal = yes
}Returns true if at least one state controlled by THIS passes the sub-triggers; false otherwise. Evaluation stops early when a state passes the check. The sub-triggers are evaluated with a state scope for each owned state. all_owned_state triggers (state scope) all_owned_state = {
is_controlled_by = ROOT
}Returns false if any state controlled by THIS fails the sub-triggers; true otherwise. Evaluation stops early when a state fails the check. The sub-triggers are evaluated with a state scope for each owned state. Military
Name Parameters Examples Description Notes Version Added has_army_experience <float> / <variable>
The amount to check for.has_army_experience > 10
has_army_experience > var:numberChecks if the current scope has the specified amount of Army experience. Must use either > or < operators as = operator checks for the exact value 1.3 has_air_experience <float> / <variable>
The amount to check for.has_air_experience > 10 Checks if the current scope has the specified amount of Air experience. Must use either > or < operators as = operator checks for the exact value 1.3 has_navy_experience <float> / <variable>
The amount to check for.has_navy_experience < 10 Checks if the current scope has the specified amount of Navy experience. Must use either > or < operators as = operator checks for the exact value 1.3 has_unit_leader <int>
The id to check for.has_unit_leader = 1 Checks if the current scope has a unit leader with the specified id. 1.0 has_manpower <float> / <variable>
The amount to check for.has_manpower > 1000 Checks if the current scope has the specified amount of manpower. Must use either > or < operators as = operator checks for the exact value 1.0 has_army_manpower size = <int>
The amount to check for.has_army_manpower = {
size > 1000Checks if the current scope has an army using the specified amount of manpower. Must use either > or < operators. 1.0 manpower_per_military_factory <float>
The amount to check for.manpower_per_military_factory > 1000 Checks if the current scope has the specified manpower times their number of military factories. Must use either > or < operators. 1.0 conscription_ratio <float> / <variable>
The ratio to compare with.conscription_ratio < 0.2 Checks if the current scope has the specified conscription ratio currently, not to be mixed up with the target conscription ratio. Must use either > or < operators as = operator checks for the exact value 1.9 current_conscription_amount <float> / <variable>
The amount to compare with.current_conscription_amount > 2000 Checks if the current scope has already conscripted that much manpower. Must use either > or < operators as = operator checks for the exact value 1.9 target_conscription_amount <float> / <variable>
The amount to compare with.target_conscription_amount > 2000 Checks if the current scope is targeting to conscript that much manpower. Must use either > or < operators as = operator checks for the exact value 1.9 num_divisions <int>
The amount to check for.num_divisions > 5 Checks if the current scope has the specified amount of divisions. Must use either > or < operators. 1.3 num_of_nukes <int>
The amount to check for.num_of_nukes > 5 Checks if the current scope has the specified amount of nukes. Must use either > or < operators. 1.0 casualties <int>
The amount to check for.casualties > 10000 Checks if the current scope has suffered the specified amount of casualties. Must use either > or < operators. 1.0 casualties_k <int>
The amount to check for.casualties_k > 10 Checks if the current scope has suffered the specified amount of casualties in thousands. Must use either > or < operators. 1.0 casualties_inflicted_by opponent = <tag>
The tag that inflicted the casualties.
thousands <> <int>
The amount of casualties in thousands.casualties_inflicted_by = {
opponent = POL
thousands > 10
}Checks if the current scope has suffered the specified amount of casualties in thousands from a specific country. Must use either > or < operators for thousands. 1.6 amount_manpower_in_deployment_queue <float>
The amount to check for.amount_manpower_in_deployment_queue > 1000 Checks if the current scope has the specified amount of manpower in their deployment queue. Must use either > or < operators. 1.5 has_attache_from <scope> / <variable>
The country to check for.has_attache_from = GER Checks if the current scope has an attache from the specified scope. 1.5 has_attache <bool>
Boolean.has_attache = yes Checks if the current scope has an attache. 1.5 is_lend_leasing <scope> / <variable>
The country to check for.is_lend_leasing = GER Checks if the current scope is lend leasing to the specified scope. 1.0 has_template <string>
The name of the template.has_template = "Infantry Division" Checks if the current scope has a division template of the specified name. 1.0 has_template_majority_unit <string>
The unit to check for.has_template_majority_unit = infantry Checks if the current scope has a division template composed mostly of the specified unit. 1.0 has_template_containing_unit <string>
The name of the unit.has_template_containing_unit = light_armor Checks if the current scope has a division template contained any of the specified unit. 1.0 strength_ratio tag = <scope>
The country to check for.
ratio = <float>
The ratio to check for.strength_ratio = {
tag = GER
ratio > 1
}Checks if the current scope has the specified strength ratio against the specified country. The ratio is the number of fielded divisions of the current scope divided by those of tag (or 1 if tag has no divisions). The ratio gets increased by 10% if the current scope has a stronger air forces.[2] Any comparison operator after ratio other than > gets interpreted as <. 1.0 naval_strength_ratio tag = <scope>
The country to check for.
ratio = <float>
The ratio to check for.naval_strength_ratio = {
tag = GER
ratio = 1
}Checks if the current scope has the specified naval strength ratio against the specified country. 1.0 alliance_strength_ratio <float> / <variable>
The ratio to check for.alliance_strength_ratio > 0.5 Checks if the current scope and allies has an army strength higher than the specified ratio against estimated enemy strength. Must use either > or < operators. 1.0 alliance_naval_strength_ratio <float> / <variable>
The ratio to check for.alliance_naval_strength_ratio > 0.5 Checks if the current scope and allies has an naval strength ratio higher than the specified ratio against estimated enemy strength. Must use either > or < operators. 1.0 enemies_strength_ratio <float> / <variable>
The ratio to check for.enemies_strength_ratio > 0.5 Checks if the estimated enemy army strength ratio is higher than the specified ratio. Must use either > or < operators. 1.0 enemies_naval_strength_ratio <float> / <variable>
The ratio to check for.enemies_naval_strength_ratio > 0.5 Checks if the estimated enemy naval strength ratio is higher than the specified ratio. Must use either > or < operators. 1.0 has_army_size size = <float>
The amount to check for.
type = <string>
The type to check for. Optional.has_army_size = {
size > 10
type = armor
}Checks if the current scope has the specified number of divisions, or of a specified type of division. Types:
· infantry
· support
· artillery
· anti_tank
· armor
Must use either > or < operators for size.1.0 has_navy_size size = <float>/<variable>
The amount to check for.
type = <string>
The type to check for. Optional.
archetype = <string>
The ship archetype to check for. Optional.has_navy_size = {
size > 10
type = capital_ship
archetype = ship_hull_heavy
}Checks if the current scope has the specified number of ships, or of a specified type of ship. Types:
· battleship
· battle_cruiser
· capital_ship
· carrier
· convoy
· destroyer
· heavy_cruiser
· light_cruiser
· submarine
· screen_ship
Must use either > or < operators for size. Ship archetypes are found in /Hearts of Iron IV/common/units/equipment/*.txt.1.0 has_deployed_air_force_size size = <float>
The amount to check for.
type = <string>
The type to check for. Optional.has_deployed_air_force_size = {
size > 10
type = cas
}Checks if the current scope has the specified number of aircraft, or of a specified type of aircraft. Types:
· fighter
· cas
· naval_bomber
· interceptor
· suicide
· tactical_bomber
· strategic_bomber
· air_transport
· missile
Must use either > or < operators for size.1.0 divisions_in_state size = <float>
The amount to check for.
type = <string>
The type to check for. Optional.
state = <scope> / <variable>
The state to check in.divisions_in_state = {
type = infantry
size > 10
state = 49
}Checks if the specified state contains the specified amount of divisions. Types:
· infantry
· support
· artillery
· anti_tank
· armor
Must use either > or < operators for size.1.0 army_manpower_in_state amount <> <float>
The amount to check for.
type = <string>
The type to check for. Optional.
state = <scope> / <variable>
The state to check in.army_manpower_in_state = {
type = infantry
amount > 10000
state = 49
}Checks if the specified state contains the specified amount of army manpower within the state. Types:
· infantry
· support
· artillery
· anti_tank
· armor
Must use either > or < operators for amount.1.6 divisions_in_border_state size = <float>
The amount to check for.
type = <string>
The type to check for. Optional.
state = <scope> / <variable>
The state to check in.
border_state = <scope> / <variable>
The border state to check in.divisions_in_border_state = {
type = infantry
size > 10
state = 49
border_state = var:state
}Checks if the border provinces between the specified state and border state contain the specified amount of divisions. Types:
· infantry
· support
· artillery
· anti_tank
· armor
Must use either > or < operators for size.1.5 ships_in_state_ports size = <float>
The amount to check for.
type = <string>
The type to check for. Optional.
state = <scope> / <variable>
The state to check in.ships_in_state_ports = {
type = capital_ship
size > 10
state = 49
}Checks if the specified state contains the specified amount of ships, or of ships of the specified type. Types:
· battleship
· battle_cruiser
· capital_ship
· carrier
· convoy
· destroyer
· heavy_cruiser
· light_cruiser
· submarine
· screen_ship
Must use either > or < operators for size.1.0 has_volunteers_amount_from tag = <scope>
The country to check for.
count = <int>
The amount to check for.has_volunteers_amount_from = {
tag = GER
count > 10
}Checks if the current scope has recieved volunteers from the specified country of the specified amounts. Must use either > or < operators for count. 1.0 convoy_threat <float>
The threat to compate with.convoy_threat > 0.5 Checks how much the convoys are threatened. Must use either > or < operators for count. Threat is always between 0 and 1. 1.6 has_mined target = <tag>
The country the coast of which is mined.
value <> <int>
The amount of mines to compare with.has_mined = {
target = POL
value > 1000Checks if the current scope has X mines on the coast of the specified country. Must use either > or < operators for value. 1.6 mine_threat <float>
The threat to compate with.mine_threat < 0.6 Checks how dangerous enemy mines are. Must use either > or < operators for count. Threat is always between 0 and 1. 1.6 Equipment
Name Parameters Examples Description Notes Version Added stockpile_ratio archetype = <string>
The equipment archetype to check for.
ratio = <float>
The ratio of equipment to check for.stockpile_ratio = {
archetype = infantry_equipment
ratio > 0.5
}Checks if the current scope has stockpiled the specified equipment to the specified ratio against fielded equipment of the same type. Must use either > or < operators for ratio.
For the convoy equipment which is not fielded as other equipments, ratio shall be not a percentage but a direct amount (for instance 256 convoys)1.5 has_equipment <equipment> = <int> / <variable>
The equipment to check for, and the amount to check for.has_equipment = {
infantry_equipment_1 > 10
}Checks if the current scope has the specified equipment to the specified amount. Must use either > or < operators. 1.0 has_any_license <bool>
Boolean.has_any_license = yes Checks if the current scope has any licenses from other countries. 1.0 is_licensing_any_to <scope>
The country to check for.is_licensing_any_to = GER Checks if the current scope is licensing to the specified scope. 1.0 is_licensing_to target = <scope>
The country to check for.
archetype = <string>
The equipment archetype to check for. Optional.
Equipment scope
type = <string>
The equipment to check for. Optional.
version = <int>
The variant id of the equipment. Optional.is_licensing_to = {
target = GER
archetype = infantry_equipment
}
is_licensing_to = {
target = GER
equipment = {
type = light_tank_equipment
version = 1
}
}Checks if the current scope is licensing the specified equipment to the specified country. 1.0 has_license from = <scope>
The country to check for.
archetype = <string>
The equipment archetype to check for. Optional.
Equipment scope
type = <string>
The equipment to check for. Optional.
version = <int>
The variant id of the equipment. Optional.has_license = {
from = GER
archetype = infantry_equipment
}
has_license = {
from = GER
equipment = {
type = light_tank_equipment
version = 1
}
}Checks if the current scope has a license for the specified equipment from the specified country. 1.0 fuel_ratio <float>
The ratio to check with.fuel_ratio > 0.4 Checks the fuel ratio of the country. Must use either < or > operators. 1.6 has_fuel <int>
The amount to compare with.has_fuel > 400 Checks the fuel amount of the country. Must use either < or > operators. 1.6 Intelligence
Name Parameters Examples Description Notes Version Added estimated_intel_max_piercing tag = <scope>
The country to check for.
value = <float>
The amount to check for.estimated_intel_max_piercing = {
tag = GER
value > 0.5
}Checks if the specified scope has the specified amount of piercing based on the current scope's intel. Must use either > or < operators for value. 1.0 estimated_intel_max_armor tag = <scope>
The country to check for.
value = <float>
The amount to check for.estimated_intel_max_armor = {
tag = GER
value > 0.5
}Checks if the specified scope has the specified amount of armor based on the current scope's intel. Must use either > or < operators for value. 1.0 compare_intel_with target = <tag>
The target to compare with.
civilian_intel <>= <float>
Comparison of civilian intel.
army_intel <>= <float>
Comparison of army intel.
navy_intel <>= <float>
Comparison of navy intel.
airforce_intel <>= <float>
Comparison of airforce intel.compare_intel_with = {
target = POL
civilian_intel > 0.5
army_intel = 0
navy_intel < 0
}Compares intel between 2 countries. Can use < (in which case the current country has x less intel), >, and = (in which case it must be equal). 1.9 intel_level_over target = <tag>
The target to compare with.
civilian_intel <>= <float>
Comparison of civilian intel.
army_intel <>= <float>
Comparison of army intel.
navy_intel <>= <float>
Comparison of navy intel.
airforce_intel <>= <float>
Comparison of airforce intel.intel_level_over = {
target = POL
civilian_intel > 0.5
army_intel = 0
navy_intel < 0
}Checks the intel level from the current country over a specified country. Can use < (in which case the current country has x less intel), >, and = (in which case it must be equal). 1.9 has_intelligence_agency <boolean>
The intelligence agency to check.has_intelligence_agency = yes Checks if the current scope has an intelligence agency. 1.9 network_national_coverage target = <tag>
The country which is checked.
value <> <float>
The value of network.network_national_coverage = {
target = POL
value < 0.7
}Checks network national coverage over a specific country. Must use < or > for value. network_strength target = <tag>
The country which is checked.
state = <id>
The state which is checked.
value <> <float>
The strength of network.network_strength = {
target = POL
value < 0.7
}Checks network national coverage over a specific country. Must use < or > for value. Can use either or both of target and state. 1.9 has_done_agency_upgrade <string>
The agency upgrade to check.has_done_agency_upgrade = upgrade_army_department Checks if the current scope has the specified agency upgrade (to its highest level). 1.9 agency_upgrade_number <int>
The amount of agency upgrades to check for.agency_upgrade_number > 4 Checks the number of upgrades done in the current scope's intelligence agency. Must use either > or < operators. 1.9 decryption_progress target = <tag>
The country to compare with.
value <> <float>
The value to compare.decryption_progress = {
target = POL
value < 0.5
}Checks the decryption progress towards a country. Must use either > or < operators for value. 1.9 has_captured_operative <tag>/<bool>
Country whose operative was captured/Whether an operative was captured.has_captured_operative = POL
has_captured_operative = yesChecks if the current scope has captured an operative. 1.9 has_finished_collecting_for_operation target = <tag>
Country towards whom the operation is targeted.
operation = <token>
The operation which current scope is planning against the target.has_finished_collecting_for_operation = {
target = POL
operation = operation_infiltrate_armed_forces_navy
}Checks if the current scope has finished collecting resources for an operation. 1.9 is_preparing_operation target = <tag>
Country towards whom the operation is targeted.
operation = <token>
The operation which current scope is planning against the target. Optional.is_preparing_operation = {
target = POL
operation = operation_infiltrate_armed_forces_navy
}Checks if the current scope is preparing an operation against the specified country. 1.9 is_running_operation target = <tag>
Country towards whom the operation is targeted.
operation = <token>
The operation which current scope is planning against the target. Optional.is_running_operation = {
target = POL
operation = operation_infiltrate_armed_forces_navy
}Checks if the current scope is running an operation against the specified country. 1.9 num_finished_operations target = <tag>
Country towards whom the operation is targeted.
operation = <token>
The operation which current scope is planning against the target. Optional.num_finished_operations = {
target = POL
operation = operation_infiltrate_armed_forces_navy
}Checks how many finished operations the current scope had against the specified country. 1.9 has_operation_token tag = <tag>
Country towards whom the operation is targeted.
token = <token>
The operation token.has_operation_token = {
tag = POL
token = token_name
}Checks if the current scope has an operation token against an another country. 1.9 is_active_decryption_bonuses_enabled <tag>
The country towards which the bonus is enabled.is_active_decryption_bonuses_enabled = POL Checks if the current scope has any decryption bonuses towards the specified country. 1.9 is_cryptology_department_active <bool>
Boolean.is_cryptology_department_active = yes Checks if the current scope has a cryptology department active. 1.9 is_decrypting <tag>
The country which is decrypted.is_decrypting = POL Checks if the current scope is decrypting a certain country. 1.9 is_fully_decrypted <tag>
The country which is decrypted.is_fully_decrypted = POL Checks if the current scope has fully decrypted a certain country. 1.9 num_fake_intel_divisions <int>
Amount of divisions.num_fake_intel_divisions > 10 Checks the amount of fake intel divisions. Must use either < or >. 1.9 num_free_operative_slots <int>
Amount of slots.num_free_operative_slots > 2 Checks the amount of free operative slots. Must use either < or >. 1.9 num_operative_slots <int>
Amount of slots.num_operative_slots > 2 Checks the amount of operative slots. Must use either < or >. 1.9 num_of_operatives <int>
Amount of operatives.num_of_operatives > 2 Checks the amount of operatives. Must use either < or >. 1.9 AI
Name Parameters Examples Description Notes Version Added ai_irrationality <int>
The amount to check for.ai_irrationality > 10 Checks if the current scope AI has the specified irrationality. Must use either > or < operators. 1.0 ai_liberate_desire target = <scope>
The country to check for.
count = <float>
The amount to check for.ai_liberate_desire = {
target = GER
count > 1
}Checks if the current scope AI has the specified liberation desire towards the specified country. Must use either > or < operators for count. 1.0 ai_has_role_division <string>
The role to check for.ai_has_role_division = infantry Checks if the current scope AI has a division with the specified role. Roles are defined in /Hearts of Iron IV/common/ai_templates/*.txt 1.0 ai_has_role_template <string>
The role to check for.ai_has_role_template = armor Checks if the current scope AI has a division template with the specified role. Roles are defined in /Hearts of Iron IV/common/ai_templates/*.txt 1.0 ai_wants_divisions <int>
The amount to check for.ai_wants_divisions > 10 Checks if the current scope AI desires the specified amount of divisions. Must use either > or < operators. 1.0 has_template_ai_majority_unit <string>
The unit to check for.has_template_ai_majority_unit = infantry Checks if the current scope AI has a division template mostly made up of the specified unit. 1.0 State scope
Can be used in state scope.
General
Name Parameters Examples Description Notes Version Added state <scope> / <variable>
The state to check for.state = 10
state = var:stateChecks if the current scope is the specified state. 1.0 region <int>
The strategic region id to check for.region = 10 Checks if the current scope is a state in the specified strategic region. 1.0 area <int>
The supply area id to check for.area = 6 Checks if the current scope is a state in the specified supply area. 1.0 has_state_flag <string>
The flag to check for.has_state_flag = my_flag Checks if the current scope has the specified flag. 1.0 has_state_flag flag = <string>
The flag to check.
value = <int>
The flag value to check for. Optional.
date = <date>
The flag creation date to check for. Optional.
days = <int>
The duration the flag existed for. Optional.has_state_flag = {
flag = my_flag
days > 30
date > 1936.6.1
value > 0
}Compares the specified flag's last set date, days since last set, and/or value. If not set, the value comparison is >0. value is limited between -32768 and 32767. 1.0 <building> <building> = <int>
The amount of the specified building to to check for.arms_factory > 10 Checks if the current scope has the specified amount of the specified building. Must use either > or < operators. 1.0 state_population <float>
The amount to check for.state_population > 10000 Checks if the current scope has the specified state population. Must use either > or < operators. 1.0 state_population_k <float>
The amount to check for.state_population_k > 10 Checks if the current scope has the specified state population in thousands. Must use either > or < operators. 1.0 is_capital <bool>
Boolean.is_capital = yes Checks if the current scope is a capital. 1.5 is_controlled_by <scope> / <variable>
The country to check for.is_controlled_by = GER Checks if the current scope is controlled by the specified country. 1.0 is_fully_controlled_by <scope> / <variable>
The country to check for.is_fully_controlled_by = GER Checks if the current scope is fully controlled by the specified country. 1.5 is_owned_by <scope> / <variable>
The country to check for.is_owned_by = GER Checks if the current scope is owned by the specified country. 1.0 is_claimed_by <scope> / <variable>
The country to check for.is_claimed_by = GER Checks if the current scope is claimed by the specified country. 1.0 is_core_of <scope> / <variable>
The country to check for.is_core_of = GER Checks if the current scope is a core of the specified country. 1.0 is_owned_and_controlled_by <scope> / <variable>
The country to check for.is_owned_and_controlled_by = GER Checks if the current scope is owned and controlled by the specified country. 1.0 is_demilitarized_zone <bool>
Boolean.is_demilitarized_zone = yes Checks if the current scope is a demilitarized zone. 1.0 is_border_conflict <bool>
Boolean.is_border_conflict = yes Checks if the current scope is part of a border war. 1.0 is_in_home_area <bool>
Boolean.is_in_home_area = yes Checks if the current scope is connected to the capital state over land. 1.0 is_coastal <bool>
Boolean.is_coastal = yes Checks if the current scope is a coastal state. 1.0 is_island_state <bool>
Boolean.is_island_state = yes Checks if the current scope is a coastal state with no adjacent land states. 1.0 is_on_continent <string>
The continent to check for.is_on_continent = europe Checks if the current scope is on the specified continent. Continents are found in /Hearts of Iron IV/map/continent.txt. 1.0 impassable <bool>
Boolean.impassable = yes Checks if the current scope is impassable. 1.9.1 has_state_category <string>
The category to check for.has_state_category = rural Checks if the current scope has the specified category. State categories are found in /Hearts of Iron IV/common/state_category/*.txt. 1.0 state_strategic_value <int>
The amount to check for.state_strategic_value > 10 Checks if the current scope has the specified strategic value. Must use either > or < operators. 1.5 state_and_terrain_strategic_value <int>
The amount to check for.state_and_terrain_strategic_value > 10 Checks if the current scope has the specified state and terrain strategic value. Must use either > or < operators. 1.5 free_building_slots building = <string>
The building to check for.
size = <int>
The amount to check for.
include_locked = <bool>
Whether to include locked slots.free_building_slots = {
building = arms_factory
size > 10
include_locked = yes
}Checks if the current scope has available slots for the specified amount of buildings. Must use either > or < operators for size. 1.0 any_province_building_level building = <string>
The building to check for.
limit = <int>
The amount to check for.
Province scope
id = <int>
The province to check for.
limit_to_border = <bool>
Whether to limit check to border provinces.any_province_building_level = {
province = {
id = 445
id = 494
limit_to_border = yes
}
building = bunker
level < 5
}Checks if the current scope has the specified provincal building at the specified amount in the specified provinces. Must use either > or < operators for level. 1.0 num_owned_neighbour_states owner = <scope>
The country to check for.
count = <int>
The amount to check for.num_owned_neighbour_states = {
owner = GER
count = 2
}Checks if the current scope has the specified amount of neighbor states belonging to the specified country. Must use either > or < operators for count. 1.0 has_claimed_state_in_peace_conference <scope> / <variable>
The country to check for.has_claimed_state_in_peace_conference = GER Checks if the current scope has been claimed by the specified country in a peace conference. 1.0 num_claimed_peace_conference_neighbour_states owner = <scope>
The country to check for.
count = <int>
The amount to check for.num_claimed_peace_conference_neighbour_states = {
owner = GER
count > 2
}Checks if the current scope has the specified amount of neighbor states claimed by the specified country in a peace conference. Must use either > or < operators for count. 1.0 distance_to distance = <float>
The distance to check for.
state = <scope>
The state to compare against.distance_to = {
value > 1000
target = 49
}Checks if the current scope is at the specified distance from the specified state. Must use either > or < operators for distance. 1.0 ships_in_area area = <int>
The strategic region to check for.
size = <int>
The amount to check for.ships_in_area = { area = 104 size > 14 } Checks if the current scope has the specified amount of ships in the specified strategic region. Must use either > or < operators for count. 1.0 days_since_last_strategic_bombing <int>
The amount to compare with.days_since_last_strategic_bombing < 10 Checks how many days have passed since the last strategic bombing of the state. Must use either > or < operators. 1.6 any_neighbor_state triggers any_neighbor_state = { is_coastal = yes } Returns true if THIS has at least one adjacent state that fulfills the sub-triggers; false otherwise. Evaluation stops early if any neighbor passes the check. all_neighbor_state triggers all_neighbor_state = { is_coastal = yes } Returns false if THIS has no adjacent states or at least one of them fails the sub-triggers; true otherwise. Evaluation stops early if any neighbor fails the check. Resistance and Compliance
Name Parameters Examples Description Notes Version Added compliance <int>
The amount to compare with.compliance > 50 Compares the compliance value of the current scope with the given value. Must use either > or < operators. 1.9 compliance_speed <int>
The amount to compare with.compliance_speed > 50 Compares the compliance speed of the current scope with the given value. Must use either > or < operators. 1.9 has_active_resistance <bool>
Boolean.has_active_resistance = yes Checks if the current scope has non-zero resistance. 1.9 has_resistance <bool>
Boolean.has_resistance = yes Checks if the current scope has resistance. 1.9 resistance <int>
The amount to compare with.resistance > 50 Compares the resistance value of the current scope with the given value. Must use either > or < operators. 1.9 resistance_speed <int>
The amount to compare with.resistance_speed > 50 Compares the resistance speed of the current scope with the given value. Must use either > or < operators. 1.9 resistance_target <int>
The amount to compare with.resistance_target > 50 Compares the target resistance value of the current scope with the given value. Must use either > or < operators. 1.9 has_occupation_modifier <token>
The occupation modifier to check.has_occupation_modifier = modifier_name Checks if the current scope has an occupation modifier, changing resistance/compliance. 1.9 occupation_law <token>
The occupation law to check.occupation_law = law_name Checks if the current scope has an occupation law. 1.9 occupied_country_tag <tag>
The occupation tag to check.occupied_country_tag = POL Checks which country creates resistance. 1.9 Unit leader scope
Can be used in unit leader scope.
General
Name Parameters Examples Description Notes Version Added has_id <int>
The id to check for.has_id = 1 Checks if the current scope has the specificed unit leader id. 1.5 has_unit_leader_flag <string>
The flag to check for.has_unit_leader_flag = my_flag Checks if the current scope has the specified flag. 1.5 has_unit_leader_flag flag = <string>
The flag to check.
value = <int>
The flag value to check for. Optional.
date = <date>
The flag creation date to check for. Optional.
days = <int>
The duration the flag existed for. Optional.has_unit_leader_flag = {
flag = my_flag
days > 30
date > 1936.6.1
value > 0
}Compares the specified flag's last set date, days since last set, and/or value. If not set, the value comparison is >0. value is limited between -32768 and 32767. 1.0 is_leading_army <bool>
Boolean.is_leading_army = yes Checks if the current scope is leading a single army. 1.5 is_leading_army_group <bool>
Boolean.is_leading_army_group = yes Checks if the current scope is leading an army group. 1.5 is_field_marshal <bool>
Boolean.is_field_marshal = yes Checks if the current scope is a Field Marshal. 1.5 is_assigned <bool>
Boolean.is_assigned = yes Checks if the current scope is an assigned unit leader. 1.5 has_trait <string>
The trait to check for.has_trait = offensive_doctrine Checks if the current scope has the specified trait. 1.5 can_select_trait <string>
The trait to check for.can_select_trait = offensive_doctrine Checks if the current scope can select the specified trait. 1.5 has_ability <string>
The ability to check for.has_ability = glider_planes Checks if the current scope has the specified unit leader ability. 1.5 skill <int>
The amount to check for.skill > 1 Checks if the current scope has a Skill above the specified amount. Must use either > or < operators. 1.0 skill_advantage <int>
The amount to check for.skill_advantage > 1 Checks if the current scope has a Skill advantage above the specified amount in against an enemy unit leader whilst in combat. Must use either > or < operators. 1.0 planning_skill_level <int>
The amount to check for.planning_skill_level > 1 Checks if the current scope has a Planning skill above the specified amount. Must use either > or < operators. 1.5 logistics_skill_level <int>
The amount to check for.logistics_skill_level > 1 Checks if the current scope has a Logistics skill above the specified amount. Must use either > or < operators. 1.5 defense_skill_level <int>
The amount to check for.defense_skill_level > 1 Checks if the current scope has a Defense skill above the specified amount. Must use either > or < operators. 1.5 attack_skill_level <int>
The amount to check for.attack_skill_level > 1 Checks if the current scope has a Attack skill above the specified amount. Must use either > or < operators. 1.5 average_stats <int>
The amount to check for.average_stats > 5 Checks if the current scope has an average skill above the specified amount. Must use either > or < operators. 1.5 is_border_war <bool>
Boolean.is_border_war = yes Checks if the current socpe is in a border war. 1.5 num_units <int>
The amount to check for.num_units > 5 Checks if the current scope is commanding the specified amount of divisions. Must use either > or < operators. 1.5 is_exiled_leader <bool>
Boolean.is_exiled_leader = yes Checks if the current scope is a general from an exiled country. 1.6 is_exiled_leader_from <tag>
Country.is_exiled_leader_from = POL Checks if the current scope is a general from the specified exiled country. 1.6 is_female <bool>
Boolean.is_female = yes Checks if the current scope is female. Works for aces. 1.9 Operatives
These triggers only work for operatives.
Name Parameters Examples Description Notes Version Added has_nationality <tag>
The nationality to check.has_nationality = POL Checks if the current operative has the nationality. 1.9 is_operative_captured <bool>
Boolean.is_operative_captured = yes Checks if the current scope is captured. 1.9 operative_leader_mission <token>
Mission.operative_leader_mission = mission_name Checks if the current scope is on the given mission. 1.9 operative_leader_operation <token>
Operation.operative_leader_operation = operation_name Checks if the current scope is on the given operation. 1.9 Combat
These triggers only work in special unit leader combat scopes, i.e. Combat Tactics.
They should not be used in the regular unit leader scopes.
Name Parameters Examples Description Notes Version Added hardness <float>
The amount to check for.hardness > 0.5 Checks if the current scope has the specified amount of hardness. Must use either > or < operators. 1.0 armor <float>
The amount to check for.armor > 0.5 Checks if the current scope has the specified amount of armor units. Must use either > or < operators. 1.0 dig_in <float>
The amount to check for.dig_in > 0.5 Checks if the current scope has the specified amount of Dig In bonus. Must use either > or < operators. 1.0 min_planning <float>
The amount to check for.min_planning > 0.5 Checks if the current scope has the specified amount of planning. Must use either > or < operators. 1.0 fastest_unit <float>
The speed in km/h to check for.fastest_unit > 12 Checks if the current scope has a unit with the specified speed. Must use either > or < operators. 1.0 temperature <float>
The temperature in celsius to check for.temperature > 20 Checks if the current scope is in a province with a temperature above the specified amount. Must use either > or < operators. 1.0 reserves <float>
The amount to check for.reserves > 10 Checks if the current scope has the specified amount of reserves waiting. Must use either > or < operators. 1.0 has_cavalry_ratio <float>
The ratio to check for.has_cavalry_ratio > 0.5 Checks if the current scope has the specified ratio of cavalry in their division composition. Must use either > or < operators. 1.0 has_combat_modifier <string>
The modifier to check for.has_combat_modifier = river_crossing Checks if the current scope has the specified combat modifier. 1.0 is_fighting_in_terrain <string>
The terrain to check for.is_fighting_in_terrain = desert Checks if the current scope is fighting in the specified terrain. 1.0 phase <bool>
Boolean.phase = yes Checks if the current scope is in phase. 1.0 recon_advantage <bool>
Boolean.recon_advantage > 0 Checks if the current scope has x recon advantage. 1.0 night <bool>
Boolean.night = yes Checks if the current scope is fighting at night. 1.0 frontage_full <bool>
Boolean.frontage_full = yes Checks if the current scope has a full combat width. 1.0 has_flanked_opponent <bool>
Boolean.has_flanked_opponent = yes Checks if the current scope has flanked their opponent. 1.0 has_max_planning <bool>
Boolean.has_max_planning = yes Checks if the current scope has the maximum planning bonus. 1.0 has_reserves <bool>
Boolean.has_reserves = yes Checks if the current scope has any reserves waiting. 1.0 is_amphibious_invasion <bool>
Boolean.is_amphibious_invasion = yes Checks if the current scope is performing an amphibious invasion. 1.0 is_attacker <bool>
Boolean.is_attacker = yes Checks if the current scope is attacking. 1.0 is_defender <bool>
Boolean.is_defender = yes Checks if the current scope is defending. 1.0 is_winning <bool>
Boolean.is_winning = yes Checks if the current scope is winning their battle. 1.0 is_fighting_air_units <bool>
Boolean.is_fighting_air_units = yes Checks if the current scope is fighting air units. 1.0 less_combat_width_than_opponent <bool>
Boolean.less_combat_width_than_opponent = yes Checks if the current scope is fighting with less combat width than their opponent. 1.0 has_carrier_airwings_on_mission <bool>
Boolean.has_carrier_airwings_on_mission = yes Checks if the current scope has carrier airwings on a mission. 1.0 has_carrier_airwings_in_own_combat <bool>
Boolean.has_carrier_airwings_in_own_combat = yes Checks if the current scope has carrier airwings in their own combat. 1.0 Variables
Can be used in country, state or unit leader scopes.
Name Parameters Examples Description Notes Version Added has_variable <variable>
The variable to check.has_variable = my_var Checks if the specified variable exists for the current scope. 1.5 check_variable var = <variable>
The variable to check.
value = <float> / <variable>
The value to check for.
compare = <type>
The type of comparison. Optional, can use < or > instead.check_variable = {
var = my_var
value = 10
compare = greater_than_or_equals
}
check_variable = {
my_var > 10
}Check the specified variable for the current scope. Possible compare types:
· less_than
· less_than_or_equals
· greater_than
· greater_than_or_equals
· equals
· not_equals1.5 print_variables print_global = <bool>
Print global variables. Defaults to no.
var_list = <list>
The variables to print. Defaults to all variables.
file = <string>The file path to log to. Defaults to "variable_dump".
text = <string>Text to prepend. Defaults to "No Header".
append = <bool>Whether to append to the file instead of overwrite. Defaults to yesprint_variables = {
var_list = { myvar1 myvar2 }
file = "my_dump_file"
text = "my header"
}Dumps the specified variables from the current scope and optionally the global scope into logs/variable_dumps/<file>.log. Evaluates to true. See Variables#Debugging Remember that variables need to refer to the scope they were set in. This means you can't check a country variable in a state scope without scoping the variable.
For example, to get the country variable whilst in a state scope, you'd do the following:
<country> = {
<state> = {
limit = {
check_variable = { from.my_country_var > 0.0 }
}
}
}
See Variables for more information.
Operators
There are two extra operators for triggers, > (greater than) and < (less than).
They are used for numerical or date triggers and provide an exclusive check for their value. This means a trigger using them will return true if the result is any number below (or above).
Note that equals in Hearts of Iron 4 only check for exact equality, i.e. x = y, whereas in previous games it checks for equals or greater than, i.e. x >= y.
Context scopes
There are three general scopes all triggers operate in:
· country
· state
· unit leader
They give context to a trigger by stating what the trigger is checking against.
Each country acts as a sub-scope of the general country scope, i.e. GER = { } will check only against Germany, whereas any_country will check against all countries. Likewise for states and unit leaders.
Triggers won't work in scopes they are not assigned to. Country triggers will not work for states or vice-versa.
Meta-Triggers
This is a community maintained wiki. If you spot a mistake then you are welcome to fix it. Meta-Triggers are utilized in the same way as Meta-Effects are. Meta-Triggers allow you to use non-dynamic triggers (the ones that do not accept modifiers and can only use static tokens or constant values) as if they were accepting variables. Meta-Triggers let you use variables and scripted localization within them to build triggers as if they were texts and run them.
set_temp_variable = { province_id = 1 }
meta_trigger = {
text = {
any_province_building_level = {
province = {
id = [PROVINCE_ID]
}
building = bunker
level > 0
}
}
PROVINCE_ID = province_id
}
In the trigger shown above, "province_id" is a temporary variable, which is actually not supported to be used inside the trigger above called "any_province_building_level". We can work around this limitation by utilizing the variable inside a meta_trigger.
Meta-Triggers work in any scope that supports triggers, even in Combat Scope. Despite this, Meta-Triggers are currently never used anywhere inside the game scripts, they were first discovered by trial and error after being mentioned as "fixed" in a few patch notes.
Scripted triggers
Scripted triggers serve a similar purpose to functions in that they can be defined in /Hearts of Iron IV/common/scripted_triggers/*.txt and then used elsewhere as a shortened version. Alongside that, the game has certain base game scripted triggers that are checked directly in the game's code determining triggers for functions that cannot be changed.
A scripted trigger is defined simply as
scripted_trigger_name = {
<triggers>
}
This example can be used as a trigger in regular code as scripted_trigger_name = yes or scripted_trigger_name = no.
Following scripted triggers, as of 1.10, are checked directly in the game's code:
· diplomacy_scripted_triggers.txt decides on triggers that decide when a diplomatic option is available to send, where ROOT is the country for which the triggers are checked and FROM is the target country towards which the diplomatic option is oriented. In order to find the internal name of a diplomatic function that's not in the file, /Hearts of Iron IV/localisation/diplomacy_l_english.yml. As an example, DIPLOMACY_WAR_TITLE:0 "Declare war" means that the 'Declare war' diplomatic action has the ID of DIPLOMACY_WAR.
· 00_diplo_action_valid_triggers.txt decides when a diplomatic action is visible.
· 00_resistance_initiate_triggers.txt decides when resistance can be initiated. Alongside the default, global, trigger which applies to every state, state-specific ones can be added using the template of
should_initiate_resistance_123_321 = {
if = {
limit = {
tag = ENG
}
is_core_of = FRA
}
else = {
should_initiate_resistance = yes
}
}
This example will activate the resistance on states 123 and 321 for England if it's a core of France, otherwise normal rules will be followed. Do note that this will completely overwrite the default triggers on resistance initiation on the specified states.
반응형