Patch 3.0 mod compatibility guide

本页面讲述的内容长期有效


This guide describes the steps to make a mod compatible with patch 3.0.X from patch 2.8.3.2.

Note that this does not replace the usual step of merging files, in case the mod modifies some vanilla files.

In case of issues, run the latest version of The Validator, and try activating debug launch options, which will now report failed asserts in log files.

Folders

province_setup is no longer used when loading from saves, so no more need to duplicate information with province history files.

There is now more than 1 vanilla trade route: for custom maps, either replace_path = "common/trade_routes" or blank the new file.

When overriding a graphic file by name, the extension now has to be the same (.tga or .dds).

CBs

  • There's a new optional sort_priority in CBs
  • Some CBs now check for on-going crusades via:
can_use_gui = {
	check_if_crusader_trigger = yes
}
  • For compatibility with Haruspicy religion feature, the following needs to be added to all CBs:
on_add = {
	(...)
	hidden_tooltip = { fire_haruspicy_event_effect = yes }
}		

Minor titles

  • A new male_consort entry is expected by the engine inside common/minor_titles (will cause CTD if missing).
  • The feminist religion and status of women checks:
OR = {
	is_female = no
	AND = {
		religion = cathar
		liege = { religion = cathar }
	}
	AND = {
		religion = messalian
		liege = { religion = messalian }
	}
}
liege = {
	OR = {
		primary_title = {
			has_law = status_of_women_4
		}
		has_game_rule = {
			name = gender
			value = all
		}
	}
}

are moved to scripted triggers (and enriched to handle patriarchal/matriarchal religion features:

male_can_hold_minor_title_trigger = yes
female_can_hold_minor_commander_title_trigger = yes
  • The following effects are added to job & minor titles that vote on the council:
retire_effect = {
	(...)
  	if = {
		limit = {
			NOT = { age = 65 }
			health = 3
			NOT = { is_sick_or_injured_trigger = yes }
			can_be_councilmember_king_trigger = yes
		}
		FROM = { 
			opinion = { who = ROOT modifier = opinion_resigned_from_council }
		}
	}
}

Religions

  • Intermarrying AI logic has been changed, so now all religions that should be able to intermarry need to be specified in their entry of common\religions, regardless of their group. Previously, only Pagans could refuse on religious grounds within their group.
  • reformer_head_of_religion must now be set on the reformed version of the religion instead of the original religion.
  • can_hold_temples now causes CTD. It was deprecated since patch 2.4.

Portraits

Note: all previous portrait packs have been impacted by the patch, so you may need to unzip the portrait DLCs again, to use as reference.

  • New properties up to p36 have been added, so any custom properties needs to be moved to p37 or later. For reference, the new layers for PORTRAIT_westerngfx_male are indicated:
   "GFX_character_background:p0"
   "GFX_western_male_clothes_behind:p3:c0"
   "GFX_western_male_headgear_behind:p5:c1"
-> "GFX_frankish_male_overlayer_behind:p31"
-> "GFX_character_special_crowns_behind:p18"
   "GFX_western_male_hair_behind:p1:h:y"
   "GFX_western_male_beard_behind:p4:h:y"
(1)":p5:c6"
   "GFX_western_male_base:p2"
   "GFX_western_male_neck:d0"
   "GFX_western_male_cheeks:d4"
   "GFX_western_male_chin:d1"
-> "GFX_character_western_male_physique:p21"
   "GFX_western_male_mouth:d2:o75x49"
(2)"GFX_western_male_ear:d7:o27x54"	
   "GFX_western_male_nose:d3:o80x65"
   "GFX_western_male_eyes:d6:o47x74"
   "GFX_western_male_eyes2:d6:e:o74x92"
-> "GFX_character_freckles:p20"
-> "GFX_character_western_male_pale:p22"
   "GFX_character_scars:p7:y"
-> "GFX_character_scars_mid:p25"
-> "GFX_character_scars_high:p26"
-> "GFX_character_black_eye:p23"
   "GFX_character_reddots:p8"
   "GFX_character_boils:p9"
-> "GFX_character_tattoos:p28"
-> "GFX_character_warpaint:p29"
-> "GFX_character_harelip_western:p24"
   "GFX_character_blinded_eyes:p10"
-> "GFX_character_possessed:p30"
   "GFX_western_male_clothes:p3:c2"
   "GFX_western_male_headgear_mid:p5:c3"		
   "GFX_western_male_beard:p4:h:y"
-> "GFX_frankish_male_overlayer_mid:p31"
(3)"GFX_character_eyepatch:p13:y:o32x63"
   "GFX_western_male_hair:p1:h:y"
(1)":p5:c7"
   "GFX_character_mask:p12:y:o40x45"
   "GFX_western_male_clothes_infront:p3:c4"
   "GFX_western_male_headgear:p5:c5"
-> "GFX_frankish_male_overlayer:p31"
-> "GFX_character_special_crowns:p19"
-> "GFX_character_special_helmets:p34"
-> "GFX_character_special_masks:p35"
-> "GFX_character_special_scepters:p36"
-> "GFX_character_blood_splatter:p27"
   "GFX_character_imprisoned:p6"
   "GFX_player_overlay:p11"

Notes:

  • (1) Empty layers not used here for headgear (p5) are added for reference: :p5:c6 (headgear behind hairlayer) and :p5:c7 (headgear hairlayer)
  • (2) GFX_western_male_ear:d7 is moved
  • (3) GFX_character_eyepatch:p13 is moved
  • For scars there are 3 variants: GFX_character_scars_light, GFX_character_scars and GFX_character_scars_dark, loosely correlated with the culturegfx skin_tone.
  • Mods can take advantage of new portrait packs (in case players have the DLC active):
    • levantinegfx (typically for cultures already using arabicgfx)
    • englishgfx (typically for cultures already using saxongfx)
    • trueoccitangfx (typically for cultures already using occitangfx)
    • romangfx
    • dalmatiangfx
    • outremergfx
    • italiangfx
    • croatsouthslavicgfx
    • serbsouthslavicgfx
    • magyargfx
    • pagangfx
    • hellenicgfx
    • berbergfx
  • westerngfx is now added explicitly as default in vanilla graphical_cultures when applicable.

Note: it's important to always use a vanilla culturegfx as a backup for players without any portrait packs.

Personal combat rescaling

combat_rating attribute has been scaled up by a factor of 5 to 10.

Custom modifiers, traits, scripting checks, etc. need to be updated to take into account the new balance:

  • Berserker: +25
  • Master duelist: +20
  • Whispering Sword: +15
  • Won duel: +10
  • Giant: +10
  • Sword: +5
  • Dwarf: -15
  • Old: -15
  • Very old: -35
  • Obese: -50
  • Bedridden illness: -100

New game rules

silly_events can be checked for easter egg events, if applicable.

Alternate starts

A new folder common/alternate_start needs to be adapted to the mod settings.

To make a mod fully compatible with alternate start scenario, some tags need to be added:

In cultures nomadic_in_alt_start = yes and alternate_start = { has_alternate_start_parameter = { key = culture value = full_random } } if applicable. In game rules: alt_start_default = off

Misc scripting

  • ai = no and only_playable = yes are now valid pre-trigger for decisions, to optimize them.
  • dynasty = random is sometimes replaced by dynasty = actually_culture in create_character commands.
  • trait = fair is replaced by has_fair_trait_trigger = yes
  • trait = ugly is replaced by has_ugly_trait_trigger = yes
  • NOT = { has_character_flag = is_child_of_destiny } is added to all childhood personality events
if = {
	limit = { religion = jain }
	piety = -20
	custom_tooltip = { text = jain_ahimsa_tooltip }
}

is replaced by pacifists_lose_piety_effect = yes

  • has_job_title = yes can be used a character event pre-trigger (typically for job title events)
  • When using remove_trait = wounded, consider using the new add_scarred_tiered_effect = yes as well to increase the variable scarred_variable
  • Consider using add_blood_splatter_effect = yes (combat, hunting, ...) or apply_random_minor_injury_effect = yes (concussion, ...) in custom events, so that it reflects in portraits
  • Consider using gain_weight_small_effect = yes (feast, wedding, glutton events...) / lose_weight_small_effect = yes (hunting, travelling, ...) / gain_weight_medium_effect = yes / lose_weight_medium_effect = yes (oubliette, torture, ...) for events that switch from temperate to drunkard or gluttonous. In order to reflect in portraits weight_trait_check_effect = yes must be called. Note that a 5 year pulse event will re-calculate the physique_variable based on traits.

See also

References