Modding suggestions

From Crusader Kings II Wiki
Jump to navigation Jump to search

This is a community-generated list of modding suggestions for CKII. Paradox usermod coordinators use this list as a source of ideas when making CKII more moddable.

Any modder can add to the list. The list can be discussed here, and it is recommended that one post there whenever one adds to the list.

Suggestions[edit | edit source]

Troubleshooting[edit | edit source]

Main article: Troubleshooting
  • More extensive logging of what's going on in a game (events, decisions taken, etc) so that modders can find the cause of bugs easier. Preferably with the different things being logged toggle-able. Could be enabled in the settings.txt file like Nudge for example is
  • A display of the AI's chance of taking a decision each check interval when viewing one in observation mode with charinfo on and viewing the decision in the intrigue menu.
  • Displaying culture and religion flags in their charinfo tip in the same way that title and character flags are displayed.

Console commands[edit | edit source]

Main article: Console commands
  • Console command to print every scope, command, and condition to the log
  • An add_consort/add_spouse X-ID Y-ID console command similar to the new add_lover console command, which can help a lot with mod testing and story creation.
  • Add a command for listing all active global flags and variables.

Engine[edit | edit source]

Make moddable/scriptable something that is currently hardcoded in the engine:

  • Ability to play as unlanded characters(mercenaries, holy orders, host invasions).
  • Allow the game to use negative dates, making it more practical for mods situated in BC years.
  • Ability to define how many "trade post"/"secondary holding" slots provinces have.
  • Ability to mod mapmodes (far-fetched, I know)
  • Add a difference between vertical and horizontal scale for the map border for custom-sized maps, instead of the two currently in the game (1:1 and 2:3 ratio, I believe?)
  • Make the spawning of new characters from the create a vassal function (right click on a barony holding) a fully moddable decision.
  • Make the requirements to create Trade Post moddable to allow for example others government types to construct them or to forbid them for special types of republican government
  • Allow scripting of the actions that can be influenced by favors. Currently only a set of hardcoded diplomatic actions, e.g. marriage proposals, can force acceptance by use of a favor.
  • Make homeland attrition more moddable, E.G., being able to have several types of it of varying severity and varying tech longevity
  • Make it possible to toggle trade posts on navigable rivers
  • Add scriptable rules for AI designating heirs (for indian religions in vanilla) by weighted modifiers, so AI can and will designate/switch designation of their children based on traits, age, stats, gender, opinion, whether married, whether same religion/culture as designator, etc.
  • Make "The Republic DLC" more moddable look at this page for the list of suggestions
  • Ability to script whether certain characters (e.g., those affected by a law or exported trigger/allow of some kind) may marry matrilineally, may only marry matrilineally, or may not marry matrilineally
  • Add a method for specifying a trigger for all hard-coded diplo-actions: given appropriate scopes for all objects involved in the given diplo-action to be initiated, the user trigger must not fail for the hard-code to consider it a valid action. Without any major modification of the AI, this allows script to block certain choices.
  • Allow dis-/enabling the usage of portages between major rivers independently from the ability to navigate major rivers. This would allow to let other characters still use major rivers with ships, while only allowing Vikings to traverse the sections over land.
  • Allow modders to create additional types of "crossings" in addition to portages and narrow straits, with different effects on armies traversing. For example to simulate mountain passes that inflict harsh attrition, or desert crossings that give maluses to everything but camel warriors.
  • Add GUI functionality modding. In the .gui files, add an action = %ACTIONNAME% entry with options of hardcoded (the default), none, perhaps ones for closing/opening windows and character portraits, and otherwise fallback to looking for the action in common/actions/*.txt. Also add openwindow = %WINDOWNAME% to the commands list.

Mod compatibility[edit | edit source]

Improve mod compatibility, so that medium-sized mods can be compatible with each other, and players can use more than one at a time:

  • Folder-based loading for common/static_modifiers.txt
  • Folder based loading for map/geographical_region.txt
  • Folder based loading for .sfx files in interface/. Today only /interface/sound.sfx is taken into account.
  • Extensibility of religion icons (to allow adding new religion without having to change and renumber the icons each time vanilla adds new religions), either via:
    • using a namespace for each frame index: icon = mystrip.9
    • or working the same way trait icons do, in single files instead of using icon strips. . i.e. file names would look like: catholic.tga and catholic_small.tga- I assume this would also make it easier for the Paradox devs to make changes to religion in the future, and I am guessing is the reason they made it so for traits.
  • Define holy sites in the religion files rather than the landed titles files, so that keeping small mods compatible with other projects becomes simpler
  • Let the .mod file define necessary DLC, giving the user a warning if they try to enable the mod without the indicated DLC

Defines[edit | edit source]

Main article: Defines
  • Add a toggle to make cultural naming dependent on the province owner rather than top liege
  • Export the weighting for fertility when it comes to accepting marriage proposals
  • Export a toggle to have count-tier realms use dynastic names, not just duchies and above
  • Export a toggle for whether merchant republics benefit from legalism's bonus to demesne size. Currently they don't
  • A toggle in the defines, that if ON lets Merchant Republics have access to different seas than the one their capital's port is in, provided they have a province that touches that sea (doesn't need to have its port be in that sea).

For example, if this toggle is ON, Venice controlling Sinai (IIRC and the port of Sinai is in the Mediterranean, if not substistute Venice for an Indian MR) will let them construct trade posts in the Red Sea, despite both their capital and the port of Sinai being in the Mediterranean.

  • Export to defines an on and off switch, that determines if acknowledged but non-legitimised bastards change dynasty upon having children (default), or keep it as in earlier versions of game.
  • A toggle for patricians removing the prestige malus for marriages between feudal and republic characters (currently feudal characters lose prestige for marrying a character from a patrician family, no matter what rank)
  • A toggle to make tributary status globally inheritable of not.
  • Expose how highly the AI values matrilineal marriages (when the "would prefer a matrilineal marriage" modifier is present) to defines, similar to MARRIAGE_AI_PRESTIGE_VALUE.
  • New defines to define what alliances do, for example:
AUTOMATIC_CALL_TO_ARMS_ENABLED = 0/1 (will allies be called in automatically?)
DECLINE_CALL_TO_ARMS_ENABLED = 0/1 (can allies decline a call to arms?)
INDIVIDUAL_CALL_TO_ARMS_ENABLED = 0/1 (can you send call to arms individually to allies?)
  • Fix CALL_ALLY_INTERACTION_ENABLED, so that changing its value to 0 does something.
  • Ability to increase the soft cap on living legitimate children (which currently seems hard-wired to 9ish; it is possible to increase this for the player by setting additional player-children to some absurd value like 200, but that's a hack).
  • A define to easily disable the use of realm peace.
  • A define for male-to-female birth ratio.

History[edit | edit source]

Main article: History modding
  • Allow raising levies only from specific vassals when using raise_levy in the history files
  • Add more options to customize raise_Levies history command, like trying to match certain number with them, setting troop proportion
  • An add_consort trigger to be added to history files to allow historical concubines to show up in-game.
    • Already can be done with the use of effect = { c_CHAR_ID = { add_consort = ROOT } }
      • A request for historical consorts relationships to appear for dead characters in the character window the same way as it works for living characters.
  • Add a way to define a nomadic lord as vassal of another nomad in the history files even when their cultures are different. Attempting to do so right now will cause the vassal lord to be a tributary instead of a vassal.
  • An "effect = {}" history command for provinces, like the one for characters. Would allow for the scripting of historical province modifiers, spawning diseases via history and more.
  • Ability to add battles to wars located in history/wars to see them in same window as battles that happened ingame

Scripting language[edit | edit source]

Main article: Scripting
  • Ability to express targeted relationships between characters/titles/provinces freely (generalization of 0-valued targeting opinion modifiers)
    • Potentially much faster and much more powerful than local_event_targets (despite lacking the ability to relate to misc. scopes such as wars)
    • [reverse_]has_relation = { target = SCOPE name = relation_name } (generalized forms of has_opinion_modifier between the local scope and SCOPE)
    • [reverse_]add_relation = { target = SCOPE name = relation_name }, [reverse_]remove_relation = { target = SCOPE name = relation_name }
      • Should be allowed to stack if no other weighting is allowed. If a targeted variable can be associated with a relation (without stacking), even more previously-impossible tasks could be scripted.
      • Like opinion modifiers, automatic expiration after a scripted duration would be a plus (optional years / months parameter).
    • any_related_character, any_related_title, any_related_province trigger and effect scopes along with their random-access equivalents (generalization of any_opinion_modifier_target and random_opinion_modifier_target)
    • This would unlock a whole new world of scripting potential. It would obviate the need for local_event_target, because it covers the vast majority of those use cases while also allowing operation upon unlimited amounts of same-type relationships to multiple objects (one to many, ergo many to many).
    • Far-out applications include: modelling varied organizational models (e.g., EU's HRE or homage or dual monarchy / unions or tributary systems or banking), findMax / sorting / ordering of objects, etc.
    • Simple, concrete, utility examples:
      • MAX_CROWN_LAW_CHANGES is some number greater than 1. For each crown law title in their demesne, you want the AI to add a timed "crown law change cooldown" relationship directed from itself to any title upon which it passes a crown law. In the ai_will_do for passing any such laws on the title, you block the AI from passing anything if that character-to-title relationship [still] exists.
      • Similarly (when working with more sophisticated crown law setups), properly imposing even a lifetime cooldown upon particular crown law groups (but not others) is actually impossible to do correctly right now, although a simple version of this kind of rule can be pragmatically approximated with sacrifices (e.g., the mod EMF features such a crown law system that is forced to use a "convenient" rule set, not the one preferred by its creators, in order to enable this feature to work at all).
      • You have a CB which can only be used by a character class to target a particular title once per lifetime or no more than once every X years (but may arbitrarily target other such titles later). Such CBs could also be "awarded" by religious heads or other mechanics (e.g., Papal invasions). Character-character relationships alone simply cannot represent any of these simple use cases. Claims, e.g., are a hard-coded type of character->title targeted relationship, although they lack the ability to be timed and are specific to their hard-coded purpose alone.
      • Since dynamic de jure liege title (duchy) changes for counties do not persist across save/reload (also a separate moddability request), province->title or [county] title->title targeted relationships could be used to restore dynamic changes to the de jure hierarchy at this tier upon loading a savegame (i.e., on_startup).
  • Event target sets: store into / iterate over an arbitrary set of [presumably same-type] event targets
    • add_to_event_target_set = { which = target_set_name target = TARGET } to add TARGET to event_target_set:target_set_name
    • any_event_target:target_set_name = { ... } to iterate over set members (trigger and effect)
    • random_event_target:target_set_name = { ... } to randomly select a set member (effect)
    • (Optional) remove_from_event_target_set = { which = target_set_name target = TARGET }
    • If a list data structure makes more sense to you (maintains ordering of saved event targets but does not de-duplicate), simply substitute 'list' for 'set' above
  • (High Impact) Allow title flags (and title variables) to be set and persist upon titles that are not currently-held (e.g., for operating upon de jure hierarchy programmatically)
    • I'm assuming that it's known that this does not work, but since it has never been noted or implied, perhaps this is actually not WAD already.
  • A function similar to count that allows the counting of two scopes and then return true or false depending on their relation, because variables can't be used in allow or trigger blocks.
  • an "is_immune_to_normal_events = yes" character flag that makes an on-map character behave like an off-map ruler: Makes them immune to normal events and decisions, marriage interactions, war declarations, childbirth etc, and their court as well. Basically just like an offmap ruler and his court, only on the map. Only events, decisions and interactions that are specifically allowed to happen for them do affect them, for example by specifying "does_affect_immune_characters = yes" in an event.
  • An unsafe_character_event command (and comparable ones for province/letter/narrative/etc. events) that triggers the event regardless of whether or not the character meets the requirements, similar to the existing unsafe_war/reverse_unsafe_war
  • The ability to place scripted scores in if/else blocks to choose which set of scores to use.
    • For example, in vanilla eldership succession, there are many scores that check whether the voter is the current ruler or an elder of a certain stance. Were these scores to be moved into scripted scores and then moved into blocks where the voter's stance is made once, a slight economy could be made in the number of conditions checked and the scripted scores would be easier to re-use elsewhere, such as in other succession types, without creating many near-identical variants.
  • Allow dynamic flags to reference offmap powers, religions, cultures, societies, artefacts, and bloodlines.

Scopes[edit | edit source]

Main article: Scopes
  • Allow the weighting of random scopes with modifiers like in random lists.
  • Add scopes any_dynasty and random_dynasty.

Characters[edit | edit source]

  • any_parent and any_parent_even_if_dead scopes
  • random_previous_holder and any_previous_holder title effects (any_previous_holder already exists as a title trigger)
  • A scope for the character with highest personal combat score in a province and/or the realm.
  • *_enemy scopes that include any character which is either at war with the root, or has the opinion modifier enemy = yes
  • A character scope for scoping to electors from a title that has elective succession.
  • A character scope for scoping from an elector to the character they are voting for. chosen_candidate, perhaps?
    • What if they are electors for multiple titles?
  • Allow current_heir to be used from title scope, and have it point to the heir of that title.
  • Add a scope for the next life of a dead character who reincarnated. This scope could be used to make characters ineligible for reincarnation if they already have a living reincarnation.
  • any_bastard and random_bastard - scope to characters whose real_father is the scope originator

Titles[edit | edit source]

  • any_de_jure_vassal_title title trigger (already exists as effects and any_direct_de_jure_vassal_title exists as trigger+effect)
    • Stay consistent (and make a lot of tasks more tractable): random_direct_de_jure_vassal_title and random_de_jure_vassal_title title effects to complement existing any_ effect scopes
    • Editor's note: I haven't checked any_child again, but by happenstance, I happened to confirm that random_child already works on dead children just a couple days ago (CKII 2.3.4). I too had assumed that dead children were excluded.
  • Make the any_realm_title scope usable from titles, scoping to all titles under that title.

Provinces[edit | edit source]

  • Add a scope for provinces that are on the same trade route as the currently scoped province. "any_trade_route_province" affects all provinces on a trade route, any trade route.

Units[edit | edit source]

  • Add ability to scope to disbanded levy and garrison from holding scope, to in example damage them by "troops = -x" command

Conditions[edit | edit source]

Main article: Conditions
  • A trigger to check for specific versions of CK2
  • A trigger checking whether a mod is installed, similar to has_dlc
  • Fix the "day=N" condition.

Characters[edit | edit source]

  • Event filter / pre-trigger for characters holding cached = yes traits only_trait_name = yes (e.g., only_on_hajj = yes / only_pilgrimage = yes from vanilla, but mods tend to much more creatively use cached traits in ways that could empower currently [very] wasteful sets of MTTH/maintenance events with extremely low processing overhead)
    • A more strict syntax for this would be only_cached_trait = trait for the pre-trigger (+1 for strict syntax, original suggestion was only to appeal to current conventions)
    • Also, add custom trait flag, similar "is_epidemic", etc for creating custom trait groups ("is_trait_flag = <flag_name>" for traits and "has_trait_flag = <flag_name>" for conditions).
  • Character trigger is_suzerain or has_tributary. Both would accomplish the same goal, so only one would be needed.
  • A way to check if a character is currently allowed to create a certain title (i.e. whether or not they can currently create it through the GUI)
  • An is_enemy conditional that works like is_foe
  • Character triggers realm_size_diff and num_of_count_titles_in_realm_diff to compare the sizes of the realms of two characters.

Titles[edit | edit source]

  • The ability to use the realm_size condition from titles not just from characters.

Holdings[edit | edit source]

  • Allow holding_type to be evaluated for settlements under construction. (Currently, only finished settlements can be evaluated).
  • Add a condition that checks if a holding is being built in a province
  • Triggers based on how much of the levy remains in a holding.

Provinces[edit | edit source]

  • Province trigger has_minor_river = yes/no
  • Province trigger is_major_river = yes/no and a similar is_lake = yes/no (could then also be used in conjuction with is_land to determine if a province is a normal sea zone)
  • Add a contiguous_with_capital condition that checks if one can get from a province to one's capital without leaving one's (sub) realm
  • Province trigger being_looted = yes/no that checks if a province is currently being looted.
  • Province/holding triggers tax_income and tradevalue that check if a province/holding has a certain amount of these. Useful for many things, e.g. a trade fair building that can only be constructed in a holding that has >50 tradevalue.
  • change is_winter condition from boolean to boolean/string type, i.e. make it possible to also check which type of winter a province is currently experiencing. Like "is_winter = mild_winter". This would go just perfect with the latest "climate" condition, which already allows that check (and which I am grateful for :)).

Commands[edit | edit source]

Main article: Commands

Global[edit | edit source]

  • (Easy) Character/province/title-scope effect clr_variable = var_name (actually free the variable, important due to excessive number of temp. variables required for cross-scope variable operations)
  • save_local_event_target_as = { which = target_name target = SCOPE } effect for saving event targets (pointer/reference objects) into arbitrary character/province/title objects
    • event_target:target_name = { ... } within SCOPE would yield the saved event target's scope (or a null scope if target_name was never saved into SCOPE)
    • event_target:target_name would also be a valid event target (right-hand-side parameter) inside SCOPE
    • clear_event_target = target_name (clears saved event target target_name from local scope)
    • With this syntax, it's up to the implementer whether local event target names can 'shadow' regular event targets in the case of a name collision. Another solution would be to use an unambiguous syntax for local event target references such as local_event_target:target_name.
  • A remove_religion_authority effect, to remove any authority modifier done through the religion_authority. This effect would work in the same way as the other remove_modifier commands work.

Characters[edit | edit source]

  • Add a change_gender = male/female command
  • Add a character effect change_age = YEARS.
  • (Easy) In the create_character effect, a random = years parameter which randomly sets the character's age from age to age+random, in the same style as the random parameter for character_events.
  • (Easy-ish) In the create_character effect, a random_birthday = yes parameter which randomises the character's birth month and birth day, and then back-calculates the birth year (remembering to catch the scenario where the birth month and birth day is later this year -- not simply subtracting the age from the current year, but subtracting "age minus 1" if their birthday this year hasn't passed yet).
  • set_name = random to randomise a character's name from their cultural/titular name list, as appropriate for their sex. Useful for new_character scope after assigning a different culture, and also for scripting religious or cultural conversions long after a character has been generated.
  • A command to cause a character to take a random new name appropriate to his/her current culture. (For bonus flexibility, allowing the command to specify an arbitrary other culture, or to use male/female names regardless of the character's actual gender, would be nice.)
    • Related to the above, a condition to check whether a character's name is in the list for his/her current culture.
  • Allow the set_name command to take a scope as its input (so that characters can be named after other characters).
  • Allow the dna argument for the create_character command to copy the DNA of an existing character (e.g, "dna = ROOT", which currently *actually makes the DNA string be "ROOT"*)
  • Make character location moddable. Similar to the "move_character" command, but not necessarily move the character into someone else's court, and need to work for rulers as well. Essentially this can allow us to create events like traveling, adventuring etc, interacting with characters and environment where the character is located. Also show the character location/status in the character window (just like the currently hard coded "reigning in XXX" text) for deeper immersion.
  • cancel_death command which stops any death from age, illness trait or lack of health
    • Workaround: Can be accomplished by adding a custom trait with "immortal = yes" to this character. However, traits are always visible (even if not given an icon, there will be a gap in the traits list) and there is no matching (hidden) character modifier.
      • Does not work. As of 2.7, non-vanilla traits with "immortal = yes" do not actually stop characters from dying a natural death.[1]
    • Would also be useful for things like failed attempts at execution, and follow-up events: "Tried to hang him, but the rope snapped. Some courtiers claim that it was divine intervention. Now what?"
  • dynasty = none to allow dynasty command to change a characters dynasty to lowborn
  • move_character_to_unknown_location to remove a character from all courts, leaving them still available to event targets which have saved the character but otherwise off the map.
    • Rationale: Characters defined in history files with titular titles are already in unknown locations, so the feature to be in an unknown location already exists—it simply isn't exposed to modding in a reasonable way. create_character only works from character or province scopes and automatically places the character in the scoped character's court or province capital respectively. The ability to move characters to unknown locations would be a godsend for special characters, e.g., deities, ghosts, alternate planes of existence, adventuring, or minor commoners not yet elevated to court.
    • Workaround: The only way to send a character to an unknown location is to define a titular-only character in history files whose sole purpose is to act as a "null court", but this character receives random MTTH events and is unreliable (they can be supplanted by new rulers, have claims falsified against them, can suffer diseases, can make rivals, etc. -- q.v., the amount of work needed to make Isis the Duat even halfway reliable in Historical Immersion Project).
      • Not a valid workaround. Placing characters in a null court breaks countless events, because the game cannot determine distances. Never create a titular title without a base location and never move characters to province null, it's hard-coded and reserved for leaderless rebels and pirates. Placing anyone else in there will cause instability and eventual crashes.
    • Won't it work with something like sending-off-to-China event? I know it is more-or-less death internally but some events can mention dead people.
  • (Moderate?) hide_character = yes to prevent a character from appearing in any character selection GUI or search GUI, leaving them unavailable for selection for plots, assignment of minor titles, marriage proposals, etc. It would also suppress the right-click quick diplomatic menu to do nothing, and prevent left-clicking on their character icon to view their character page. Reverse with hide_character = no.
  • Add the ability to grant, by event, minor titles that originate from a foreign court. (E.G., "<scope> = { give_minor_title = { court = ROOT title = title_designated heir }}" would grant the minor title "Designated Heir" to <Scope> from the court of "ROOT", making him/her ROOT's heir.)
  • Add a way to add a truce between two characters by event
  • Allow unidirectional alliances
  • Allow unidirectional non-aggression pacts
  • The ability to export_to_variable day_of_birth, month_of_birth, and year_of_birth.

Titles[edit | edit source]

  • (Easy) Title effect change_controller = CHAR where the scoped title must be baron-tier and CHAR is the new controller of the barony (which might lift occupation status)
    • We already have the analogous title-to-character scope controller, so we'd finally be able to do much more interesting war and CB effects with the two.
  • Allow a de jure vassal title's 'de jure assimilation years' counter to be changed by event (positive/negative year offset), which would allow fully-scriptable de jure assimilation of duchies/kingdoms (otherwise, assimilation rate and conditions for all titles are statically defined by [EMPIRE_]DE_JURE_ASSIMILATION_YEARS)
    • With title modifiers (which would presumably accept all law/character modifiers), this would be much more natural, though likely more complex: e.g., title modifier de_jure_assimilation_speed = -0.5
  • The ability to change holy sites dynamically
  • Add an event effect to change a title's crusade weighting
  • A set_heir command that works in a title scope to override a succession law
  • A command to merge the history of two titles maintaining the history of the previous title (not as copy_history does). Eventual conflicts (that a holder of ERE appears in history as holder of Byzantium too) should be solved showing the character as holder of the two titles. This could be an example of the command:
 e_ere = {
    # The historical Emperors of Byzantium are now Emperors of ERE, the historical Emperor
    # of ERE will remain
     merge_title_history = e_byzantium
  • Please make it so that "SET_PENTARCHY" Command can be done for only one religion's Pentarch head, as opposed to every Autocephalous religion. This is especially true if there are mutliple Pentarchies with multiple different Holy Sites.
  • The ability to change to change an offmap power's governor title dynamically.

Provinces[edit | edit source]

  • Add a province effect that makes it impossible to cross the province; if entered one can only go back to the province one came from unless one occupies the province
  • A way to stop a disease in progress in a province by event/command.
  • Allow events to add or remove narrow straights between provinces.
  • remove_holding_slot command, which does the opposite of the add_holding_slot command, to better allow a back-and-forth simulation. Can't remove a slot occupied with a holding, and neither the last holding slot of a province, obviously.
    • Workaround: use add_holding_slot = -1

Wars[edit | edit source]

  • War-scope effects add_attacker = CHAR, add_defender = CHAR where CHAR is a character (no other way to join a specific war by event)
    • Should work for adding vassals to a major_revolt CB after the actual war declaration without unintended consequences from hacks to do this
  • More moddable warscore (war-scope effects to offset warscore, province modifiers for occupation warscore, etc.)
  • Command to withdraw character from war

Units[edit | edit source]

  • Add a script command to move units like the console command "moveunit"
  • Either set it so Mercenaries and event spawned units always use the highest tech values or a flag allowing them to be set to use their "capital" or "home" province's tech values. Right now Mercenary and event spawned troops always suffer a disadvantage when facing technologically advanced levies.
  • Ability to add a modifier to the unit generated by the spawn_unit command.
  • Command to hire existing mercenary company with parameters like spawn location, cost etc.
  • Command to change owner of earmarked event troops.
  • Allow to use raise_levies command in events

Modifiers[edit | edit source]

Main article: Modifiers
  • Character modifier ai_aggressiveness which modifies the same AI weight as the aggressiveness numeric property that can be set for a religion (not the same as the trait property ai_ambition)
  • (Probably Hard, High Impact) Per-vassal tax- and min_levy/max_levy-modifiers (e.g., character modifiers liege_tax_modifier to modify a vassal's de facto tax to liege, and liege_min_levy_modifier / liege_max_levy_modifier)
    • Allows arbitrary cross-sections of vassals (or individuals) to pay more/less taxes or be obligated to provide more/less levies. Opens up entirely new dimension of mechanics for better modeling feudalism, privileges, autonomy, loyalism, marches, cultural/religious castes, Muslim Iqta, etc.
    • Alternatively, extend demesne laws to have an optional vassal_trigger clause in vassal character scope which determines those who are subject to the law's modifier/opinion offsets
    • Concrete example applications beyond those that self-describe already given:
      • Sublinear efficiency curve for net tax / liege levies of vassals as a function of their individual distances from the capital and technology levels
  • A modifier to alter the cost of levy maintenance, that perhaps works for both characters and provinces
  • Character modifiers retinue_constant_cost_modifier, retinue_reinforce_cost_modifier (percentage or flat modifiers on respective defines)
  • Variable duchy limit (modifiable by technology for example)
  • Allow triggered_modifiers for non-rulers [EDIT: Why? This would be incredibly CPU-intensive, and I can't think of a single use case that isn't better done another, existing way.]
  • A province/character modifier to how much gold is gained from looting. (E.G., loot_amount = 0.05 would give the character 5% more cash from raiding)
  • Allow defining groups of unit types for combat tactics and other modifiers (E.G., technology)
  • Allow buildings other than those in a [Patrician-only] family_palace holding to apply general character modifiers to their holder (such as boost intrigue/stewardship)
  • More modifiers able to be used for retinues, such as a specific culture separate from that of the capital, and both maintenance and retinue cap cost.
  • Allow for modifiers to change specific unit stats. By this is meant being able to change - for example - skirmish offensive in absolute values, rather than only all offensive stats by a percentage.
  • Enable vassal_limit law modifier to work as a general character modifier
  • Add same_culture_opinion / same_opinion_if_same_culture / opposite_culture_opinion and same_culture_group_opinion / same_opinion_if_same_culture_group / opposite_culture_group_opinion character modifiers (similar to existing modifiers for religion).
  • Base which governments are affected by castle_vassal_tax_modifier, city_vassal_tax_modifier, and temple_vassal_tax_modifier on preferred holding rather than government group.
  • Modifiers such as "local_build_time", "local_build_cost" as Building modifiers (allowing the creation of buildings that will make other buildings in that specific holding cheaper or faster to build).
  • Add realm_opinion opinion modifier. It would work like general_opinion, but only for characters in the same realm as the character the modifier applies to.
  • The ability to declare a command_modifier block inside of a regular Character Modifier.
  • A holding_tax_modifier, applicable on buildings/holding, that works like local_tax_modifier, but only for an individual holding. For e.g. a market building that increases tax income in that holding by 10%.
  • Allow some modifiers that make sense to be used in buildings, e.g. local_revolt_risk, local_tax_modifier, supply_limit, max_attrition.
  • Modifiers like hostile_max_attrition and hostile_supply_limit that only affects enemies (or the opposite, one that only affects friendlies), to allow for greater moddability of friendly vs hostile attrition.
  • Adding a "diplomatic_range_modifier" character modifier. Being able to modify diplomatic range in that way could be very useful, specially i.e. for making diplomatic range increase with technology.
  • Add percentage modifiers for demesne, court size, and vassal limits.

On Actions[edit | edit source]

Main article: On actions
  • on_liege_change on_action (ROOT is ruler, FROM is previous liege (null/false scope if previously independent), and the liege scope suffices for the new liege)
    • Immensely useful, extremely important to the correctness of several mechanics in CK2+, HIP/EMF, and other major mods. Currently, we override every single place in script & CBs in which we know a liege is about to potentially change (and do our best with quite a bag of tricks, but it's not enough by a long shot), and from all of those places, we invoke a generic "liege may have changed" scripted effect which re-evaluates various state which depends upon the current liege of a ruler, some of which is absolutely critical for correctness.
    • Despite the hacks aforementioned, "liege may have changed" hints that are only sourced from script are simply inadequate for many applications which we've avoided due to the inability to completely cover all liege change cases.
    • Courtiers' lieges seem to be irrelevant to most of the use cases we've imagined or half-implemented, if that makes things easier.
    • on_suzerain_change similar to above. on_suzerain_end wouldn't be needed if FROM pointed to the new suzerain, FROMFROM pointed to the old one, and ROOT the tributary character, as one could simply check if FROM points to a character or not.
  • on_primary_title_change on_action (FROM = TITLE, whichever title is not the primary_title [yet or any longer])
    • Should allow prior primary title laws to be accessed before they might be altered by destruction (if they would be altered by destruction)
  • on_pre_destroy_title on_action (ROOT = CHAR, FROM = TITLE, TITLE is about to be destroyed, presumably via the GUI but not necessarily)
  • on_councillor_deployed on_action (only scope needed: councillor character)
  • (Easy) Export the hard-coded assignment of education traits to an event called on the on_adulthood on_action. Or, honor any education trait assignment by event that might take place on_adulthood.
    • Already nearly-done. The game currently announces the education trait that it assigns in hard-code (before calling on_adulthood events, which could assign the trait differently) via pop-up. If the "assignEducationTraitAndShowMsg(...)" block of code could simply be altered to run directly after those events, this would be done.
  • on_capital_changed on_action with ROOT = ruler, FROM = old capital holding (baron-tier title)
    • Currently can't cleanly detect a capital change even with a maintenance event due to lack of character->title targeted relationships (see top; targeting opinion modifier generalization)
  • (Low Priority) on_county_culture_change on_action (has some worthy use cases and would be consistent with on_county_religion_change)
  • Export the merc_rampage, merc_turncoat, and merc_leave on_actions to events, allowing us to control which a merc will choose based on their traits and other factors, when their employer goes bankrupt.
  • Make the spawning of Patrician Families when one dies out or a republic is created be handled by a fully moddable event(s). (Can currently cludge this using an on_death event checking for patricians with no family_palace heir)
  • on_natural_death on_action which fires whenever somebody is about to die from age, illness trait or lack of health with them just being ROOT
  • on_character_arrives_in_court on_action which fires for the liege of the court as a character arrives in court, and maybe also for characters as they arrive in court. Useful for a lot of narrative events, killing random courtiers, preventing exiles from entering etc., basically useful for just controlling the court better.
  • on_generation on_action which would fire for all freshly generated characters. Both for the random court fillers and for the ones made with create_character. This would make it simple to set necessary flags for new characters, without trying to rely on low-MTTH events or decisions (which usually don't fire fast enough).
  • on_holding_building_finished on_action that complements the already existing on_holding_building_start, and would fire whenever a building has finished construction. Useful in many cases, e.g. economy mods that could reserve some resources for the time the building is constructed, and free them when it is finished; buildings that should have effects beyond simple modifiers (e.g. set a province modifier) when finished; or really any other mod that wants to do advanced stuff with buildings.
  • (Moderate) Custom "scripted_actions" which behave like on_actions, which can be fired off with an effect like fire_action = name. Mods which define a scripted action with the same key will merge their events lists together, meaning that all mods can register themselves in an object-oriented programming style and be intercompatible.
    • Workaround: A scripted effect can be created in a separate file, which intercompatible mods can then overwrite, but unique compatibility patches have to be made on that file for each and every permutation of mods that are intercompatible.

Events[edit | edit source]

Main article: Event modding
  • Create an option to remove incest, for players who might be triggered by these events
  • Make it possible to have more than 4 event options, for example via a scrollbar if more options than 4 are available
    • A more easily-implemented and more compatible version of this would to simply add a new event type that always uses a GUI element akin to the decision listbox type for its event options
    • However, this still really doesn't address the fundamental UI hurdle for modding: the ability to select a title/province/person from a list as can be done with, e.g., hard-coded diplomacy (targetted_decisions with third-party objects/actors would effectively get us there, and the API / CPU usage constraints / GUI templates all make so much sense...)
  • Add block "is_offer = { event=<triggered_only event> [character=<character> hint=<yes/no>] }" for target, title and settlement decisions allow block, to specify the need for agreement to offer, similar some vanilla decisions (convert religion demand, invite to court etc) and flags "is_agree=<yes/no>" for options in event, specified in is_offer block, wherein "yes" is agree, and "no" is deny opition. Event will be send to decision target (default) or character, specified in is_offer block. If "hint=<yes/no>" set on "yes" (default: no), in the decision window will be show hint of the chance agreement, based custom tooltips of ai_will_do blocks of event options.
  • (Easy?) Related to problem described above, disable_random_events = yes which automatically halts checking for mean-time-to-happen events on a character until cancelled with disable_random_events = no. on_action events, and is_triggered_only events called from character_event, would still function normally, but disable_on_action_events would also be valuable to close off remaining "random" events, and finally disable_triggered_events could be used to completely suppress events on a special character. disable_plots and disable_decisions would also round out the list of all possible AI-driven interactivity for a special character.
    • Rationale: It can be very useful to suppress MTTH events on special characters who should not acting as nobles and interacting with "real" characters.
    • Workaround: The only way to accomplish this in a mod is either by making the character incapable (and thereby crippling their ability to interact in numerous other ways) or by overriding nearly every game file to add a trigger condition to practically every MTTH event. Hardcode support for disable_random_events would likely involve only a single boolean in the MTTH event checking function; the others would however require more effort.

Decisions[edit | edit source]

  • Make Grant Title, and Grant Viceroyality, fully moddable targeted decisions.
  • Add "diplo_distance" as a valid filter to ai_target_filter/filter for targeted decisions, allowing a wider range of characters to be targeted by decisions than is currently available while still restricting (for resource allocation purposes) it to a limited value ("all" covers every living character, diplo_distance restricts it to the diplo_distance as set in defines.lua).
  • Add "religion" and "religion_group" as a valid filter to ai_target_filter/filter for targeted decisions, allowing to target unrelated characters of the same religion or religion group in different realms without using "all".
  • The ability to have decisions that use titles as their third_party in addition to the current character and artefact scopes.

Laws[edit | edit source]

Main article: Law modding
  • Succession law that requires a definable trait to be present
  • Similar to duchy_revokation for the Byzantine Empire, add barony_revokation, county_revokation, and kingdom_revokation
  • Allow demesne/crown laws to modify retinue limits by absolute and relative amounts (this can be relatively easily hacked together currently)
  • Allow laws to directly determine whether land can be granted to unlanded women, overriding succession law
  • Allow ai_will_do in gender succession laws (currently does not work)
  • Allow pass_effect in succession and gender succession laws as is allowed with de_jure_laws (extension to demesne laws would also be nice)
  • Add a law option that enables hiring vassals of vassals as councilors
  • Add Crown laws effect "castle_vassal_min_taxes" analogue to "castle_vassal_min_levy", same for temples and republics, also make possible for it to stack with similar effects in demesne laws such as centralisation. So feudal vassal with 40% of castle_vassal_min_taxes in crown laws, and 30% in demesne laws, would never pay his liege less than 70% of taxes he is supposed to pay according to feudal taxation laws.
  • Allow calling events through the laws "effect" and/or in (if it is added) pass_effect.
  • Add an on_pass_law and on_pass_dejure_law on_actions (currently there is only the on_approval and this fires at the time you try to pass a law rather than at the time it is approved and passes).
  • Add law effect "abduction = yes/no" that will allow/prohibit abducting prisoners by rulers of religions or government forms that normally allow it. If prohibited, only voluntary concubinage by request to liege of woman, or to woman already in court, is allowed. (useful in vanilla as part of Status of Women laws).
  • Add a law that disallows vassals(or specifically viceroyalties) to revoke their vassals' titles.

Governments[edit | edit source]

Main article: Government modding
  • Option to have randomly generated female mayors, or only female mayors
  • Ability to define weights for elector's votes in governments, for the various elective successions. This would allow for some governments to favor those with higher stats, for example, while others could be opinion based, or who holds the most land, or has certain traits, or some combination of these weights.
  • Allow non-republican realms to use the merchant republic mechanics
  • Allow non-republican realms to hold family palaces
  • Make the nomad government type more moddable, for example by adding the possibility of cultural conversion.

Religions[edit | edit source]

Main article: Religion modding
  • add ability to tag religions as fulfilling the "has_religion_feature" trigger
  • Option to have only female priests in a religion
  • Enable female polyandry (e.g., max_husbands = N and females_can_have_consorts = yes as new religion properties)
  • The ability to prevent a religion from using the "heresy_icon" of its parent religion
  • Allow using the decadence mechanic for any religion
    • Make decadence more moddable (e.g., character modifier affecting dynastic decadence change/year absolutely, and/or modifier relative to current decadence)
  • Allow applying religion mechanics to specific cultures rather than religions. (E.G., one might want to make Mongols able to raid regardless of their religion)
  • Add a ai_incest_chance parameter for religions that allow incestuous marriage, affecting how likely the AI is to accept/offer an incestuous marriage
  • Add religion effect "abduction = yes/no" for religion that allows consorts, that will allow/prohibit abducting prisoners. If prohibited, only voluntary concubinage by request to liege of woman, or to woman already in court, is allowed.
  • The ability to mod caste and religious sect traits more. I.e. making more castes for other cultures. Right now making new castes only seems to appear for Indian religions, even if you add an allow = {} when making new caste traits.
  • The ability to better mod religious sect traits, to make it possible for a distinction to be made in the code, by making a philosophy=yes command to accompany religious=yes for mods that deal with far Eastern religions (or far Eastern-like religions) that are more syncretic than other religions. This would allow, for example, a character in China to prescribe to a specific philosophy trait, such as Confucian, Mohist, Legalist and/or Daoist, while at the same time being able to have a trait that can show they also practice a kind of Buddhism (i.e. the vanilla Buddhist sects traits).
  • Add the ability for a sect trait to appear for more than one religion. i.e. ability to add more than one religious_branch= command for a single sect trait.
  • Remove the ledger-hiding effect on the pre_reformed = yes command and create a new command hide_from_ledge = yes to do it instead. That way, hellenic can be seen in the ledger if a mod has expanded on it or someone could hide catholic if they want Catholicism to be hidden in their mod without losing the maintenance events associated with the Pope.
  • Ability to specify whether or not courtiers in pre-existing marriages can be appointed as bishops.
  • Ability to specify whether or not marriages of courtiers are annulled upon being made bishops.
  • Add religion effect "pentarchy = yes/no", associated with "autocephaly = yes/no". If explicitly set one of these parameters - (de)activated pentarchy and autocephaly, but only autocephaly activated, if set "pentarchy = no autocephaly = yes" and vice versa only pentarchy, if set "pentarchy = yes autocephaly = no". Required for religions subordinate nobility, such as the Insular Christianity
  • Add religion effect "title_autocephaly = <localisation_key>", to specify title of by the head of the Autocephalous Church
  • Change the behavior title flag "pentarchy = yes" that it set pentarchy only for religions with holy site there. Else, use flag "pentarchy = <religion>"
  • Change the behavior title flag "holy_site = <religion>", that it does not set pentarchy in holy site, if the flag "pentarchy = yes" is not set
  • Add religion effect "cult = <other religion same group>". Required for in religious cults, such as catholical and buddhistic monastic orders
    • Cults cannot attacked or conversion the parent religion and vice versa
    • Cult inherit all not replaced parameters from parent religion, including religion head
    • Religious liege of cult head - head of parent religion, that is heads of catholical cults can pay tax to the Pope
    • Parent religion and all cults always can intermarry and inherit theocratic titles (except religion heads) from each other
    • Add religion effect "can_lead_parent_religion = yes/no" (default: no) allowing cult member inherit parent religion head and elector titles
  • Allow kingdoms to have different Autocephaly religious heads based on religion: e.g., that if the ERE is Miaphysite, it answers to the Patriarch in Antioch, if Paulician, to Rome, and if Orthodox, to Ecumenical Patriarch, and so on and so forth. "K_ITALY = { MIAPHYSITE_PENTARCH = X ORTHODOX_PENTARCH = X },"
  • The ability to block intermarriage between different religions in the same religion group (e.g. Aztecs and Bön, Reformed West African and Zunist).
  • The ability to block and allow intermarriage between a religion and a culture/culture group (e.g. the Tengri religion can intermarry with the Altaic culture group without restrictions). If someone belongs to a religion and culture that aren't normally allowed to marry, they'd presumably be excepted.
  • The ability to block and allow intermarriage between a religion and a government (e.g. the Tengri religion is happy to marry nomads of any religion, but other religions don't marry non-co-religionist nomads). If someone belongs to a religion and government that aren't normally allowed to marry, they'd presumably be excepted.
  • Change sainthood/ancestor veneration from being hardcoded to certain religion groups or religions with the religion_beatification feature to be a toggleable feature (e.g. as with set_can_excommunicate). Alternatively, add a set_religion_feature command so that religion_beatification can be applied to a religion outside of reformation.

Cultures[edit | edit source]

Main article: Culture modding
  • Allow changing cultures' culture modifier by event, and multiple modifiers being active at once. Static modifiers could still be used to define the modifiers, or event modifiers
  • The ability to define certain names as being for lowborn characters only
  • A cannot_intermarry = <culture|culture_group> setting.
  • Ability to add matronymics to names

Casus Belli[edit | edit source]

Main article: Casus Belli modding
  • A can_use_title_gui clause in CBs, which works the same as can_use_gui but allows referencing the CB target title
  • (High Impact) CB actions on_invalid and on_invalid_title that trigger right before a war invalidates (the latter allows referencing the CB target title and is the most critical)
    • Invalidation is the only war outcome which leaves CB on_add state hung, which often prevents clean solutions to CB modding and fully prevents some advanced CB modding.
  • A check_any_title flag for CBs, which allows a cb to target any title whatsoever, even if it or any of its de jure vassals isn't held by the target or the target's vassals

Titles[edit | edit source]

Main article: Title modding
  • Add a destroy_allow section for titles. If the conditions aren't met, the title cannot be destroyed (through the GUI)
  • Add a usurp_allow section for titles. If the conditions aren't met, the title cannot be usurped (through the GUI)
  • Add a can_assimilate flag for titles. can_assimilate = no would prevent the title from assimilating duchies/kingdoms INTO the title
    • Already have assimilate = no to prevent a de jure title's duchies/kingdoms from being assimilated by other titles (used for k_jerusalem in vanilla). This is the opposite use case.
  • Make the create title decision (the button on the province screen) fully moddable.
  • Make it possible to set the % of counties needed to form specific title.
  • A give_religious_title targeted decision.
  • Enable dismiss_trigger (from job_titles), or the block form of revoke_allowed for minor titles, to allow control over which groups can revoke a given minor title. (Specifically, for the Commander minor_title, which apparently works differently.)
  • Add the ability to place triggers on the dignity, opinion_effect, monthly_salary, and monthly_prestige for job_titles. Various religions and government types should hold certain positions in more or less esteem. (For example, Jain characters should value the Marshal job less, while Nomads treat it with more respect.)
  • Change the behavior title flag "pentarchy = yes" that it set pentarchy only for religions with holy site there. Else, use flag "pentarchy = <religion>"
  • Change the behavior title flag "holy_site = <religion>", that it does not set pentarchy in holy site, if the flag "pentarchy = yes" is not set
  • Improve the parsing of landed_titles.txt so that conditions involving titles can be put before the title is defined
  • Add the option of making (landless?) titles "is_unique = yes" like minor titles. So when you are granted/inherit this title, you must abdicate all other titles to their perspective heirs (without dying).

Buildings[edit | edit source]

Main article: Building modding
  • Allow the holding itself to be checked in the "trigger" field for buildings. Right now using FROMFROM there to scope to the holding (as is used in the "potential" field) doesn't work.
  • Allow multiple types of special units to be raised from a single holding. Right now, it's hardcoded that only one type can be raised even if the holding has buildings for multiple.
  • Allow icons to be displayed next to building names, by allowing "icon" to be used in building definitions. (would help players visualize buildings and/or differentiate between buildings)
  • Allow buildings to use an "is_visible" field, like modifiers and traits can.

Traits[edit | edit source]

Main article: Trait modding
  • A trait flag preventing marriages that preserve your dynasty; E.G., forcing you into matrilineal marriages if you're a man
  • A trait flag giving the character preference in succession over anyone without it
  • More extensive trait opinion scripting, E.G., defining opinion bonuses/penalties with specific other traits
  • Add a trait effect that blocks the character from being taken as a concubine, in the same way as 'cannot_marry' blocks marriage
  • At the moment, the "cannot_marry = yes" trait effect appears to also prevent players from granting land to the character. Please remove this property.
  • A trait flag that would prevent the trait holder from being made a bishop; E.G., "cannot_be_invested = yes"
  • Add a way to copy traits from an existing character to the new one with the create_character command.
  • A way to disallow characters with the traits from marrying those possessing certain other(s).
  • Allow for traits to set which genders are affected by sex_appeal_opinion, rather than having it hardcoded to homosexual/traitless.
  • Trait flags that make the character require a regent but still able to command soldiers and vice versa

Objectives[edit | edit source]

Main article: Objective modding
  • Make it possible to allow characters to join factions in their own realm. E.G., the emperor joining a faction supporting the power of the church in the empire
    • Already possible with 'faction = <faction name>'.

Councillors[edit | edit source]

  • Allow AI job action scripting (currently only uses vanilla job actions)
    • (Bug) AI also ignores modded location deployment triggers for vanilla job actions (probably will/does ignore vanilla triggers themselves, at least eventually)
    • (Hard, High cost/benefit) There is no way to influence job action deployment preference, vanilla or otherwise (but event-based systems can simulate the AI placing councillors trivially)
  • Add a "add_to_realm_attribute" boolean field for job titles. At present, only the last defined job title with a certain attribute will add to the realm one. Even without contributing to a state attribute, it is still interesting to have a job title, because it can do job actions. Being able to set an attribute (despite not contributing to the realm attribute) is important for producing an ordered candidate list, and for the player to intuitively know what is most important for that job title.
  • Make the state attribute contribution from councillors be an average of all councillors with that attribute, instead of only counting the last defined councillor's attribute for that purpose.
  • Add an "allowed_to_grant" or "potential" field for job titles, scoped to the liege (as there is for minor titles), to prevent them from showing up in the interface according to certain conditions.
  • When using the moddable councilor actions, a way to display text on provinces, in addition to colouring them. Would give for a better overview than tooltips which are only displayed individually when hovering over a province. Alternatively, a way to colour in several shades of colours simultaneously to convey more complex information - like two stripes of different colours, if a vassal and liege have different stances towards a province (like is the case with some proper mapmodes).

Technology[edit | edit source]

Main article: Technology modding
  • Ability to define tech groups
  • Ability to mod tech spread by culture, not just religion
  • Make technology groups moddable, for example by having a file specifically for tech groups, where groups can be defined by the same conditions and scopes as events
  • Improved control over tech (ability to increase specific techs by event, everything in a group, etc)
  • Ability to define the quantity of tech levels (at the moment it is hardcoded to 8)

Localisation[edit | edit source]

Main article: Localization
  • A localisation string that displays the ordinal number of a ruler (e.g. if ROOT is William IV, [Root.GetOrdinalNumber] could return 'fourth')
  • Ability to change title/ruler localisation based on whether the title is independent (E.G., and independent kingdom being a "Kingdom", but a vassal kingdom being a "Grand Duchy")
  • Ability to change title/ruler localisation based on whether the title is titular or not
  • Ability to change title localisation based on religion
  • Ability to change title/ruler localisation based on culture/religion from outside the landed_titles file, so that mod compatibility is easier to maintain. E.G., by putting it in localisation instead: "d_lancaster_welsh;Rheged;Rheged;Rheged;;Rheged;;;;;;;;;x"
  • Ability to change title localisation based on culture group rather than the specific culture (E.G., all Arabic cultures might use the same localisation)
  • Break up the localization files by topic. It'd make it much easier to find what you're looking for
  • A surname section for each culture, for randomly generated characters. Linkable, like given names
  • Religious title names (E.G., different name for Sicily if it is owned by Muslims than if by Christians)
  • Allow localizing unit types by culture (E.G., heavy_infantry_greek;hoplitai)
  • Allow localizing god names by culture (E.G., GOD_THE_LORD_irish)
  • Allow localizing by the combination of religion and culture (E.G., king_muslim_castillan)
  • Separate localisation for petty kings/kingdom; not all cultures would call it the same as the kingdom tier
  • Ability to put someone's rank after their name (E.G., Genghis Khan rather than Khan Genghis) dependent on culture
  • Ability to use a cultural suffix rather than prefix with "from X" dynasty names. E.G., "Scarboroughde" rather than "de Scarborough"
  • Ability to define names unique to a dynasty rather than a culture
  • Ability to limit specific names to the dynasty of the holder of a specific title
  • Allow changing the order of localisation commands in ruler title localisation (E.G., having certain titles localised as "William, King of England" instead of "King William of England", or "Lady Anne Grey" instead of "Lady Anne of Cornwall"), and allow using relevant localisation commands ([Root.Whatever]) in title localisation. This could function similar to how specific titles can currently have custom ruler title names (E.G., "Basileus")
  • Allow adding specific localisation commands for specific ruler
  • Allow minor titles' localisation to be bound to a specific title. E.G., a Dowager Duchess of Cornwall would continue to be called "of Cornwall" even if she moved to a different court
  • Make the prefix/suffix for dynasties named after their founder moddable per-culture (E.G., Franks suffixing "ing" so that Karl founds the Karling dynasty)
  • Make founder-named dynasties probabilistic instead of binary. (E.G., founder_named_dynasty = 0.5 giving a 50% chance of dynasties of that culture being founder-named)
  • Add a dynastic_naming flag for titles, making the title always use a dynastic name
  • Allow localising holding types by culture/religion
  • A culture flag to force all random dynasty names to be taken from the pre-defined lists rather than using "of X"
  • Make it possible to use [GetFromRelation] and variants for any two characters, not just the player character
    • Suggested syntax: [SCOPE1.GetRelation(SCOPE2)] (the reverse relation is achieved by swapping SCOPE1 and SCOPE2)
  • Add string variables, allowing for arbitrary localisation strings to be associated with characters, titles etc., which can then be called in ecent descriptions and such (e.g., [Root.<<variable>>])
  • Allow for longer county names, as currently they are truncated if they are too long for the province interface
  • Ability to set "FOA" for minor titles. E.G., "My Prince" for rulers who have the "prince" minor title.
  • Ability to set "FOA" for minor titles. E.G., "My Prince" for rulers who have the "prince" minor title.
  • Dynamic Pentarchy localization. Different religions with Autocephaly should be able to have their own titles ("Abbot" instead of Patriarch) and their own custom descriptions, so that they don't all end up with "the Christian Church has five ancient pentarchs". For example, what if multiple non-Christian religions, say, in a fantasy setting, was mirrored using Autocephaly? If they are not in similar groups, not having dynamic Pentarchy localizations for each would be a bad thing.
  • The ability to use customized localization for dynasty names.
  • The ability to use customised localisation for non-tooltip UI elements (e.g. councillor titles, society rank names).
  • The ability to access societies directly by their name in script in localisation commands.
  • The ability to access variables stored in societies in localisation commands.

Graphics[edit | edit source]

Main article: Graphics modding
  • Add the ability to set at what level CoA randomization starts. Currently you can either randomize all CoAs, or just baronies. I would for example like to leave county CoAs for muslims random, while using the flag-files for duchies, kingdoms, and empires
  • Add the ability to make the random CoAs separate from dynastic CoAs
  • In conjunction with the above, being able to set barony CoAs would be nice
  • Also, being able to set CoA randomization by culture instead of religion
  • In addition, the ability to set random CoAs for specific titles
  • The ability to set a character's dynasty shield as their CoA rather than their primary title
  • Ability to change the CoA of a title by event/culture/religion
  • Improve graphical modding
  • Ability to tag traits to go into custom defined display elements.[2]
  • Ability to draw water at different heights like in EU4
  • Ability to designate wasteland provinces to behave like lake provinces for map writing, but not tinted blue [3]
  • Beg, borrow, violate contracts, etc. to come up with a converter for .xac files (Definitely not going to happen, but having custom 3d assets where they could jsut convert to .xac would be great)
  • If conversion of .xac files is not possible, create flat counters, HOI style, with large-enough area and moddability to let custom artwork assets be placed on them in lieu of 3d models. That would lower visual memory load and make the game run better, especially for people with crappy PCs.

Portraits[edit | edit source]

Main article: Portrait modding
  • Make it possible to denote that specific cultures are not to use patrician clothing (E.G., patrician_clothing = no)
  • Expand the moddability of DNA. Number of option slots should not be hardcoded
  • Remove the pagan vs. non-pagan distinction with the christian portraits line
  • Allow the religious distinction to be pointed at specific religions or religion groups (To specify, for instance, between "christian portraits" and something more focused like "catholic" or "myaphisite" portraits)
  • Allow the scripting to be dynamic with something like "religion_group_portraits = yes" which would let the user script the "religion" and point the graphicalculturetypes file to the appropriate religion file and line.
  • Add a set_dna command
  • Fix the christian_portraits = yes to actually be for Christians, or make it moddable for other sets.
  • Create a "mix_clothes = no" (or its equivalent) in the cultures file to prevent certain cultures from using other clothing sets, or preventing certain ethnicities from wearing certain cultures clothing (the more moddable, the better).
  • Remove the "headgear_that_hides_hair" restriction from applying at the ethnic level and port over to the cultural level.
  • Add a "Headgear_that_hides_beard" option to the .gfx files.
  • Unlock hardcoded merchant portraits and allow it to be tied to religion, culture, or both.
  • Introduce targeted date switches into the cultures file for portraits, along with _early or _late tags. (To allow things like Seljuk clothing turning to Ottoman/beylik clothing at a certain date. This must not be global in defines since it would break portrait switching for custom timelines and misrepresent cultures that switch aesthetically at different times).
  • Allow the barber to also change clothing
  • Allow portraits to use elements (such as clothes, headgear, hair and beards) from different files to make modding portrait DLC easier.

Bugfixes[edit | edit source]

  • Since patch 2.8, baronies under auto-generated counts (i.e. with no holder in history) are independent at game start.[4]
  • Since patch 2.7, in character history, dynasty=0 is ignored for lowborns, and they get assigned a random dynasty.[5]
  • Both the is_looting and is_looting_in conditions don't work properly. Most of the time both versions fail to reflect the looting state, except during certain types of wars. But even then they're still broken. For example: If a character loots during a pagan conquest war then is_looting = yes and is_looting = no will both evaluate as true, while NOT = { is_looting = yes } and NOT = { is_looting = no } will both evaluate as false, and if looting is stopped the first pair will be false, while the second pair will be true.
  • Fix the lack of savegame serialization of the title effect de_jure_liege = 0
    • E.g., set a kingdom title to have no de jure empire. This worked for years but regressed around patch 2.1.5. It works in-game, but the game doesn't save the new state to savegames (previous de jure empire reverts upon reload).
  • Fix the broken scripting interface fundamentals associated with tribal vassals that have been called to war so that basic vassal-liege, title, and war scripting assumptions will work properly with them
    • Though they appear like a normal vassal, is_liege_or_above and related are broken in a fully ambiguous way for scripting
      • Their liege scope resolves to themselves, and so does their liege_before_war scope (!).
      • If it is a defensive war (or at least for certain types of them), they also do not show up within the war scope any_defender as war participants (their liege being the primary defender). They are not even hostile toward, i.e., war_with the attacker.
      • There is effectively no way at all to deal with the hard-coded magic from patch 2.2 that still binds them to their real liege / discern tribal realm structure from script.

Implemented[edit | edit source]

In upcoming patch[edit | edit source]

The following suggestions have been implemented by Paradox in an upcoming patch, and should thus eventually be in the game. Do note that this doesn't necessarily mean the next patch, just a future one, and that delays sometimes happen. Refer to Captain's Log thread for more details.

  • Add a parameter allowing for either a religion in a different religious group or a non-vanilla religious group to use the GUI for a specified religious group. (E.G., Have the Yazidi religion use the Zoroastrian UI instead of the Muslim one)
  • More moddable UI, E.G., being able to make specific UIs for specific groups
    • Added interface_skins = { } list in religion and religion groups. Determines the order a religion will use interface elements, taking them from the first listed to the last. The default interface is an implicit backup for all elements of all religions. If a republic then they will only use the republic interface if they have no interface_skin defined in their religion of religion group or have been set to merge the republic interface. Can be defined in both a religion and a religion group. The definition in the religion overrides that of the religion group
    • Added merge_republic_interface = yes/no to religion and religion groups. Determines if a religion will try to merge their interface with the republic interface. If yes then when a republic and searching for a texture for their religion's interface they will look for <texture_name>_republic and use that version of the texture instead of the religion's normal one. The bool defaults to no and as with interface_skins can be defined in both a religion and a religion group with the definition in a religion overriding that of the religion group

In patch 2.8.2[edit | edit source]

Main article: Patch 2.8.2
  • on_betrothal on_action similar to on_marriage. Sent to liege of both spouses, with ROOT being the liege, FROM being the spouse under the liege, and new_character being the other spouse.
  • In trigger_switch allow an else = { effect } option which fires if one does not meet any of the other conditions of the on_trigger.
  • Allow banning specific religions from converting via the 'Demand Religious Conversion' diplomacy interaction.
    • Without pagan_group you can't forbid an unreformed religion to demand conversion as it is hardcoded to the Pagan group. -> untied from pagan group, will use can_demand_religious_conversion = yes/no toggle
  • Make the male_opinion and female_opinion modifiers usable in traits.
  • A way to remove the unborn_child modifier from pregnant women. It would allow the creation of a decision for seduced characters to have a way to hide or prevent the result of their infidelity, the GoT mod to have moon tea and Roman era mods to have silphium, among other uses.
  • Make the "immortal_age" parameter usable in character history.
  • Make "Bride Price Requirement" moddable to any government type, or even to culture or religion. -> for government type, not culture/religion
  • The ability to export_to_variable health
  • true_father and true_father_even_if_dead scopes, allowing to scope real_father for bastards and father for legitimate children without needing to check is_father_real_father.
  • Folder-based loading for interface/coats_of_arms.txt

In patch 2.8[edit | edit source]

  • Increase the maximum size of mods that may be uploaded to Steam Workshop substantially (an increase to 100MB fully compressed would make a huge difference—current limit appears to be 50MB)[6]
  • Third-party title/character support for targetted_decisions (to allow diplo-actions in the form of Arrange Marriage or Grant Landed Title)
  • Allow effects/conditions to use variables instead of only pure numbers (E.G:, wealth = var)
  • A number of complex functions that return numerical values say get_prestige which returns your current prestige as an integer. Would allow us to save numerical values in variables and thus need to have fewer premade conditions.
  • Else to if, where if the conditions of the if does not return true then the condition of the else will always do so.
  • Province trigger climate = severe_winter/normal_winter/mild_winter/temperate that checks what type of winter a province usually experiences, because currently is_winter only checks if there is currently any winter ongoing. Very useful, because there is currently no way to determine if a province could be struck by a winter in the future.
  • Ability to change the requirements for constructing new holdings

In patch 2.7[edit | edit source]

  • A trait flag to hide a trait so the player can't see it.
  • Add an ability to hide a trait so that it's only visible to the player if the defined conditions are met
  • Allow <religion>_opinion to be dynamic and not just work for vanilla religions like christian_opinion or muslim_opinion
  • Ability to make a culture feminist = yes to negate negative opinion from female rulers or heirs in the same way it is possible in religions.

In patch 2.6[edit | edit source]

Modding changes of patch 2.6 are detailed in CK2 Dev Diary #18: Optimization and modding.

  • Removed excessive error logging for dynamic flags causing flooding issues of the error log.
  • Fixed an issue for mods trying to remove localisation from the base game's localisation.
  • Added supported_checksum = yes/no trigger. Added supported_checksums = { ABCD EFGH } field in .mod files. When supported_checksum trigger is used in game it tries to match the current checksum of the game with the entries in all active mods mod-files. The trigger returns true if it finds at least one match.
  • Fixed an issue in num_title_realm_provs trigger when you had a title as the current scope and a character in the "who" scope
  • random_list effects should now have a better estimation for a uniform random when picking effects of the random_list entries.
  • targeted_decisions, is_targeted_decision_allowed and is_targeted_decision_potential are now considered aliases for targetted_decisions, is_targetted_decision_allowed and is_targetted_decision_potential respectively and are evaluated in the same way.
  • scaled_wealth and transfer_scaled_wealth now supports an additional max field to cap the maximum amount of wealth gained/lost.(min was added as an effect as of 2.4.1)
  • Added enatic trait attribute equivalent of the agnatic attribute (which allowed certain traits, eg Sayyid, to always be inherited from the father), but for inheritance from the mother.
  • Added triggers monthly_prestige and monthly_piety.
    • Would be useful for triggering effects for characters that are gaining more than a certain amount per month, or are continuously loosing these currencies.
  • Added effects scaled_prestige and scaled_piety.[7]
  • It is now possible to script council voting for targeted_decisions.
  • The council interface should now support voter minor titles with a grant limit higher than one (1).
  • Added define MERCHANT_REPUBLIC_MAX_PATRICIANS which determines the amount of merchant republic families the game will allow to exist in a merchant republic.
  • Added set_pentarch_title = <title> effect
  • The pentarchy entry in landed titles can now be assigned to a specific religion rather than all religions with autocephaly.[8]
  • Support stacking = yes functionality for all modifiers and not just province modifiers.
  • Ability to specify a region limitation in diseases, allowing for regional diseases and outbreaks within specific geographical areas.
  • Allow the new council added with the 'Conclave' DLC to vote on targeted decisions. The current command 'enable_council_voting_on_issue =' currently only works on the existing decisions intended for use in vanilla.
  • Add player scopes any_player, random_player), much faster and more convenient way for common multiplayer-friendly scripting issues/patterns
  • Effects leave_faction, join_faction and start_faction. These are not only necessary to force players in and out of factions by event but also for instantly adding/removing AI to/from factions for scripted faction wars, which are both otherwise impossible to script.
  • Title scope triggers monthly_income and yearly_income, for testing effective income generated by a holding, as shown in-game.
  • Added a has_inheritance_blocker trigger, which checks if the character in the current scope has a trait that blocks inheritance (cannot_inherit = yes)
  • Added a dynastic_prestige trigger, which checks if the dynasty of the character in the current scope has a prestige of at least the given value. Example: "dynastic_prestige = 100"
  • Added a war_participation trigger. Example: any_war = { war_participation = { who = ROOT score = 0.5 } }
  • A means to hide Event Modifiers from the player or character screen. -> possible to control using the "is_visible" trigger, just like with traits.
  • Unlock hardcoded "layers" for portraits to allow custom layers to be added by modders. See custom properties in Portrait modding
  • Allow tying specific static portraits to spec (cf using custom properties)
  • Allow localising building names and descriptions based on culture/religion (see Localisation#Custom_commands)
  • A way to add new death reasons without having to use dummy health traits
  • Support for holding-level modifiers (they exist and [some] can be removed via remove_holding_modifier, but no effects exist to add modifiers or triggers to test for their presence)
  • A way to start a disease outbreak in a province by event/command.

In patch 2.5.2[edit | edit source]

  • Added a define if faction membership is blocked by having a non-aggression pact with your liege: NON_AGGRESSION_PACT_BLOCKS_FACTIONS.
  • Fixed an issue where the any_army and random_army scopes in effects ignored the limit trigger assigned to them.
  • Added trigger: is_multiplayer_host_character = yes/no (in singleplayer, equivalent to ai = no but, in multiplayer, only true for the game's host)
    • Critical for running robust scenario startup and game customization decisions in multiplayer (rather than bundle 1000+ static versions of a major mod, it is oft much better to allow behavior/rules/scenario to be customized in-game, and it is chaotic, unnecessarily confusing, and very error-prone to allow all multi-players full access to these options when this is the host's responsibility)
  • The text command "GetID" now also work on titles and provinces which will return the title tag (eg "k_france") and the province ID respectively.
    • This is critically helpful when trying to analyze logs (supplemented with the log effect) for title/province information (especially when the titles have dynamic naming rules).
  • Added a define for the fort discount on new holding construction: FORT_CONSUMED_IN_SETTLEMENT_CONTRUCTION.
    • Allows destruction of forts on building a new holding to be disabled.
  • Added a define if titular duchy titles should count towards duchy limit for vassal opinion: TITULAR_TITLES_COUNT_TOWARDS_DUCHY_LIMIT.
    • Make whether titular duchies count towards the "too many held duchies" limit toggleable
  • Added Scope: real_father_even_if_dead.
  • Added effects: any_child_even_if_dead, random_child_even_if_dead, any_dynasty_member_even_if_dead, random_dynasty_member_even_if_dead, any_sibling_even_if_dead, random_sibling_even_if_dead, any_spouse_even_if_dead, random_spouse_even_if_dead.
  • Added triggers: any_child_even_if_dead, any_dynasty_member_even_if_dead, any_sibling_even_if_dead.
    • CAUTION ADVISED: While it should be harmless to use scope changes from _even_if_dead scopes or effects, executing effects inside _even_if_dead scopes or effects might have adverse effects.
  • "disallow_random_traits = yes" should now blocks more trait correction and generation so that scripted characters with this entry should get their explicit trait setup. The only exception is that children still should get education trait(s) removed.

In patch 2.5[edit | edit source]

Main article: Patch 2.5
  • Bookmarks are now sorted in chronological order
  • Possible to construct buildings in forts
  • opinion_mother_child has been split into opinion_mother_child and opinion_mother_of_child
  • opinion_father_of_child has been split into opinion_father_child and opinion_father_of_child
  • opinion_uncle now works correctly
  • any_playable_ruler now includes major revolters
  • Added support for dynamic script flags (ex: some_flag_@ROOT)[9]
  • Added remove_guardian effect
  • Added friend filter to targeted decisions
  • Added ai_will_do to minor titles
  • Added ai_will_do to religious titles
  • Add scopes any_province and random_province. These scoping to every province in the game and a random province in the game respectivly.
  • Added any_character trigger scope
  • Added any_landed_title trigger scope
  • Added any_character effect scope
  • Added any_province effect scope
  • Added any_landed_title effect scope
  • Added random_character effect scope
  • Added random_landed_title effect scope
  • Add "ai_will_do" type weighting for minor titles and religious titles determining the chance of the ai granting a title to a specific candidate.
  • Possible to append or overwrite info in bookmarks from several files
  • Now possible to mod the pick era interface

In patch 2.4[edit | edit source]

Main article: Patch 2.4
  • Folder-based loading for defines.lua
  • Folder-based loading for triggered modifers
  • Folder-based loading for combat tactics
  • Folder-based loading for disease
  • Folder-based loading for job actions
  • Folder-based loading for job titles
  • Folder-based loading for bookmarks
  • Folder-based loading for modifier_definitions
  • Merge of folderized on_action files (new events being added to the previous list for a particular on_action, instead of replacing the list)[10]
  • Merge of common/cultures/ files when redefining the same culture_group or culture in multiple files (using same behavior as common/religions/ !). Currently culture groups don't merge (appear multiple time in ruler designer, and culture_group condition evaluates to false between culture of these groups).[11]
  • Fixed initializing errors in scripted triggers/effects
  • Fixed missing space in localization of special titles
  • Morale effect now works in unit & character scope
  • Troops effect now works in unit & character scope
  • Now possible to switch to owner scope from unit scope
  • Now possible to switch to leader scope from unit scope
  • Now possible to switch to location scope from unit scope
  • Added missing localization for leader event target
  • Max number of wards per guardian defines (MAX_WARDS_PER_GUARDIAN)
  • destroy_settlement = <title> where <title> is a landed baron-tier title scope (remove the minor holding from its province)
  • A more useful region system, allowing scripting based on region - see map/geographical_regions.txt
    • Overlapping regions
    • Optimized province ID set check
    • Character trigger for % of provinces in a region under character's control (sort of like completely_controls but not evil and fixed at 100% of a title) [{{{1}}}]
  • Export can_hold_settlement trigger in [barony] title scope (somewhat in the fashion of a job/minor title allow), allowing the definition of 'Wrong Government Type' for any given settlement and holder to be scripted (e.g., allow all Muslims except for those of a particular culture to legally hold temples, or allow temples to be held by feudal rulers if their crownlaw_title has a certain law passed) (Can now be done using government types) - See government modding
  • Allow counties' de jure duchies to be reassigned by event with the existing title effect de_jure_liege and fix the persisting across save/restore.
  • An option for minor titles to not be visible in the council screen granting interface but instead only to be given by event. (Put "always = no" in the "allowed_to_grant" section of the minor title)
  • Ability to decide whether someone can lead an army or not separately from the marshal position

In patch 2.3[edit | edit source]

Main article: Patch 2.3
  • Add an on_startup on_action
  • Add a way to check that a certain number of conditions within an OR are true, rather than just one. E.G., requiring that at least two of the conditions be true in order for an event to trigger (calc_true_if)
  • Make it possible to weight the options in a random_list using modifiers. E.G., one of the random outcomes being 5 times as likely if the character is brave. See Commands#Random list.
  • Make it possible to check the culture/religion of a title as defined in landed_titles (titles can currently have culture and religion fields that determine the culture/religion of generated rulers). E.G., kingdom = { culture = ROOT } [Works for title, but not for religion ?]
  • Export the 1 crown law change per life limit to defines (MAX_CROWN_LAW_CHANGES)
  • Allow using localisation commands (E.G., [Root.Religion.GetName]) in nicknames
  • Allow overriding event localisation dynamically (E.G., "if = { limit = { culture = norwegian } text = EVT1000.norwegian }). See Event modding#Option Name
  • Allow inserting arbitrary numbers into custom tooltips (E.G., having [GetCustomTooltipValue] be replaced by a value parameter (value = 100, or value = variable)) - See variables and localization command [<variable_name>.GetValue]
  • Allow localising nicknames based on culture/religion/gender [{{{1}}}]
  • Ability to change the relative frequency of names. (E.G., William might be set to three times as common as Godfrey) - see Culture modding#Names
  • Create set_flag = my_global_flag console command

In older patches[edit | edit source]

Past suggestions that already have been implemented inside a patch:

  • Add a create_tradepost command
  • Export landed_titles to a folder, like has been done with characters and traits. Suggested grouping: by top-level title (E.G., e_byzantium, k_sweden)
  • Export dynasties to a folder, like has has been done with characters and traits
  • Export cultures to a folder, like has been done with characters and traits
  • Export objectives to a folder, like has been done with landed_titles and other files
  • Export cb_types to a folder, like has been done with landed_titles and other files
  • Ability to disable death, see immortality
  • num_of_realm_counties trigger
  • Ability to prevent specific characters from inheriting titles via cannot_inherit = yes in traits
  • Export the onset of old age into defines (PORTRAIT_OLD_AGE_THRESHOLD)
  • Export the minimum age of pregnancy [{{{1}}}]
  • Ability to add modifiers (province, character, etc.) via the history files [{{{1}}}]
  • Ability to set betrothals in history [{{{1}}}]
  • add_lover should work in history files. Note: needs to be inside an effect = {} block.
  • A condition to check if one title is the dejure title of another: de_jure_liege
  • Ability to define who can leads armies: see title_commander special minor title.
  • A way to set specific traits as invalid for randomized traits (random = no)
  • Ability to rename titles by event (set_name)
  • An is_at_sea event trigger
  • Ultimogeniture succession law (youngest child inherits). Was historically used by the Mongols
  • Allow naming titles by the culture of the holder (E.G., "the English Empire") [{{{1}}}]
  • An on_birth on-action trigger
  • Export the chance of death from old age into defines (NATURAL_DEATH_CHANCE_AGE_XX)
  • Export the hardcoded chances of death into defines
  • Export the multipliers and maxes for opinion from prestige and piety to defines (PRESTIGE_OPINION_DIV and PRESTIGE_OPINION_MAX)
  • Export the % of counties needed to form duchies/kingdoms/empires to defines (REQ_DUCHIES_FOR_KINGDOM_CREATION and REQ_KINGDOMS_FOR_EMPIRE_CREATION)
  • Dynasty condition works with specific IDs, not just ROOT/PREV/etc (dynasty = 848 # d'Arc)
  • Add condition matrilineal_marriages = no in religions
  • A religion flag allowing women to hold temples (female_temple_holders = yes)
  • Retinue triggers are now fully scriptable
  • Allow marrying members of other religious groups (intermarry = <religion>)
  • Allow splitting culture/religion group across multiple files so that so that keeping small mods compatible with other projects becomes simpler. E.G., allow assigning parent group in the culture/religion itself, so it can exist in an independent file
  • Ability to add ports to inland seas
  • Improved variable support, most importantly the ability to compare two variables to see if they're greater, lesser, or equal. See variables.
  • Allow multiplication and division of variables (like in EU4). multiply_variable and divide_variable
  • Allow comparing two variables check_variable = { which = var1 which = var2 }
  • Allow mathematical operations involving multiple variables (E.G., var1 = var2 * var3). multiply_variable = { which = var1 which = var2 }.
  • Add a dynasty_head scope
  • A condition to check the number of holding slots in a province (num_of_max_settlements, and a condition to check the number of free holding slots in a province (num_of_empty_holdings)
  • Add condition borders_major_river = yes/no, making it possible to check if a province borders a major river
  • Ability to set graphical culture for characters (set_graphical_culture), both in history and through commands
  • More raid related conditions/scopes (E.G: is_looting = yes, is_looting_in, on_action for when loot is returned on_navy_returns_with_loot)
  • More specific familial relationship opinion modifiers (E.G., brothers, uncles, grandparents): opinion_brother, opinion_uncle, opinion_grandfather, etc.
  • Add an on_create_title on_action with the title as the FROM scope
  • A way to disable random traits on a per-character level (disallow_random_traits = yes)
  • A modifier changing how long it takes troops to move through a province (local_movement_speed)
  • Ability to specifically modify sea to land movement times and vice versa [{{{1}}}]
  • A new on_action on_new_holder. Would give the title as FROMFROM, the new ruler as ROOT, and the previous ruler as FROM (ROOT = FROM if the title is created rather than inherited/usurped)
  • More modifiable demesne limit (demesne_size modifier)
  • An is_allied_with = <character> condition
  • A remove_nickname = <character> command
  • Allow comparing a variable with the same name from two different scopes (E.G., var1 in ROOT, and var1 in FROM) (check_variable = { which = <variable_name> which = <scope> }
  • Title-level flags (code, not gfx): set_title_flag
  • The ability to modify succession crises by the new ruler's age, traits or stats [{{{1}}}]
  • Ability to change portrait sets by event set_graphical_culture
  • Ability to add new diplomatic interactions. See Targeted_decisions.

In an unknown patch[edit | edit source]

  • Add "friends" filter to targeted decisions.
  • A way to flag a character as important so that the game won't kill it off for optimization reasons (i.e., unlanded special courtiers need a way to avoid being culled) - see Optimization#Pruning
  • Add scopes any_tributary and random_tributary. Thus allowing one to scope from a suzerain to one of their tributary characters. Currently it appears that it is only possible to scope from tributaries to their suzerain.
  • An add_friend/add_rival console command

Rejected[edit | edit source]

This sections is for suggestions that have been confirmed will definitely not be implemented in the foreseeable future.

  • Ability to create new types of holdings
  • Multiple levels of religion, not just religion group and specific religion
  • Ability to add more title tiers
  • Implement species directly, so modders do not have to emulate fantasy races using traits, scripts, and other kludges.
  • Ability to add hidden traits that have no effect until revealed (useful for example for the homosexual trait)
  • Province decisions
  • The ability to change the name of a culture/religion by event
  • The ability to change the capital of a title by event
  • The ability to change what group a religion or culture belongs to by event
  • The ability to randomize a number within a range, E.G., age = (int, 20-25), or troop_loss = (float, 0.2-0.4)
  • The ability to change a title's color by event
  • Allow defining multiple capitals for titles. If the first capital isn't within the realm, the second will be used and so on
  • Make the calendar scriptable (many fantasy worlds to not use the Gregorian calendar). Custom number of months, and custom number of days for each individual month
  • Allow making arbitrary cultures related. E.G., Frisian being related to both English and Dutch, thus only receiving the penalties associated with being in the same group. Preferably allowing several levels of relation
  • any_religion scope, and being able to scope directly to a religion. Would allow changing religion mechanics and reassign heresies on the fly (E.G., orthodox = { can_call_crusade = yes })
  • Allow any realm to use Papal succession
  • Add a sea province effect that prevents it being entered unless one's tech level is high enough
  • Add modifier to allow certain special units to enter both land and sea provinces
  • Add modifier to allow certain special units to move through any province type
  • Add an effect to resurrect a character
  • Ability to change title/ruler localisation via event / command
  • Ability for barons to join factions, if the coding allows. Currently they are hard-locked from doing so.
  • A command to replace a title with an other for example:
      k_roman_republic = {
           replace_title = k_italy # Italy is destroyed and de-activated, all its vassals, laws and history are copied in k_roman_republic
           grant_title = ROOT
  • A way to order the characters resulting from "any_independent_ruler" / "any_vassal" to have them ordered by tier or prestige, etc...

This could be the possible command:

    any_independent_ruler = {
        order_by = tier # or "order_by = prestige" or "order_by = piety" etc...
        character_event = xxx # First the Emperors will get the event, then the Kings, then the Dukes and so on...
  • A way to "target" fertility between characters, so a character's spouse might be more or less likely to conceive with the character, without changing their odds with other characters. (Also could be useful for fantasy mods, which can have different races that can intermarry, but are not supposed to be interfertile.)
  • The ability to define multiple opinion/relationship blocks in traits, beyond "opposite" traits. This would allow for finer tuning of how opinions from traits interact. Something like:
    some_trait = {
         group_1 = {
         group_2 = {
         group_1 = { 
              opinion = -10 
              opinion_if_same_religion = -15 
              opinion_if_same_culture = 25
         group_2 = {
              opinion = -20 
    • This could be tied to the fertility suggestion above, by allowing fertility to be placed in these blocks as well, so characters with certain traits would be more or less fertile with other characters, depending on trait combination.
  • Make it possible to define grouped traits (e.g. education levels) for easier usage. For example, creating a bad_congenital group (clubfooted, harelip, lisp, etc.) would allow checking if the character has any of those traits with a single command ('trait = group:bad_congenital'?) (Gars note: this can now be done with scripted triggers)
  • Export the diplomacy weights to defines, or even better, make it scriptable
  • Same as above, but for law votes and elective votes
  • Instead of set age, allow defining a random age range for characters created through the create_character command.

External links[edit | edit source]

References[edit | edit source]