Trait modding - Crusader Kings II Wiki (2024)

Please help with verifying or updating older sections of this article.
At least some were last verified for version 2.8.

Traits are a major part of CKII and thus also for any overhaul mod. This article will explain everything you need to know about trait modding. Notepad++ is strongly recommended for modding traits, but Notepad or other plain text editors can also be used.

Contents

  • 1 Definition
    • 1.1 Type
    • 1.2 Modifiers
    • 1.3 Potential
  • 2 Compliments
  • 3 Icon
  • 4 Localisation
  • 5 See also

Definition[edit | edit source]

Traits must be defined in the folder common/traits/.To make the trait, you will first need to tell the game what effects it has. That will be done here. For this tutorial, a 'selfish' trait will be used as an example. To start off, give the trait a name:

selfish = {}

Type[edit | edit source]

After defining the trait itself, you'll want to define its flags. The flags you can use are listed below.

The trait icons are grouped by type in-game, from left to right: education, caste_tier, undefined, lifestyle, personality, is_health.Inside a group, the order is based on the order the traits have been added to the character.

FlagValueDescriptionVanilla examplesCode
agnaticboolChildren of a father with this trait will always inherit the traitSayyid Trait modding - Crusader Kings II Wiki (1)agnatic = yes
birthintGiven number out of every 10000 characters born will receive this trait, (e.g., 100 = 1%)Quick Trait modding - Crusader Kings II Wiki (2)birth = 100
blindingboolThe trait reflects permanent blinding of the character while imprisoned. In some cultures, this disinherits them.Blinded Trait modding - Crusader Kings II Wiki (3)blinding = yes
cachedboolAll characters that have this trait will be cached for more efficient event trigger evaluation (should be a limited number).

Then the character scope <trait_name> = {} can be use to scope to all characters with that trait.

On hajj Trait modding - Crusader Kings II Wiki (4)cached = yes
can_hold_titlesboolThe trait prevents the character from holding any titlesHorse Trait modding - Crusader Kings II Wiki (5)can_hold_titles = no
cannot_inheritboolThe trait prevents the character from inheriting any titlesMonk Trait modding - Crusader Kings II Wiki (6)cannot_inherit = yes
cannot_marryboolThe trait prevents the character from marrying. See can_marry condition. Does not prevent concubinage.Monk Trait modding - Crusader Kings II Wiki (7)cannot_marry = yes
caste_tierintThe trait is a caste trait, and caste_tier defines the order of the castesBrahmin Trait modding - Crusader Kings II Wiki (8)caste_tier = 3
customizerboolIf no, Blocks the trait from being available for selection in the Ruler DesignerBastard Trait modding - Crusader Kings II Wiki (9)customizer = no
educationboolThe trait is an educational trait.Amateurish plotter Trait modding - Crusader Kings II Wiki (10)education = yes
attributeattributeMain attribute, in case of education traits.Amateurish plotter Trait modding - Crusader Kings II Wiki (11)attribute = intrigue
enaticboolChildren of a mother with this trait will always inherit the traitNot used in vanillaenatic = yes
hiddenboolHidden traits are not shown in character view.Freckles Trait modding - Crusader Kings II Wiki (12)hidden = yes
immortalboolOnce this trait is applied, the character will no longer age nor die naturally (but can die from execution or the effect death). See immortal.Immortal Trait modding - Crusader Kings II Wiki (13)immortal = yes
in_hidingboolThe trait activates in_hiding statusIn hiding Trait modding - Crusader Kings II Wiki (14)in_hiding = yes
inbredboolThe trait indicates that the character is inbred, affecting offspring and fertility and natural death causesInbred Trait modding - Crusader Kings II Wiki (15)inbred = yes
incapacitatingboolThe character is weak and needs a regentIncapable Trait modding - Crusader Kings II Wiki (16)incapacitating = yes
inherit_chanceintA newborn can inherit the trait from a parent (optional); if both parents have the trait, uses two trials of same chanceQuick Trait modding - Crusader Kings II Wiki (17)inherit_chance = 15
both_parent_has_trait_inherit_chanceintDwarf Trait modding - Crusader Kings II Wiki (18)both_parent_has_trait_inherit_chance = 50
is_epidemicboolThe trait is given by an epidemic outbreak. See has_epidemic condition.Tuberculosis Trait modding - Crusader Kings II Wiki (19)is_epidemic = yes
is_healthboolThe trait affects the health of a character, usually restricting certain events that require full health. See health_traits condition.Stressed Trait modding - Crusader Kings II Wiki (20)is_health = yes
is_illnessboolThe trait is a regular disease. See is_ill condition and cure_illness effect.Ill Trait modding - Crusader Kings II Wiki (21)is_illness = yes
leaderboolThe trait is a command/leadership trait. See can_have_more_leadership_traits condition.Light foot leader Trait modding - Crusader Kings II Wiki (22)leader = yes
leadership_traitsintThe character automatically receives X number of leadership traits (army command traits).Brilliant strategist Trait modding - Crusader Kings II Wiki (23)leadership_traits = 1
childhoodboolThe trait is a childhood trait.Willful Trait modding - Crusader Kings II Wiki (24)childhood = yes
lifestyleboolThe trait is a lifestyle choice. See lifestyle_traits condition.Scholar Trait modding - Crusader Kings II Wiki (25)lifestyle = yes
oppositesList<trait>List of traits that cannot be held simultaneously with this traitopposites = { imbecile quick genius }
personalityboolThe trait is a personality trait (see trigger personality_traits = <min. count>)Lustful Trait modding - Crusader Kings II Wiki (26)personality = yes
prevent_decadenceboolThe trait prevents the Muslim character from accumulating decadenceNot used in vanillaprevent_decadence = yes
priestboolThe trait implies a theological education. See is_priest condition)Detached priest Trait modding - Crusader Kings II Wiki (27)priest = yes
pilgrimageboolThe character is temporarily away and will need a regent but does not lose any wardsOn pilgrimage Trait modding - Crusader Kings II Wiki (28)pilgrimage = yes
randomboolWith random = no, the trait will not be given to randomly-generated characters (when the game starts or when characters are spawned other than by being born). random = yes is the default. Specific semantics vary with the general trait type.Kinslayer Trait modding - Crusader Kings II Wiki (29)random = no
rebel_inheritedboolUsed for peasant leader and heresiarch in vanilla. When characters with such traits win the revolt war and die without an heir the successor also gains the peasant leader/heresiarch trait.Peasant Leader Trait modding - Crusader Kings II Wiki (30)rebel_inherited = yes
religiousboolThe trait is religious in nature and should be automatically discarded upon religion change. Note: it will also be discarded upon pagan reformation.Mutazilite Trait modding - Crusader Kings II Wiki (31)religious = yes
religious_branchreligionThe trait identifies a sect of that religion. This will also make the children inherit the trait on birth.Shaivist hindu Trait modding - Crusader Kings II Wiki (32)religious_branch = jain
ruler_designer_costintSets a custom cost (in years of ruler's age, positive or negative) for this trait in the Ruler Designer.ruler_designer_cost = -20
tolerates_<religion_group>boolThe character tolerates characters of that religion group and is tolerated by them. <religion_group> is dynamic and may be a group not present in vanilla.Sympathy Christendom Trait modding - Crusader Kings II Wiki (33)tolerates_christian = yes

tolerates_jewish_group = yes
tolerates_muslim = yes
tolerates_pagan_group = yes
tolerates_zoroastrian_group = yes
tolerates_indian_group = yes

same_trait_visibilityboolThe trait will only be visible on other characters if the player also has it. Handy for things like secret societies, cults, and secret bears.

This is a shortcut for:

is_visible = { OR = {character = FROMhas_trait = <trait>}}
Not used in vanillasame_trait_visibility = yes
hidden_from_othersboolThe trait will only be visible to the player who has the trait, even other players with the same trait won't see it.

This is a shortcut for is_visible = { character = FROM }.

Secretly Cathar Trait modding - Crusader Kings II Wiki (34)hidden_from_others = yes
is_visibleconditionsConditions for the trait to be visible:
  • ROOT the character looking at the trait
  • FROM is the character with the trait

Typically a character should see their own traits, so at least character = FROM is used.

Secretly Catholic Trait modding - Crusader Kings II Wiki (35)
is_visible = { OR = { character = FROM society_member_of = secret_religious_society_catholic AND = { is_close_relative = FROM trait = secretly_catholic } }}
viceboolLustful Trait modding - Crusader Kings II Wiki (36)vice = yes
virtueboolCharitable Trait modding - Crusader Kings II Wiki (37)virtue = yes
succession_gfxboolWounded Trait modding - Crusader Kings II Wiki (38)succession_gfx = yes
is_symptomboolCough Trait modding - Crusader Kings II Wiki (39)is_symptom = yes

In the case of the 'selfish' trait, a personality flag would be used. Do note that it is possible to use multiple flags for a trait.

selfish = { personality = yes}

Modifiers[edit | edit source]

Main article: Modifiers

After setting the trait's flags, you'll likely want to give it some character modifiers and/or a command modifier.


For 'selfish', a stewardship benefit and a diplomacy penalty would be appropriate.

selfish = { personality = yes
stewardship = 2 # The CKII engine doesn't recognize '+', simply write the number when giving positive numbers diplomacy = -1}

Regarding relations, no one likes someone who is selfish, so in our case, we would have to add an opposite for charitable and a general_opinion:

 selfish = { personality = yes
stewardship = 2 # The CKII engine doesn't recognize '+', simply write the number when giving positive numbers diplomacy = -1
opposites = { trait = charitable }
opposite_opinion = -30 general_opinion = -10}

Regarding AI Weights, which affect how non-player characters will act (most of which primarily affect strategic considerations), for the 'selfish' trait, an ai_rationality would be good.

selfish = { personality = yes
stewardship = 2 # The CKII engine doesn't recognize '+', simply write the number when giving positive numbers diplomacy = -1
opposites = { trait = charitable }
opposite_opinion = -30 general_opinion = -10
ai_rationality = -10}

Potential[edit | edit source]

The potential section defines who can randomly start with the trait on campaign start, be randomly generated with the trait (for example via the employment decisions), or gain it randomly when coming of age. It does however not affect the outcomes of events giving the trait; even if the character does not meet the potential conditions he can still get the trait via events.

The potential section is simply one or more conditions. It is put immediately after the opening bracket of the trait. We might for example want to prevent the game from generating selfish children.

selfish = { potential = { age = 16 #This prevents anyone from under 16 being generated with the trait } personality = yes
stewardship = 2 # The CKII engine doesn't recognize '+', simply write the number when giving positive numbers diplomacy = -1
opposites = { trait = charitable } opposite_opinion = -30 general_opinion = -10
ai_rationality = -10}

Compliments[edit | edit source]

Since Way of Life it is possible to define localisation keys for compliments and insults which will appear in letters from other characters, or in any other localised text via the [GetRootFromCompliment] and [GetRootFromInsult] (etc.) localisation commands. These keys will need to be localised.

FlagDescriptionCode
male_compliment

female_compliment

Compliments in a letter to a man/womanmale_compliment = COMPL_SCHOLAR
male_compliment_adj

female_compliment_adj

Positive Adjectives in a letter to a man/womanmale_compliment_adj = COMPL_LEARNED
male_insult

female_insult

Insults in a letter to a man/womanmale_insult = INSULT_TORTURER
male_insult_adj

female_insult_adj

Negative Adjectives in a letter to a man/womanmale_insult_adj = INSULT_EVIL
child_complimentCompliments in a letter written by a child, used instead of the adult oneschild_compliment = COMPL_SMARTY
child_compliment_adjPositive adjectives in a letter written by a child, used instead of the adult oneschild_compliment_adj = COMPL_CLEVER
child_insultInsults in a letter written by a child, used instead of the adult oneschild_insult = INSULT_PEABRAIN
child_insult_adjNegative Adjectives in a letter written by a child, used instead of the adult oneschild_insult_adj = INSULT_STUPID
selfish = { potential = { age = 16 } personality = yes stewardship = 2 diplomacy = -1 opposites = { trait = charitable } opposite_opinion = -30 general_opinion = -10 ai_rationality = -10 male_insult = INSULT_SELFCENTERED female_insult = INSULT_SELFCENTERED male_insult_adj = INSULT_SELFISH female_insult_adj = INSULT_SELFISH}

Icon[edit | edit source]

Icons make traits easily recognizable to the player. An icon can be made in Photoshop or another image editor. It needs to be 24x24 pixels, and saved as a .dds or .tga file.

When you have your icon, save it in <yourmodfolder>\gfx\traits. Now create a file at <yourmodofolder>\interface\<yourmod>.gfx. You will use this file to tell the game where the icon is stored.

Start by adding this to the file:

spriteTypes = {spriteType = {}}

Make sure that you never repeat the spriteTypes block! You should instead be adding spriteType (no "s" on the end) items inside its opening and closing { curly brackets/braces }.

Now, add a line for the name:

spriteType = { name = "GFX_trait_<nameofthetrait>"}

Now you should add a line to tell the game where the icon is stored:

spriteType = { name = "GFX_trait_<nameofthetrait>" texturefile = "gfx/traits/<nameofthetraiticon>.tga"}

Add some standard lines at the end:

spriteType = { name = "GFX_trait_<nameofthetrait>" texturefile = "gfx/traits/<nameofthetrait>.tga" noOfFrames = 1 norefcount = yes effectFile = "gfx/FX/buttonstate.lua"}

For our 'selfish' trait, this would look like this:

spriteType = { name = "GFX_trait_selfish" texturefile = "gfx/traits/selfish.tga" noOfFrames = 1 norefcount = yes effectFile = "gfx/FX/buttonstate.lua"}

Save the file, and your trait should now have an icon.

Localisation[edit | edit source]

Main article: Localisation

Traits require the following localization keys:

  • <trait_name>: name of the trait
  • <trait_name>_desc: description of the trait
  • <trait_name>_death: in case the trait reduces heath (health = -1), used to describe the cause for premature "death by trait" (death_reason = death_trait). For instance:
ill_death;after a period of illness;d'une grave maladie;nach einer Zeit der Krankheit;;después de un período de enfermedad;;;;;;;;;x

If we do this with the selfish trait, we will get this:

selfish;Selfish;Égoïste;Selbstsüchtig;;Egoísta;;;;;;;;;xselfish_desc;This character is Selfish and only thinks about himself;Ce personage est Égoïste et ne pense qu'a lui;German;;Spanish;;;;;;;;;x

Save the localisation as a .csv file. Once you have done that, you are done and you now have yourself a new trait!

See also[edit | edit source]

  • Event modding, as traits are mostly given out by events.

Modding

History

CharactersDynastiesProvincesTitlesBookmarks

Scripting

CommandsConditionsScopesModifiersEventsDecisions

Common

DefinesGame rulesAlternate startsReligionCultureGovernmentsTraitsBloodlinesTechnologyLawsBuildingsCasus BelliTributariesUnitsObjectivesDiseaseDeathMinor titlesSocietiesArtifactsOffmap powerCouncillorsTrade routesSuccessionGreat worksNicknames

Gfx/Sfx/localisation

MapGraphicsCoats of armsPortraitsInterfaceMinimapMusicLocalisation

Other

TroubleshootingThe ValidatorConsole commandsSave-game editingSteam WorkshopEU4 Converter

Trait modding - Crusader Kings II Wiki (2024)
Top Articles
Latest Posts
Article information

Author: Reed Wilderman

Last Updated:

Views: 6140

Rating: 4.1 / 5 (72 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Reed Wilderman

Birthday: 1992-06-14

Address: 998 Estell Village, Lake Oscarberg, SD 48713-6877

Phone: +21813267449721

Job: Technology Engineer

Hobby: Swimming, Do it yourself, Beekeeping, Lapidary, Cosplaying, Hiking, Graffiti

Introduction: My name is Reed Wilderman, I am a faithful, bright, lucky, adventurous, lively, rich, vast person who loves writing and wants to share my knowledge and understanding with you.