• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
Seems like I also have to edit history titles and provinces, and to start a new game, does not work with a save game. :)
Yeah, for an existing game you could possibly accomplish what you were trying to do through editing the save game's data, but it would be a minefield of orphaned references if you're not careful and I could easily imagine ruining the whole thing in such a way that it'd be almost impossible to backtrack. If you do want to try it, please take a back up copy of your save file and store it somewhere safe or with a dummy extension like .bkup so the game can't see or overwrite it.

More generally, once you've selected a character and launched the game, the runtime environment loads up the history files once to initliase the game and won't refer back to them again. Everything's baked into your save from there on out.

Any fresh tweaks to your history files, be they characters, titles, or provinces, will only apply when initialising your next game.
 
How would you set a character to be the prisoner of another character at game start?

Is it possible to define this in the history files or would you need an event or on_start effect?
 
I would like an effect to fire at the start of a game, targeting any wandering/pool character of a set culture, and making them courtiers of a set title.

Would the syntax look something like this?

Code:
    title:k_thessalonika.holder = {
        every_character = {
            limit = {
                culture = trojan
                is_pool_character = yes
                }
        add_courtier:prev
        }
 
Is there a good way to debug mod loading?
I am trying to make a small mod for my own use, and the game just won't load it. The launcher sees it, it's added to the playset, it's shown in dlc_load.json, I can find its name when looking at launcher-v2.sqlite in plain text. But when launching the game, the checksum stays the same and no changes are seen. I loaded a Steam Workshop mod, that showed up immediately. So I think I'm missing something obvious, but I can't see anything in logs that suggests a mod error.
 
If you're only after editing a specific character, then I would not copy the whole path with all the file contents. It's a waste of disk space, if nothing else, and will almost certainly make sharing or updating the mod problematic.

For a standard Windows install, your folder structure inside your Documents\Paradox Interactive\mod folder should be YourModNameHere\history\characters\.

You've probably already noticed that the game installation folder's equivalent has the characters grouped by culture. One option would be to copy the relevant culture file to your mod directory, and edit it there. I would advise against this, just because you'll need to repeat the process every time Paradox makes an update to the vanilla file; otherwise you won't capture the patch's changes and additions.

These days, I'm in the habit of setting up a new .txt file, giving it whatever name seems appropriate for the purpose, and copying just the character entry or entries that I want my mod to overwrite. So if I want to make Hrolfr de Normandy an albino for the 867 start, I open norse.txt, copy the whole character block for 242 from the "242 = {" line down to the final closing bracket for the character, paste this into my mod's .txt file, and add trait = albino into the list in the mod file.

That way, when Paradox do update the master file, I only need to worry about checking for any changes to the 242 record.

Also, if you want to completely block the game from generating any random traits, try adding this line (don't think order matters too much, but vanilla and easter egg characters use it between the culture line and the specific traits being added): disallow_random_traits = yes

I'm a little rusty with this, but I think if you don't include that and only assign one or two personality traits to an adult character, the initialization will draw random traits to bring an adult character up to three. That might be desirable if you want a character to have some specific traits but also still want a bit of variation / randomisation from one game to the next. I've never thought to check what would happen if you use the 'disallow' script command without specifying an education trait after it, so some experimentation may be required to get exactly the results you want. If in doubt, I like to examine similar characters in the vanilla files to see how they're laid out and what script effects are in play for them.
BUT I now get error logs all the time. It seems to work fine when I play, it does what i want it to do, but once I close the game, I'm greeted by:

File 'history/characters/norse.txt' should be in utf8-bom encoding (will try to use it anyways)
gui/shared/cooltip.gui:7 - Widget (key '135292') has not been destroyed [many times, seemingly dependent on how long I played for].

I don't quite know how to interpret this. I've barely done anything. Just copied the relevant culture files and changed a couple of lines for one, maybe two, characters within it.
 
Hello, I would like to check the aptitude of any court position. I know how to do it for a precise one like this :

Code:
if = {
            limit = {
                court_position:court_physician_court_position ?= { aptitude:court_physician_court_position <= 1 }
            }

But I can't get how to make it to trigger for any court position, i've tried this but doesn't work :

Code:
if = {
            limit = {
                any_court_position_holder = {
                    aptitude = {
                    value <= 1
                    }
                }
            }
 
BUT I now get error logs all the time. It seems to work fine when I play, it does what i want it to do, but once I close the game, I'm greeted by:

File 'history/characters/norse.txt' should be in utf8-bom encoding (will try to use it anyways)
gui/shared/cooltip.gui:7 - Widget (key '135292') has not been destroyed [many times, seemingly dependent on how long I played for].

I don't quite know how to interpret this. I've barely done anything. Just copied the relevant culture files and changed a couple of lines for one, maybe two, characters within it.
The error about utf8-bom encoding can be ignored. There are various data formats valid for a .txt file, and I see this on anything that I create directly within Windows Explorer (right click in the mod folder, create new, text document). If it's bugging you, you could try Notepad++ as a free and robust text editor. It'll let you specify saving the file under this particular format, and you can even run it as a portable app off of a flash drive if that's ever useful. I think some wise souls have even created plugins to help parse Paradox scripting and save game formats, too.

But the game seems robust enough to work with files that aren't in this format, so to the best of my knowledge you can ignore it without consequences.

The GUI error is a new one on me. If it's not breaking anything in the game over time, it might be fine to ignore, as well. It suggests some tool tip is just failing to be cleaned up by the game and if that's right, it should be utterly harmless. Still, I can think of a few experiments to try if this is concerning you.

If you've observed any kind of cause and effect, or correlation between gameplay and the occurrence or frequency of the error, that might offer a better starting point, but a very basic rule of thumb here is to check if this occurs during vanilla game play, too. Fire up the game without your mod, play as normal for a bit (particularly focusing on any activity you've associated with this error), quit and see if the error's occurred.

If not, time to examine your mod. Have you got a GUI folder? If so, what's in it? Are those files forked copies of vanilla ones, or brand new additions? If they're forked copies, did you roll over your file or the edits from a previous code base?

If I'm copying a vanilla file into my mod folders to tweak it, every time there's a patch or update I need to check if the original file's been updated since I made my mod (check the updated dates on the new file versus your modded one). If it's been updated, I'll rename my modded file from .txt to .txt.old. Notepad++ can still read this just fine, but the game won't. Then I copy the vanilla file back over, review its format and syntax, and try to replicate my modded version's changes. This is usually a case of just copying over whatever the edit was, but if Paradox have changed the data structure or file contents significantly then I might need to start over from scratch.

If my modding runs off of new files (which I try to do whenever possible just to avoid the juggling and shuffling around described above), it's still a good idea to check that the data format is the same so that your code will interface with the game correctly.

If you don't have a GUI directory in your mod folder, and none of your modded files place any calls on the interface or tool tips, then you could try to verify the game files from Steam, just in case you accidentally moved something into the wrong folder or recycle bin by mistake?

If that comes back with a clean bill of health, too, then I'm stumped but would default to presuming it's just a quirk of the engine if it's not breaking anything in game.
 
  • 1Like
Reactions:
The error about utf8-bom encoding can be ignored. There are various data formats valid for a .txt file, and I see this on anything that I create directly within Windows Explorer (right click in the mod folder, create new, text document). If it's bugging you, you could try Notepad++ as a free and robust text editor. It'll let you specify saving the file under this particular format, and you can even run it as a portable app off of a flash drive if that's ever useful. I think some wise souls have even created plugins to help parse Paradox scripting and save game formats, too.

But the game seems robust enough to work with files that aren't in this format, so to the best of my knowledge you can ignore it without consequences.

The GUI error is a new one on me. If it's not breaking anything in the game over time, it might be fine to ignore, as well. It suggests some tool tip is just failing to be cleaned up by the game and if that's right, it should be utterly harmless. Still, I can think of a few experiments to try if this is concerning you.

If you've observed any kind of cause and effect, or correlation between gameplay and the occurrence or frequency of the error, that might offer a better starting point, but a very basic rule of thumb here is to check if this occurs during vanilla game play, too. Fire up the game without your mod, play as normal for a bit (particularly focusing on any activity you've associated with this error), quit and see if the error's occurred.

If not, time to examine your mod. Have you got a GUI folder? If so, what's in it? Are those files forked copies of vanilla ones, or brand new additions? If they're forked copies, did you roll over your file or the edits from a previous code base?

If I'm copying a vanilla file into my mod folders to tweak it, every time there's a patch or update I need to check if the original file's been updated since I made my mod (check the updated dates on the new file versus your modded one). If it's been updated, I'll rename my modded file from .txt to .txt.old. Notepad++ can still read this just fine, but the game won't. Then I copy the vanilla file back over, review its format and syntax, and try to replicate my modded version's changes. This is usually a case of just copying over whatever the edit was, but if Paradox have changed the data structure or file contents significantly then I might need to start over from scratch.

If my modding runs off of new files (which I try to do whenever possible just to avoid the juggling and shuffling around described above), it's still a good idea to check that the data format is the same so that your code will interface with the game correctly.

If you don't have a GUI directory in your mod folder, and none of your modded files place any calls on the interface or tool tips, then you could try to verify the game files from Steam, just in case you accidentally moved something into the wrong folder or recycle bin by mistake?

If that comes back with a clean bill of health, too, then I'm stumped but would default to presuming it's just a quirk of the engine if it's not breaking anything in game.
Thank you so much!
Encoding in utf8-bom via Sublime Text (Notepad++ seems Windows/Linux exclusive) seems to have fixed the issues (the GUI one, too, though I don't think I fiddled with any files concerning such things. Only afterwards did I look at geographical regions and such to inform myself about my upcoming campaign, after which a re-install seemed the best option as the error log had only grown).
Now let's hope 1.14.1 is just around the corner, as I keep thinking it is for about two weeks now.
 
Within an event, how can I check if a character is in the same location as root character?

For example to see if two characters are traveling together, or if a traveler is in the same location as a character or vice versa?
 
Why don't the hairstyle, beard, and clothing of a historical character change when their appearance is updated, and why does their appearance remain unchanged when selecting a tab?


Code:
### norse.txt

40605 = {
   name = "Rurik" # Rurik, legendary founder of Rus. Probably known as Hrörekr by his Norse contemporaries.
   dna = 40605_rurik_rurikid
   dynasty = 705
   religion = "norse_pagan"
   culture = norse
   diplomacy = 12
   martial = 8
   stewardship = 8
   intrigue = 6
   learning = 3
   trait = gregarious
   trait = ambitious
   trait = just
   trait = intellect_good_1
   trait = education_martial_4
   trait = brave
   sexuality = heterosexual
   mother = 40697

   830.1.1 = {
       birth = yes
       effect = {
           add_character_flag = has_scripted_appearance
       }  
   }
   866.1.1 = {
       add_spouse = rurik_1

       effect = {
           give_nickname = nick_troublemaker
           set_relation_friend = character:40606 #Oleg
           add_gold = 500
       }

       # Give Viking adventurer some adventuring troops.
       effect = {
           if = {
               limit = { has_fp1_dlc_trigger = yes }
               spawn_army = {
                   name = event_troop_default_name
                   levies = 600
                   men_at_arms = {
                       type = huscarl
                       stacks = 2
                   }
                   men_at_arms = {
                       type = varangian_veterans
                       stacks = 2
                   }
                   location = province:2157
                   origin = province:2157
                   inheritable = no
               }
           }
           else = {
               spawn_army = {
                   name = event_troop_default_name
                   levies = 600
                   men_at_arms = {
                       type = huscarl
                       stacks = 4
                   }
                   location = province:2157
                   origin = province:2157
                   inheritable = no
               }
           }
       }
   }
   879.1.2 = {
       death = yes
   }
}

Code:
### 00_dna.txt

40605_rurik_rurikid = {
    portrait_info = {
        genes={        
            hair_color={ 44 20 233 81 }
            skin_color={ 65 66 65 66 }
            eye_color={ 246 63 221 150 }
            gene_chin_forward={ "chin_forward_neg" 121 "chin_forward_neg" 121 }
            gene_chin_height={ "chin_height_pos" 132 "chin_height_pos" 127 }
            gene_chin_width={ "chin_width_pos" 178 "chin_width_pos" 140 }
            gene_eye_angle={ "eye_angle_neg" 128 "eye_angle_neg" 115 }
            gene_eye_depth={ "eye_depth_neg" 166 "eye_depth_neg" 115 }
            gene_eye_height={ "eye_height_neg" 127 "eye_height_neg" 123 }
            gene_eye_distance={ "eye_distance_neg" 129 "eye_distance_neg" 126 }
            gene_eye_shut={ "eye_shut_neg" 108 "eye_shut_neg" 122 }
            gene_forehead_angle={ "forehead_angle_neg" 127 "forehead_angle_neg" 114 }
            gene_forehead_brow_height={ "forehead_brow_height_pos" 76 "forehead_brow_height_pos" 135 }
            gene_forehead_roundness={ "forehead_roundness_pos" 170 "forehead_roundness_pos" 170 }
            gene_forehead_width={ "forehead_width_pos" 146 "forehead_width_pos" 146 }
            gene_forehead_height={ "forehead_height_pos" 97 "forehead_height_pos" 153 }
            gene_head_height={ "head_height_pos" 112 "head_height_pos" 159 }
            gene_head_width={ "head_width_neg" 50 "head_width_neg" 104 }
            gene_head_profile={ "head_profile_neg" 116 "head_profile_neg" 115 }
            gene_head_top_height={ "head_top_height_neg" 90 "head_top_height_neg" 90 }
            gene_head_top_width={ "head_top_width_pos" 158 "head_top_width_pos" 140 }
            gene_jaw_angle={ "jaw_angle_neg" 129 "jaw_angle_neg" 111 }
            gene_jaw_forward={ "jaw_forward_pos" 128 "jaw_forward_pos" 128 }
            gene_jaw_height={ "jaw_height_neg" 89 "jaw_height_neg" 103 }
            gene_jaw_width={ "jaw_width_pos" 196 "jaw_width_pos" 151 }
            gene_mouth_corner_depth={ "mouth_corner_depth_pos" 132 "mouth_corner_depth_pos" 132 }
            gene_mouth_corner_height={ "mouth_corner_height_neg" 126 "mouth_corner_height_neg" 126 }
            gene_mouth_forward={ "mouth_forward_neg" 145 "mouth_forward_neg" 126 }
            gene_mouth_height={ "mouth_height_pos" 120 "mouth_height_pos" 129 }
            gene_mouth_width={ "mouth_width_pos" 107 "mouth_width_pos" 137 }
            gene_mouth_upper_lip_size={ "mouth_upper_lip_size_neg" 121 "mouth_upper_lip_size_neg" 121 }
            gene_mouth_lower_lip_size={ "mouth_lower_lip_size_neg" 60 "mouth_lower_lip_size_neg" 60 }
            gene_mouth_open={ "mouth_open_pos" 0 "mouth_open_pos" 154 }
            gene_neck_length={ "neck_length_neg" 125 "neck_length_neg" 125 }
            gene_neck_width={ "neck_width_neg" 160 "neck_width_neg" 86 }
            gene_bs_cheek_forward={ "cheek_forward_neg" 16 "cheek_forward_neg" 16 }
            gene_bs_cheek_height={ "cheek_height_pos" 23 "cheek_height_neg" 5 }
            gene_bs_cheek_width={ "cheek_width_pos" 103 "cheek_width_neg" 0 }
            gene_bs_ear_angle={ "ear_angle_pos" 23 "ear_angle_pos" 23 }
            gene_bs_ear_inner_shape={ "ear_inner_shape_pos" 26 "ear_inner_shape_pos" 26 }
            gene_bs_ear_bend={ "ear_upper_bend_pos" 36 "ear_upper_bend_pos" 36 }
            gene_bs_ear_outward={ "ear_outward_pos" 45 "ear_outward_pos" 45 }
            gene_bs_ear_size={ "ear_size_pos" 15 "ear_size_pos" 15 }
            gene_bs_eye_corner_depth={ "eye_corner_depth_pos" 109 "eye_corner_depth_pos" 160 }
            gene_bs_eye_fold_shape={ "eye_fold_shape_pos" 255 "eye_fold_shape_pos" 86 }
            gene_bs_eye_size={ "eye_size_pos" 37 "eye_size_neg" 5 }
            gene_bs_eye_upper_lid_size={ "eye_upper_lid_size_neg" 39 "eye_upper_lid_size_pos" 24 }
            gene_bs_forehead_brow_curve={ "forehead_brow_curve_neg" 77 "forehead_brow_curve_neg" 152 }
            gene_bs_forehead_brow_forward={ "forehead_brow_forward_pos" 71 "forehead_brow_forward_pos" 35 }
            gene_bs_forehead_brow_inner_height={ "forehead_brow_inner_height_pos" 51 "forehead_brow_inner_height_pos" 51 }
            gene_bs_forehead_brow_outer_height={ "forehead_brow_outer_height_pos" 30 "forehead_brow_outer_height_pos" 30 }
            gene_bs_forehead_brow_width={ "forehead_brow_width_neg" 1 "forehead_brow_width_neg" 43 }
            gene_bs_jaw_def={ "jaw_def_pos" 3 "jaw_def_pos" 3 }
            gene_bs_mouth_lower_lip_def={ "mouth_lower_lip_def_pos" 101 "mouth_lower_lip_def_pos" 101 }
            gene_bs_mouth_lower_lip_full={ "mouth_lower_lip_full_pos" 42 "mouth_lower_lip_full_pos" 42 }
            gene_bs_mouth_lower_lip_pad={ "mouth_lower_lip_pad_pos" 36 "mouth_lower_lip_pad_pos" 36 }
            gene_bs_mouth_lower_lip_width={ "mouth_lower_lip_width_neg" 42 "mouth_lower_lip_width_neg" 42 }
            gene_bs_mouth_philtrum_def={ "mouth_philtrum_def_pos" 38 "mouth_philtrum_def_pos" 38 }
            gene_bs_mouth_philtrum_shape={ "mouth_philtrum_shape_pos" 30 "mouth_philtrum_shape_pos" 30 }
            gene_bs_mouth_philtrum_width={ "mouth_philtrum_width_neg" 18 "mouth_philtrum_width_neg" 18 }
            gene_bs_mouth_upper_lip_def={ "mouth_upper_lip_def_pos" 0 "mouth_upper_lip_def_pos" 0 }
            gene_bs_mouth_upper_lip_full={ "mouth_upper_lip_full_pos" 35 "mouth_upper_lip_full_pos" 35 }
            gene_bs_mouth_upper_lip_profile={ "mouth_upper_lip_profile_pos" 3 "mouth_upper_lip_profile_pos" 67 }
            gene_bs_mouth_upper_lip_width={ "mouth_upper_lip_width_neg" 104 "mouth_upper_lip_width_neg" 104 }
            gene_bs_nose_forward={ "nose_forward_neg" 5 "nose_forward_pos" 18 }
            gene_bs_nose_height={ "nose_height_pos" 29 "nose_height_pos" 123 }
            gene_bs_nose_length={ "nose_length_pos" 27 "nose_length_pos" 122 }
            gene_bs_nose_nostril_height={ "nose_nostril_height_neg" 5 "nose_nostril_height_pos" 39 }
            gene_bs_nose_nostril_width={ "nose_nostril_width_neg" 155 "nose_nostril_width_neg" 40 }
            gene_bs_nose_profile={ "nose_profile_hawk_pos" 67 "nose_profile_hawk" 1 }
            gene_bs_nose_ridge_angle={ "nose_ridge_angle_neg" 26 "nose_ridge_angle_neg" 26 }
            gene_bs_nose_ridge_width={ "nose_ridge_width_neg" 255 "nose_ridge_width_neg" 92 }
            gene_bs_nose_size={ "nose_size_pos" 50 "nose_size_pos" 50 }
            gene_bs_nose_tip_angle={ "nose_tip_angle_neg" 36 "nose_tip_angle_neg" 36 }
            gene_bs_nose_tip_forward={ "nose_tip_forward_pos" 63 "nose_tip_forward_pos" 30 }
            gene_bs_nose_tip_width={ "nose_tip_width_neg" 127 "nose_tip_width_neg" 19 }
            face_detail_cheek_def={ "cheek_def_01" 1 "cheek_def_01" 1 }
            face_detail_cheek_fat={ "cheek_fat_01_neg" 154 "cheek_fat_01_neg" 242 }
            face_detail_chin_cleft={ "chin_cleft" 0 "chin_cleft" 2 }
            face_detail_chin_def={ "chin_def" 0 "chin_def" 0 }
            face_detail_eye_lower_lid_def={ "eye_lower_lid_def" 168 "eye_lower_lid_def" 242 }
            face_detail_eye_socket={ "eye_socket_color_03" 69 "eye_socket_03" 16 }
            face_detail_nasolabial={ "nasolabial_03" 119 "nasolabial_01" 22 }
            face_detail_nose_ridge_def={ "nose_ridge_def_neg" 255 "nose_ridge_def_pos" 15 }
            face_detail_nose_tip_def={ "nose_tip_def" 8 "nose_tip_def" 8 }
            face_detail_temple_def={ "temple_def" 140 "temple_def" 237 }
            expression_brow_wrinkles={ "brow_wrinkles_01" 159 "brow_wrinkles_01" 159 }
            expression_eye_wrinkles={ "eye_wrinkles_01" 24 "eye_wrinkles_01" 24 }
            expression_forehead_wrinkles={ "forehead_wrinkles_01" 38 "forehead_wrinkles_01" 38 }
            expression_other={ "cheek_wrinkles_both_01" 0 "cheek_wrinkles_both_01" 0 }
            complexion={ "complexion_2" 149 "complexion_2" 173 }
            gene_height={ "normal_height" 116 "normal_height" 116 }
            gene_bs_body_type={ "body_fat_head_fat_full" 107 "body_fat_head_fat_full" 139 }
            gene_bs_body_shape={ "body_shape_apple_half" 161 "body_shape_apple_half" 0 }
            gene_bs_bust={ "bust_clothes" 25 "bust_default" 64 }
            gene_age={ "old_4" 29 "old_4" 29 }
            gene_eyebrows_shape={ "close_spacing_low_thickness" 207 "far_spacing_low_thickness" 99 }
            gene_eyebrows_fullness={ "layer_2_low_thickness" 255 "layer_2_lower_thickness" 135 }
            gene_body_hair={ "body_hair_avg" 134 "body_hair_avg" 134 }
            gene_hair_type={ "hair_straight" 138 "hair_straight" 138 }
            gene_baldness={ "male_pattern_baldness" 247 "male_pattern_baldness" 247 }
            eye_accessory={ "normal_eyes" 222 "normal_eyes" 222 }
            teeth_accessory={ "normal_teeth" 0 "normal_teeth" 0 }
            eyelashes_accessory={ "normal_eyelashes" 251 "normal_eyelashes" 251 }
            hairstyles={ "all_hairstyles" 33 "all_hairstyles" 0 }
            beards={ "all_beards" 244 "no_beard" 0 }
            clothes={ "northern_war_nobility_clothes" 255 "most_clothes" 0 }
            cloak_hoods={ "" 0 "no_cloak_hood" 0 }
            legwear={ "mena_war_legwear" 255 "all_legwear" 0 }
            cloaks={ "all_cloaks" 191 "no_cloak" 0 }
        }
    }
    enabled=yes
}


Code:
### mod_bookmarks.txt


bm_867_adventurers = {
    start_date = 867.1.1
    is_playable = yes
    recommended = yes
    group = bm_group_867

    weight = {
        value = 90
    }

    # Jarl Haesteinn (Nantes/Montaigu, Brittany) ID: 6878
    character = {
        name = "bookmark_adventurers_jarl_haesteinn"
        dynasty = 1059
        dynasty_splendor_level = 1
        type = male
        birth = 815.1.1
        title = c_montaigu
        government = feudal_government
        culture = norse
        religion = norse_pagan
        difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_EASY"
        history_id = 6878
        position = { 320 400 }
       
        animation = personality_rational

        # Ragnarr, son and heir, ID: 6880
        character = {
            name = "bookmark_adventurers_jarl_haesteinn_alt_ragnarr"
            relation = "BOOKMARK_RELATION_SON"
            dynasty = 1059
            type = male
            birth = 860.1.1
            culture = norse
            religion = norse_pagan
            history_id = 6880
        }
    }

    # Rurik Rurikid (Duke of Novgorod, Russia) ID: 40605
    character = {
        name = "bookmark_adventurers_rurik_rurikid"
        dynasty = 705
        dynasty_splendor_level = 1
        type = male
        birth = 830.1.1
        title = d_novgorod
        government = tribal_government
        culture = norse
        religion = norse_pagan
        difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_EASY"
        history_id = 40605
        position = { 970 240 }
        animation = war_over_win

        # Helgi the Seer, "son" and heir ID:40606
        character = {
            name = "bookmark_adventurers_rurik_rurikid_alt_helgi"
            relation = "BOOKMARK_RELATION_BROTHER"
            dynasty = 705
            type = male
            birth = 840.1.1
            culture = norse
            religion = norse_pagan
            history_id = 40606
            animation = personality_zealous
        }
    }
   
    # Magajiva Daura, Countess of Daura, Hausa
    character = {
        name = "bookmark_adventurers_daurama_daura"
        dynasty = 1060028
        dynasty_splendor_level = 1
        type = female
        birth = 842.1.1
        title = c_daura
        government = tribal_government
        culture = hausa
        religion = west_african_bori_pagan
        difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_MEDIUM"
        history_id = 251187
        position = { 400 810 }
           
        animation = personality_forgiving

        # Bawo Durbawa, "son" and heir ID:251181
        character = {
            name = "bookmark_adventurers_daurama_daura_alt_bawo"
            relation = "BOOKMARK_RELATION_SON"
            dynasty = 1060027
            type = male
            birth = 867.1.1
            culture = hausa
            religion = west_african_bori_pagan
            history_id = 251181
        }
    }

    # Eudes Capet (Count of Chartres, France), ID: 6448
    character = {
        name = "bookmark_adventurers_count_eudes"
        dynasty = 743
        dynasty_splendor_level = 2
        type = male
        birth = 857.1.1
        title = c_anjou
        government = feudal_government
        culture = french
        religion = catholic
        difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_HARD"
        history_id = 6448
        position = { 580 520 }

        # Robert, little brother and future king of France, ID: 6442
        character = {
            name = "bookmark_adventurers_count_eudes_alt_robert"
            relation = "BOOKMARK_RELATION_BROTHER"
            dynasty = 743 # house capet
            type = male
            birth = 866.8.1
            culture = french
            religion = catholic
            history_id = 6442
        }

        # Eudes, uncle, ID: 163065
        character = {
            name = "bookmark_adventurers_count_eudes_alt_uncle_eudes"
            relation = "BOOKMARK_RELATION_UNCLE"
            dynasty = 743
            type = male
            birth = 821.1.1
            title = c_blois
            government = feudal_government
            culture = french
            religion = catholic
            history_id = 163065
            animation = disapproval
        }
    }

    # Almos Arpad (Leader of the Magyars, Hungary) ID: 159137
    character = {
        name = "bookmark_adventurers_almos_arpad"
        dynasty = 708
        dynasty_splendor_level = 1
        type = male
        birth = 820.1.1
        title = k_magyar
        government = tribal_government
        culture = mogyer
        religion = magyar_pagan
        difficulty = "BOOKMARK_CHARACTER_DIFFICULTY_MEDIUM"
        history_id = 159137
        position = { 1120 630 }
       
        animation = personality_bold

        # Arpad, son and heir, ID: 159136
        character = {
            name = "bookmark_adventurers_almos_arpad_alt_son_arpad"
            relation = "BOOKMARK_RELATION_SON"
            dynasty = 743
            type = male
            birth = 845.1.1
            culture = mogyer
            religion = magyar_pagan
            history_id = 159136
            animation = personality_honorable
        }

        # Linütika, grandson, ID: 163168
        character = {
            name = "bookmark_adventurers_almos_arpad_alt_linutika"
            relation = "BOOKMARK_RELATION_GRANDSON"
            dynasty = 743
            type = male
            birth = 862.1.1
            culture = mogyer
            religion = magyar_pagan
            history_id = 163168
        }
    }
}
 
Hi everyone. I'm trying to filter a non-city, non-church barony in the game with this code:
Code:
any_held_title = {
    tier = tier_barony
    is_capital_barony = no
    is_leased_out = no
    title_province = {
        NOR = {
            has_holding_type = city_holding
            has_holding_type = church_holding
        }
    }
    NOT = {
        THIS = root.capital_barony
    }
}

However, I get this message:
Code:
[10:17:14][E][jomini_script_system.cpp:284]: Script system error! (while building tooltip/description)
  Error: Event target link 'title_province' returned an unset scope

I have seen the use of title_province for any_held_held_title. If I can't then how can I select any non-church, non-city holdings?
 
Hello, currently having issues with changing forms of address. I have followed what I have seen in the files, and have troubleshooted many times but this is my last resort. I have created a template for myself that I was going to use for future purposes, however whenever I load the game to test, the feudal titles overwrites the republic titles. The prefix does work on both (Kingdom does actually change to Republic Kingdom). The issue is though, their character title just changes to the feudal character title instead of the republican title which is what I'm trying to do. Am I missing a file? am I missing some flavorization rules? Or did I input something wrong?

Code:
.../culture/culture_titles_I_english.yml
Code:
### Dualism ###
#Republic
 count_republic_male_dualism_religion:0 "Placeholder1"
 count_republic_female_dualism_religion:0 "Placeholder1"
 county_republic_dualism_religion:0 "Republic County"
 duke_republic_male_dualism_religion:0 "Placeholder2"
 duke_republic_female_dualism_religion:0 "Placeholder2"
 duchy_republic_dualism_religion:0 "Republic Duchy"
 king_republic_male_dualism_religion:0 "Placeholder3"
 king_republic_female_dualism_religion:0 "Placeholder3"
 kingdom_republic_dualism_religion:0 "Republic Kingdom"
 
 #Feudal
 count_feudal_male_dualism_religion:0 "Placeholder4"
 count_feudal_female_dualism_religion:0 "Placeholder4"
 county_feudal_dualism_religion:0 "Feudal County"
 duke_feudal_male_dualism_religion:0 "Placeholder5"
 duke_feudal_female_dualism_religion:0 "Placeholder5"
 duchy_feudal_dualism_religion:0 "Feudal Duchy"
 king_feudal_male_dualism_religion:0 "Placeholder6"
 king_feudal_female_dualism_religion:0 "Placeholder6"
 kingdom_feudal_dualism_religion:0 "Feudal Kingdom"
 emperor_feudal_male_dualism_religion:0 "Placeholder7"
 emperor_feudal_female_dualism_religion:0 "Placeholder7"
 empire_feudal_dualism_religion:0 "Fedual Empire"

I have tried seeing troubleshooting the above, including rewriting the whole thing and trying different names too see if they were just simply invalid but obviously hasnt worked.

Code:
.../flavorization/00_title_holders.txt
Code:
### Dualism ###
# Feudal
    count_feudal_male_dualism_religion = {
    type = character
    gender = male
    special = holder
    tier = county
    priority = 199
    governments = { feudal_government }
}
    count_feudal_female_dualism_religion = {
    type = character
    gender = female
    special = holder
    tier = county
    priority = 199
    governments = { feudal_government }
}
    duke_feudal_male_dualism_religion = {
    type = character
    gender = male
    special = holder
    tier = duchy
    priority = 499
    governments = { feudal_government }
}
duke_feudal_female_dualism_religion = {
type = character
gender = female
special = holder
tier = duchy
priority = 499
governments = { feudal_government }
}
king_feudal_male_dualism_religion = {
type = character
gender = male
special = holder
tier = kingdom
priority = 4999
governments = { feudal_government }
}
king_feudal_female_dualism_religion = {
type = character
gender = female
special = holder
tier = kingdom
priority = 4999
governments = { feudal_government }
}
emperor_feudal_male_dualism_religion = {
type = character
gender = male
special = holder
tier = empire
priority = 10000
governments = { feudal_government }
}
emperor_feudal_female_dualism_religion = {
type = character
gender = female
special = holder
tier = empire
priority = 10000
governments = { feudal_government }
}
county_feudal_dualism_religion = {
type = title
tier = county
special = holder
priority = 18
top_liege = no
governments = { feudal_government }
}
duchy_feudal_dualism_religion = {
type = title
tier = duchy
special = holder
priority = 27
top_liege = no
governments = { feudal_government }
}
kingdom_feudal_dualism_religion = {
type = title
tier = kingdom
special = holder
priority = 47
top_liege = no
governments = { feudal_government }
}
empire_feudal_dualism_religion = {
type = title
tier = empire
special = holder
priority = 102
top_liege = no
governments = { feudal_government }
}


#Republic
count_republic_male_dualism_religion = {
type = character
gender = male
special = holder
tier = county
priority = 16000
governments = { republic_government }
}
count_republic_female_dualism_religion = {
type = character
gender = female
special = holder
tier = county
priority = 16000
governments = { republic_government }
}
duke_republic_male_dualism_religion = {
type = character
gender = male
special = holder
tier = duchy
priority = 100
governments = { republic_government }
}
duke_republic_female_dualism_religion = {
type = character
gender = female
special = holder
tier = duchy
priority = 100
governments = { republic_government }
}
king_republic_male_dualism_religion = {
 type = character
 gender = male
 special = holder
 tier = kingdom
 priority = 5000
 governments = { republic_government }
}
king_republic_female_dualism_religion = {
type = character
gender = female
special = holder
tier = kingdom
priority = 5000
governments = { republic_government }
}
emperor_republic_male_dualism_religion = {
type = character
gender = male
special = holder
tier = empire
priority = 6000
governments = { republic_government }
}
emperor_republic_female_dualism_religion = {
type = character
gender = female
special = holder
tier = empire
priority = 6000
governments = { republic_government }
}
county_republic_dualism_religion = {
type = title
tier = county
special = holder
priority = 18
top_liege = no
governments = { republic_government }
}
duchy_republic_dualism_religion = {
type = title
tier = duchy
special = holder
priority = 27
top_liege = no
governments = { republic_government }
}
kingdom_republic_dualism_religion = {
type = title
tier = kingdom
special = holder
priority = 47
top_liege = no
governments = { republic_government }
}
empire_republic_dualism_religion = {
type = title
tier = empire
special = holder
priority = 102
top_liege = no
governments = { republic_government }
}

I am however suspecting that it could be an issue with the flavorization? I have tried messing around with some of the priorities but not too much. If anyone has any idea what I have done wrong please help me out and thank you in advance.
 
How would I go about changing decision parameters?
I can't help but think that the fact that a restored Rome loses access to three (not so aptly titled Roman Decisions) decisions (Evangelize the Pagans, Reinstitute the Grain Dole, Ask for Help) is an oversight.

Currently the code reads has_title = title:e_byzantium
Just add ", e_rome"?
 
Hello guys. I have a question: where is the logic for exposing secrets, specifically murder secrets, located? I want to create an effect so that when a ruler murders one of their vassals and that secret is exposed, it triggers an event and a scripted effect.

I found some lines of codes in the files 00_murder_effect about known_murder_effect and a file called 00_scheme_scripted_effect about murder_success_kill_effect but I didn't understand how it works, maybe thats not what I'm looking for.
 
Last edited:
I wanted to change Tribals to use the clan taxation system and house unity, but still be tribal in other regards. But changing the tags in ui and common, the taxation shows up but there are no vassals taking part in it. Where are all the tags required to enable house unity and tax jurisdictions?
 
Is it possible to use a variable in random_list as the pick value?
Code:
random_list = {
      pick = var:lsxp_perk_gives
This gives the following error:
Code:
[01:20:44][E][pdx_persistent_reader.cpp:216]: Error: "Malformed token: var:lsxp_perk_gives, near line: 809" in file: "events/lifestyle_experience.txt" near line: 816

Apparently, it works in while = { count = but not random_list = { pick = , so this works:
Code:
while = {
      count = var:lsxp_perk_gives
      random_list = {
 
Last edited: