• 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.
Showing developer posts only. Show all posts in this thread.
It means that you have a '§' symbol followed by a space; as far as I know this is invalid. If it's not, then I'll fix it.
I'm getting it even when it isn't followed by a space:
skEXf.png

To my knowledge, those are valid.

Another issue is that it apparently uses a static list of laws instead of parsing them from the decisions folder.
 
Hmm so the symbol followed by a space is valid? I ask because the only time I see it is in the translations, while the English ones have the symbol followed by an '!'.
EDIT: Didn't see your picture earlier. For the first one, the symbol at the end of TITLE isn't followed by !. Same forthe end of TARGET for the second, and TITLE for the third.
Not sure, tbh.

Okay, I will fix it and use the dynamic law list.

Great.
Thank you for updating your validator to work with CKII. It's helped me find some issues in my mod.
Will you be updating it to work with events as well?, as that'd be really useful.
 
Did you see my edit about your image?.
Yeah.
Tried removing one exclamation-mark from another string to see if anything would happen. Breaks the coloring, so you're definitely right to include it as an error.
Thank you for clarifying what the error means.
 
Oh, one more thing: piety and prestige in the character files have an in-game effect (tested to make sure), but show up as errors in the validator:
RQCY5.png

Edit: Another few commands that have in-game effects but gives errors in the validator is "raise_levies", dna, properties, and wealth.

On another note, it'd be nice if the validator would check the vanilla character files for IDs, as I'm getting a lot of "not a valid CharacterId" errors due to character-files I don't modify, and thus don't include, in my mod.
 
Last edited:
Okay, I will add piety, prestige, raise_levies, dna, properties, and wealth. Could you describe dna and properties in detail?
They both help determine how characters look. The English and the Normans, and probably a few other cultures, have a few characters using those attributes.
DNA consists of 11 characters of hexadecimal, except using only alphabetic characters. Properties I'm not too sure about, but the highest letter in the game-files is k, and there are no numbers used except 0, and every properties entry except one is 6 characters long. In the saves they're stored as 10 characters, but I haven't seen any with the last 4 being anything other than 0. It seems to be hexadecimal as well, using 0 and a to o.
Here's one example (which also includes raise_levies)
Code:
140 = {
    name="William"
    # AKA: William 'the Conqueror'
    dynasty=752
    [B]dna="epdbiohgmkk"
    properties="ae0000"[/B]
    martial=7
    diplomacy=7
    intrigue=10
    stewardship=6
    religion="catholic"
    culture="norman"
    add_trait="ambitious"
    add_trait="diligent"
    add_trait="just"
    add_trait="proud"
    add_trait="cynical"
    add_trait="brave"
    add_trait="temperate"
    add_trait="patient"
    add_trait="legit_bastard"
    add_trait="brilliant_strategist"
    father=252
    mother=41001
    1027.1.15 = {
        birth="1027.1.15"
    }
    1035.7.3 = {
        give_nickname = nick_the_bastard
    }
    1053.1.1 = {
        add_spouse=367 # Mathilda of Flanders
    }
    1066.1.5 = {
        add_claim = k_england
    }
    1066.9.14 = {
        wealth = 1000
        raise_levies = {
            #location = 25 # Sussex
            location = 97 # Rouen
            force_mult = 6
        }
    }
    1066.10.14 = {
        raise_levies = {
            dismiss = yes
            location = 97 # Rouen
            force_mult = 6
        }
    }
    1066.12.26  = {
        give_nickname = nick_the_conqueror
    }
    1087.9.9 = {
        death="1087.9.9"
    }
}

Hmm, the Validator is supposed to check the vanilla character files if you don't have another file with the same name and don't use replace_path in your .mod file. I will look into it soon.
Thanks.
 
I couldn't quite duplicate the character ID issue. This is what I did:
1. Made a file a.txt in the root history\characters, and added a character in.
2. Made a file b.txt in a mod history\characters, and added a character in, whose mother was the one in a.txt.

I didn't get an invalid character ID error. However, when I changed b.txt's mother to something else (who didn't exist), I did get the ID error.

Maybe the above is not what you mean?
A few of my error messages:
3105 does not, in fact, exist.
509 however, does:
mm44p.png
 
Is this the 509 in bohemian.txt? And you definitely don't have a bohemian.txt in your mod? Also look at the first few errors, and if any of them are parse errors, try fixing them and rerunning. If bohemian.txt has a parse error then the Validator can't read it to determine that there is such a character.
Hmm. It does seem a missing = in another entry was the problem.
However, it does seem a bit strange that that would break the parsing of the entire Bohemian file.
 
1. Pretty sure it isn't hardcoded.
2. True
3. Job titles can definitely have those. I don't think minor titles can, but I'm not absolutely certain
4. Minor titles can have those. I don't think job titles can, but I'm not absolutely certain
5. I'm not quite sure what you mean? As to the general structure, every county (with land) has to be in a duchy, and every duchy (with land) in a kingdom. Kingdoms don't have to be in empires
 
2. I doubt a title can have two capitals, as a single character cannot have more than one. Every level except count and baron can have a capital, but it is not strictly necessary. A capital outside its borders does not seem to cause any problems.
5. Color determines the color of the faction, and one of the two colors of its border. Color2 determines the other color of its border.
It seems most of them (male_names, primary, controls_religion, landless, foa, title, and location_ruler_title) can be applied to any title (I tested male_names, controls_religion, foa, and title on a barony, and all but controls_religion worked.) Do note that you could probably also use female_names.
6. Yup, see above.
7. Yup.
8. You can have months = X. No idea if you can have anything else.
9. They're province modifiers. Much beyond that I cannot tell you, sorry.
 
v0.8.21 b RC2 has been released

Download here

NOTE: Currently, there is _no_ validation of triggers and commands; the Validator just skips those parts of the files that it validates. Such validation will come later.
Great stuff, running through my files now. Already found some issues in my mod.

Some feedback so far:

  • In cb_types.txt, check_dejure_duchies = yes #is a valid CB attribute, but the Validator reports it as an error.
  • The Validator is reporting the colors in culture.txt as errors, probably because they're using a 0 to 1 range rather than a 0 to 255 range.
  • The Validator doesn't recognize this character: " ". It recognizes it as a regular space, while it is instead used for names that have two parts (E.G., "Ramon Borrell")
  • It doesn't recognize "galleys" as a valid modifier in static_modifiers.
  • It doesn't recognize "fort-level" as a valid modifier in static_modifiers.
  • It doesn't recognize "naval_organisation" as a valid modifier in static_modifiers.
  • It doesn't recognize "global_defensive" as a valid modifier in static_modifiers.
  • It doesn't recognize "garrison_growth" as a valid modifier in static_modifiers.
  • It doesn't recognize "land" as a valid modifier in static_modifiers.
  • It doesn't recognize "land_organisation" as a valid modifier in triggered_modifiers (but does in static_modifiers)
  • It doesn't recognize potential in triggered_modifiers.
  • It doesn't recognize "<type>_max_levy" and "<type>_min_levy" in triggered_modifiers.
  • It doesn't recognize "gain_effect" in landed_titles.
I'm not sure what it is complaining about here:
bRBNU.png

The relevant code:
Code:
k_sunni = {
    color={ 40 160 40 }
    color2={ 220 220 0 }
    
    capital = 719 # Mecca
    
    title = "CALIPH"
    foa = "CALIPH_FOA"
    short_name = yes
    
    religion=sunni
    
    # Controls a religion
    controls_religion = sunni
    
    caliphate = yes
}
 
Last edited:
@steveuk666: It would be difficult for the Validator to do so. However, if you use a text editor like Notepad++ and set it to a language that has brackets, you can soon see where the bracket is missing. Also if you double click on the error, the Validator will show what it managed to parse, and you can see if anything got incorrectly shifted over.

@Meneth: I have fixed your reported issues, except for the following:
* Cultures.txt already uses 0-1 colors, so that wouldn't be the issue.
I was getting error messages for every single color entry, using almost entirely the vanilla values.

* Do you know what character that actually is, that the Validator treats as a space?
No, sorry. Search cultures.txt for part of the name I mentioned and you should find it.
* It's complaining that caliphate isn't allowed at the king level. I guess it actually is allowed at that level? (I have it as allowed only at the empire level).
It works fine, yes.
* I added galleys, fort_level, naval_organisation, global_defensive, garrison_growth, land as province modifiers. Is that correct?
Yup.
* "land_organisation" is currently listed as a province modifier, while triggered modifiers operates on character modifiers. I assume either triggered modifiers operates on province modifiers, or land_organisation works as a char modifier or both. Which case would it be?
It seems that land_organisation applies to everything raised by a character if applied on char-level, but only on the units from a specific province if applied on prov-level.
 
Can you copy one color entry's error in, please?

Do you know if caliphate works at every level, or just empire and king?

Hmm, I see, that character is 0xa0=160, a non-breaking space. But there is an entry that uses non-breaking spaces that is "Ramon*Berenguer_Raymond*Berengar", that doesn't seem quite correct. Do you know if it is?
color = { 0.4 0.6 0.1 }

Caliphate as simply a namesake works on any level. Caliphate as the actual head of religion doesn't seem to work on county or barony level, but works both as an empire or a kingdom (both the Pope and the Orthodox Patriarch are kings, and the Sunni Caliphate works as a kingdom in my mod). Haven't tested it on duchy level.

"Ramon*Berenguer_Raymond*Berengar"
That's used to make names equivalent to the names of other cultures. For example "Ælaf_Olaf" is the Saxon equivalent of the Norwegian name "Olaf_Olaf". This means that if a Norwegian named Olaf becomes Saxon, his name will become "Ælaf". They're also equivalent for regnal numbering so you won't end up with both "Ælaf I" and "Olaf I", but instead "Ælaf I" and "Olaf II"
 
Open questions (oldest first)

  1. Could someone point me to well-written and definitely correct examples of missions, besides the one in the vanilla files?
  2. In region_titles.txt, are there reasons to have duplicate colors?
  3. In technology.txt, the modifier clauses are just normal modifiers, and whatever you use here, you can use in any modifier? Also are they province or character modifiers? Or is there no distinction between the two? And why is everything in caps? Just for funsies?
  4. In religion.txt, does "can_grant_invasion_cb" take a casus belli or a boolean?
  5. Events, decisions, triggers, commands - does anyone have a good guide to them?
  6. on_actions.txt - why caps in some of them? Funsies?
  7. Are these valid province modifiers? short_reign_length, religion_flex, culture_flex, add_piety_modifier, add_prestige_modifier, church_opinion, town_opinion, castle_opinion, siege_defence, siege_speed
  8. Is naval_morale a real modifier?
  9. In character events, is it only_capable or capable_only? And is_ruler or only_rulers or only_ruler, which one is it? And prisoner vs is_prisoner? And only_playable vs playable_only vs is_playable?
  10. For triggers/commands, is ROOT basically the same as THIS in other games?
  11. In combat tactics, what are the valid phases? So far I have melee, pursue, and skirmish. I assume they are different from the tactic groups.
  12. In combat_events.txt, there are triggers in battle scope. These battle scope triggers, do days, phase, is_flanking work as expected?
  13. For battle scope, why is there a 'martial' clause without a leader clause sometimes? I would imagine that it would need to be written as 'leader = { martial = X }' but maybe they added this as a shortcut?
  14. For battle scope, is it right that you can change the scope to char trigger with 'leader', and to another battle scope with 'enemy'?
  15. In battle scope, how does heavy_troops/light_troops/light_infantry work? And you can also have a left side of any unit type with a right side of a percent?
  16. Are [city/castle/temple]_[min/max]_levy and [city/castle/temple]_tax_modifier valid character modifiers? What about "*_opinion" found in laws? And if so, is it that laws can have any character modifiers in them?
8. It certainly doesn't do anything, as naval combat doesn't exist (yet) in CKII.
10. Pretty much.
16. Yes, they're valid, I've used them in my mod. The opinion modifiers are valid as well. I'd assume laws can have any character modifier, though I wouldn't say for sure.
 
@steveuk666, Meneth: Thanks again! I wouldn't know what to do without your assistance.

Open questions (oldest first)

  1. Could someone point me to well-written and definitely correct examples of missions, besides the one in the vanilla files?
  2. In region_titles.txt, are there reasons to have duplicate colors?
  3. In technology.txt, the modifier clauses are just normal modifiers, and whatever you use here, you can use in any modifier? Also are they province or character modifiers? Or is there no distinction between the two? And why is everything in caps? Just for funsies?
  4. In religion.txt, does "can_grant_invasion_cb" take a casus belli or a boolean?
  5. Events, decisions, triggers, commands - does anyone have a good guide to them?
  6. on_actions.txt - why caps in some of them? Funsies?
  7. Are these valid province modifiers? short_reign_length, religion_flex, culture_flex, add_piety_modifier, add_prestige_modifier, church_opinion, town_opinion, castle_opinion, siege_defence, siege_speed
  8. In character events, is it only_capable or capable_only? And is_ruler or only_rulers or only_ruler, which one is it? And prisoner vs is_prisoner? And only_playable vs playable_only vs is_playable?
  9. So prev always goes one scope above, ignoring things like hidden_tooltip? While from is the same as other games? Can you have something like fromprevfromprevprevfromrootprevfrom, or are there limitations?
9. Prev goes back a scope. I've successfully used PREVPREVPREVPREV, but haven't tried anything higher than that, but don't see any reason it wouldn't work. I've seen FROMFROM a few times, so I suppose you might be able to mix the two.
 
Some things, mostly from 1.05, the Validator doesn't yet recognize:
From cb_types:

  • any_attacker
  • most_participating_attacker
  • any_defender
  • most_participating_defender
  • plot_target_title
  • grant_title
  • grant_title_no_opinion
  • usurp_title
  • remove_claim
  • participation_scaled_prestige
  • participation_scaled_piety
  • end_war = invalid
  • can_ask_to_join_war
  • holding_type
  • de_facto_liege
  • tier = FROM
  • tier = PREV
  • abdicate
  • abdicate_to_most_liked_by
  • prisoner = FROM
  • has_crown_law_title
  • check_de_jure_tier
  • any_realm_title
  • is_crusade
  • destroy_landed_title
  • occupy_minors_of_occupied_settlements
  • gain_all_occupied_titles
  • succession_w_cooldown
  • any_claim
  • is_claim_all
  • usurp_title_only
  • can_attack_vassals
  • abdicate_to
  • controls_religion
  • de_jure_liege_or_above

From the character files:

  • death_reason
  • killer

From the decision/law files:

  • Laws don't recognize modded-in groups ("empire_centralization" is not a valid <the standard group names>)
  • any_vassal
  • any_de_jure_vassal
  • set_investiture
  • set_allow_free_infidel_revokation
  • set_allow_title_revokation
  • set_protected_inheritance
  • set_the_kings_full_peace
  • set_the_kings_peace
  • set_appoint_generals
  • gender_succ
  • None of the succession laws seem to be recognized as valid
From the event files:

  • death_reason
  • reverse_culture
  • custom character modifiers aren't recognized, it instead seems to use a set list. I'd recommend firing an error if a modifier is never checked instead
  • add_province_modifier
  • remove_province_modifier
  • has_province_modifier
  • plot_target_title
  • grant_title
  • No succession laws are recognized as valid
  • culture = ROOT/PREV, and similar, when it is referring to a province rather than character. Probably applies to religion = ROOT as well.
From static_modifiers:

  • naval_organisation (does nothing, but valid)
  • naval_morale (does nothing, but valid)
From objectives:

  • promised_a_title
  • promised_a_marriage
  • realm_titles
  • a bunch of stuff in the plot_weaken_fellow_vassal plot (can't tell exactly what)
  • a bunch of stuff in the plot_kill_character plot (can't tell exactly what)
  • a bunch of stuff in the plot_gain_vassal_title plot (can't tell exactly what)
  • player_allow
  • realm_characters_plus
  • succession laws once again
  • vassal_titles
Religion and culture colors, probably due to them using 0 to 1 values rather than 0 to 255.

From techology:
  • SHORT_REIGN_LENGTH
  • RELIGION_FLEX
  • CULTURE_FLEX
  • ADD_PIETY_MODIFIER
  • ADD_PRESTIGE_MODIFIER
  • CHURCH_OPINION
  • TOWN_OPINION
  • CASTLE_OPINION
  • LOCAL_BUILD_TIME_MODIFIER
  • TEMPLE_TAX_MODIFIER
  • CITY_TAX_MODIFIER
  • CASTLE_TAX_MODIFIER
  • LAND_MORALE
  • SIEGE_DEFENCE
  • SIEGE_SPEED
  • KNIGHTS_OFFENSIVE
  • LIGHT_CAVALRY_OFFENSIVE
  • HEAVY_INFANTRY_OFFENSIVE
  • PIKEMEN_OFFENSIVE
  • HEAVY_INFANTRY_DEFENSIVE
  • KNIGHTS_DEFENSIVE
  • HORSE_ARCHERS_DEFENSIVE
  • ARCHERS_DEFENSIVE
  • LIGHT_CAVALRY_DEFENSIVE
  • ARCHERS_OFFENSIVE
  • HORSE_ARCHERS_OFFENSIVE
From landed_titles:

  • Crusade weights (E.G., muslim = 200). Not sure if hardcoded to muslim/orthodox/catholic/christian, or if any religion or religious group is allowed.
  • is_heresy_of shouldn't be limited to ROOT/PREV/similar; it should include all religions
  • dignity
  • strength_growth_per_century (mercenary-only attribute)
 
Last edited:
@Meneth: Thanks! I'll look at them later (so you can keep editing the same post if you wish), but a few clarifications.

(FYI, 1.05 moved many modifiers to a folder so the Validator can't find them, but it has been fixed for the next release)

1. The missing things you mention in CB types; are any of them exclusive to CB types i.e. you can't use them anywhere else?
2. Are the gender_succ values (cognatic, etc) hardcoded?
3. I allow add/remove province modifier inside province scopes. I guess if you do add/remove province modifier in a character scope, it will add the modifier to the province that the character is at?
4. The succession laws; are they hardcoded values as well?
5. Can you use commands like "set_the_kings_full_peace" anywhere, e.g. in event files?
Will keep modifying it yeah, think I'm slowly approaching the end now.

1. Most of them are exclusive to wars, which can be checked in events and such. Some are commands that events should be able to call.
2 to 4. Yup
5. Haven't tested it, but almost everything in the decision files can be used elsewhere, so it probably isn't an exception.

Edit: I'm done scanning through my mod now, complete list is in the post above.
 
Last edited:
* It doesn't understand holder_scope within a PREV-scope, it seems. (cb_types.txt)
* "PREV" is not a valid ThisTitle" it should be, however (cb_types.txt)
* Colors in cultures.txt and religion.txt still show up as errors.
* Graphical_unit_culture gives an error (cultures.txt)
* any_vassal in decisions gives an error. Pretty much everything that's valid for events should be valid in the decision files.
* Character and province modifiers (unless specified in the modifier files) show as errors. The event and objective systems lets one create arbitrary modifiers for scripting purposes without defining them outside the event/objective files.
* naval_morale and naval_organisation in static_modifiers.
* held_title_rating in objectives.txt
* mercenary = no isn't recognized as a valid condition (objectives.txt)

Much fewer issues than last time, even though there were a few small patches in-between :)