Traits are possessed by characters in the game and can modify their attributes, opinions, personality and other parameters.
Creating a trait
Traits are defined in .txt files in the directory /Crusader Kings III/common/traits.
Example trait:
my_new_trait = { index = 0 # A unique numerical indentifier for the trait education = yes #yes/no to define whether this is an Education trait # Flags and modifiers ... # Flags and modifiers ... # Flags and modifiers }
Special trait flags
Name | Description | Usage |
---|---|---|
health | Changes actual health value | health = X.X |
fertility | Percentage modifier on fertility | fertility = X.X |
inhert_chance | Chance of passing on the trait to children | inherit_chance = X |
birth | How many characters out of 100 are born with this trait (when not inherited). Can have decimals | birth = X |
random_creation | How many characters out of 100 are created with this trait? (As opposed to actually being born; this is for things like generated characters, script characters, etc.) | random_creation = X |
triggered_opinion | Applied if the associated conditions are fulfilled | triggered_opinion = { opinion_modifier = opinion_modifier_key # Everything below is optional parameter = doctrine_parameter_key check_missing = yes same_faith = yes same_dynasty = yes ignore_opinion_value_if_same_trait = yes male_only = yes female_only = yes } |
compatibility | This is not a opinion modifier, but can be used by 'compatibility_modifier' and 'trait_compatibility' trigger. Compatibility is checked for the trait holder vs the listed traits (of another character.) | compatibility = { gluttonous = 20 drunkard = @pos_compat_low } |
parent_inheritance_sex | specifies whether the trait can be inherited from male/female/all parents (all by default) | parent_inheritance_sex = male/female/all |
child_inheritance_sex | specifies whether the trait can be inherited by male/female/all children (all by default) | child_inheritance_sex = male/female/all |
genetic | If set to yes (no by default), the inheritance will follow the following rules: The trait can be inactive. Children can inherit the trait from both active and inactive parent traits.
An active trait is inherited with 100% chance, an inactive trait with a 50% chance. If the trait is successfully inherited from both parents, it becomes active. If it's inherited only from one parent, it's inactive. |
genetic = yes/no |
inherit_from_real_father | Should the trait be inherited from the real (biological) father? (yes by default) | inherit_from_real_father = yes/no |
enables_inbred | This trait enables the children of the character to be considered for the inbred trait (no by default).
It only enables the inbred chance if there are common ancestors of the parents, so there is no risk of 'inbred' if the parents are not related. If inbred is not enabled by parents' traits, but there are common ancestors, there's a chance (same as for inbred trait when it's enabled) the child will get a random trait with enables_inbred = yes. |
enables_inbred = yes/no |
good | marks this trait as good (default no) | good = yes/no |
genetic_constraint_all | This genetic constraint will be applied when gaining the trait | genetic_constraint_all = beauty |
forced_portrait_age_index | The character will use this portrait age index instead of one of the age sub-genes marked as "generic". You can specify more than one such index if you want to randomize between them. If multiple traits force indexes, it randomizes between all of them | forced_portrait_age_index = 1 |
forced_portrait_age_index | Example showing that you can define more than one index | forced_portrait_age_index = 2 |
portrait_extremity_shift | When gaining this trait, every single morph gene will be shifted by this percentage towards 0 or 1; whichever it is closest to. E.G., 0.4 will shift 25% towards 0, resulting in 0.3 | portrait_extremity_shift = 0.25 |
immortal | Will stop visual aging, and make the character immune to natural death. Can still be killed by script. Fertility will match visual age. You can use set_immortal_age to change the visual age | immortal = yes |
physical | Marks the trait as physical | physical = yes |
health_trait | Marks the trait as health related | health_trait = yes |
fame | Marks the trait as fame related | fame = yes |
trait_exclusive_if_realm_contains | A list of terrain types that are taken into consideration when commander traits are randomly assigned to commanders. These traits are only assigned/considered if the commander's culture contains a province that has one of the terrain types specified in the list | trait_exclusive_if_realm_contains = {} |
Creating immortal traits
As with the previous game, traits that grant immortality are not present in the game at launch but are already programmed and can be easily created. It only requires adding the following parameter to a trait: immortal = yes
For your immortals to look forever young, you can use the effect immortal age. Such as, set_immortal_age = 30
Localization
By default, the name key is trait_<key>, and the desc key is trait_<key>_desc.
Icon
The default icon path is gfx/interface/icons/traits/<trait>.dds.
These can be overridden with dynamic descriptions. E.G., name = some_loc_key Or name = { first_valid = { ... } }
The parameters are: name, desc, icon.
The root scope is the character. Note that in some cases there may be no root, so make sure your first check is a fallback for "NOT = { exists = this }" if you add dynamic names, descs, or icons.
An example:
icon = { first_valid = { triggered_desc = { trigger = { NOT = { exists = this } } desc = "gfx/interface/icons/traits/diligent.dds" } triggered_desc = { trigger = { gold > 1000 } desc = "gfx/interface/icons/traits/diligent.dds" } desc = "gfx/interface/icons/traits/deceitful.dds" } }
文档 | Effects • 触发器 • 修正 • 作用域 • 变量 • 数据类型 • 本地化 • 可定制的本地化 |
脚本 | AI • 剧本 • 角色 • 效果指令 • 内阁 • 文化 • 决议 • 宗族 • 事件 • 政体 • 历史 • 地产 • 生活方式 • 军队 • 宗教 • Story cycles • 头衔 • 特质 |
地图 | 地图 • 地形 |
图形 | 3D模型 • Exporters • 界面 • Coat of arms • Graphical assets • Fonts • Particles • Shaders • Unit models |
音频 | Music • Sound |
其他 | 控制台指令 • 校验码 • 模组结构 • Troubleshooting |