特质模组制作

本页面所适用的版本可能已经过时,最后更新于1.0
咯咯炀讨论 | 贡献2020年9月20日 (日) 00:06的版本 (创建页面,内容为“{{Version|1.0}} Traits are possessed by characters in the game and can modify their attributes, opinions, personality and other parameters. == Creating a trait =…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

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"
	}
}