角色模组制作

咯咯炀讨论 | 贡献2020年10月18日 (日) 22:08的版本 (同步到官方百科 20:34, 2 October 2020‎ WeirdMatter)

Modding characters involves changing their appearance, data and behaviour. This can vary from small tweaks like adding gold or piety, to complex changes like scripting new visual effects and more.

Changing appearance through scripts

Crusader Kings 3 uses a DNA system to define a character's appearance, which has changed from the one used in Crusader Kings 2. These changes allow for more specific and realistic appearances.

You can change a character's DNA through dna_modifiers. Create a file in gfx/portraits/portrait_modifiers with any filename and add this:

dna_change_example_modifier = {
    usage = game
    dna_change_example_modifier = {
        dna_modifiers = {
            accessory = {
                mode = add
                gene = headgear
                template = western_imperial
                value = 1.0
            }
            color = {
                mode = modify
                gene = hair_color
                x = 0.5
                y = -0.5
            }
        }
        weight = {
            base = 0
            modifier = {
                add = 100
                has_character_flag = dna_change_example_modifier
            }
        }
    }
}

This will add the western_imperial headgear and change the hair color of any character with the "dna_change_example_modifier" flag. You can add a flag to a character with the add_character_flag command, like this:

add_character_flag = {
    flag = dna_change_example_modifier
}

If you encounter any issues, check the error.log of the game for any specific error messages and correct your script accordingly.

Adding new characters or changing existing

For some mods, for example total conversions, new characters are needed. In Crusader Kings 3 this kind of character modding is pretty easy. After creating your mod (which is explained in a corresponding article), you have to edit an existing or create a new txt.-file in the folder example-mod/history/characters. In our example the file will be named example.txt. An example character will look like this:

999001 = {
	name = "Henri"	#Henri de Lyon
	dna = lyon_twin_dna_entry
	dynasty = 2100001 #Lyon
	martial = 14
	diplomacy = 23
	intrigue = 10
	stewardship = 21
	religion = catholic	
	culture = french
	trait = diligent
	trait = education_learning_4
	trait = just
	trait = twin
	trait = physique_good_3
	trait = intellect_good_3
	trait = beauty_good_3
	trait = shrewd
	disallow_random_traits = yes
	father = 999003
	mother = 999004
	846.7.29 = {
		birth = yes
	}
	920.5.25 = {
		death = yes
	}
}
  • First of all, a character ID is assigned. The ID needs to be unique; going for 900000 and further should be safe. This ID is used to refer to the character within the game files.
  • The first name of the character can be set via the use of name = "NAME". Note that in-game names may change based on culture (see culture modding).
  • In the dna-line the path for a specific dna can be inserted. An existing dna from the 00_dna.txt in common/dna_data can be used or an new created by using the portrait editor.
  • To set the character's gender to female, use female = yes.
  • A character can be added to an existing or a new dynasty. Use dynasty = DYNASTY_ID for dynasties without houses, or dynasty_house = HOUSE_ID otherwise. The dynasty ID and house ID can be found in common/dynasties and common\dynasty_houses, respectively. See dynasties modding.
  • Culture and faith must be assigned with culture = CULTURE_ID and religion = FAITH_ID, respectively. The right names can be found by searching in the corresponding folders common/culture and common/religion.
  • Attributes can be set freely. Their value caps at 100. If they are not assigned, the game will generate random values. Note that this only adds to the character's base attribute values, so the final value may be smaller or larger depending on traits and other factors. The attributes are as follows:
  • martial
  • prowess
  • diplomacy
  • intrigue
  • stewardship
  • learning
  • Traits can be added through the use of trait = TRAIT_ID. Replace TRAIT_ID with the appropriate trait ID. An unlimited amount of traits may be added; unless assigned or specified otherwise, the game will generate random traits. To ensure that traits are not changed at the start of the game, use disallow_random_traits = yes.
  • Parents may be optionally assigned by using father = CHARACTER_ID and mother = CHARACTER_ID. Ensure that one uses the target character's ID, as opposed to their name. This can be useful in creating families.
  • Sexuality can be set through sexuality = SEXUALITY_ID. The following can be used:
  • asexual
  • heterosexual
  • homosexual
  • bisexual
  • Set the character's base health through health = HEALTH_VALUE, and fertility with fertility = FERTILITY_VALUE.
  • Finally, birth and death of the character have to be defined. Crusader Kings 3 uses yyyy.mm.dd for date formats. Define a date block using DATE = {...}, replacing ... with birth = yes or death = yes. Alternatively, replace yes with the date surrounded by speech marks ("). See more uses of date blocks.

The same steps work for changing existing characters. Sometimes, like for Charlemagne, there are already most of the possible lines.

Advanced use of date blocks

  • add_spouse = CHARACTER_ID, remove_spouse = CHARACTER_ID to add/remove spouses.
  • give_nickname = NICKNAME_ID to add nicknames. Later uses of give_nickname replace old nicknames. See nickname ID.
  • employer = CHARACTER_ID, similar to set_employer = CHARACTER_ID effect, moves the scoped character to the specified character's court.
  • give_council_position = COUNCILLOR_ID to make the character a councillor. The following are accepted:
  • councillor_marshal
  • councillor_spymaster
  • councillor_chancellor
  • councillor_court_chaplain
  • councillor_steward
  • Assignments defined in the previous section, like trait = TRAIT_ID, may also be used in date blocks.
  • Various other effects can be used that have a character scope, either directly in the date block or in an effect sub-block. See the following example from the game files, used to add a character flag and set character sexuality randomly:[1]
101515 = {
	...
	1019.1.1 = {
		...
		effect = {
			add_character_flag = has_scripted_appearance
			random_list = {
				50 = { set_sexuality = heterosexual }
				50 = { set_sexuality = bisexual }
			}
		}
	}
	...
}

References

  1. game\history\characters\danish.txt, character 101515