tiger_lib/ck3/tables/
iterators.rs

1use std::sync::LazyLock;
2
3use crate::everything::Everything;
4use crate::helpers::TigerHashMap;
5use crate::lowercase::Lowercase;
6use crate::scopes::Scopes;
7use crate::token::Token;
8
9#[inline]
10pub fn iterator(
11    name_lc: &Lowercase,
12    _name: &Token,
13    _data: &Everything,
14) -> Option<(Scopes, Scopes)> {
15    ITERATOR_MAP.get(name_lc.as_str()).copied()
16}
17
18static ITERATOR_MAP: LazyLock<TigerHashMap<&'static str, (Scopes, Scopes)>> = LazyLock::new(|| {
19    let mut hash = TigerHashMap::default();
20    for (from, s, to) in ITERATOR.iter().copied() {
21        hash.insert(s, (from, to));
22    }
23    hash
24});
25
26/// LAST UPDATED CK3 VERSION 1.16.0
27/// See `effects.log` from the game data dumps
28/// These are the list iterators. Every entry represents
29/// a every_, ordered_, random_, and any_ version.
30const ITERATOR: &[(Scopes, &str, Scopes)] = &[
31    (Scopes::Character, "acclaimed_knight", Scopes::Character),
32    (Scopes::Character, "accolade", Scopes::Accolade),
33    (Scopes::None, "accolade_type", Scopes::AccoladeType),
34    (Scopes::Character, "active_accolade", Scopes::Accolade),
35    (Scopes::None, "active_dynasty", Scopes::Dynasty),
36    (Scopes::None, "activity", Scopes::Activity),
37    (Scopes::Activity, "activity_phase_location", Scopes::Province),
38    (Scopes::Activity, "activity_phase_location_future", Scopes::Province),
39    (Scopes::Activity, "activity_phase_location_past", Scopes::Province),
40    (Scopes::None, "activity_type", Scopes::ActivityType),
41    (Scopes::Character, "alert_creatable_title", Scopes::LandedTitle),
42    (Scopes::Character, "alert_usurpable_title", Scopes::LandedTitle),
43    (Scopes::Character, "ally", Scopes::Character),
44    (Scopes::Character, "ancestor", Scopes::Character),
45    (Scopes::Character, "army", Scopes::Army),
46    (Scopes::Province, "army_in_location", Scopes::Army),
47    (Scopes::Army, "army_maa_regiment", Scopes::Regiment),
48    (Scopes::None, "artifact", Scopes::Artifact),
49    (Scopes::Artifact, "artifact_claimant", Scopes::Character),
50    (Scopes::Artifact, "artifact_house_claimant", Scopes::DynastyHouse),
51    (Scopes::Activity, "attending_character", Scopes::Character),
52    (Scopes::Character, "available_task_contract", Scopes::TaskContract),
53    (Scopes::None, "barony", Scopes::LandedTitle),
54    (Scopes::None, "casus_belli_type", Scopes::CasusBelliType),
55    (Scopes::Character, "character_active_contract", Scopes::TaskContract),
56    (Scopes::Character, "character_artifact", Scopes::Artifact),
57    (Scopes::Character, "character_epidemic", Scopes::Epidemic),
58    (Scopes::Province, "character_in_location", Scopes::Character),
59    (Scopes::Character, "character_situation", Scopes::Situation),
60    (Scopes::Character, "character_struggle", Scopes::Struggle),
61    (Scopes::Character, "character_task_contract", Scopes::TaskContract),
62    (
63        Scopes::Character,
64        "character_to_title_neighboring_and_across_water_county",
65        Scopes::LandedTitle,
66    ),
67    (
68        Scopes::Character,
69        "character_to_title_neighboring_and_across_water_duchy",
70        Scopes::LandedTitle,
71    ),
72    (
73        Scopes::Character,
74        "character_to_title_neighboring_and_across_water_empire",
75        Scopes::LandedTitle,
76    ),
77    (
78        Scopes::Character,
79        "character_to_title_neighboring_and_across_water_kingdom",
80        Scopes::LandedTitle,
81    ),
82    (Scopes::Character, "character_to_title_neighboring_county", Scopes::LandedTitle),
83    (Scopes::Character, "character_to_title_neighboring_duchy", Scopes::LandedTitle),
84    (Scopes::Character, "character_to_title_neighboring_empire", Scopes::LandedTitle),
85    (Scopes::Character, "character_to_title_neighboring_kingdom", Scopes::LandedTitle),
86    (Scopes::Character, "character_trait", Scopes::Trait),
87    (Scopes::Character, "character_war", Scopes::War),
88    (Scopes::None, "character_with_royal_court", Scopes::Character),
89    (Scopes::Character, "child", Scopes::Character),
90    (Scopes::Character, "claim", Scopes::LandedTitle),
91    (Scopes::LandedTitle, "claimant", Scopes::Character),
92    (Scopes::Character, "claimed_artifact", Scopes::Artifact),
93    (Scopes::Character, "close_family_member", Scopes::Character),
94    (Scopes::Character, "close_or_extended_family_member", Scopes::Character),
95    (Scopes::Combat, "combat_side", Scopes::CombatSide),
96    (Scopes::None, "completed_legend", Scopes::Legend),
97    (Scopes::Character, "concubine", Scopes::Character),
98    (Scopes::None, "confederation", Scopes::Confederation),
99    (Scopes::Confederation, "confederation_member", Scopes::Character),
100    (Scopes::Confederation, "confederation_member_house", Scopes::DynastyHouse),
101    (Scopes::None, "confederation_type", Scopes::ConfederationType),
102    (Scopes::LandedTitle, "connected_county", Scopes::LandedTitle),
103    (Scopes::Character, "consort", Scopes::Character),
104    (Scopes::Character, "contact", Scopes::Character),
105    (Scopes::GreatProject, "contribution", Scopes::ProjectContribution),
106    (Scopes::LandedTitle, "controlled_faith", Scopes::Faith),
107    (Scopes::LandedTitle, "controlled_title_maa_regiment", Scopes::Regiment),
108    (Scopes::Character, "councillor", Scopes::Character),
109    (Scopes::None, "county", Scopes::LandedTitle),
110    (Scopes::None, "county_in_region", Scopes::LandedTitle),
111    (Scopes::LandedTitle, "county_province", Scopes::Province),
112    (Scopes::LandedTitle, "county_province_epidemic", Scopes::Epidemic),
113    (Scopes::LandedTitle, "county_situation", Scopes::Situation),
114    (Scopes::LandedTitle, "county_situation_sub_region", Scopes::SituationSubRegion),
115    (Scopes::LandedTitle, "county_struggle", Scopes::Struggle),
116    (Scopes::Character, "court_position_candidate", Scopes::Character),
117    (Scopes::Character, "court_position_employer", Scopes::Character),
118    (Scopes::Character, "court_position_holder", Scopes::Character), // TODO find out how court position is supplied
119    (Scopes::None, "court_position_type", Scopes::CourtPositionType),
120    (Scopes::Character, "courtier", Scopes::Character),
121    (Scopes::Character, "courtier_away", Scopes::Character),
122    (Scopes::Character, "courtier_or_guest", Scopes::Character),
123    (Scopes::Culture, "culture_county", Scopes::LandedTitle),
124    (Scopes::Culture, "culture_duchy", Scopes::LandedTitle),
125    (Scopes::Culture, "culture_empire", Scopes::LandedTitle),
126    (Scopes::None, "culture_global", Scopes::Culture),
127    (Scopes::None, "culture_innovation", Scopes::CultureInnovation),
128    (Scopes::Culture, "culture_kingdom", Scopes::LandedTitle),
129    (Scopes::None, "culture_pillar", Scopes::CulturePillar),
130    (Scopes::None, "culture_tradition", Scopes::CultureTradition),
131    (Scopes::Character, "de_jure_claim", Scopes::LandedTitle),
132    (Scopes::LandedTitle, "de_jure_county", Scopes::LandedTitle),
133    (Scopes::LandedTitle, "de_jure_county_holder", Scopes::Character),
134    (Scopes::LandedTitle, "de_jure_top_liege", Scopes::Character),
135    (Scopes::None, "decision", Scopes::Decision),
136    (Scopes::Faith, "defensive_great_holy_wars", Scopes::GreatHolyWar),
137    (Scopes::LandedTitle, "dejure_vassal_title_holder", Scopes::Character),
138    (Scopes::Character, "diarchy_succession_character", Scopes::Character),
139    (Scopes::Character, "diplomacy_councillor", Scopes::Character),
140    (Scopes::LandedTitle, "direct_de_facto_vassal_title", Scopes::LandedTitle),
141    (Scopes::LandedTitle, "direct_de_jure_vassal_title", Scopes::LandedTitle),
142    (Scopes::Character, "directly_owned_province", Scopes::Province),
143    (Scopes::None, "doctrine", Scopes::Doctrine),
144    (Scopes::None, "domicile", Scopes::Domicile),
145    (Scopes::None, "duchy", Scopes::LandedTitle),
146    (Scopes::None, "dynasty", Scopes::Dynasty),
147    (Scopes::Dynasty, "dynasty_house", Scopes::DynastyHouse),
148    (Scopes::Dynasty, "dynasty_member", Scopes::Character),
149    (Scopes::LandedTitle, "election_candidate", Scopes::Character),
150    (Scopes::Character, "election_title", Scopes::LandedTitle),
151    (Scopes::LandedTitle, "elector", Scopes::Character),
152    (Scopes::None, "empire", Scopes::LandedTitle),
153    (Scopes::TravelPlan, "entourage_character", Scopes::Character),
154    (Scopes::None, "epidemic", Scopes::Epidemic),
155    (Scopes::None, "epidemic_type", Scopes::EpidemicType),
156    (Scopes::Character, "equipped_character_artifact", Scopes::Artifact),
157    (Scopes::Character, "extended_family_member", Scopes::Character),
158    (Scopes::Faction, "faction_county_member", Scopes::LandedTitle),
159    (Scopes::Faction, "faction_member", Scopes::Character),
160    (Scopes::Religion, "faith", Scopes::Faith),
161    (Scopes::Faith, "faith_character", Scopes::Character),
162    (Scopes::Faith, "faith_holy_order", Scopes::HolyOrder),
163    (Scopes::Faith, "faith_playable_ruler", Scopes::Character),
164    (Scopes::Faith, "faith_ruler", Scopes::Character),
165    (Scopes::Character, "foreign_court_guest", Scopes::Character),
166    (Scopes::Character, "former_concubine", Scopes::Character),
167    (Scopes::Character, "former_concubinist", Scopes::Character),
168    (Scopes::Character, "former_spouse", Scopes::Character),
169    (Scopes::TravelPlan, "future_path_location", Scopes::Province),
170    (Scopes::Character, "general_councillor", Scopes::Character),
171    (Scopes::None, "geographical_region", Scopes::GeographicalRegion),
172    (Scopes::Character, "government_type", Scopes::GovernmentType),
173    (Scopes::None, "great_project", Scopes::GreatProject),
174    (Scopes::Province, "great_project_in_province", Scopes::GreatProject),
175    (Scopes::None, "great_project_type", Scopes::GreatProjectType),
176    (Scopes::Activity, "guest_subset", Scopes::Character),
177    (Scopes::Activity, "guest_subset_current_phase", Scopes::Character),
178    (Scopes::None, "hegemony", Scopes::LandedTitle),
179    (Scopes::Character, "heir", Scopes::Character),
180    (Scopes::Character, "heir_title", Scopes::LandedTitle),
181    (Scopes::Character, "held_title", Scopes::LandedTitle),
182    (Scopes::Character, "hired_mercenary", Scopes::MercenaryCompany),
183    (Scopes::None, "holding_type", Scopes::HoldingType),
184    (Scopes::Faith, "holy_site", Scopes::LandedTitle),
185    (Scopes::Character, "home_court_hostage", Scopes::Character),
186    (Scopes::Character, "hooked_character", Scopes::Character),
187    (Scopes::Character, "hostile_raider", Scopes::Character),
188    (Scopes::None, "house_aspiration", Scopes::HouseAspiration),
189    (Scopes::DynastyHouse, "house_claimed_artifact", Scopes::Artifact),
190    (Scopes::DynastyHouse, "house_member", Scopes::Character),
191    (Scopes::DynastyHouse, "house_relation", Scopes::HouseRelation),
192    (Scopes::None, "house_relation_level", Scopes::HouseRelationLevel),
193    (Scopes::None, "house_relation_type", Scopes::HouseRelationType),
194    (Scopes::DynastyHouse, "house_unity_member", Scopes::Character),
195    (Scopes::None, "important_location", Scopes::LandedTitle),
196    (Scopes::LandedTitle, "important_location_for_title", Scopes::LandedTitle),
197    (Scopes::LandedTitle, "in_de_facto_hierarchy", Scopes::LandedTitle),
198    (Scopes::LandedTitle, "in_de_jure_hierarchy", Scopes::LandedTitle),
199    (Scopes::None, "in_global_list", Scopes::all()),
200    (Scopes::None, "in_list", Scopes::all()),
201    (Scopes::None, "in_local_list", Scopes::all()),
202    (Scopes::None, "independent_ruler", Scopes::Character),
203    (Scopes::Epidemic, "infected_province", Scopes::Province),
204    (Scopes::None, "inspiration", Scopes::Inspiration),
205    (Scopes::None, "inspired_character", Scopes::Character),
206    (Scopes::None, "interested_title", Scopes::LandedTitle),
207    (Scopes::Struggle, "interloper_ruler", Scopes::Character),
208    (Scopes::Character, "intrigue_councillor", Scopes::Character),
209    (Scopes::Character, "invited_activity", Scopes::Activity),
210    (Scopes::Activity, "invited_character", Scopes::Character),
211    (Scopes::Struggle, "involved_county", Scopes::LandedTitle),
212    (Scopes::Struggle, "involved_ruler", Scopes::Character),
213    (Scopes::Character.union(Scopes::Artifact), "killed_character", Scopes::Character),
214    (Scopes::None, "kingdom", Scopes::LandedTitle),
215    (Scopes::Character, "knight", Scopes::Character),
216    (Scopes::Culture, "known_innovation", Scopes::CultureInnovation),
217    (Scopes::Character, "known_secret", Scopes::Secret),
218    (Scopes::Character, "land_neighboring_realm_with_tributaries", Scopes::LandedTitle),
219    (Scopes::Character, "land_neighboring_realm_with_tributaries_owner", Scopes::Character),
220    (Scopes::Character, "learning_councillor", Scopes::Character),
221    (Scopes::HolyOrder, "leased_title", Scopes::LandedTitle),
222    (Scopes::None, "legend", Scopes::Legend),
223    (Scopes::Legend, "legend_promoter", Scopes::Character),
224    (Scopes::None, "legend_type", Scopes::LegendType),
225    (Scopes::Character, "liege_or_above", Scopes::Character),
226    (Scopes::None, "living_character", Scopes::Character),
227    (Scopes::Character, "maa_regiment", Scopes::Regiment),
228    (Scopes::Character, "martial_councillor", Scopes::Character),
229    (Scopes::None, "mercenary_company", Scopes::MercenaryCompany),
230    (Scopes::Character, "memory", Scopes::CharacterMemory),
231    (Scopes::CharacterMemory, "memory_participant", Scopes::Character),
232    (Scopes::Character, "neighboring_and_across_water_realm_owner", Scopes::Character),
233    (Scopes::Character, "neighboring_and_across_water_realm_same_rank_owner", Scopes::Character),
234    (Scopes::Character, "neighboring_and_across_water_top_liege_realm", Scopes::LandedTitle),
235    (Scopes::Character, "neighboring_and_across_water_top_liege_realm_owner", Scopes::Character),
236    (Scopes::Character, "neighboring_and_across_water_top_suzerain_realm", Scopes::LandedTitle),
237    (Scopes::Character, "neighboring_and_across_water_top_suzerain_realm_owner", Scopes::Character),
238    (Scopes::LandedTitle, "neighboring_county", Scopes::LandedTitle),
239    (Scopes::Province, "neighboring_province", Scopes::Province),
240    (Scopes::Character, "neighboring_realm_owner", Scopes::Character),
241    (Scopes::Character, "neighboring_realm_same_rank_owner", Scopes::Character),
242    (Scopes::Character, "neighboring_realm_with_tributaries_owner", Scopes::Character),
243    (Scopes::Character, "neighboring_top_liege_realm", Scopes::LandedTitle),
244    (Scopes::Character, "neighboring_top_liege_realm_owner", Scopes::Character),
245    (Scopes::Character, "neighboring_top_suzerain_realm", Scopes::LandedTitle),
246    (Scopes::Character, "neighboring_top_suzerain_realm_owner", Scopes::Character),
247    (Scopes::Character, "noble_family", Scopes::LandedTitle),
248    (Scopes::None, "open_invite_activity", Scopes::Activity),
249    (Scopes::Character, "opposite_sex_spouse_candidate", Scopes::Character),
250    (Scopes::Trait, "opposite_trait", Scopes::Trait),
251    (Scopes::Character, "owned_story", Scopes::StoryCycle),
252    (Scopes::LandedTitle, "owned_title_maa_regiment", Scopes::Regiment),
253    (Scopes::Character, "parent", Scopes::Character),
254    (Scopes::Culture, "parent_culture", Scopes::Culture),
255    (Scopes::Culture, "parent_culture_or_above", Scopes::Culture),
256    (Scopes::Situation, "participant_group", Scopes::SituationParticipantGroup),
257    (Scopes::LandedTitle, "past_holder", Scopes::Character),
258    (Scopes::LandedTitle, "past_holder_reversed", Scopes::Character),
259    (Scopes::Character, "patroned_holy_order", Scopes::HolyOrder),
260    (Scopes::Character, "personal_claimed_artifact", Scopes::Artifact),
261    (Scopes::Character, "pinned_character", Scopes::Character),
262    (Scopes::Character, "pinning_character", Scopes::Character),
263    (Scopes::Character, "played_character", Scopes::Character),
264    (Scopes::None, "player", Scopes::Character),
265    (Scopes::Character, "player_heir", Scopes::Character),
266    (Scopes::Character, "player_legend_library", Scopes::Legend),
267    (Scopes::GreatHolyWar, "pledged_attacker", Scopes::Character),
268    (Scopes::GreatHolyWar, "pledged_defender", Scopes::Character),
269    (Scopes::None, "pool_character", Scopes::Character),
270    (Scopes::Character, "pool_guest", Scopes::Character),
271    (Scopes::ProjectContribution, "potential_contributor", Scopes::Character),
272    (Scopes::Character, "potential_marriage_option", Scopes::Character),
273    (Scopes::Character, "powerful_family", Scopes::DynastyHouse),
274    (Scopes::Character, "powerful_vassal", Scopes::Character),
275    (Scopes::Character, "pretender_title", Scopes::LandedTitle),
276    (Scopes::Character, "primary_war_enemy", Scopes::Character),
277    (Scopes::Character, "prisoner", Scopes::Character),
278    (Scopes::None, "province", Scopes::Province),
279    (Scopes::Province, "province_domicile", Scopes::Domicile),
280    (Scopes::Province, "province_epidemic", Scopes::Epidemic),
281    (Scopes::Province, "province_legend", Scopes::Legend),
282    (Scopes::Character, "prowess_councillor", Scopes::Character),
283    (Scopes::Character, "raid_target", Scopes::Character),
284    (Scopes::Character, "realm_border_county", Scopes::LandedTitle),
285    (Scopes::Character, "realm_county", Scopes::LandedTitle),
286    (Scopes::Character, "realm_de_jure_duchy", Scopes::LandedTitle),
287    (Scopes::Character, "realm_de_jure_empire", Scopes::LandedTitle),
288    (Scopes::Character, "realm_de_jure_kingdom", Scopes::LandedTitle),
289    (Scopes::Character, "realm_province", Scopes::Province),
290    (Scopes::Character, "relation", Scopes::Character), // TODO takes a type
291    (Scopes::HouseRelation, "relation_house", Scopes::DynastyHouse),
292    (Scopes::None, "religion_global", Scopes::Religion),
293    (Scopes::HoldingType, "required_heir_government_type", Scopes::GovernmentType),
294    (Scopes::None, "ruler", Scopes::Character),
295    (Scopes::Character, "same_sex_spouse_candidate", Scopes::Character),
296    (Scopes::Character, "scheme", Scopes::Scheme),
297    (Scopes::Scheme, "scheme_agent_character", Scopes::Character),
298    (Scopes::Scheme, "scheme_agent_slot", Scopes::AgentSlot),
299    (Scopes::Character, "secret", Scopes::Secret),
300    (Scopes::Secret, "secret_knower", Scopes::Character),
301    (Scopes::Secret, "secret_participant", Scopes::Character),
302    (Scopes::Character, "sibling", Scopes::Character),
303    (Scopes::CombatSide, "side_commander", Scopes::Character),
304    (Scopes::CombatSide, "side_knight", Scopes::Character),
305    (Scopes::CombatSide, "side_participant", Scopes::Character),
306    (Scopes::Situation, "situation_county", Scopes::LandedTitle),
307    (Scopes::Situation, "situation_participant", Scopes::Character),
308    (Scopes::Situation, "situation_sub_region", Scopes::SituationSubRegion),
309    (Scopes::SituationParticipantGroup, "situation_group_participant", Scopes::Character),
310    (Scopes::SituationSubRegion, "situation_sub_region_county", Scopes::LandedTitle),
311    (
312        Scopes::SituationSubRegion,
313        "situation_sub_region_geographical_region",
314        Scopes::GeographicalRegion,
315    ),
316    (Scopes::SituationSubRegion, "situation_sub_region_participant", Scopes::Character),
317    (
318        Scopes::SituationSubRegion,
319        "situation_sub_region_participant_group",
320        Scopes::SituationParticipantGroup,
321    ),
322    (Scopes::None, "special_building_province", Scopes::Province),
323    (Scopes::Activity, "special_guest", Scopes::Character),
324    (Scopes::Character, "sponsored_inspiration", Scopes::Inspiration),
325    (Scopes::Character, "spouse", Scopes::Character),
326    (Scopes::Character, "spouse_candidate", Scopes::Character),
327    (Scopes::Legend, "spread_province", Scopes::Province),
328    (Scopes::Character, "stewardship_councillor", Scopes::Character),
329    (Scopes::Character, "sub_realm_barony", Scopes::LandedTitle),
330    (Scopes::Character, "sub_realm_county", Scopes::LandedTitle),
331    (Scopes::Character, "sub_realm_duchy", Scopes::LandedTitle),
332    (Scopes::Character, "sub_realm_empire", Scopes::LandedTitle),
333    (Scopes::Character, "sub_realm_kingdom", Scopes::LandedTitle),
334    (Scopes::Character, "sub_realm_title", Scopes::LandedTitle),
335    (Scopes::Character, "subject", Scopes::Character),
336    (Scopes::Character, "succession_appointment_invested_candidate", Scopes::Character),
337    (Scopes::Character, "succession_appointment_invested_title", Scopes::LandedTitle),
338    (Scopes::LandedTitle, "succession_appointment_investors", Scopes::Character),
339    (Scopes::CasusBelli, "target_title", Scopes::LandedTitle),
340    (Scopes::Character, "targeting_faction", Scopes::Faction),
341    (Scopes::Character, "targeting_scheme", Scopes::Scheme),
342    (Scopes::Character, "targeting_secret", Scopes::Secret),
343    (Scopes::None, "task_contract", Scopes::TaskContract),
344    (Scopes::None, "task_contract_type", Scopes::TaskContractType),
345    (Scopes::Character, "tax_collector", Scopes::Character),
346    (Scopes::Character, "tax_collector_vassal", Scopes::Character),
347    (Scopes::Character, "tax_slot", Scopes::TaxSlot),
348    (Scopes::TaxSlot, "tax_slot_vassal", Scopes::Character),
349    (Scopes::LandedTitle, "this_title_or_de_jure_above", Scopes::LandedTitle),
350    (Scopes::LandedTitle, "title_heir", Scopes::Character),
351    (Scopes::LandedTitle, "title_interested_in_location", Scopes::LandedTitle),
352    (Scopes::LandedTitle, "title_joined_faction", Scopes::Faction),
353    (Scopes::LandedTitle, "title_maa_regiment", Scopes::Regiment),
354    (
355        Scopes::LandedTitle,
356        "title_to_title_neighboring_and_across_water_county",
357        Scopes::LandedTitle,
358    ),
359    (Scopes::LandedTitle, "title_to_title_neighboring_and_across_water_duchy", Scopes::LandedTitle),
360    (
361        Scopes::LandedTitle,
362        "title_to_title_neighboring_and_across_water_empire",
363        Scopes::LandedTitle,
364    ),
365    (
366        Scopes::LandedTitle,
367        "title_to_title_neighboring_and_across_water_kingdom",
368        Scopes::LandedTitle,
369    ),
370    (Scopes::LandedTitle, "title_to_title_neighboring_county", Scopes::LandedTitle),
371    (Scopes::LandedTitle, "title_to_title_neighboring_duchy", Scopes::LandedTitle),
372    (Scopes::LandedTitle, "title_to_title_neighboring_empire", Scopes::LandedTitle),
373    (Scopes::LandedTitle, "title_to_title_neighboring_kingdom", Scopes::LandedTitle),
374    (Scopes::Character, "top_realm_border_county", Scopes::LandedTitle),
375    (Scopes::Culture, "tradition", Scopes::CultureTradition),
376    (Scopes::None, "trait", Scopes::Trait),
377    (Scopes::None, "trait_in_category", Scopes::Trait),
378    (Scopes::Character, "traveling_family_member", Scopes::Character),
379    (Scopes::Character, "tributary", Scopes::Character),
380    (Scopes::Character, "truce_holder", Scopes::Character),
381    (Scopes::Character, "truce_target", Scopes::Character),
382    (Scopes::Character, "unassigned_taxpayers", Scopes::Character),
383    (Scopes::Character, "unspent_known_secret", Scopes::Secret),
384    (Scopes::Character, "vassal", Scopes::Character),
385    (Scopes::None, "vassal_contract", Scopes::VassalContract),
386    (Scopes::Character, "vassal_or_below", Scopes::Character),
387    (Scopes::TravelPlan, "visited_location", Scopes::Province),
388    (Scopes::Character, "war_ally", Scopes::Character),
389    (Scopes::War, "war_attacker", Scopes::Character),
390    (Scopes::War, "war_defender", Scopes::Character),
391    (Scopes::Character, "war_enemy", Scopes::Character),
392    (Scopes::War, "war_participant", Scopes::Character),
393    (Scopes::Character, "warden_hostage", Scopes::Character),
394];
395
396pub fn iterator_removed(name: &str) -> Option<(&'static str, &'static str)> {
397    for (removed_name, version, explanation) in ITERATOR_REMOVED.iter().copied() {
398        if name == removed_name {
399            return Some((version, explanation));
400        }
401    }
402    None
403}
404
405/// Every entry represents a every_, ordered_, random_, and any_ version.
406const ITERATOR_REMOVED: &[(&str, &str, &str)] = &[
407    ("activity_declined", "1.9", ""),
408    ("activity_invited", "1.9", ""),
409    ("participant", "1.9", ""),
410    ("scheme_agent", "1.13", "replaced with scheme_agent_character"),
411    ("heir_to_title", "1.13", "was duplicate of heir_title"),
412];