User:Hairy Dude

From Europa Universalis 4 Wiki
Jump to navigation Jump to search

Besides EU4 I also play Stellaris, CK2, Victoria 2 and HoI4. I have also been known to play HoI3.

To do

For the Mughals update. Easy stuff:

  • For the parser:
    • New and updated events (check diffs)
  • Generic missions for North Indians, South Indians, Indian Muslims, Hindus, and Sikhs
  • Update maps (job for someone else)
  • Update {{Add estate loyalty effect}} and any other scripted trigger/effect templates to reflect the new reality

Interface:

  • Update buildings panel screenshot with Trade Company Investments
  • Window for Charter Trade Company diplomatic interaction
    • Update diplo macrobuilder screenshot / UI page?
  • Update province window to show Settlement Growth
  • Update policies tab
  • Map mode: add truces
  • New Send Insult window with Scornful Insult check box

More involved:

  • Estates
    • Changes (e.g. disaster at 100% influence, no minimum land)
    • Add the new Indian estates (including icons) and explain their conditions
    • Add the disasters for the new estates
      • Upload the new disasters' icons
  • Government: Rewrite for new mechanics
    • Split reform specifics into a "template" article?
    • Work out what exactly is free and what is paid in the new system
    • A few new government types
  • Diplomacy:
    • Scornful insults
    • Charter Trade Company
  • Trade:
    • Upgrade Center of Trade paid feature
    • Trade company - New mechanics for Dharma
  • Rebellion:
    • Autonomous Rebel Suppression
  • Province
    • New section for monsoons
  • Policy:
    • Rewrite with new mechanics
    • Update policies themselves - some changed
  • Mughals:
    • New government type (transclude from wherever it's placed)
    • Other new stuff
  • New parliament bribes
  • Update province/region tables (not sure who usually does this - SolSys?)

Parser

I wrote a parser to render scripts as wiki text. GitHub

If you find any bugs, or the output is less than ideal, please report this as a bug on Github.

My primary development environment is Linux, but it should also work in Windows (tested in Windows 10).

Use

The output will always need editing for good presentation, especially to simplify complex scripts with lots of repetition. If you use its output without editing it, please add {{computer generated}} to the page. Also before using its output to update for a new version, please make sure something actually changed - if it's the same as the old version, just update the version number.

You can see if anything has changed between patches by copying the output for the old version somewhere, then running it on the new version and taking a recursive diff of the two versions. I provide such diffs for your convenience (see #Output zips below).

Status

  • Events: essentially done, producing {{event}} complete with {{option}}s with and without conditions (beta).
  • Decisions: mostly done, producing {{decision}}, but I'm not 100% certain it's complete (alpha).
  • Idea groups: parsed, used in producing output in other places e.g. the name of the Nth decision in such-and-such idea group. It can produce {{idea group}} templates, but in a horrible hacky way and probably not following the proper style (alpha).
  • Script statements: definitely not complete. Adding these is an ongoing process (pre-alpha). As of 6 November 2017, in idea groups, decisions and events alone I have implemented 598 distinct effects/triggers, and there are 503 left to interpret.
  • Localization: in principle the whole program could be translated to another language, if that was thought desirable - with a few exceptions, which could be fixed if anyone wants a translation. The language to use for EU4 localization is specified in settings.yml; output language is currently hardcoded to English only, but again, that could easily be changed. The localization framework I use (Shakespeare) should make localization easy, but due to a serious performance bug in the compiler it's rather more tedious at present.

To do:

  • Missions
  • Modifiers (event, opinion, influence/loyalty, etc.)
  • Historical characters (rulers, leaders and advisors)
  • Casus belli
  • (optional) Other history
  • Cross-referencing localizations, ought really to get the actual key for the name, description etc. Done!
  • All triggers and effects used in vanilla!
    • Triggers and effects available for modders but not used in vanilla
  • Other games, e.g. Crusader Kings 2, Victoria 2, Hearts of Iron IV, Stellaris
  • Clean up the code, in particular use some sort of extensible records system to make the "build and analyse a single-purpose data type" style functions less boilerplatey.
  • Possibly switch to a different localization method, if compiling Messages.hs is still too slow to enable optimizations after certain GHC bugs are fixed.

Output zips

Since no one but me seems to be able to run it at the moment, I will be uploading zip files in this Google Drive folder[1] with names based on EU4 version and the Git commit hash or version number of the version of pdxparse that produced it. I'll also upload a diff on each release, so you can tell which things changed. For my convenience I will usually update after a release, and only bother uploading once, so more may change than what changed in the game.

Questions

The following triggers/effects/etc. are not yet implemented, because 1) I don't know what they mean, 2) they're scripted, or 3) I just haven't got to them yet. Some of them just need some research:

  • Scripted triggers:
    • has_completed_all_reforms_trigger = yes "Has enacted every level of government reform" bool
    • can_have_center_of_reformation_trigger = { religion = reformed } "Is a valid choice for a Reformed Center of Reformation"
    • has_loyal_sheikh_ul_islam_trigger = no "Has a loyal Sheikh ul-Islam" (i.e. has one of the "loyal Sheikh ul-Islam" ruler modifiers)
    • has_pious_sheikh_ul_islam_trigger = yes "Has a pious Sheikh ul-Islam" (i.e. has one of the "pious Sheikh ul-Islam" ruler modifiers)
    • has_religious_scholars_trigger = yes "Has invited religious scholars"
    • has_river_estuary_trigger = yes "Has a river estuary" (i.e. has one of the many unique estuary modifiers that increase trade power)
    • has_shia_school_trigger = yes "Follows one of the Shia religious schools" (i.e. Ismaili, Jafari, or Zaidi)
    • has_sufi_sheikh_ul_islam_trigger = yes "Has a Sufi Sheikh ul-Islam" (i.e. has one of the "Sufi Sheikh ul-Islam" ruler modifiers)
    • has_sunni_school_trigger = yes "Follows one of the Shia religious schools" (i.e. Hanbali, Hanafi, Shafii, or Maliki)
    • industrialized_province_trigger = yes "Has undergone industrialization" (i.e. has one of the relevant province flags set by industrialization events)
    • is_subject_other_than_tributary_trigger = yes "Is a subject other than a tributary" (cf {{Is subject other than tributary trigger}})
    • our_scholar_matches_their_school_trigger = { school = hanbali } "Has invited scholars of our religious school, namely Hanbali" (generally the "namely" bit can be omitted because it checks all of them)
    • province_viable_for_industrialization_events_trigger = yes "Is a viable province for industrialization"
    • province_without_special_goods_produced_trigger = yes "Does not have one of the special goods produced modifiers" (e.g. Stora Kopparberget)
    • unindustrialized_province_trigger = yes "Has not undergone industrialization" (i.e. doesn't have any of the relevant province flags set by industrialization events)
    • was_never_end_game_tag_trigger = no "Has never been an end-game tag" bool
  • Scripted effects:
    • add_loot_from_rich_province_general_effect = { looter = owner } "Gain ducats and military power scaling with province development" check what 'looter' does
    • divorce_consort_effect = yes "Attempt to divorce the consort. The consort's family may be offended by this, spoiling relations, giving them a casus belli, or angering local nobles." irrelevant
      • This should probably be spelled out in full, if only in a footnote, even though it's quite extensive. Here it is:
        • If the country has a foreign consort, and either is not Catholicism Catholic or Flag of The Papal State The Papal State does not exist:
          • The consort's country of origin gets country event “The Gravest of Insults” in 1 day
        • If the country has a local consort from an owned province, and either is not Catholicism Catholic or Flag of The Papal State The Papal State does not exist:
          • The consort's province of origin gains province modifier “Angered Nobles” for 20 years, with the following effects:
            • Local unrest.png +3 Local unrest
            • Local tax modifier.png −20% Local tax modifier
            • Local unrest.png −20% Local manpower modifier
        • If the country is not Christian:
          • If the consort is not from an existing foreign country, remove the consort
          • Create a random new consort
        • If the country is Christian but not Catholicism Catholic, or is Catholic but Flag of The Papal State The Papal State does not exist:
          • If the consort is not from an existing foreign country, remove the consort
        • If the country is Catholicism Catholic and Flag of The Papal State The Papal State exists:
          • Trigger country event “Papal Authority”
        • If the country is not Catholicism Catholic, or is Catholic but Flag of The Papal State The Papal State does not exist:
          • Lose Prestige.png 15 prestige
    • generate_advisor_of_type_and_semi_random_religion_effect = { advisor_type = treasurer advisor_type_if_not_state = trader skill = 1 scaled_skill = no discount = yes } "Generate a discounted skill 1 Treasurer or Trader advisor [with skill scaling to the country's income] of semi-random religion" custom
  • Triggers:
    • amount_of_banners = 0.25 "Manchu banners constitute at least 25% of the country's forces" numeric (reduced percentage)
    • any_trade_node_member_country = { "Any country that owns a province in this trade node:" scope to country (owns or has trade power? Check this)
    • any_trade_node_member_province = { "Any province in this trade node:" scope to province
    • at_war_with_religious_enemy = yes "Is at war with religious enemies" bool
    • average_home_autonomy = 10 "Average autonomy of state(?) provinces is at least 10%" numeric (bad percentage)
    • can_be_overlord = tributary_state "Can have tributary subjects" localized atom with icon (currently only tributary_state is used)
    • can_build = fort_16th "Can build a Bastion" (province scope) localized atom with icon
    • can_heir_be_child_of_consort = no "The heir can potentially be the consort's child" bool (wording taken from game, not sure what it means)
    • check_variable = { which = oxbridge_subject value = 2 } "Value of variable oxbridge_subject is at least 2" text/value
    • church_power = 200 "Has at least 200 church power" numeric with icon
    • coal = 1 "Has at least 1 province producing Coal" numeric with icon (trade good count)
    • colony = 1 "Owns at least 1 colony" numeric
    • consort_adm = 4 "Consort's administrative skill is at least 4" numeric with icon
    • consort_age = 30 "Consort is at least 30 years old" numeric
    • consort_dip = 4 "Consort's diplomatic skill is at least 4" numeric with icon
    • consort_has_good_adm_personality = yes "Ruler has a good administrative personality trait" bool
    • consort_has_good_dip_personality = yes "Ruler has a good diplomatic personality trait" bool
    • consort_has_good_mil_personality = yes "Ruler has a good military personality trait" bool
    • consort_mil = 4 "Consort's administrative skill is at least 4" numeric with icon
    • country_or_non_sovereign_subject_holds = ROOT "(Our country) or one of their non-tributary subjects owns this province" tag
    • country_or_vassal_holds = FRA "France or one of their vassals owns this province" tag
    • current_debate = administrative_reform "Parliament is currently debating Administrative Reforms" localized tag
    • current_icon = icon_climacus "The Icon of St. John Climacus is currently commissioned" localized atom ("Icon of..." is part of the localization. Could have icon but they're not on wiki atm and would only be used here, so no real point)
    • devastation = 1 "Devastation is at least 1%" numeric (bad percentage)
    • dip_tech=ROOT "Diplomatic technology is at least that of our country" (already implemented numeric, needs to support tags)
    • doom = 35 "Doom is at least 35" numeric (icon?) (bad)
    • elector = no "Is not an elector of the Holy Roman Empire"
    • employed_advisor = { religion = reformed type = artist } "Has hired a Reformed Artist advisor" custom (possible arguments: type (natural_scientist etc.), category (ADM/DIP/MIL), religion (catholic etc.))
    • enlightenment = 100 "Progress in this province towards The Enlightenment is at least 100" numeric with icon (institution)
    • every_trade_node_member_country = { "Every country that owns a province in this trade node:" scope to country (owns or has power? Check this)
    • exiled_same_dynasty_as_current = "states_general_abolished_@ROOT"
    • exploration_ideas = 2 "Has at least 2 Exploration ideas"
    • faction_influence = { faction = mr_guilds influence = 80 } "The Guilds faction has at least 80 influence" text/value
    • feudalism = 1 "Progress in this province towards Feudalism is at least 100" numeric with icon (institution)
    • fort_15th = 1 "Has at least 1 Castle" numeric (building count)
    • fortification_expert = 3 "Has hired a level 3 Fortification Expert advisor" numeric with icon (advisor)
    • furnace = 3 "Has at least 3 Furnaces" numeric with icon (building count)
    • garrison = 1000 "Is garrisoned with at least 1000 troops" numeric
    • glass = 1 "Has at least 1 province producing Glass" numeric with icon (trade good count)
    • global_trade = 100 "Progress in this province towards Global Trade is at least 100" numeric with icon (institution)
    • grand_captain = 3 "Has hired a level 3 Fortification Expert advisor" numeric with icon (advisor)
    • had_heir_flag = { flag = inc_pacific_exploration days = 270 } "Has had the heir flag inc_pacific_exploration for at least 270 days" text/value (won't get localized - add tt tags)
    • harmonization_progress = 10 "Has at least 10% progress towards harmonization" numeric (percentage)
    • has_active_debate = yes "Is currently debating an issue in Parliament" bool
    • has_adm_advisor = yes "Has hired an administrative advisor" bool
    • has_adopted_cult = FROM "Has adopted the same cult as (The other country)" tag
    • has_adopted_cult = buddhism_cult "Has adopted the Buddhadharma cult"
    • has_border_with_religious_enemy = yes "Has borders with religious enemies" bool
    • has_casus_belli = { type = cb_insult target = PREV } "Has Diplomatic Insult casus belli against (Previously mentioned country)" text/tag
    • has_casus_belli_against = ROOT "Has a casus belli against (Our country)" tag
    • has_church_aspect = adult_baptism_aspect "Has the Adult Baptism aspect of faith" localized tag
    • has_climate = arctic "Has Arctic climate" localized atom with icon
    • has_colonist = no "Has an active colonist" bool (with icon)
    • has_consort = no "Has a consort" bool
    • has_consort_flag = consort_was_thrown_party "Has consort flag consort_was_thrown_party" non-localized atom
    • has_consort_regency = no "Is not in a consort regency" bool
    • has_custom_ideas = no "Does not have custom national ideas" bool
    • has_dip_advisor = yes "Has hired a diplomatic advisor" bool
    • has_divert_trade = yes "The Divert Trade subject interaction is active" bool
    • has_embargo_rivals = no "The Embargo subject interaction is active" bool
    • has_empty_adjacent_province = yes "Is adjacent to an uncolonized province" bool, province scope
    • has_estate = "estate_church" "Has the Clergy estate" localized atom with icon
    • has_faction = mr_aristocrats "Has The Aristocrats faction" localized atom with icon
    • has_female_consort = no "Does not have a female consort" bool (edit to "Has a male consort" if together with has_consort = yes)
    • has_first_revolution_started = yes "A revolution has occurred somewhere in the world" bool
    • has_foreign_consort = no "Does not have a foreign consort" bool
    • has_foreign_heir = yes "Has a foreign heir" bool
    • has_friendly_reformation_center = no "Has a Center of Reformation of the state religion" bool
    • has_given_consort_to = ROOT "Is the home country of the consort in (Our country)" tag
    • has_government_attribute = enables_aristocratic_idea_group
    • has_harmonized_with = christian "Has harmonized with Christian" localized atom (Not feasible to distinguish between individual religions and groups)
    • has_heir = "Ladislaus Postumus" "Has an heir named Ladislaus Postumus" string
    • has_heir_flag = inc_pacific_exploration "The heir flag inc_pacific_exploration is set" non-localized atom
    • has_influencing_fort = no "Does not have a fort building" bool (testing shows this doesn't have anything to do with ZoC or whether it's mothballed)
    • has_institution = colonialism "Has embraced Colonialism" localized atom with icon
    • has_latent_trade_goods = coal "Has Coal as latent trade good" localized atom with icon
    • has_leader = "Andrea Doria" "Has a leader named Andrea Doria" string
    • has_leaders = { value = 1 type = general include_monarch = no include_heir = no } "Has at least 1 general (not including ruler, not including heir)
    • has_merchant = prev "Has an active merchant in (Previously mentioned trade node)" localized atom
    • has_mil_advisor = yes "Has hired a military advisor" bool
    • has_mission = coptic_conquest_of_alexandria "The mission "Liberate Alexandria" is available" localized atom
    • has_most_province_trade_power = root "(Our country) has the most trade power in this node" tag, trade node scope
    • has_new_dynasty = no "Does not have a new dynasty" bool (??)
    • has_owner_accepted_culture = no "Province culture is accepted by its owner" bool
    • has_personal_deity = ganesha "Has Ganesha as personal deity" localized atom with icon
    • has_privateers = yes "Is privateering" bool
    • has_reform = ambrosian_republic "Has the government reform Ambrosian Republic" localized string
    • has_reform_level = 4 "Has enacted a level 4 government reform" numeric
    • has_religious_school = no "Does not follow a religious school" bool
    • has_religious_school_of = ROOT "Follows the same religious school as (Our country)" tag
    • has_ruler = "Aaron Burr" "Has a ruler named Aaron Burr" string
    • has_scutage = yes "Overlord has enabled Scutage subject interaction" bool
    • has_send_officers = yes "Overlord has enabled Send Officers subject interaction" bool
    • has_spy_network_from = { who = ROOT value = 100 } "(Our country) has at least 100 spy network strength in this country" tag
    • has_spy_network_in = { who = ROOT value = 1 } "Has at least 1 spy network strength in (Our country)" tag
    • has_state_patriach = yes "Has consecrated a metropolitan in this state" bool
    • has_states_general_mechanic = yes "Has the States General government mechanic" bool
    • has_subsidize_armies = yes "Overlord has enabled Subsidize Armies subject interaction" bool
    • has_support_loyalists = yes "Overlord has enabled Support Loyalists subject interaction" bool
    • has_trade_modifier = { who = ROOT key = income_bonanza } "(Our country) has the trade modifier “Income Bonanza” in this trade node" text/tag
    • has_trader = GEN "Genoa has an active merchant in this trade node" tag
    • has_unlocked_cult = buddhism_cult "Has unlocked the Buddhadharma cult" localized atom with icon
    • has_winter = normal_winter "Experiences Normal Winter" localized atom (theoretically with icon, but not on wiki)
    • heir_adm = 3 "Heir has administrative skill of at least 3" numeric
    • heir_claim = 50 "Heir has claim strength at least 50" numeric
    • heir_dip = 3 "Heir has diplomatic skill of at least 3" numeric
    • heir_has_bad_adm_personality = yes "Heir has a bad administrative personality trait" bool
    • heir_has_bad_dip_personality = yes "Heir has a bad diplomatic personality trait" bool
    • heir_has_bad_mil_personality = yes "Heir has a bad military personality trait" bool
    • heir_has_personality = bold_fighter_personality "Heir has personality trait Bold Fighter" localized atom (icon? needs lookup)
    • heir_mil = 1 "Heir has military skill of at least 3" numeric
    • heir_nationality = PREV "Heir's nationality is (Previously mentioned country)" tag
    • heir_religion = ROOT "Heir has same religion as (Our country)" tag (already has localized atom)
    • historical_friend_with = FROM "Is a historical friend of FROM" tag
    • historical_rival_with = TEU "Is a historical rival of Teutonic Order" tag
    • hre_size = 10 "The Holy Roman Empire has at least 10 members" numeric
    • imperial_mandate = 21 "Mandate is at least 21" numeric with icon
    • in_league = catholic "Is a member of the Catholic league" localized atom with icon
    • incident_variable_value = { incident_wokou value = 3 } "Incident Wokou Pirates value is at least 3" text/value
    • innovativeness = 10 "Innovativeness is at least 10" numeric with icon
    • institution_difference = { who = ROOT value = 1 } "Has embraced at least 1 more institution than (Our country)" tag/value
    • is_backing_current_issue = no "Is not backing the issue currently being debated in Parliament" bool
    • is_blockaded = yes "Is blockaded" bool, province scope
    • is_client_nation = yes "Is a Client State" bool
    • is_colonial_nation_of = FRA "Is a colonial subject of France" tag
    • is_emperor_of_china = no "Is not the Emperor of China" bool
    • is_empty = no "Is not an uncolonized non-wasteland land province" bool
    • is_enemy = PREV "(Previously mentioned country) views this country as a rival" tag (I think this is what it means - inverse of is_rival, nothing to do with war)
    • is_excommunicated = no "Is not excommunicated" bool
    • is_great_power = yes "Is a Great Power" bool
    • is_harmonizing_with = PREV "Is harmonizing with the state religion of (Previously mentioned country)" tag or localized atom
    • is_heir_leader = no "Heir is a general" bool with icon
    • is_in_capital_area = no "Is in capital area" bool
    • is_in_coalition = no "Is in a coalition" bool with icon
    • is_in_trade_league = yes "Is in a trade league" bool with icon
    • is_in_trade_league_with = HSA "Is in a trade league with Lübeck" tag with icon
    • is_in_war = { defender_leader = ROOT defender_leader = THIS duration = 1825 } "Has been in a war in which the primary attacker was THIS and the primary defender was (Our country) for at least 1825 days" custom
      • general case given above, but can special-case THIS in both places: "Has been the primary attacker in a war against (Our country) as primary defender for at least 1825 days"
    • is_incident_active = incident_firearms "The Proliferation of Firearms incident is ongoing" localized atom
    • is_incident_happened = incident_nanban "The Nanban Trade incident has happened" localized atom
    • is_institution_enabled = enlightenment "The Enlightenment institution has been enabled" localized atom
    • is_island = no "Is not a single-province island inaccessible by land" bool
    • is_league_friend = ROOT "Is in the same religious league as (Our country)" tag
    • is_league_leader = no "Is leader of a religious league" bool
    • is_march = yes "Is a march" bool
    • is_month = 0 "The month is January or later" custom (done already, but off by 1 error -_-)
    • is_node_in_trade_company_region = yes "Province's trade node is in a trade company region" bool, province context
    • is_origin_of_consort = ROOT "Consort originates from (Our country)" tag
    • is_owned_by_trade_company = yes "Is assigned to a trade company" bool
    • is_papal_controller = yes "Is curia controller" bool
    • is_permanent_claim = 253 "Has a permanent claim on province Outer Hebrides" province id
    • is_previous_papal_controller = yes "Was previously curia controller"
    • is_religious_center_province = yes "Is a religious center" bool ("Religious Center" modifier? Applies in particular to Makkah)
    • is_revolution_target = yes "Is the revolution target" bool with icon
    • is_rival = AZT "Considers Aztec to be a rival" tag
    • is_rival = emperor "Considers (The Holy Roman Emperor) to be a rival" tag (adjust tag function to allow this)
    • is_state = no "Is not in a state" bool
    • is_state_core = ROOT "Is a state core of (Our country)" tag
    • is_subject_of_type = daimyo_vassal "Is a Daimyo subject" localized atom
    • is_territory = no "Is not in a territory" bool
    • is_threat = PREV "Is threatened by (Previously mentioned country)" tag
    • is_trade_league_leader = yes "Is leader of a trade league" bool
    • is_vassal = yes "Is a vassal" bool
    • is_wasteland = yes "Is a wasteland province" bool
    • janissary_percentage = 0.05 "Janissaries constitute at least 5% of the country's army" numeric (reduced percentage)
    • knows_country = AZT "Knows of Aztec" tag
    • land_forcelimit = 20 "Land force limit is at least 20" numeric with icon
    • manpower = 1 "Available manpower is at least 1000" numeric with icon
    • manufactories = 100 "Progress in this province towards Manufactories is at least 100" numeric with icon (institution)
    • master_of_mint = 3 "Has a Master of Mint advisor with skill at least 3" numeric
    • mil_tech=ROOT "Military technology is at least that of our country" (already implemented numeric, needs to support tags)
    • mission_completed = conquer_scotland "Has completed mission Conquer Scotland
    • months_of_ruling = 12 "Has ruled for at least 12 months" numeric
    • months_since_defection = 12 "Defected in the last 12 months" numeric (name of this trigger is misleading, it doesn't mean "defected at least this long ago")
    • native_ferocity = 1 "Native ferocity is at least 1" numeric with icon
    • native_hostileness = 1 "Native aggressiveness is at least 1" numeric with icon
    • native_size = 1 "Native size is at least 500" numeric (multiply by 500)
    • navy_size = 1 "Has at least 1 ship" numeric
    • new_world_i = 100 "Progress in this province towards Colonialism is at least 100" numeric with icon (institution)
    • num_free_building_slots = 1 "Has at least 1 empty building slot" numeric
    • num_of_admirals = 1 "Has at least 1 admiral" numeric with icon
    • num_of_aspects = 3 "Has at least 3 Aspects of Faith" numeric
    • num_of_cavalry = 1 "Has at least 1 cavalry regiment" numeric with icon
    • num_of_conquistadors = 1 "Has at least 1 conquistador" numeric with icon
    • num_of_explorers = 1 "Has at least 1 explorer" numeric with icon
    • num_of_galley = 5 "Has at least 5 galleys" numeric with icon
    • num_of_generals = 1 "Has at least 1 general" numeric with icon
    • num_of_janissaries = 10 "Has at least 10 Janissary regiments" numeric
    • num_of_light_ship=POR "Has at least as many light ships as Portugal" numeric or tag
    • num_of_owned_provinces_with = { has_province_flag = metalwork_center value = 4 } "Has at least 4 provinces such that the following is true: \\ Province flag metalwork_center is set" custom
    • num_of_provinces_in_states = 21 "Has at least 21 provinces in states" numeric
    • num_of_religion = { secondary = yes value = 0.75 } "Has at least 75% provinces of secondary religion" custom (was text/value but doesn't account for this case - Tengri)
    • num_of_states = 2 "Has at least 2 states" numeric
    • num_of_streltsy = 10 "Has at least 10 Streltsy regiments" numeric
    • num_of_subjects = 1 Has at least 1 subject" numeric
    • overseas_provinces_percentage = 0.05 "Has at least 5% overseas provinces" numeric (reduced percentage)
    • owns_or_non_sovereign_subject_of = BOH "Is owned by Bohemia or their non-tributary subject" tag
    • percentage_backing_issue = 0.1 "At least 10% of seats in Parliament are backing the current issue" numeric (reduced percentage)
    • personal_union = 1 "Has at least 1 personal union" numeric with icon
    • plutocracy_ideas = 4 "Has at least 4 Plutocratic ideas" numeric
    • previous_owner = HUN "Was previously owned by Hungary" tag
    • printing_press = 1 "Progress in this province towards Printing Press is at least 1" numeric with icon (institution)
    • privateer_power = { country = ROOT share = 10 } "Privateers from (Our country) have at least 10% share of trade power in this node" custom (country is optional)
    • prosperity = 100 "Prosperity is at least 100%" numeric (percentage)
    • province_id = PREV "Is the same province as (Previously mentioned province)" province id (allow pronouns)
    • province_trade_power = 10 "Province trade power is at least 10" numeric with icon
    • provinces_on_capital_continent_of = PREV "Owns provinces on the capital continent of (Previously mentioned country)" tag
    • religious_school = { group = muslim school = hanafi_school } "Follows the Hanafi Muslim school" custom
    • renaissance = 100 "Progress in this province towards Renaissance is at least 1" numeric with icon (institution)
    • reverse_has_opinion = { who = ROOT value = 25 } "Opinion of (Our country) is at least 25" tag/value
    • reverse_has_opinion_modifier = { who = ROOT modifier = opinion_sent_help } "Has opinion modifier “Sent Help” towards (Our country)" tag/atom
    • revolution_target_exists = no "The revolution target does not exist" bool
    • ruler_age = 15 "Ruler is at least 15 years old" numeric
    • ruler_consort_marriage_length = 2 "Has been married to current consort for at least 2 years" numeric
    • ruler_has_personality = architectural_visionary_personality "Ruler has personality trait Architectural Visionary" localized atom
    • ruler_is_foreigner = yes "Ruler is a foreigner" bool
    • ruler_religion = ROOT "Ruler's religion is the same as (Our country)" tag
    • sailors = 4000 "Sailors reserve is at least 4000" numeric with icon (unlike manpower this is not in units of 1000)
    • same_continent = ROOT "Is on the same continent as (Our country)" tag
    • school_opinion = { who = ROOT opinion = 0 } "This country's religious school's opinion of (Our country) is Ambivalent or better" custom (look up numbers: -1 hate, 0 ambivalent, 1 respect)
    • shamanism = 2 "Has at least 2 provinces following Shamanism" numeric with icon (province count)
    • silk = 1 "Has at least 2 provinces producing Silk" numeric with icon (province count)
    • spy_ideas = 0 "Has activated Espionage ideas" numeric (for >0, "Has at least N")
    • spymaster = 3 "Has a Spymaster advisor of skill at least 3" numeric with icon
    • statists_vs_orangists = 0.1 "Statists vs Orangists value is at least 10" numeric (reduced)
    • superregion = china_superregion "Is in China superregion" localized atom
    • tariff_value = 0.01 "Tariffs are set at at least 1%" numeric (reduced percentage)
    • tech_difference = 0 "Is at least 0 technologies ahead" numeric
    • temple = 3 "Has at least 3 Temple buildings" numeric (building count)
    • trade_company_size = 10 "Local trade company has at least 5 provinces" numeric, province scope
    • trade_embargo_by = ROOT "Is embargoed by (Our country)" tag
    • trade_ideas = 1 "Has at least 1 Trade idea" numeric
    • trade_share = { country = ROOT share = 10 } "(Our country) has at least 10% share of trade power in this node" tag/value (reduced percentage)
    • trading_bonus = { trade_goods = tea value = yes } "Has a bonus for trading in Tea" custom
    • trading_part = { trade_goods = cocoa value = 0.05 } "Has a 5% market share in Cocoa" atom/value (reduced percentage)
    • trading_policy_in_node = { node = PREV policy = maximize_profit } "Has the trading policy Maximize Profit in (Previously mentioned trade node)" custom
    • treasurer = 3 "Has hired a Treasurer advisor of skill at least 3" numeric with icon
    • trust = { who = PREV value = 70 } "Has at least 70 trust in (Previously mentioned country)" tag/value
    • units_in_province=ROOT "(Our country) has units in this province" tag
    • university = 5 "Has at least 5 University buildings" numeric with icon
    • uses_blessings = yes "Religion uses the blessings mechanic" bool (vanilla Coptic only, some converter religions use it)
    • uses_devotion = yes "Government form uses Devotion" bool
    • uses_doom = yes "Religion uses the doom mechanic" bool (vanilla Nahuatl, modded religions may use it)
    • uses_fervor = yes "Religion uses the fervor mechanic" bool (vanilla Reformed, some converter religions may use it)
    • uses_karma = yes "Religion uses the karma mechanic" bool (vanilla Buddhist, modded religions may use it)
    • uses_patriarch_authority = yes "Religion uses the Patriarch Authority mechanic" bool (vanilla Orthodox, some converter religions use it)
    • uses_piety = yes "Religion uses the Piety mechanic" bool (vanilla Muslim, converter religions may use it)
    • uses_religious_icons = yes "Religion uses the Icons mechanic" (vanilla Orthodox with Third Rome, converter religions may use it)
    • vassal = 1 "Has at least 1 vassal" numeric (check this)
    • war_score_against = { who = INC value = 75 } "Has at least 75% war score against Inca" tag/value (percentage)
  • Effects:
    • add_government_reform = administrative_republic "Enact the government reform Administrative Republic" localized atom (with icon?)
    • add_province_triggered_modifier = religious_center "Add triggered province modifier Religious Center, with the following effects:" modifier
    • add_scaled_imperial_influence = 10 "Gain up to 10 imperial influence" numeric with icon (scaled to what? Dunno)
    • add_scaled_republican_tradition = -10 "Gain up to 10 republican tradition" numeric with icon (scaled to what? Dunno)
    • add_siberian_construction = 400 "Set number of settlers to 400 and, if not already a colony and Third Rome.png Third Rome DLC is active, create a Siberian frontier" numeric
    • add_trade_node_income = 10 "Gain ducats equal to 10 times current monthly income from this trade node" numeric with icon
    • add_unit_construction = { type = light_ship amount = 20 speed = 0.1 cost = 0 } "Start building 20 light ships at 0% of the cost and 10% of the time" custom (already implemented iirc)
    • adopt_reform_progress = ROOT "Gain reform progress spent on current reforms by (Our country)" tag with icon
    • back_current_issue = no "Stop backing the current issue" bool
    • break_union = BRA "Personal union with Brazil ends" tag
    • change_controller = FRA "Becomes occupied by France" tag
    • change_government_reform_progress = 100 "Gains 100 government reform progress" numeric with icon
    • change_heir_adm = 1 "Heir gains 1 administrative skill" numeric with icon
    • change_heir_dip = 1 "Heir gains 1 diplomatic skill" numeric with icon
    • change_heir_mil = 1 "Heir gains 1 military skill" numeric with icon
    • change_native_ferocity = 1 "Natives gain 1 ferocity" numeric with icon
    • change_native_hostileness = 1 "Natives gain 1 aggressiveness" numeric with icon
    • change_native_size = -2 "Natives lose 1000 population" numeric with icon
    • change_personal_deity = ganesha "Change personal deity to Ganesha" localized atom with icon
    • change_price = { trade_goods = slaves key = TRIANGLE_TRADE value = 0.5 duration = -1 } "Add price modifier "The Triangle Trade" to Slaves, changing the price by +0.5 ducats for the rest of the campaign" custom
    • change_statists_vs_monarchists = 2 "Strengthen Monarchists by +2" numeric (change "Monarchists" to "Statists" and negate the value in localization if the value is negative)
    • change_to_secondary_religion = yes "Convert to the currently selected secondary religion" irrelevant (country or province scope)
    • change_variable = { which = khojas_retained value = 1 } "Change the variable khojas_retained by 1" text/value
    • clear_saved_name = advisor_from_afar "Forget the saved name advisor_from_afar" non-localized atom
    • clear_exiled_ruler = "states_general_abolished_@ROOT" ??
    • clr_global_flag = empire_of_china_dismantled "Clear global flag empire_of_china_dismantled" non-localized atom
    • clr_heir_flag = inc_pacific_exploration "Clear heir flag empire_of_china_dismantled" non-localized atom
    • collapse_nation = yes "The country reduces in size to a number of provinces equal to 10 plus 2 per reform passed" irrelevant
    • complete_mission = conquer_ireland "Mark the mission "Conquer Ireland" as completed"
    • convert_female_heir_to_general = 10 "Heir becomes a general with 10 tradition" numeric
    • convert_female_ruler_to_general = 10 "Ruler becomes a general with 10 tradition" numeric
    • create_colony = 100
    • create_independent_estate = estate_cossacks
    • create_independent_estate_from_religion = estate_dhimmi
    • create_general={
    • create_march = CRI
    • create_marriage = FROM
    • create_union = ANS
    • create_vassal = HUN
    • define_admiral = {
    • define_conquistador = {
    • define_consort = {
    • define_exiled_ruler = {
    • define_explorer = {
    • define_general = {
    • define_heir = {
    • disband_rebels = revolutionary_rebels
    • discover_province = 1020
    • discover_province = PREV
    • dismantle_hre = yes
    • else_if = {
    • enable_religion = protestant
    • end_incident = incident_firearms
    • export_to_variable = {
    • form_coalition_against = FRA
    • heretic_rebels = 1
    • hide_ambient_object = hagia_sophia
    • kill_consort = yes
    • kill_leader = {
    • mr_guilds_influence = 0.02
    • mr_traders_influence = 0.02
    • multiply_colonysize = 0.5
    • multiply_variable = {
    • particularist_rebels = 1
    • polish_noble_rebels = 1
    • pretender_rebels = 1
    • random_owned_area = {
    • random_trade_node_member_province = {
    • release_all_subjects = yes
    • remove_advisor_by_category = ADM
    • remove_building = fort_15th
    • remove_casus_belli = {
    • remove_church_aspect = random
    • remove_consort = yes
    • remove_fow = 3
    • remove_government_reform = celestial_empire
    • remove_heir = yes
    • remove_historical_friend = FROM
    • remove_historical_rival = ROOT
    • remove_ruler_personality = entrepreneur_personality
    • remove_trade_modifier = {
    • reverse_remove_opinion = {
    • revolutionary_rebels = 1
    • set_ai_attitude = {
    • set_allow_female_emperor = yes
    • set_consort_flag = consort_influenced_change_of_religion
    • set_dynasty = BAV
    • set_emperor_of_china = ROOT
    • set_government_and_rank = {
    • set_heir_culture = FROM
    • set_heir_flag = christian_tutors
    • set_heir_religion = FROM
    • set_heir_religion = catholic
    • set_legacy_government = administrative_monarchy
    • set_papacy_active = no
    • set_primitive = no
    • set_religious_school = {
    • set_revolution_target = ROOT
    • set_ruler = "states_general_abolished_@ROOT"
    • set_ruler_religion = ROOT
    • set_ruler_religion = catholic
    • set_saved_name = {
    • set_school_opinion = {
    • set_seat_in_parliament = no
    • set_variable = {
    • show_ambient_object = hagia_sophia
    • subtract_variable = {
    • swap_free_idea_group = yes
    • swap_non_generic_missions = yes
    • unlock_cult = buddhism_cult
    • vassalize = AKM
  • Bonuses:
    • army_tradition_from_battle = 0.5
    • auto_explore_adjacent_to_colony = yes
    • build_time = -0.1
    • capture_ship_chance = 0.1 numeric with icon
    • cav_to_inf_ratio = 0.1
    • cavalry_flanking = 0.25
    • drill_decay_modifier = -0.25
    • fire_damage_received = -0.1
    • galley_cost = -0.1
    • garrison_growth = 0.1
    • global_garrison_growth = 0.1
    • global_naval_engagement_modifier = 0.1
    • global_sailors_modifier = 0.1
    • global_ship_trade_power = 0.1
    • harsh_treatment_cost = -0.15
    • idea_claim_colonies = yes
    • imperial_authority = 0.1
    • justify_trade_conflict_cost = -0.1
    • leader_siege = 1
    • light_ship_cost = -0.1
    • local_friendly_movement_speed = 0.1
    • local_sailors_modifier = 0.5
    • local_ship_cost = -0.15
    • local_ship_repair = 0.15
    • local_state_maintenance_modifier = 0.1
    • loot_amount = 0.1
    • max_states = 3
    • may_establish_frontier = yes
    • may_perform_slave_raid = yes
    • migration_cooldown = -0.2
    • monthly_piety = -0.001
    • movement_speed = 0.1
    • native_assimilation = 0.5
    • native_uprising_chance = -0.5
    • naval_tradition_from_battle = 0.5
    • no_religion_penalty = yes
    • reinforce_cost_modifier = -0.25
    • sailor_maintenance_modifer = -0.05
    • sailors_recovery_speed = 0.05
    • same_culture_advisor_cost = -0.15
    • shock_damage = 0.1
    • shock_damage_received = -0.05
    • sunk_ship_morale_hit_recieved = -0.2
    • supply_limit_modifier = -0.5
    • transport_cost = -0.1
    • yearly_corruption_increase = 0.001
    • yearly_harmony = -1
  • Structural:
    • highlight = yes
    • picture = "estuary_icon"
    • required_personality = architectural_visionary_personality
    • type = all