Skip to main content

tiger_lib/ck3/tables/
effects.rs

1use std::sync::LazyLock;
2
3use crate::ck3::effect_validation::*;
4use crate::ck3::tables::misc::{LEGEND_QUALITY, OUTBREAK_INTENSITIES};
5use crate::effect::Effect;
6use crate::effect_validation::*;
7use crate::everything::Everything;
8use crate::helpers::TigerHashMap;
9use crate::item::Item;
10use crate::scopes::Scopes;
11use crate::token::Token;
12
13use Effect::*;
14
15pub fn scope_effect(name: &Token, data: &Everything) -> Option<(Scopes, Effect)> {
16    let name_lc = name.as_str().to_ascii_lowercase();
17
18    if let result @ Some(_) = SCOPE_EFFECT_MAP.get(&*name_lc).copied() {
19        return result;
20    }
21
22    if let Some(x) = name_lc.strip_suffix("_perk_points")
23        && let Some(lifestyle) = x.strip_prefix("add_")
24    {
25        data.verify_exists_implied(Item::Lifestyle, lifestyle, name);
26        return Some((Scopes::Character, Effect::ScriptValue));
27    }
28    if let Some(x) = name_lc.strip_suffix("_xp")
29        && let Some(lifestyle) = x.strip_prefix("add_")
30    {
31        data.verify_exists_implied(Item::Lifestyle, lifestyle, name);
32        return Some((Scopes::Character, Effect::ScriptValue));
33    }
34    if let Some(relation) = name_lc.strip_prefix("set_relation_") {
35        data.verify_exists_implied(Item::Relation, relation, name);
36        return Some((Scopes::Character, Vbv(validate_set_relation)));
37    }
38    if let Some(relation) = name_lc.strip_prefix("remove_relation_") {
39        data.verify_exists_implied(Item::Relation, relation, name);
40        return Some((Scopes::Character, Effect::Scope(Scopes::Character)));
41    }
42    std::option::Option::None
43}
44
45/// A hashed version of [`SCOPE_EFFECT`], for quick lookup by effect name.
46static SCOPE_EFFECT_MAP: LazyLock<TigerHashMap<&'static str, (Scopes, Effect)>> =
47    LazyLock::new(|| {
48        let mut hash = TigerHashMap::default();
49        for (from, s, effect) in SCOPE_EFFECT.iter().copied() {
50            hash.insert(s, (from, effect));
51        }
52        hash
53    });
54
55// LAST UPDATED CK3 VERSION 1.18.08.08.08.08.08.08.08.0
56// See `effects.log` from the game data dumps
57const SCOPE_EFFECT: &[(Scopes, &str, Effect)] = &[
58    (Scopes::TravelPlan, "abort_travel_plan", Boolean),
59    (Scopes::Character, "accept_activity_invite", Scope(Scopes::Activity)),
60    (Scopes::Character, "accept_activity_invite_without_travel", Scope(Scopes::Activity)),
61    (
62        Scopes::all(),
63        "accept_invitation_for_character",
64        Removed(
65            "1.9",
66            "replaced by `accept_activity_invite` or `accept_activity_invite_without_travel`",
67        ),
68    ),
69    (Scopes::Character, "accept_task_contract", Scope(Scopes::TaskContract)),
70    (Scopes::Accolade, "activate_accolade", Removed("1.19", "")),
71    (Scopes::Faith, "activate_holy_site", Item(Item::HolySite)),
72    (Scopes::Struggle, "activate_struggle_catalyst", Vbv(validate_activate_struggle_catalyst)),
73    (Scopes::Activity, "add_activity_log_entry", Vbc(validate_add_activity_log_entry)),
74    (Scopes::Scheme, "add_agent_slot", Item(Item::AgentType)),
75    (Scopes::Character, "add_amenity_level", ItemValue("type", Item::Amenity, "value")),
76    (Scopes::Domicile, "add_animate_domicile_building", Item(Item::DomicileBuilding)),
77    (Scopes::Artifact, "add_artifact_history", Vb(validate_add_artifact_history)),
78    (Scopes::Artifact, "add_artifact_modifier", Vv(validate_add_artifact_modifier)),
79    (Scopes::Artifact, "add_artifact_title_history", Vb(validate_add_artifact_title_history)),
80    (Scopes::War, "add_attacker", Scope(Scopes::Character)),
81    (Scopes::Character, "add_barter_goods", ScriptValue), // TODO: no docs on effect value
82    (Scopes::Province, "add_building", Item(Item::Building)),
83    (
84        Scopes::all(),
85        "add_building_slot",
86        Removed("1.9", "replaced by the `extra_building_slot` modifier"),
87    ),
88    (Scopes::Character, "add_character_flag", Vbv(validate_add_character_flag)),
89    (Scopes::Character, "add_character_modifier", Vbv(validate_add_modifier)),
90    (Scopes::SituationSubRegion, "add_character_realm_to_sub_region", Scope(Scopes::Character)),
91    (Scopes::TravelPlan, "add_companion", Scope(Scopes::Character)),
92    (Scopes::Confederation, "add_confederation_member", Scope(Scopes::Character)),
93    (Scopes::Confederation, "add_confederation_member_house", Scope(Scopes::DynastyHouse)),
94    (Scopes::Character, "add_contact", Scope(Scopes::Character)),
95    (Scopes::LandedTitle, "add_county_modifier", Vbv(validate_add_modifier)),
96    (Scopes::Character, "add_courtier", Scope(Scopes::Character)),
97    (
98        Scopes::Culture,
99        "add_culture_tradition",
100        ScopeOrItem(Scopes::CultureTradition, Item::CultureTradition),
101    ),
102    (Scopes::Character, "add_dead_character_flag", Vb(validate_add_dead_character_flag)),
103    (Scopes::War, "add_defender", Scope(Scopes::Character)),
104    (Scopes::SituationSubRegion, "add_dejure_title_to_sub_region", Scope(Scopes::LandedTitle)),
105    (Scopes::TravelPlan, "add_destination_progress", Timespan),
106    (Scopes::Character, "add_diplomacy_skill", ScriptValue),
107    (Scopes::Faith, "add_doctrine", ScopeOrItem(Scopes::Doctrine, Item::Doctrine)),
108    (Scopes::Domicile, "add_domicile_building", Item(Item::DomicileBuilding)),
109    (Scopes::Character, "add_dread", ScriptValue),
110    (Scopes::Artifact, "add_durability", ScriptValue),
111    (Scopes::Dynasty, "add_dynasty_modifier", Vbv(validate_add_modifier)),
112    (Scopes::Dynasty, "add_dynasty_perk", Item(Item::DynastyPerk)),
113    (Scopes::Dynasty, "add_dynasty_prestige", ScriptValue),
114    (Scopes::Dynasty, "add_dynasty_prestige_level", ScriptValue),
115    (Scopes::Faction, "add_faction_discontent", ScriptValue),
116    (Scopes::Culture, "add_fascination_progress", ScriptValue),
117    (Scopes::Culture, "add_fascination_progress_time", ScriptValue),
118    (Scopes::Character, "add_focus_progress", ScriptValue),
119    (Scopes::CasusBelli, "add_from_contribution_attackers", Vb(validate_add_from_contribution)),
120    (Scopes::CasusBelli, "add_from_contribution_defenders", Vb(validate_add_from_contribution)),
121    (
122        Scopes::SituationSubRegion,
123        "add_geographical_region",
124        ScopeOrItem(Scopes::GeographicalRegion, Item::Region),
125    ),
126    (Scopes::Accolade, "add_glory", ScriptValue),
127    (Scopes::Character, "add_gold", NonNegativeValue),
128    // TODO: check that these have type = great_building
129    (Scopes::Province, "add_great_building", Item(Item::Building)),
130    (Scopes::Province, "add_great_building_slot", Item(Item::Building)),
131    (Scopes::Character, "add_hook", Vb(validate_add_hook)),
132    (Scopes::Character, "add_hook_no_toast", Vb(validate_add_hook)),
133    (Scopes::DynastyHouse, "add_house_artifact_claim", Scope(Scopes::Artifact)),
134    (Scopes::DynastyHouse, "add_house_modifier", Vbv(validate_add_modifier)),
135    (Scopes::DynastyHouse, "add_house_unity_modifier", Vbv(validate_add_modifier)),
136    (Scopes::Culture, "add_innovation", Item(Item::Innovation)),
137    (
138        Scopes::Culture,
139        "add_innovation_progress",
140        TargetValue("target", Scopes::CultureInnovation, "value"),
141    ),
142    (
143        Scopes::Culture,
144        "add_innovation_progress_time",
145        TargetValue("target", Scopes::CultureInnovation, "value"),
146    ),
147    (Scopes::None, "add_internal_flag", Identifier("flag name")),
148    (Scopes::Character, "add_intrigue_skill", ScriptValue),
149    (Scopes::Character, "add_joined_faction_discontent", ScriptValue),
150    (Scopes::Character, "add_knows_of_killer", Scope(Scopes::Character)),
151    (Scopes::Character, "add_learning_skill", ScriptValue),
152    (Scopes::Legend, "add_legend_county_modifier", Vbv(validate_add_modifier)),
153    (Scopes::Legend, "add_legend_owner_modifier", Vbv(validate_add_modifier)),
154    (Scopes::Legend, "add_legend_province_modifier", Vbv(validate_add_modifier)),
155    (Scopes::Province, "add_legend_spread", Scope(Scopes::Legend)),
156    (Scopes::Character, "add_legitimacy", ScriptValue),
157    (Scopes::Character, "add_long_term_gold", ScriptValue),
158    (Scopes::Army, "add_loot", ScriptValue),
159    (Scopes::Situation, "add_manual_participant", Scope(Scopes::Character)),
160    (Scopes::Character, "add_martial_skill", ScriptValue),
161    (Scopes::Culture, "add_name_list", Item(Item::NameList)),
162    (Scopes::Character, "add_opinion", Vb(validate_add_opinion)),
163    (Scopes::Character, "add_perk", Item(Item::Perk)),
164    (Scopes::Character, "add_personal_artifact_claim", Scope(Scopes::Artifact)),
165    (Scopes::SituationSubRegion, "add_phase_max_duration", Vb(validate_phase_duration)),
166    (Scopes::Character, "add_piety", Effect::ScriptValue),
167    (Scopes::Character, "add_piety_and_experience", ScriptValue),
168    (Scopes::Character, "add_piety_experience", ScriptValue),
169    (Scopes::Character, "add_piety_level", ScriptValue),
170    (Scopes::Character, "add_piety_no_experience", ScriptValue),
171    (Scopes::Character, "add_pressed_claim", Scope(Scopes::LandedTitle)),
172    (Scopes::Character, "add_prestige", Effect::ScriptValue),
173    (Scopes::Character, "add_prestige_and_experience", ScriptValue),
174    (Scopes::Character, "add_prestige_experience", ScriptValue),
175    (Scopes::Character, "add_prestige_level", ScriptValue),
176    (Scopes::Character, "add_prestige_no_experience", ScriptValue),
177    (Scopes::Province, "add_province_modifier", Vbv(validate_add_modifier)),
178    (Scopes::Character, "add_prowess_skill", ScriptValue),
179    (
180        Scopes::Culture,
181        "add_random_innovation",
182        Choice(&["culture_group_military", "culture_group_civic", "culture_group_regional", "yes"]),
183    ),
184    (Scopes::Culture, "add_random_valid_tradition", Scope(Scopes::Character)),
185    (Scopes::Culture, "add_random_valid_tradition_replace_if_necessary", Scope(Scopes::Character)),
186    (Scopes::Character, "add_realm_law", Item(Item::Law)),
187    (Scopes::Character, "add_realm_law_skip_effects", Item(Item::Law)),
188    (Scopes::Character, "add_relation_flag", Vb(validate_add_relation_flag)),
189    (Scopes::Character, "add_reserved_gold", ScriptValue),
190    (Scopes::Scheme, "add_scheme_breach", ScriptValue),
191    (Scopes::Character, "add_scheme_cooldown", Vb(validate_scheme_cooldown)),
192    (Scopes::Scheme, "add_scheme_modifier", Vb(validate_scheme_modifier)),
193    (Scopes::Scheme, "add_scheme_progress", ScriptValue),
194    (Scopes::Character, "add_secret", Vb(validate_add_secret)),
195    (Scopes::Secret, "add_secret_participant", Scope(Scopes::Character)),
196    (Scopes::Character, "add_short_term_gold", ScriptValue),
197    (Scopes::Province, "add_special_building", Item(Item::SpecialBuilding)),
198    (Scopes::Province, "add_special_building_slot", Item(Item::SpecialBuilding)),
199    (Scopes::Culture, "add_spread_progress", ScriptValue),
200    (Scopes::Culture, "add_spread_progress_time", ScriptValue),
201    (Scopes::Character, "add_stewardship_skill", ScriptValue),
202    (Scopes::Character, "add_stress", ScriptValue),
203    (Scopes::Character, "add_subject_standing", ScriptValue),
204    (Scopes::Army, "add_supply", NonNegativeValue),
205    (
206        Scopes::SituationSubRegion,
207        "add_takeover_phase_duration",
208        Vb(validate_add_takeover_phase_duration),
209    ),
210    (
211        Scopes::SituationSubRegion,
212        "add_takeover_phase_points",
213        Vb(validate_add_takeover_phase_points),
214    ),
215    (Scopes::Character, "add_targeting_factions_discontent", ScriptValue),
216    (Scopes::LandedTitle, "add_title_law", Item(Item::Law)),
217    (Scopes::LandedTitle, "add_title_law_effects", Item(Item::Law)),
218    (Scopes::SituationSubRegion, "add_title_to_sub_region", Removed("1.18", "")),
219    (Scopes::Character, "add_to_activity", Scope(Scopes::Activity)),
220    (Scopes::Character, "add_to_activity_without_travel", Scope(Scopes::Activity)),
221    (Scopes::Character, "add_to_agent_slot", Scope(Scopes::AgentSlot)),
222    // TODO: figure out the name = parameter for this
223    (
224        Scopes::Activity,
225        "add_to_current_phase_guest_subset",
226        Vb(validate_current_phase_guest_subset),
227    ),
228    (Scopes::None, "add_to_global_variable_list", Vb(validate_add_to_variable_list)),
229    // TODO: figure out the parameters for this
230    (Scopes::Activity, "add_to_guest_subset", Vb(validate_guest_subset)),
231    (Scopes::all(), "add_to_list", Vbv(validate_add_to_list)),
232    (Scopes::None, "add_to_local_variable_list", Vb(validate_add_to_variable_list)),
233    (Scopes::all(), "add_to_scheme", Removed("1.13", "replaced with add_to_agent_slot")),
234    (Scopes::all(), "add_to_temporary_list", Vbv(validate_add_to_list)),
235    (Scopes::None, "add_to_variable_list", Vb(validate_add_to_variable_list)),
236    (Scopes::Character, "add_trait", ScopeOrItem(Scopes::Trait, Item::Trait)),
237    (Scopes::Character, "add_trait_force_tooltip", ScopeOrItem(Scopes::Trait, Item::Trait)),
238    (Scopes::Character, "add_trait_xp", Vb(validate_add_trait_xp)),
239    (Scopes::Character, "add_travel_option", Item(Item::TravelOption)),
240    (Scopes::TravelPlan, "add_travel_plan_modifier", Vbv(validate_add_modifier)),
241    (Scopes::Province, "add_travel_point_of_interest", Item(Item::PointOfInterest)),
242    (Scopes::TravelPlan, "add_travel_waypoint", Scope(Scopes::Province)),
243    (Scopes::Character, "add_treasury", ScriptValue),
244    (Scopes::Character, "add_treasury_or_gold", ScriptValue),
245    (Scopes::Character, "add_truce_both_ways", Vb(validate_add_truce)),
246    (Scopes::Character, "add_truce_one_way", Vb(validate_add_truce)),
247    (Scopes::Character, "add_tyranny", ScriptValue),
248    (Scopes::DynastyHouse, "add_unity_value", Vb(validate_add_unity)),
249    (Scopes::Character, "add_unpressed_claim", Scope(Scopes::LandedTitle)),
250    (Scopes::Character, "add_visiting_courtier", Scope(Scopes::Character)),
251    (Scopes::Character, "add_war_chest_gold", ScriptValue),
252    (Scopes::Character, "adopt", Scope(Scopes::Character)),
253    (Scopes::Character, "ai_attempt_to_build_building_effect", Yes),
254    (
255        Scopes::Character,
256        "ai_attempt_to_host_activity",
257        ScopeOrItem(Scopes::ActivityType, Item::ActivityType),
258    ),
259    (Scopes::Character, "ai_start_best_war", Vb(validate_start_best_war)),
260    (Scopes::Character, "allow_alliance", Scope(Scopes::Character)),
261    (Scopes::Character, "allow_in_scheme", Scope(Scopes::Scheme)),
262    (Scopes::Character, "always_fire_councillor", Scope(Scopes::Character)),
263    (Scopes::Character, "always_fire_councillor_skip_effects", Scope(Scopes::Character)),
264    (Scopes::Character, "apply_ai_vassal_admin_province_obligation_liege_most_desired", Yes),
265    (Scopes::Character, "apply_ai_vassal_admin_province_obligation_vassal_most_desired", Yes),
266    (Scopes::Character, "apply_ai_vassal_obligation_liege_most_desired", Yes),
267    (Scopes::Character, "apply_ai_vassal_obligation_vassal_most_desired", Yes),
268    (Scopes::Character, "appoint_court_position", Vb(validate_appoint_court_position)),
269    (Scopes::None, "assert_if", Unchecked),
270    (Scopes::None, "assert_read", Unchecked),
271    (Scopes::Army, "assign_commander", Scope(Scopes::Character)),
272    (Scopes::Character, "assign_council_task", Vb(validate_assign_council_task)),
273    (Scopes::Character, "assign_councillor_type", Vb(validate_assign_councillor_type)),
274    (Scopes::Scheme, "auto_assign_scheme_agents", Yes),
275    (Scopes::Character, "banish", Yes),
276    (Scopes::CombatSide, "battle_event", Vb(validate_battle_event)),
277    (Scopes::Character, "becomes_independent", Target("change", Scopes::TitleAndVassalChange)),
278    (Scopes::Province, "begin_create_holding", Vbv(validate_begin_create_holding)),
279    (Scopes::Character, "break_alliance", Scope(Scopes::Character)),
280    (Scopes::Character, "break_betrothal", Scope(Scopes::Character)),
281    (Scopes::None, "cancel_great_project", Scope(Scopes::GreatProject)),
282    (Scopes::TravelPlan, "cancel_travel_plan", Boolean),
283    (Scopes::Character, "cancel_truce_both_ways", Scope(Scopes::Character)),
284    (Scopes::Character, "cancel_truce_one_way", Scope(Scopes::Character)),
285    (Scopes::Character, "change_age", ScriptValue),
286    (
287        Scopes::LandedTitle,
288        "change_appointment_investment",
289        Vb(validate_change_appointment_investment),
290    ),
291    (
292        Scopes::LandedTitle,
293        "change_appointment_investment_for_anyone",
294        Vb(validate_change_appointment_investment),
295    ),
296    (Scopes::Confederation, "change_cohesion", ScriptValue),
297    (Scopes::LandedTitle, "change_county_control", ScriptValue),
298    (Scopes::LandedTitle, "change_county_fertility", ScriptValue),
299    (Scopes::Culture, "change_cultural_acceptance", Vb(validate_change_cultural_acceptance)),
300    (Scopes::Character, "change_current_court_grandeur", ScriptValue),
301    (Scopes::Character, "change_current_weight", ScriptValue),
302    (
303        Scopes::LandedTitle,
304        "change_de_jure_drift_progress",
305        TargetValue("target", Scopes::LandedTitle, "value"),
306    ),
307    (Scopes::LandedTitle, "change_development_level", ScriptValue),
308    (Scopes::LandedTitle, "change_development_progress", ScriptValue),
309    (Scopes::LandedTitle, "change_development_progress_with_overflow", ScriptValue),
310    (Scopes::Character, "change_diarchy_swing", ScriptValue),
311    (Scopes::Faith, "change_fervor", ScriptValue),
312    (Scopes::Character, "change_first_name", Vbv(validate_change_first_name)),
313    (Scopes::None, "change_global_variable", Vb(validate_change_variable)),
314    (Scopes::Character, "change_government", Item(Item::GovernmentType)),
315    (Scopes::Domicile, "change_herd", ScriptValue),
316    (Scopes::HouseRelation, "change_house_relation_level", Vb(validate_house_relation_level)),
317    (Scopes::Character, "change_influence", ScriptValue),
318    (Scopes::Character, "change_influence_and_experience", ScriptValue),
319    (Scopes::Character, "change_influence_experience", ScriptValue),
320    (Scopes::Character, "change_influence_level", ScriptValue),
321    (Scopes::Character, "change_influence_no_experience", ScriptValue),
322    (Scopes::Inspiration, "change_inspiration_progress", Integer),
323    (Scopes::Character, "change_liege", Vb(validate_change_liege)),
324    (Scopes::None, "change_local_variable", Vb(validate_change_variable)),
325    (Scopes::Regiment, "change_maa_regiment_size", Vbv(validate_change_maa_regiment_size)),
326    (Scopes::Regiment, "change_maa_troops_count", ScriptValue),
327    (Scopes::Character, "change_merit", ScriptValue),
328    (Scopes::Character, "change_merit_experience", ScriptValue),
329    (Scopes::Character, "change_merit_level", ScriptValue),
330    (Scopes::Character, "change_merit_no_experience", ScriptValue),
331    (Scopes::Scheme, "change_opportunities", ScriptValue),
332    (Scopes::SituationSubRegion, "change_phase", Vbv(validate_change_phase)),
333    (Scopes::Character, "change_prison_type", Item(Item::PrisonType)),
334    (Scopes::Domicile, "change_provisions", ScriptValue),
335    // Docs say Scopes::None for the next two but that makes no sense
336    (
337        Scopes::Character,
338        "change_realm_law_level",
339        ItemTarget("law_group", Item::LawGroup, "change", Scopes::Value),
340    ),
341    (
342        Scopes::Character,
343        "change_realm_law_level_skip_effects",
344        ItemTarget("law_group", Item::LawGroup, "change", Scopes::Value),
345    ),
346    (Scopes::Character, "change_strife_opinion", ScriptValue),
347    (Scopes::Struggle, "change_struggle_phase", Vbv(validate_change_struggle_phase)),
348    (
349        Scopes::Struggle,
350        "change_struggle_phase_duration",
351        Vb(validate_change_struggle_phase_duration),
352    ),
353    (Scopes::Character, "change_target_weight", ScriptValue),
354    (Scopes::LandedTitle, "change_title_holder", Vb(validate_change_title_holder)),
355    (Scopes::LandedTitle, "change_title_holder_include_vassals", Vb(validate_change_title_holder)),
356    // Docs say Scopes::None for the next two but that makes no sense
357    (
358        Scopes::LandedTitle,
359        "change_title_law_level",
360        ItemTarget("law_group", Item::LawGroup, "change", Scopes::Value),
361    ),
362    (
363        Scopes::LandedTitle,
364        "change_title_law_level_effects",
365        ItemTarget("law_group", Item::LawGroup, "change", Scopes::Value),
366    ),
367    (Scopes::Situation, "change_top_phase", Vbv(validate_change_phase)),
368    (Scopes::Character, "change_trait_rank", Vb(validate_change_trait_rank)),
369    (Scopes::None, "change_variable", Vb(validate_change_variable)),
370    (Scopes::GreatHolyWar, "change_war_chest_gold", ScriptValue),
371    (Scopes::GreatHolyWar, "change_war_chest_piety", ScriptValue),
372    (Scopes::GreatHolyWar, "change_war_chest_prestige", ScriptValue),
373    (Scopes::None, "clamp_global_variable", Vb(validate_clamp_variable)),
374    (Scopes::None, "clamp_local_variable", Vb(validate_clamp_variable)),
375    (Scopes::None, "clamp_variable", Vb(validate_clamp_variable)),
376    (Scopes::Artifact, "clear_artifact_modifiers", Yes),
377    (Scopes::Character, "clear_appointment_timeout", Yes),
378    (Scopes::War, "clear_claimant", Yes),
379    (Scopes::Culture, "clear_culture_traditions", Yes),
380    (Scopes::Character, "clear_designated_heir", Yes),
381    (Scopes::Character, "clear_forced_vote", Yes),
382    (Scopes::None, "clear_global_variable_list", Identifier("list name")),
383    (Scopes::HouseRelation, "clear_house_relation", Yes),
384    (Scopes::Confederation, "clear_leading_house", Yes),
385    (Scopes::Legend, "clear_legend_chapter", Item(Item::LegendChapter)),
386    (Scopes::None, "clear_local_variable_list", Identifier("list name")),
387    (Scopes::None, "clear_saved_scope", Identifier("scope name")),
388    (Scopes::Army, "clear_supply", Yes),
389    (Scopes::LandedTitle, "clear_title_laws", Yes),
390    (Scopes::LandedTitle, "clear_title_laws_effects", Yes),
391    (Scopes::Character, "clear_traits", Yes),
392    (Scopes::None, "clear_variable_list", Identifier("list name")),
393    (Scopes::None, "close_all_views", Yes),
394    (Scopes::None, "close_view", Vbv(validate_close_view)),
395    (Scopes::Activity, "complete_activity", Removed("1.9", "")),
396    (Scopes::Character, "complete_activity_intent", Boolean),
397    (Scopes::None, "complete_great_project", Scope(Scopes::GreatProject)),
398    (Scopes::None, "complete_great_project_animated", Scope(Scopes::GreatProject)),
399    (Scopes::TaskContract, "complete_task_contract", Item(Item::TaskContractReward)),
400    (Scopes::TravelPlan, "complete_travel_plan", Boolean),
401    (Scopes::Domicile, "construct_domicile_building", Item(Item::DomicileBuilding)),
402    (Scopes::Character, "consume_banish_reasons", Scope(Scopes::Character)),
403    (Scopes::Character, "consume_divorce_reasons", Scope(Scopes::Character)),
404    (Scopes::Character, "consume_execute_reasons", Scope(Scopes::Character)),
405    (Scopes::Character, "consume_imprisonment_reasons", Scope(Scopes::Character)),
406    (Scopes::Character, "consume_revoke_title_reason", Scope(Scopes::Character)),
407    (Scopes::Culture, "copy_all_traditions_from", Scope(Scopes::Culture)),
408    (Scopes::Artifact, "copy_artifact_modifiers", Scope(Scopes::Artifact)),
409    (Scopes::Character, "copy_inheritable_appearance_from", Scope(Scopes::Character)),
410    (Scopes::Character, "copy_localized_text", Vb(validate_copy_localized_text)),
411    (Scopes::LandedTitle, "copy_title_history", Scope(Scopes::LandedTitle)),
412    (Scopes::Character, "copy_traits", Scope(Scopes::Character)),
413    (Scopes::None, "create_accolade", Vb(validate_create_accolade)),
414    (Scopes::None, "create_adventurer_title", Vb(validate_create_adventurer_title)),
415    (Scopes::Character, "create_alliance", Vbv(validate_create_alliance)),
416    (Scopes::Character, "create_artifact", Vb(validate_create_artifact)),
417    (Scopes::Character, "create_betrothal", Scope(Scopes::Character)),
418    (Scopes::Character, "create_betrothal_matrilineal", Scope(Scopes::Character)),
419    (Scopes::Character, "create_cadet_branch", Vb(validate_create_cadet_branch)),
420    (Scopes::None, "create_character", Vb(validate_create_character)),
421    (Scopes::Character, "create_character_memory", Vb(validate_create_character_memory)),
422    (Scopes::Character, "create_confederation", Vb(validate_create_confederation)),
423    (Scopes::Character, "create_divergent_culture", Yes),
424    (Scopes::Character, "create_divergent_culture_with_side_effects", Yes),
425    (Scopes::Character, "create_divergent_culture_with_side_effects_excluding_cost", Yes),
426    (Scopes::None, "create_dynamic_title", Vb(validate_create_dynamic_title)),
427    (Scopes::Character, "create_dynasty", Vb(validate_create_dynasty)),
428    (Scopes::Province, "create_epidemic_outbreak", Vb(validate_create_epidemic_outbreak)),
429    (
430        Scopes::Character,
431        "create_faction",
432        ItemTarget("type", Item::Faction, "target", Scopes::Character),
433    ),
434    (Scopes::None, "create_holy_order", Vb(validate_create_holy_order)),
435    (Scopes::Character, "create_hybrid_culture", Scope(Scopes::Culture)),
436    (Scopes::Character, "create_hybrid_culture_with_side_effects", Scope(Scopes::Culture)),
437    (Scopes::Character, "create_inspiration", Vbv(validate_create_inspiration)),
438    (Scopes::Character, "create_legend", Vb(validate_create_legend)),
439    (Scopes::Character, "create_legend_seed", Vb(validate_create_legend)),
440    (Scopes::Character, "create_maa_regiment", Vb(validate_create_maa_regiment)),
441    (Scopes::None, "create_nomad_title", Vb(validate_create_nomad_title)),
442    (Scopes::Character, "create_story", Vbv(validate_create_story)),
443    (Scopes::Character, "create_task_contract", Vb(validate_create_task_contract)),
444    (Scopes::None, "create_title_and_vassal_change", Vb(validate_create_title_and_vassal_change)),
445    (Scopes::None, "custom_description", Control),
446    (Scopes::None, "custom_description_no_bullet", Control),
447    (Scopes::None, "custom_label", ControlOrLabel),
448    (Scopes::None, "custom_tooltip", ControlOrLabel),
449    (Scopes::Accolade, "deactivate_accolade", Removed("1.19", "")),
450    (Scopes::Faith, "deactivate_holy_site", Item(Item::HolySite)),
451    (Scopes::Character, "death", Vbv(validate_death)),
452    (Scopes::None, "debug_log", UncheckedTodo),
453    (Scopes::None, "debug_log_date", Yes),
454    (Scopes::None, "debug_log_scopes", Boolean),
455    (Scopes::None, "debug_log_stack_trace", UncheckedTodo),
456    (Scopes::None, "debug_trigger_event", Item(Item::Event)),
457    (Scopes::Character, "decline_activity_invite", Scope(Scopes::Activity)),
458    (
459        Scopes::all(),
460        "decline_invitation_for_character",
461        Removed("1.9", "replaced by `decline_activity_invite`"),
462    ),
463    (Scopes::Character, "decline_invitation_for_character", Scope(Scopes::Activity)),
464    (Scopes::TravelPlan, "delay_travel_plan", Vb(validate_delay_travel_plan)),
465    (Scopes::Army, "deplete_army_by_percentage", ScriptValue),
466    (Scopes::Character, "depose", Yes),
467    (Scopes::Character, "depose_diarch", Boolean),
468    (Scopes::Character, "designate_diarch", Scope(Scopes::Character)),
469    (Scopes::Character, "destroy_all_event_troops", Boolean),
470    (Scopes::None, "destroy_artifact", ScopeOkThis(Scopes::Artifact)),
471    (Scopes::None, "destroy_character_memory", Scope(Scopes::CharacterMemory)),
472    (Scopes::Faction, "destroy_faction", Yes),
473    (Scopes::None, "destroy_inspiration", Scope(Scopes::Inspiration)),
474    (Scopes::Regiment, "destroy_maa_regiment", Boolean),
475    (Scopes::Character, "destroy_owned_artifact", Scope(Scopes::Artifact)),
476    (Scopes::Character, "destroy_title", Scope(Scopes::LandedTitle)),
477    (Scopes::Secret, "disable_exposure_by", Scope(Scopes::Character)),
478    (Scopes::None, "disable_succession_calculation", Yes),
479    (Scopes::Confederation, "disband_confederation", Yes),
480    (Scopes::GreatHolyWar, "divide_war_chest", Vb(validate_divide_war_chest)),
481    (Scopes::Character, "divorce", Scope(Scopes::Character)),
482    (Scopes::GreatHolyWar, "do_ghw_title_handout", Scope(Scopes::TitleAndVassalChange)),
483    (Scopes::Province, "downgrade_building_effect", Item(Item::Building)),
484    (Scopes::Character, "duel", Vbc(validate_duel)),
485    (Scopes::None, "else", Control),
486    (Scopes::None, "else_if", Control),
487    (Scopes::None, "enable_and_run_succession_calculation", Yes),
488    (Scopes::Character, "enact_treasury_budgets", Yes),
489    (Scopes::Character, "enact_treasury_budgets_init", Yes),
490    (Scopes::Character, "enact_treasury_budgets_no_costs", Yes),
491    (Scopes::Character, "enact_treasury_budgets_no_costs_no_opinion_effects", Yes),
492    (Scopes::Character, "enact_treasury_budgets_no_opinion_effects", Yes),
493    (Scopes::Character, "end_diarchy", Boolean),
494    (Scopes::Character, "end_inspiration_sponsorship", Scope(Scopes::Inspiration)),
495    (Scopes::Character, "end_pregnancy", Yes),
496    (Scopes::Scheme, "end_scheme", Yes),
497    (Scopes::Situation, "end_situation", Yes),
498    (Scopes::StoryCycle, "end_story", Yes),
499    (Scopes::Struggle, "end_struggle", Vv(validate_end_struggle)),
500    (Scopes::Character, "end_tributary", Yes),
501    // "invalidated" is undocumented
502    (Scopes::War, "end_war", Choice(&["attacker", "defender", "white_peace", "invalidated"])),
503    (Scopes::Artifact, "equip_artifact_to_owner", Yes),
504    (Scopes::Artifact, "equip_artifact_to_owner_replace", Yes),
505    (Scopes::None, "error_log", UncheckedTodo),
506    (Scopes::None, "error_log_scopes", Boolean),
507    (Scopes::None, "error_log_stack_trace", UncheckedTodo),
508    (Scopes::Character, "execute_decision", Item(Item::Decision)),
509    (Scopes::Scheme, "expose_scheme", Yes),
510    (Scopes::Scheme, "expose_scheme_agent", Scope(Scopes::Character)),
511    (Scopes::Secret, "expose_secret", Scope(Scopes::Character)),
512    (Scopes::Faction, "faction_remove_war", Yes),
513    (Scopes::Faction, "faction_start_war", Vb(validate_faction_start_war)),
514    (Scopes::Character, "finish_council_task", Yes),
515    (Scopes::Character, "fire_councillor", Scope(Scopes::Character)),
516    (Scopes::Character, "fire_councillor_skip_effects", Scope(Scopes::Character)),
517    (Scopes::Character, "fire_tax_collector", Scope(Scopes::Character)),
518    (Scopes::Character, "forbid_from_scheme", Scope(Scopes::Scheme)),
519    (
520        Scopes::all(),
521        "force_add_to_scheme",
522        Removed("1.13", "replaced with force_add_to_agent_slot"),
523    ),
524    (Scopes::Character, "force_add_to_agent_slot", Vb(validate_force_add_to_agent_slot)),
525    (Scopes::Character, "force_character_skill_recalculation", Yes),
526    (Scopes::Character, "force_step_down_landed_titles", Yes),
527    (Scopes::Character, "force_vote_as", Vb(validate_force_vote_as)),
528    (Scopes::CombatSide, "force_win", Yes),
529    (Scopes::Character, "fund_great_project_contribution", Vb(validate_contribution)),
530    (Scopes::Province, "generate_building", Yes),
531    (
532        Scopes::LandedTitle
533            .union(Scopes::Dynasty)
534            .union(Scopes::DynastyHouse)
535            .union(Scopes::Confederation),
536        "generate_coa",
537        Vv(validate_generate_coa),
538    ),
539    (Scopes::Culture, "get_all_innovations_from", Scope(Scopes::Culture)),
540    (Scopes::Culture, "get_random_innovation_from", Scope(Scopes::Culture)),
541    (Scopes::Character, "get_title", Scope(Scopes::LandedTitle)),
542    (Scopes::Character, "give_domain_to_herders", Yes),
543    (Scopes::Character, "give_nickname", Item(Item::Nickname)),
544    (Scopes::Character, "give_noble_family_title", Vb(validate_give_noble_family_title)),
545    (Scopes::None, "hidden_effect", Control),
546    (
547        Scopes::None,
548        "hidden_effect_new_artifact",
549        Removed("1.9", "replaced by `hidden_effect_new_object`"),
550    ),
551    (Scopes::None, "hidden_effect_new_object", Control),
552    (Scopes::None, "if", Control),
553    (Scopes::DynastyHouse, "impact_house_relation", Vb(validate_impact_house_relation)),
554    (Scopes::Character, "imprison", Vb(validate_imprison)),
555    (Scopes::Character, "infect_with_epidemic", Scope(Scopes::Epidemic)),
556    (Scopes::None, "info_log", UncheckedTodo),
557    (Scopes::None, "info_log_scopes", Boolean),
558    (Scopes::None, "info_log_stack_trace", UncheckedTodo),
559    (Scopes::None, "invalidate_activity", Scope(Scopes::Activity)),
560    (Scopes::TaskContract, "invalidate_contract", Boolean),
561    (Scopes::Character, "invalidate_diarch_if_needed", Boolean),
562    (Scopes::Scheme, "invalidate_scheme", Yes),
563    (Scopes::Inspiration, "invest_gold", NonNegativeValue),
564    (
565        Scopes::all(),
566        "invite_character_to_activity",
567        Removed("1.9", "replaced by `invite_to_activity` which works the other way around"),
568    ),
569    (Scopes::Character, "invite_to_activity", Scope(Scopes::Activity)),
570    (Scopes::Culture, "join_era", Item(Item::CultureEra)),
571    (Scopes::Character, "join_faction", Scope(Scopes::Faction)),
572    (Scopes::Character, "join_faction_forced", Vb(validate_join_faction_forced)),
573    (Scopes::Character, "join_faction_skip_check", Scope(Scopes::Faction)),
574    (Scopes::Character, "learn_court_language_of", ScopeOkThis(Scopes::Character)),
575    (Scopes::Character, "learn_language", Item(Item::Language)),
576    (Scopes::Character, "learn_language_of_culture", Scope(Scopes::Culture)),
577    (Scopes::LandedTitle, "lease_out_to", Scope(Scopes::HolyOrder)),
578    (Scopes::Culture, "leave_era", Item(Item::CultureEra)),
579    (Scopes::Character, "leave_faction", Scope(Scopes::Faction)),
580    (Scopes::Situation, "log_natural_disaster", UncheckedTodo),
581    (Scopes::all(), "lose_combat", Removed("1.9", "")),
582    (Scopes::Domicile, "lower_domicile_building", Item(Item::DomicileBuilding)),
583    (Scopes::Domicile, "lower_domicile_building_no_refund", Item(Item::DomicileBuilding)),
584    (Scopes::Character, "make_claim_strong", Scope(Scopes::LandedTitle)),
585    (Scopes::Character, "make_claim_weak", Scope(Scopes::LandedTitle)),
586    (Scopes::Character, "make_concubine", Scope(Scopes::Character)),
587    (Scopes::Character, "make_pregnant", Vb(validate_make_pregnant)),
588    (Scopes::Character, "make_pregnant_no_checks", Vb(validate_make_pregnant)),
589    (Scopes::StoryCycle, "make_story_owner", Scope(Scopes::Character)),
590    (Scopes::Character, "make_trait_active", ScopeOrItem(Scopes::Trait, Item::Trait)),
591    (Scopes::Character, "make_trait_active_force_tooltip", ScopeOrItem(Scopes::Trait, Item::Trait)),
592    (Scopes::Character, "make_trait_inactive", ScopeOrItem(Scopes::Trait, Item::Trait)),
593    (
594        Scopes::Character,
595        "make_trait_inactive_force_tooltip",
596        ScopeOrItem(Scopes::Trait, Item::Trait),
597    ),
598    (Scopes::Character, "make_unprunable", Yes),
599    (Scopes::Character, "marry", Scope(Scopes::Character)),
600    (Scopes::Character, "marry_matrilineal", Scope(Scopes::Character)),
601    (Scopes::SituationParticipantGroup, "mass_recalculate_participant_groups", Yes),
602    (Scopes::all(), "move_activity", Removed("1.9", "")),
603    (Scopes::Character, "move_budget_gold", Vb(validate_move_budget)),
604    (Scopes::Character, "move_budget_treasury", Vb(validate_move_budget)),
605    (Scopes::Domicile, "move_domicile", Scope(Scopes::Province)),
606    (Scopes::LandedTitle, "move_title_name_to", Scope(Scopes::LandedTitle)),
607    (Scopes::Character, "move_to_pool", Yes),
608    (Scopes::Character, "move_to_pool_at", Scope(Scopes::Province)),
609    (Scopes::None, "multiply_focus_progress", UncheckedTodo),
610    (Scopes::Character, "open_appoint_court_position_window", Item(Item::CourtPosition)),
611    (Scopes::None, "open_interaction_window", Vb(validate_open_interaction_window)),
612    (Scopes::None, "open_view", Vbv(validate_open_view)),
613    (Scopes::all_but_none(), "open_view_data", Vbv(validate_open_view)),
614    (
615        Scopes::Character,
616        "overlord_contract_set_obligation_level",
617        Vb(validate_contract_set_obligation_level),
618    ),
619    (Scopes::None, "pan_camera_to_province", Scope(Scopes::Province)),
620    (Scopes::None, "pan_camera_to_title", Scope(Scopes::LandedTitle)),
621    (Scopes::TravelPlan, "pause_travel_plan", Boolean),
622    (Scopes::TravelPlan, "pause_travel_plan_mp", Boolean),
623    (Scopes::Character, "pay_gold_to_treasury", TargetValue("target", Scopes::Character, "value")),
624    (Scopes::Character, "pay_herd", TargetValue("target", Scopes::Character, "value")),
625    (Scopes::Character, "pay_long_term_gold", Vb(validate_pay_gold)),
626    (Scopes::Character, "pay_long_term_income", Vb(validate_pay_income)),
627    (
628        Scopes::Character,
629        "pay_long_term_treasury",
630        TargetValue("target", Scopes::Character, "treasury"),
631    ),
632    (Scopes::Character, "pay_long_term_treasury_income", Vb(validate_pay_income)),
633    (Scopes::Character, "pay_reserved_gold", Vb(validate_pay_gold)),
634    (Scopes::Character, "pay_reserved_income", Vb(validate_pay_income)),
635    (
636        Scopes::Character,
637        "pay_reserved_treasury",
638        TargetValue("target", Scopes::Character, "treasury"),
639    ),
640    (Scopes::Character, "pay_reserved_treasury_income", Vb(validate_pay_income)),
641    (Scopes::Character, "pay_short_term_gold", Vb(validate_pay_gold)),
642    (Scopes::Character, "pay_short_term_income", Vb(validate_pay_income)),
643    (
644        Scopes::Character,
645        "pay_short_term_treasury",
646        TargetValue("target", Scopes::Character, "treasury"),
647    ),
648    (Scopes::Character, "pay_short_term_treasury_income", Vb(validate_pay_income)),
649    (Scopes::Character, "pay_treasury", TargetValue("target", Scopes::Character, "value")),
650    (Scopes::Character, "pay_treasury_or_gold", TargetValue("target", Scopes::Character, "value")),
651    (Scopes::Character, "pay_treasury_to_gold", TargetValue("target", Scopes::Character, "value")),
652    (Scopes::Character, "pay_war_chest_gold", Vb(validate_pay_gold)),
653    (Scopes::Character, "pay_war_chest_income", Vb(validate_pay_income)),
654    (
655        Scopes::Character,
656        "pay_war_chest_treasury",
657        TargetValue("target", Scopes::Character, "treasury"),
658    ),
659    (Scopes::Character, "pay_war_chest_treasury_income", Vb(validate_pay_income)),
660    (Scopes::Province, "plan_great_project", Vb(validate_plan_great_project)),
661    (Scopes::Character, "play_music_cue", Item(Item::Music)),
662    (Scopes::Character, "play_sound_effect", Item(Item::Sound)),
663    (Scopes::GreatHolyWar, "pledge_attacker", Scope(Scopes::Character)),
664    (Scopes::GreatHolyWar, "pledge_defender", Scope(Scopes::Character)),
665    (Scopes::Character, "populate_task_contracts_for_area", Vb(validate_contracts_for_area)),
666    (Scopes::Activity, "progress_activity_phase_after", Timespan),
667    (Scopes::None, "random", Control),
668    (Scopes::None, "random_list", Vbc(validate_random_list)),
669    (Scopes::None, "random_log_scopes", Boolean),
670    // TODO: docs now say Scopes::None, but that doesn't make sense
671    (Scopes::LandedTitle, "raze_county", Vb(validate_raze_county)),
672    (Scopes::Province, "rebuild_great_building", Yes),
673    (Scopes::None, "recalculate_cultural_heads_of_type", Choice(&["domain", "herd"])),
674    (Scopes::Character, "recalculate_participant_group", Scope(Scopes::Situation)),
675    (Scopes::Situation, "record_situation_special_event", Vb(validate_situation_special_event)),
676    (Scopes::all(), "recruit_courtier", Removed("1.9.1", "replaced by `add_courtier`")),
677    (Scopes::Province, "refill_garrison", Yes),
678    (Scopes::Province, "refill_levy", Yes),
679    (Scopes::Army, "refill_supply", Yes),
680    (Scopes::Artifact, "reforge_artifact", Vb(validate_create_artifact)),
681    (Scopes::Character, "refund_all_perks", Yes),
682    (Scopes::Character, "refund_perks", Item(Item::Lifestyle)),
683    (Scopes::Character, "release_from_prison", Yes),
684    (Scopes::Accolade, "remove_acclaimed_knight", Yes),
685    (Scopes::Scheme, "remove_agent_slot", Scope(Scopes::AgentSlot)),
686    (Scopes::Character, "remove_all_character_modifier_instances", Item(Item::Modifier)),
687    (Scopes::LandedTitle, "remove_all_county_modifier_instances", Item(Item::Modifier)),
688    (Scopes::Dynasty, "remove_all_dynasty_modifier_instances", Item(Item::Modifier)),
689    (Scopes::DynastyHouse, "remove_all_house_modifier_instances", Item(Item::Modifier)),
690    (Scopes::DynastyHouse, "remove_all_house_unity_modifier_instances", Item(Item::Modifier)),
691    (Scopes::Legend, "remove_all_legend_county_modifier_instances", Item(Item::Modifier)),
692    (Scopes::Legend, "remove_all_legend_owner_modifier_instances", Item(Item::Modifier)),
693    (Scopes::Legend, "remove_all_legend_province_modifier_instances", Item(Item::Modifier)),
694    (Scopes::Province, "remove_all_province_modifier_instances", Item(Item::Modifier)),
695    (Scopes::Character, "remove_all_realm_laws", Yes),
696    (Scopes::TravelPlan, "remove_all_travel_plan_modifier_instances", Item(Item::Modifier)),
697    (Scopes::Artifact, "remove_artifact_feature_group", Item(Item::ArtifactFeatureGroup)),
698    (Scopes::Artifact, "remove_artifact_modifier", Item(Item::Modifier)),
699    (Scopes::Character, "remove_barter_goods", Yes),
700    (Scopes::Culture, "remove_bonus_fascination_innovation", Yes),
701    (Scopes::Province, "remove_building", Item(Item::Building)),
702    (Scopes::TravelPlan, "remove_character", Scope(Scopes::Character)),
703    (Scopes::Character, "remove_character_flag", Unchecked),
704    (Scopes::Character, "remove_character_modifier", Item(Item::Modifier)),
705    (
706        Scopes::SituationSubRegion,
707        "remove_character_realm_from_sub_region",
708        Scope(Scopes::Character),
709    ),
710    (Scopes::Character, "remove_character_secret_faith", Yes),
711    (Scopes::Character, "remove_claim", Scope(Scopes::LandedTitle)),
712    (Scopes::Army, "remove_commander", Yes),
713    (Scopes::Character, "remove_concubine", Scope(Scopes::Character)),
714    (Scopes::Confederation, "remove_confederation_member", Scope(Scopes::Character)),
715    (Scopes::Confederation, "remove_confederation_member_house", Scope(Scopes::DynastyHouse)),
716    (Scopes::LandedTitle, "remove_county_modifier", Item(Item::Modifier)),
717    (Scopes::Character, "remove_courtier_or_guest", Vbv(validate_remove_courtier_or_guest)),
718    (
719        Scopes::Culture,
720        "remove_culture_tradition",
721        ScopeOrItem(Scopes::CultureTradition, Item::CultureTradition),
722    ),
723    (Scopes::Character, "remove_dead_character_variable", Identifier("variable name")),
724    (Scopes::Character, "remove_decision_cooldown", Item(Item::Decision)),
725    (Scopes::SituationSubRegion, "remove_dejure_title_from_sub_region", Scope(Scopes::LandedTitle)),
726    (Scopes::Faith, "remove_doctrine", ScopeOrItem(Scopes::Doctrine, Item::Doctrine)),
727    (Scopes::Domicile, "remove_domicile_building", Item(Item::DomicileBuilding)),
728    (Scopes::Domicile, "remove_domicile_building_no_refund", Item(Item::DomicileBuilding)),
729    (Scopes::Dynasty, "remove_dynasty_modifier", Item(Item::Modifier)),
730    (Scopes::Dynasty, "remove_dynasty_perk", Item(Item::DynastyPerk)),
731    (Scopes::Character, "remove_from_activity", Scope(Scopes::Activity)),
732    (
733        Scopes::Activity,
734        "remove_from_current_phase_guest_subset",
735        Vb(validate_current_phase_guest_subset),
736    ),
737    (Scopes::Activity, "remove_from_guest_subset", Vb(validate_guest_subset)),
738    (Scopes::all_but_none(), "remove_from_list", Vv(validate_remove_from_list)),
739    (Scopes::Situation, "remove_geographical_region", Scope(Scopes::GeographicalRegion)),
740    (Scopes::None, "remove_global_variable", Identifier("variable name")),
741    (Scopes::Province, "remove_holding", Yes),
742    (Scopes::Character, "remove_hook", ItemTarget("type", Item::Hook, "target", Scopes::Character)),
743    (Scopes::DynastyHouse, "remove_house_artifact_claim", Scope(Scopes::Artifact)),
744    (Scopes::DynastyHouse, "remove_house_modifier", Item(Item::Modifier)),
745    (Scopes::DynastyHouse, "remove_house_unity_modifier", Item(Item::Modifier)),
746    (Scopes::LandedTitle, "remove_important_location", Yes),
747    (
748        Scopes::Culture,
749        "remove_innovation",
750        ScopeOrItem(Scopes::CultureInnovation, Item::Innovation),
751    ),
752    (Scopes::Character, "remove_interaction_cooldown", Item(Item::CharacterInteraction)),
753    (
754        Scopes::Character,
755        "remove_interaction_cooldown_against",
756        ItemTarget("interaction", Item::CharacterInteraction, "target", Scopes::Character),
757    ),
758    (Scopes::Legend, "remove_legend_county_modifier", Item(Item::Modifier)),
759    (Scopes::Legend, "remove_legend_owner_modifier", Item(Item::Modifier)),
760    (Scopes::Legend, "remove_legend_province_modifier", Item(Item::Modifier)),
761    (Scopes::Province, "remove_legend_spread", Scope(Scopes::Legend)),
762    (Scopes::None, "remove_list_global_variable", Vb(validate_add_to_variable_list)),
763    (Scopes::None, "remove_list_local_variable", Vb(validate_add_to_variable_list)),
764    (Scopes::None, "remove_list_variable", Vb(validate_add_to_variable_list)),
765    (Scopes::None, "remove_local_variable", Identifier("variable name")),
766    (Scopes::Character, "remove_localized_text", Identifier("text name")),
767    (Scopes::Character, "remove_long_term_gold", NonNegativeValue),
768    (Scopes::Character, "remove_long_term_treasury", ScriptValue),
769    (Scopes::Situation, "remove_manual_participant", Scope(Scopes::Character)),
770    (Scopes::Character, "remove_nickname", Boolean),
771    (Scopes::Character, "remove_opinion", Vb(validate_remove_opinion)),
772    (Scopes::War, "remove_participant", Scope(Scopes::Character)),
773    (Scopes::Character, "remove_perk", Item(Item::Perk)),
774    (Scopes::Character, "remove_personal_artifact_claim", Scope(Scopes::Artifact)),
775    (Scopes::Province, "remove_province_modifier", Item(Item::Modifier)),
776    (Scopes::Culture, "remove_random_culture_tradition", Yes),
777    (Scopes::Character, "remove_realm_law", Item(Item::Law)),
778    (Scopes::Character, "remove_regnal_name", Yes),
779    (Scopes::Character, "remove_relation_flag", Vb(validate_add_relation_flag)),
780    (Scopes::Faith, "remove_religious_head_title", Yes),
781    (Scopes::Character, "remove_reserved_gold", NonNegativeValue),
782    (Scopes::Character, "remove_reserved_treasury", ScriptValue),
783    (
784        Scopes::Character,
785        "remove_scheme_cooldown_against",
786        ItemTarget("scheme", Item::Scheme, "target", Scopes::Character),
787    ),
788    (Scopes::Scheme, "remove_scheme_modifier", Item(Item::Modifier)),
789    (Scopes::Secret, "remove_secret", Yes),
790    (Scopes::Character, "remove_short_term_gold", NonNegativeValue),
791    (Scopes::Character, "remove_short_term_treasury", ScriptValue),
792    (Scopes::Faction, "remove_special_character", Yes),
793    (Scopes::Faction, "remove_special_title", Yes),
794    (Scopes::LandedTitle, "remove_title_from_important_location", Scope(Scopes::LandedTitle)),
795    (Scopes::SituationSubRegion, "remove_title_from_sub_region", Removed("1.18", "")),
796    // docs say these next two are scope None, but that does not make sense.
797    (Scopes::LandedTitle, "remove_title_law", Item(Item::Law)),
798    (Scopes::LandedTitle, "remove_title_law_effects", Item(Item::Law)),
799    (
800        Scopes::SituationSubRegion,
801        "remove_title_to_sub_region",
802        Removed("1.16.2", "renamed to remove_title_from_sub_region"),
803    ),
804    (Scopes::Character, "remove_trait", ScopeOrItem(Scopes::Trait, Item::Trait)),
805    (Scopes::Character, "remove_trait_force_tooltip", ScopeOrItem(Scopes::Trait, Item::Trait)),
806    (Scopes::TravelPlan, "remove_travel_option", Item(Item::TravelOption)),
807    (Scopes::TravelPlan, "remove_travel_plan_modifier", Item(Item::Modifier)),
808    (Scopes::Province, "remove_travel_point_of_interest", Item(Item::PointOfInterest)),
809    (Scopes::Character, "remove_treasury", ScriptValue),
810    (Scopes::Character, "remove_treasury_or_gold", ScriptValue),
811    (Scopes::None, "remove_variable", Identifier("variable name")),
812    (Scopes::Character, "remove_war_chest_gold", NonNegativeValue),
813    (Scopes::Character, "remove_war_chest_treasury", ScriptValue),
814    (Scopes::Province, "replace_building_effect", Item(Item::Building)),
815    (Scopes::Character, "replace_court_position", Vb(validate_replace_court_position)),
816    (
817        Scopes::TravelPlan,
818        "reroute_to_home",
819        Removed("1.15", "replaced with return_home character effect"),
820    ),
821    (Scopes::Character, "reset_beneficiary", Yes),
822    (
823        Scopes::LandedTitle
824            .union(Scopes::Dynasty)
825            .union(Scopes::DynastyHouse)
826            .union(Scopes::Confederation),
827        "reset_coa",
828        Yes,
829    ),
830    (Scopes::Culture, "reset_culture_creation_date", Yes),
831    (Scopes::GreatHolyWar, "reset_designated_winner", Yes),
832    (Scopes::Scheme, "reset_scheme_progress", Yes),
833    (Scopes::LandedTitle, "reset_title_name", Yes),
834    (Scopes::LandedTitle, "reset_title_prefix", Yes),
835    (Scopes::None, "resolve_title_and_vassal_change", Scope(Scopes::TitleAndVassalChange)),
836    (Scopes::TravelPlan, "resume_travel_plan", Boolean),
837    (Scopes::TravelPlan, "resume_travel_plan_mp", Boolean),
838    (Scopes::Character, "return_home", Boolean),
839    (Scopes::Character, "return_hostage", Yes),
840    (Scopes::Character, "return_to_court", Yes),
841    (Scopes::Secret, "reveal_to", Scope(Scopes::Character)),
842    (Scopes::Character, "reverse_add_opinion", Vb(validate_add_opinion)),
843    (Scopes::Character, "revoke_court_position", Vb(validate_revoke_court_position)),
844    (Scopes::LandedTitle, "revoke_lease", Yes),
845    (Scopes::None, "round_global_variable", Vb(validate_round_variable)),
846    (Scopes::None, "round_local_variable", Vb(validate_round_variable)),
847    (Scopes::None, "round_variable", Vb(validate_round_variable)),
848    (Scopes::Province, "ruin_great_building", Yes),
849    (Scopes::None, "run_interaction", Vb(validate_open_interaction_window)),
850    (Scopes::Character, "save_opinion_value_as", Vb(validate_save_opinion_value)),
851    (Scopes::all_but_none(), "save_scope_as", Vv(validate_save_scope)),
852    (Scopes::None, "save_scope_value_as", Vb(validate_save_scope_value)),
853    (Scopes::Character, "save_temporary_opinion_value_as", Vb(validate_save_opinion_value)),
854    (Scopes::all_but_none(), "save_temporary_scope_as", Vv(validate_save_scope)),
855    (Scopes::None, "save_temporary_scope_value_as", Vb(validate_save_scope_value)),
856    (Scopes::all(), "scheme_freeze_days", Removed("1.9", "replaced by `scheme_freeze`")),
857    (Scopes::Scheme, "scheme_freeze", Vb(validate_scheme_freeze)),
858    (Scopes::Scheme, "scheme_unfreeze", Yes),
859    (Scopes::Character, "scriptedtests_recalculate_character_modifier", Unchecked),
860    (Scopes::Character, "scriptedtests_recalculate_succession", Unchecked),
861    (Scopes::None, "send_china_tutorial_finished_telemetry", Yes),
862    (Scopes::None, "send_china_tutorial_started_telemetry", Yes),
863    (Scopes::Character, "send_interface_message", Vbc(validate_send_interface)),
864    (Scopes::Character, "send_interface_popup", Vbc(validate_send_interface)),
865    (Scopes::Character, "send_interface_toast", Vbc(validate_send_interface)),
866    (Scopes::None, "send_long_tutorial_finished_telemetry", Yes),
867    (Scopes::None, "send_long_tutorial_started_telemetry", Yes),
868    (Scopes::None, "send_short_tutorial_finished_telemetry", Yes),
869    (Scopes::None, "send_short_tutorial_started_telemetry", Yes),
870    (Scopes::Character, "set_absolute_country_control", Boolean),
871    (Scopes::Accolade, "set_accolade_successor", Scope(Scopes::Character)),
872    (Scopes::Activity, "set_activity_host", Scope(Scopes::Character)),
873    (Scopes::Character, "set_activity_intent", Vbv(validate_set_activity_intent)),
874    (Scopes::Character, "set_age", ScriptValue),
875    (Scopes::CombatSide, "set_allow_early_retreat", Boolean),
876    (Scopes::LandedTitle, "set_always_follows_primary_heir", Yes),
877    (Scopes::Character, "set_amenity_level", ItemValue("type", Item::Amenity, "value")),
878    (Scopes::Character, "set_appointment_timeout", Vb(validate_appointment_timeout)),
879    (Scopes::Army, "set_army_location", Scope(Scopes::Province)),
880    (Scopes::Artifact, "set_artifact_description", Desc),
881    (Scopes::Artifact, "set_artifact_feature", Item(Item::ArtifactFeature)),
882    (Scopes::Artifact, "set_artifact_feature_group", Item(Item::ArtifactFeatureGroup)),
883    (Scopes::Artifact, "set_artifact_name", Desc),
884    (Scopes::Artifact, "set_artifact_rarity", Item(Item::ArtifactRarity)),
885    (Scopes::Character, "set_beneficiary", Scope(Scopes::Character)),
886    (
887        Scopes::Culture,
888        "set_bonus_fascination_innovation",
889        ScopeOrItem(Scopes::CultureInnovation, Item::Innovation),
890    ),
891    (Scopes::War, "set_called_to", Scope(Scopes::Character)),
892    (Scopes::LandedTitle, "set_can_be_named_after_dynasty", Boolean),
893    (Scopes::LandedTitle, "set_can_use_nomadic_naming", Boolean),
894    (Scopes::LandedTitle, "set_capital_barony", Yes),
895    (Scopes::LandedTitle, "set_capital_county", Scope(Scopes::LandedTitle)),
896    (Scopes::War, "set_casus_belli", Item(Item::CasusBelli)),
897    (Scopes::Character, "set_character_faith", Scope(Scopes::Faith)),
898    (Scopes::Character, "set_character_faith_history", Scope(Scopes::Faith)),
899    (Scopes::Character, "set_character_faith_with_conversion", Scope(Scopes::Faith)),
900    (Scopes::Character, "set_character_secret_faith", Scope(Scopes::Faith)),
901    (Scopes::Character, "set_child_of_concubine_on_pregnancy", Boolean),
902    (
903        Scopes::LandedTitle
904            .union(Scopes::Dynasty)
905            .union(Scopes::DynastyHouse)
906            .union(Scopes::Confederation),
907        "set_coa",
908        Vv(validate_set_coa),
909    ),
910    (Scopes::Confederation, "set_cohesion", ScriptValue),
911    (Scopes::LandedTitle, "set_color_from_title", Scope(Scopes::LandedTitle)),
912    (Scopes::Confederation, "set_confederation_color", Color),
913    (Scopes::Confederation, "set_confederation_name", Desc),
914    (Scopes::Character, "set_council_task", Vb(validate_set_council_task)),
915    (Scopes::LandedTitle, "set_county_culture", Scope(Scopes::Culture)),
916    (Scopes::LandedTitle, "set_county_faith", Scope(Scopes::Faith)),
917    (Scopes::Character, "set_court_language", Item(Item::Language)),
918    (Scopes::Character, "set_court_type", Item(Item::CourtType)),
919    (Scopes::Culture, "set_cultural_acceptance", TargetValue("target", Scopes::Culture, "value")),
920    (Scopes::Character, "set_culture", Scope(Scopes::Culture)),
921    (Scopes::Struggle, "set_culture_as_involved", Scope(Scopes::Culture)),
922    (Scopes::Struggle, "set_culture_as_uninvolved", Scope(Scopes::Culture)),
923    (Scopes::Culture, "set_culture_name", Vb(validate_set_culture_name)),
924    (Scopes::Culture, "set_culture_pillar", Item(Item::CulturePillar)),
925    (Scopes::Character, "set_culture_same_as", Scope(Scopes::Character)),
926    (Scopes::Character, "set_current_court_grandeur", ScriptValue),
927    (Scopes::LandedTitle, "set_de_jure_liege_title", Scope(Scopes::LandedTitle)),
928    (Scopes::Character, "set_dead_character_variable", Vb(validate_set_dead_character_variable)),
929    (Scopes::Character, "set_death_reason", Vb(validate_set_death_reason)),
930    (Scopes::Character, "set_default_education", Yes),
931    (Scopes::LandedTitle, "set_definitive_form", Boolean),
932    (Scopes::LandedTitle, "set_delete_on_destroy", Boolean),
933    (Scopes::Character, "set_designated_heir", Scope(Scopes::Character)),
934    (Scopes::Character, "set_designated_heir_unsafe", Scope(Scopes::Character)),
935    (Scopes::GreatHolyWar, "set_designated_winner", Scope(Scopes::Character)),
936    (Scopes::LandedTitle, "set_destroy_if_invalid_heir", Boolean),
937    (Scopes::LandedTitle, "set_destroy_on_gain_same_tier", Boolean),
938    (Scopes::LandedTitle, "set_destroy_on_succession", Boolean),
939    (Scopes::Character, "set_diarch", Scope(Scopes::Character)),
940    (Scopes::Character, "set_diarchy_mandate", Item(Item::DiarchyMandate)),
941    (Scopes::Character, "set_diarchy_swing", ScriptValue),
942    (Scopes::Character, "set_diarchy_type", Item(Item::DiarchyType)),
943    (Scopes::CombatSide, "set_disallowed_retreat", Boolean),
944    (Scopes::Domicile, "set_domicile_culture", Scope(Scopes::Culture)),
945    (Scopes::Domicile, "set_domicile_faith", Scope(Scopes::Faith)),
946    (Scopes::Domicile, "set_domicile_owner", Removed("1.16", "")),
947    (Scopes::Dynasty, "set_dynasty_name", Desc),
948    (Scopes::Character, "set_employer", Scope(Scopes::Character)),
949    (Scopes::Epidemic, "set_epidemic_outbreak_intensity", Choice(OUTBREAK_INTENSITIES)),
950    (Scopes::Character, "set_ethnicity", Item(Item::Ethnicity)),
951    (Scopes::Culture, "set_ethos_from", Scope(Scopes::Culture)),
952    (Scopes::Struggle, "set_faith_as_involved", Scope(Scopes::Faith)),
953    (Scopes::Struggle, "set_faith_as_uninvolved", Scope(Scopes::Faith)),
954    (Scopes::Character, "set_father", Scope(Scopes::Character)),
955    (Scopes::LandedTitle, "set_figurehead_title", UncheckedTodo),
956    (Scopes::Character, "set_focus", Vv(validate_set_focus)),
957    (Scopes::None, "set_focus_progress", UncheckedTodo),
958    (Scopes::None, "set_generated_asexuality_chance", ScriptValue),
959    (Scopes::None, "set_generated_bisexuality_chance", ScriptValue),
960    (Scopes::None, "set_generated_homosexuality_chance", ScriptValue),
961    (Scopes::None, "set_global_variable", Vbv(validate_set_variable)),
962    // TODO: check that these have type = great_building
963    (Scopes::Province, "set_great_building", Item(Item::Building)),
964    (Scopes::Province, "set_great_building_slot", Item(Item::Building)),
965    (Scopes::GreatHolyWar, "set_great_holy_war_target", Vb(validate_set_ghw_target)),
966    (Scopes::Culture, "set_heritage_from", Scope(Scopes::Culture)),
967    (Scopes::Province, "set_holding_type", Item(Item::HoldingType)),
968    (Scopes::Character, "set_house", Scope(Scopes::DynastyHouse)),
969    (
970        Scopes::DynastyHouse,
971        "set_house_aspiration",
972        ItemTarget("type", Item::HouseAspiration, "level", Scopes::Value),
973    ),
974    (Scopes::DynastyHouse, "set_house_head", Scope(Scopes::Character)),
975    (Scopes::DynastyHouse, "set_house_name", Desc),
976    (Scopes::DynastyHouse, "set_house_name_from_dynasty", Scope(Scopes::Dynasty)),
977    (Scopes::DynastyHouse, "set_house_name_from_house", Scope(Scopes::DynastyHouse)),
978    (Scopes::DynastyHouse, "set_house_relation", Vb(validate_house_relation)),
979    (Scopes::Character, "set_immortal_age", ScriptValue),
980    (Scopes::LandedTitle, "set_important_location", Vb(validate_set_important_location)),
981    (Scopes::Character, "set_killer_public", Boolean),
982    (Scopes::Character, "set_knight_status", Choice(&["force", "forbid", "default", "allow"])),
983    (Scopes::Character, "set_known_bastard_on_pregnancy", Boolean),
984    (Scopes::LandedTitle, "set_landless_title", Boolean),
985    (Scopes::Culture, "set_language_from", Scope(Scopes::Culture)),
986    (Scopes::Confederation, "set_leading_house", Scope(Scopes::DynastyHouse)),
987    (Scopes::Legend, "set_legend_chapter", Vb(validate_set_legend_chapter)),
988    (Scopes::Legend, "set_legend_property", Vb(validate_set_legend_property)),
989    (Scopes::Legend, "set_legend_quality", Choice(LEGEND_QUALITY)),
990    (Scopes::None, "set_local_variable", Vbv(validate_set_variable)),
991    (Scopes::Character, "set_location", Vbv(validate_set_location)),
992    (Scopes::Character, "set_location_to_default", Boolean),
993    (Scopes::Culture, "set_martial_custom_from", Scope(Scopes::Culture)),
994    (Scopes::Artifact, "set_max_durability", ScriptValue),
995    (Scopes::Character, "set_mother", Scope(Scopes::Character)),
996    (Scopes::Culture, "set_name_list", Item(Item::NameList)),
997    (Scopes::LandedTitle, "set_no_automatic_claims", Yes),
998    (Scopes::LandedTitle, "set_noble_family_title", Boolean),
999    (Scopes::Character, "set_num_pregnancy_children", Integer),
1000    (Scopes::Character, "set_override_designated_winner", Boolean),
1001    (Scopes::Character, "set_owned_legend", Scope(Scopes::Legend)),
1002    (Scopes::Artifact, "set_owner", Vbv(validate_set_owner)),
1003    (Scopes::Character, "set_player_character", Scope(Scopes::Character)),
1004    (Scopes::Character, "set_pregnancy_assumed_father", Scope(Scopes::Character)),
1005    (Scopes::Character, "set_pregnancy_gender", Choice(&["male", "female", "random"])),
1006    (Scopes::Character, "set_primary_spouse", Scope(Scopes::Character)),
1007    (Scopes::Character, "set_primary_title_to", Scope(Scopes::LandedTitle)),
1008    (Scopes::Character, "set_promoted_legend", Scope(Scopes::Legend)),
1009    (Scopes::Character, "set_real_father", Scope(Scopes::Character)),
1010    (Scopes::Character, "set_real_mother", Scope(Scopes::Character)),
1011    (Scopes::Character, "set_realm_capital", Scope(Scopes::LandedTitle)),
1012    (Scopes::Character, "set_regnal_name", Vbv(validate_set_regnal_name)),
1013    (Scopes::Faith, "set_religious_head_title", Scope(Scopes::LandedTitle)),
1014    (Scopes::Character, "set_reserved_gold_maximum", ScriptValue),
1015    (Scopes::Character, "set_ruler_objective_decision", Item(Item::Decision)),
1016    (Scopes::Character, "set_same_ethnicity_as", Scope(Scopes::Character)),
1017    (Scopes::Secret, "set_secret_owner", Scope(Scopes::Character)),
1018    (Scopes::Character, "set_sexuality", Item(Item::Sexuality)),
1019    (Scopes::Artifact, "set_should_decay", Boolean),
1020    (Scopes::Situation, "set_situation_center_province", Scope(Scopes::Province)),
1021    (Scopes::CombatSide, "set_skip_pursuit", Boolean),
1022    (Scopes::Faction, "set_special_character", Scope(Scopes::Character)),
1023    (
1024        Scopes::Activity,
1025        "set_special_guest",
1026        ItemTarget("type", Item::SpecialGuest, "target", Scopes::Character),
1027    ),
1028    (Scopes::Faction, "set_special_title", Scope(Scopes::LandedTitle)),
1029    (Scopes::LandedTitle, "set_state_faith", Scope(Scopes::Faith)),
1030    (Scopes::Character, "set_subject_contract_modification_blocked", Boolean),
1031    (Scopes::TaskContract, "set_task_contract_target", Scope(Scopes::Character)),
1032    (Scopes::LandedTitle, "set_title_color", Color),
1033    (Scopes::LandedTitle, "set_title_name", Vv(validate_set_title_name)),
1034    (Scopes::LandedTitle, "set_title_name_dynamic", Vv(validate_set_title_name)),
1035    (Scopes::LandedTitle, "set_title_prefix", Item(Item::Localization)),
1036    (Scopes::Character, "set_to_lowborn", Yes),
1037    (Scopes::Character, "set_trait_rank", Vb(validate_change_trait_rank)),
1038    (Scopes::TravelPlan, "set_travel_leader", Scope(Scopes::Character)),
1039    (Scopes::TravelPlan, "set_travel_plan_owner", Scope(Scopes::Character)),
1040    (Scopes::Character, "set_treasury_budget_base_rate_military", ScriptValue),
1041    (Scopes::Character, "set_treasury_budget_base_rate_ministries", ScriptValue),
1042    (Scopes::Character, "set_treasury_budget_base_rate_salaries", ScriptValue),
1043    (Scopes::None, "set_variable", Vbv(validate_set_variable)),
1044    (Scopes::Character, "set_vassal_contract_modification_blocked", Boolean),
1045    (Scopes::LandedTitle, "set_vassal_wars_are_redirected_to_holder", Removed("1.18.1", "")),
1046    (Scopes::GreatHolyWar, "set_war_declarer", Scope(Scopes::Character)),
1047    (Scopes::CombatSide, "set_winner", Boolean),
1048    (Scopes::None, "setup_claim_cb", Vb(validate_setup_cb)),
1049    (Scopes::None, "setup_de_jure_cb", Vb(validate_setup_cb)),
1050    (Scopes::None, "setup_invasion_cb", Vb(validate_setup_cb)),
1051    (Scopes::None, "show_as_tooltip", Control),
1052    (Scopes::Activity, "skip_activity_phase", Boolean),
1053    (Scopes::all(), "spawn_activity", Removed("1.9", "")),
1054    (Scopes::Character, "spawn_army", Vb(validate_spawn_army)),
1055    (Scopes::Secret, "spend_by", Scope(Scopes::Character)),
1056    (Scopes::Character, "sponsor_inspiration", Scope(Scopes::Inspiration)),
1057    (Scopes::Character, "start_default_task", Yes),
1058    (Scopes::Character, "start_diarchy", Removed("1.16", "replaced with try_start_diarchy")),
1059    (Scopes::GreatHolyWar, "start_ghw_war", Item(Item::CasusBelli)),
1060    (Scopes::Faith, "start_great_holy_war", Vb(validate_set_ghw_target)),
1061    (Scopes::Character, "start_scheme", Vb(validate_start_scheme)),
1062    (Scopes::None, "start_struggle", Vb(validate_start_struggle)),
1063    (Scopes::Character, "start_travel_plan", Vb(validate_start_travel_plan)),
1064    (Scopes::Character, "start_tributary", Vb(validate_start_tributary)),
1065    (Scopes::None, "start_tutorial_lesson", UncheckedTodo),
1066    (Scopes::None, "start_situation", Vb(validate_start_situation)),
1067    (Scopes::Character, "start_war", Vb(validate_start_war)),
1068    (Scopes::None, "stats_log", UncheckedTodo),
1069    (Scopes::Character, "stop_promoting_legend", Yes),
1070    (Scopes::Character, "store_localized_text_in_death", Identifier("text name")),
1071    (Scopes::Character, "stress_impact", Vb(validate_stress_impact)),
1072    (Scopes::Army, "subtract_supply", NonNegativeValue),
1073    (Scopes::None, "switch", Vb(validate_switch)),
1074    (Scopes::Character, "take_hostage", Scope(Scopes::Character)),
1075    (
1076        Scopes::LandedTitle,
1077        "title_create_faction",
1078        ItemTarget("type", Item::Faction, "target", Scopes::Character),
1079    ),
1080    (Scopes::LandedTitle, "title_join_faction", Scope(Scopes::Faction)),
1081    (Scopes::LandedTitle, "title_leave_faction", Scope(Scopes::Faction)),
1082    (Scopes::LandedTitle, "transfer_owned_maa_control", Scope(Scopes::LandedTitle)),
1083    (Scopes::Regiment, "transfer_title_maa", Scope(Scopes::LandedTitle)),
1084    (Scopes::LandedTitle, "transfer_title_maa_ownership", Scope(Scopes::LandedTitle)),
1085    (
1086        Scopes::Character,
1087        "tributary_contract_set_obligation_level",
1088        Vb(validate_contract_set_obligation_level),
1089    ),
1090    (Scopes::None, "trigger_event", Vbv(validate_trigger_event)),
1091    (Scopes::Situation, "trigger_situation_catalyst", Vbv(validate_situation_catalyst)),
1092    (Scopes::SituationSubRegion, "trigger_sub_region_catalyst", Vbv(validate_situation_catalyst)),
1093    (Scopes::None, "try_create_important_action", Vb(validate_try_create_important_action)),
1094    (Scopes::None, "try_create_suggestion", Vb(validate_try_create_suggestion)),
1095    (Scopes::Character, "try_start_diarchy", Item(Item::DiarchyType)),
1096    (Scopes::Artifact, "unequip_artifact_from_owner", Yes),
1097    (Scopes::Character, "unlearn_court_language_of", ScopeOkThis(Scopes::Character)),
1098    (Scopes::Character, "unlearn_language", Item(Item::Language)),
1099    (Scopes::Character, "unlearn_language_of_culture", Scope(Scopes::Culture)),
1100    (Scopes::GreatHolyWar, "unpledge_attacker", Scope(Scopes::Character)),
1101    (Scopes::GreatHolyWar, "unpledge_defender", Scope(Scopes::Character)),
1102    (Scopes::Province, "upgrade_building_effect", Item(Item::Building)),
1103    (Scopes::LandedTitle, "update_dynamic_coa", Yes),
1104    (Scopes::Character, "use_hook", Scope(Scopes::Character)),
1105    (Scopes::Character, "vassal_contract_decrease_obligation_level", Item(Item::SubjectContract)),
1106    (Scopes::Character, "vassal_contract_increase_obligation_level", Item(Item::SubjectContract)),
1107    (
1108        Scopes::Character,
1109        "vassal_contract_set_obligation_level",
1110        Vb(validate_contract_set_obligation_level),
1111    ),
1112    (Scopes::Character, "visit_court_of", Scope(Scopes::Character)),
1113    (Scopes::None, "while", Control),
1114    (Scopes::all(), "win_combat", Removed("1.9", "")),
1115];