use std::sync::LazyLock;
use crate::helpers::{TigerHashMap, TigerHashSet};
use crate::item::Item;
pub(crate) static BUILTIN_MACROS_CK3: LazyLock<TigerHashSet<&'static str>> =
LazyLock::new(|| BUILTIN_MACROS.iter().copied().collect());
const BUILTIN_MACROS: &[&str] = &[
"1",
"2",
"3",
"ACCEPTANCE",
"ACCOLADE_ID",
"ACTION",
"ACTIVITY_PROVINCE_DESCRIPTION",
"ACTUAL_NEGATION",
"ACTUAL_POS",
"ADJECTIVE",
"ADJUSTMENTS",
"ADVANTAGE",
"ADVANTAGE_DAMAGE_FACTOR",
"AGE",
"ALPHA",
"AMOUNT",
"AMOUNT_ALLOWED",
"APTITUDE",
"ARMY_SIZE",
"ARTIFACT_NAME",
"BACKEND",
"BALANCE",
"BASELINE",
"BASE_NAME",
"BATTLENAME",
"BIRTH",
"BLOCK_REASON",
"BLUE",
"BRANCH",
"BUDGET_CATEGORY",
"BUDGET_GOLD",
"BUDGET_MAXIMUM",
"BUILDING",
"BUILDING_NAME",
"BULDING",
"CAP",
"CASUALTIES",
"CASUS_BELLI",
"CATALYST_INFO",
"CATALYST_NAME",
"CATALYST_VALUE",
"CATEGORY",
"CATEGORY_NAME",
"CAUSE",
"CHANCE",
"CHAR01",
"CHAR02",
"CHARACTER",
"CHARACTER_ID",
"CHARACTER_LIST",
"CHARACTER_POSITION",
"CHARACTER_TOOLTIP",
"CHARACTER_TOOLTIP_INSTRUCTIONS",
"CHECK_VALUE",
"CLAIM",
"CLOTHES",
"COAT_OF_ARMS",
"COA_CLICK_INFO",
"COA_DE_JURE_TITLE",
"COA_HOLDER",
"COA_TITLE",
"COMBAT_RELATION_FAVOR",
"COMBAT_RELATION_POSSESIVE", "COMMIT_COUNT",
"COMPANIONS",
"COMPARATOR",
"COMPARISON",
"CONTRACT_LEVEL_NAME",
"CONTRACT_TYPE",
"CONTROLLER",
"COOLDOWN",
"COST",
"COSTS",
"COUNCIL_TITLE",
"COUNT",
"COUNTED",
"COURTS",
"COURT_AMENITY",
"COURT_AMENITY_CATEGORY",
"COURT_AMENITY_SETTING",
"COURT_POSITION",
"CULTURE_CURRENT_PERC",
"CULTURE_ID",
"CULTURE_NAME",
"CULTURE_PERC",
"CURRENT",
"CURRENT_GOLD",
"CURRENT_VALUE",
"DATE",
"DATE_MAX",
"DATE_MIN",
"DAY",
"DAYS_LEFT",
"DAYS_UNTIL_TRANSITION",
"DEAD",
"DECISION_NAME",
"DECLINING_GUESTS",
"DEFAULT_SETTING",
"DESC",
"DESCRIPTION",
"DESCRIPTION_AND_EFFECT",
"DESC_KEY",
"DIARCHY_TYPE",
"DISABLED",
"DISBANDED",
"DISCONTENT",
"DLC_NAME",
"DOCTRINE",
"DURABILITY",
"DURATION",
"DURATION_MAX",
"DURATION_MIN",
"EFFECT",
"EFFECTIVENESS",
"EFFECTS",
"EFFECT_DESC_KEY",
"EMPLOYEE",
"EMPLOYER",
"ENTRIES",
"EPIDEMIC_NAMES",
"ERA",
"ERA_INDEX",
"ERA_TYPE",
"ERROR",
"ERRORS",
"ERROR_ACTION",
"ETA",
"EVENT",
"EVENT_NAME",
"EVENT_TIMEOUT_EFFECTS",
"EVENT_TITLE",
"EXAMPLE",
"EXPENSE_DESC",
"EXPIRES",
"EXTORTIONATE_RANSOM_COST",
"EXTRA_REASON",
"FACTOR",
"FEATURE_FLAG",
"FERVOR",
"FILTER",
"FILTERS",
"FILTER_GROUP",
"FILTER_TYPE",
"FIRST",
"FLAG",
"FOCUSTYPE",
"FOLDER",
"FROM",
"FULL_SUPPLY",
"GARRISON",
"GLORY",
"GOVERNMENT",
"GREEN",
"GREETING",
"GROUP",
"HASH_LONG",
"HASH_SHORT",
"HISTORY",
"HOLDER",
"HOLDING",
"HOLDING_NAME",
"HOOK",
"HOOK_NAME",
"HOSTILITY_CATEGORY",
"HOUSE",
"HOUSE_UNITY_STAGE_NAME",
"ICON",
"ICONKEY",
"ID",
"INCOME_DESC",
"INCREASE",
"INITIAL",
"INNOVATION_INDEX",
"INNOVATION_TYPE",
"INPUT_ACTION",
"INPUT_NAME",
"INTENSITY",
"INTERACTION",
"INTERACTION_NAME",
"INVALID_SETTING",
"JOINED",
"KEY",
"KEY_LOC",
"KNIGHTS",
"LAST_REASON",
"LAW",
"LAWS",
"LEFT",
"LEGEND_NAMES",
"LEGITIMACY",
"LESSON",
"LEVEL",
"LEVIES_CHANGE",
"LEVY",
"LIMIT",
"LIST",
"LIVING",
"LOCATION",
"LONG_REIGN",
"MAIN_DESC_KEY",
"MANDATE_TYPE",
"MARRIAGE",
"MAX",
"MAXVALUE",
"MAX_CHARACTERS",
"MAX_DURABILITY",
"MAX_LEVIES",
"MAX_MEN",
"MAX_MEN_AT_ARMS",
"MAX_NEGATION",
"MAX_SUPPLY",
"MAX_VALUE",
"MEN",
"MEN_AT_ARMS",
"MEN_AT_ARMS_TYPE",
"MESSAGE",
"MIN",
"MINIMUM",
"MINUTES",
"MINVALUE",
"MIN_REGION",
"MISSING_HOLDING",
"MOD",
"MODIFIER",
"MODIFIER_DESC",
"MODS",
"MODULE",
"MONTH",
"MONTHLY_TEXT",
"MONTHS",
"MONTH_SHORT",
"MORALE",
"MORE_RELATIONS",
"MULT",
"MULTIPLIER",
"NAME",
"NAMES",
"NAME_LIST",
"NEW_DURABILITY",
"NEW_HOLDING_TYPE_NAME",
"NEW_MODIFIER",
"NEW_NAME",
"NEW_RARITY",
"NEW_STATE",
"NEW_TEMPLATE",
"NEW_TYPE",
"NEW_VALUE",
"NEXT",
"NEXT_SPEED",
"NICK",
"NICKNAME",
"NOUN",
"NUM",
"NUMBER",
"NUM_ACTED",
"NUM_MISSING",
"NUM_OTHER_FAITHS",
"OBLIGATION_LEVEL",
"OBLIGATION_LEVEL_INDEX",
"OBLIGATION_TYPE",
"OBLIGATION_TYPE_0",
"OBLIGATION_TYPE_1",
"OLD_TYPE",
"ONLY",
"ON_ACCEPT",
"ON_DECLINE",
"ON_SEND",
"OPERATOR",
"OPINION",
"OPINIONMODIFIER",
"OPINION_CHANGE",
"OPTION",
"OPTION_1",
"OPTION_2",
"OPTION_3",
"OPTION_4",
"OPTION_5",
"OPTION_NAME",
"ORDER",
"OTHER",
"OTHER_TRAIT",
"OUR",
"OVERFLOW",
"OWNED",
"PARAMETERS",
"PARAMETER_NAME",
"PARTICIPANT_LIST",
"PATH_DURATION_DIFF",
"PATRONYM",
"PENALTY",
"PERC",
"PERCENT",
"PERCENTAGE",
"PERK",
"PERSONALITY",
"PHASE",
"PIETY_XP_PENALTY",
"PING",
"PLAYER",
"PLAYER_AMOUNT",
"PLAYER_TYPE",
"POSITION",
"POSITION_NAME",
"POWER",
"POWER_DIFF",
"PREDICTION",
"PRESET_NAME",
"PRESTIEGE_XP_PENALTY",
"PRESTIGE_MULT",
"PREVIOUS_NAME",
"PREV_SPEED",
"PROG",
"PROGRESS",
"PROPOSED_LEVEL_NAME",
"PROVINCE",
"PUNISHMENT",
"RAISE_MAX",
"RANK",
"RANSOM_COST",
"RARITY",
"REASON",
"REASONS",
"RED",
"REGIMENTS",
"REGIMENT_NAME",
"REGION",
"REINFORCE",
"REINFORCEMENTS",
"REINFORCE_INFO",
"REJECTION",
"RELATION",
"RELATION01",
"RELATION02",
"RELIGION",
"REMAINING_NAME",
"REPLACEMENT",
"REPLACE_ARTIFACT",
"REQUIRED",
"REQUIRED_POS",
"RESISTANCE",
"RESOURCES",
"RESPONSE",
"RESULT",
"REVOKE_COST",
"REVOKE_EFFECT",
"ROLE",
"RULE",
"SCHEME_NAME",
"SCORE",
"SCORE_PERCENT",
"SECOND",
"SECRECY",
"SECRET",
"SEXUALITY",
"SHORTCUT",
"SIZE",
"SKILL",
"SKILL_CHALLENGE",
"SKILL_ICON",
"SKILL_LIST",
"SLOT",
"SOLDIERS",
"SPREAD_CHANCE",
"SPREAD_DEBUG_BREAKDOWN",
"STATUS",
"STRENGTH",
"STRING",
"STRUGGLE_NAME",
"STRUGGLE_PHASE",
"STRUGGLE_PHASE_ICON",
"STRUGGLE_PHASE_ICON_NEXT",
"STRUGGLE_PHASE_NEXT",
"SUBJECT_TYPE",
"SUCCESSION_LAWS",
"SUCCESS_CHANCE",
"SUGGESTION",
"SUPPLY",
"SURVIVING",
"TARGET",
"TARGET_POSITION",
"TASK",
"TASK_LOCATION",
"TASK_NAME",
"TAX",
"TAX_CHANGE",
"TERRAIN",
"TERRAIN_TYPE",
"TEXT",
"THEIR",
"THRESHOLD",
"TIER",
"TIERNAME",
"TIER_KEY",
"TIME",
"TIMESTAMP",
"TIME_LEFT",
"TITLE",
"TO",
"TOTAL",
"TOTAL_AMOUNT",
"TRACK_NAME",
"TRAIT",
"TRAIT_AGE",
"TRAIT_SEX",
"TRAVEL_OPTION",
"TUTORIAL_NAME",
"TYPE",
"TYPES",
"UNIT",
"UNRAISED",
"VAL",
"VALUE",
"VARIABLE",
"VASSAL_CONVERSION_TEXT",
"VIEW_NAME",
"WAR",
"WARSCORE",
"WAR_NAME",
"WHAT",
"WHEN",
"WHO",
"WINLOSE",
"X",
"Y",
"YEAR",
"YEARS",
];
pub(crate) static COMPLEX_TOOLTIPS_CK3: LazyLock<TigerHashMap<&'static str, Option<Item>>> =
LazyLock::new(|| COMPLEX_TOOLTIPS.iter().copied().collect());
const COMPLEX_TOOLTIPS: &[(&str, Option<Item>)] = &[
("accolade", None),
("accolade_type", Some(Item::AccoladeType)),
("activity", None),
("activity_type", Some(Item::ActivityType)),
("ai_personality", None),
("army", None),
("artifact", None),
("building", Some(Item::Building)),
("character", None),
("court_amenities_setting", Some(Item::AmenitySetting)),
("court_position_type", Some(Item::CourtPosition)),
("court_type", Some(Item::CourtType)),
("culture", None),
("culture_era", None),
("culture_innovation", None),
("culture_pillar", Some(Item::CulturePillar)),
("culture_tradition", Some(Item::CultureTradition)),
("decision", Some(Item::Decision)),
("dynasty", None),
("dynasty_house", None),
("dynasty_perk", Some(Item::DynastyPerk)),
("epidemic", None),
("faction", None),
("faith", Some(Item::Faith)),
("focus", Some(Item::Focus)),
("game_concept", Some(Item::GameConcept)),
("game_faith_doctrine", Some(Item::Doctrine)),
("game_trait", Some(Item::Trait)),
("geographical_region", Some(Item::Region)),
("government_type", Some(Item::GovernmentType)),
("holding", None),
("house_unity_stage", Some(Item::HouseUnityStage)),
("inspiration", None),
("landed_title", None),
("law", Some(Item::Law)),
("legend", None),
("lifestyle", Some(Item::Lifestyle)),
("men_at_arms_type", Some(Item::MenAtArms)),
("nickname", Some(Item::Nickname)),
("obligation_level", Some(Item::VassalContract)),
("perk", Some(Item::Perk)),
("province", Some(Item::Province)),
("religion", Some(Item::Religion)),
("religion_family", Some(Item::ReligionFamily)),
("scaled_static_modifier", Some(Item::Modifier)),
("scheme", None),
("scheme_type", Some(Item::Scheme)),
("secret", None),
("secret_type", Some(Item::Secret)),
("specific_men_at_arms_type", None),
("static_modifier", Some(Item::Modifier)),
("struggle", None),
("struggle_phase", Some(Item::StrugglePhase)),
("tax_slot_obligation", Some(Item::TaxSlotObligation)),
("terrain", Some(Item::Terrain)),
("travel_option", Some(Item::TravelOption)),
("travel_plan", None),
("vassal_stance", Some(Item::VassalStance)),
];