• 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.
Greetings,

Check if there are any parse errors in the titles files (I believe vanilla may have one).

I think that you are right, as pointed by previous answer below:

That's the result of a missing "=" in the vanilla landed_titles.txt file. The commands will work,but because of the syntax error, the validator won't recognize the vanilla landed titles.

Now, I believe that I understand this issue. Easy to fix, but difficult to discover at the first look (mostly if you don't include the landed titles in the scope of your validation).

Thanks to both.
 
Greetings,



I think that you are right, as pointed by previous answer below:



Now, I believe that I understand this issue. Easy to fix, but difficult to discover at the first look (mostly if you don't include the landed titles in the scope of your validation).

Thanks to both.

I believe parse errors should still show up even if you don't explicitly click that checkmark. Yeah its not exactly perfect :( but generally may be a good idea to search for "Parse error" in the error list and fix those regardless of where they are.

Is it possible to validate a submod of another mod?
Not completely sure what you mean but you can just type the submod's name in the mod bar and that should validate the submod and all of the submod's dependencies. You would also see submod errors when validating the main mod, as long as you don't choose "Show Main Mod Errors" in the dropdown.
 
I believe parse errors should still show up even if you don't explicitly click that checkmark.

No worries, I don't disagree with your point of view and totally respect the way you envisaged the validation behaviour. It's just that I didn't think at first that this kind of issue could come from a file that I hadn't changed or even taken into consideration.
 
I believe parse errors should still show up even if you don't explicitly click that checkmark. Yeah its not exactly perfect :( but generally may be a good idea to search for "Parse error" in the error list and fix those regardless of where they are.


Not completely sure what you mean but you can just type the submod's name in the mod bar and that should validate the submod and all of the submod's dependencies. You would also see submod errors when validating the main mod, as long as you don't choose "Show Main Mod Errors" in the dropdown.
That error does show up if you don't have landed titles checked, but it doesn't show up if you set the Validator to show mod errors only.
 
I've just started modding, and found out about this. Very cool.

However, version 1.25.6 doesn't work on my system, whereas version 1.22.8 does. Have the requirements changed between these versions? I have a new Win 10 machine, with the latest OS patches.
 
It looks like the current version doesn't recognize while/count loops:
--- Error 1 of 1 ---
At <mod>\events\zz_modified_religious_events.txt [character_event\immediate\while] (Line 1549, column 3):
The required "limit" entry was not found.
Code:
while = {
            count = 3

It also seems that it doesn't recognize variables as right-hand-side arguments:
--- Error 1 of 1 ---
At <mod>\events\mythosextras_events.txt [character_event\option\FROM\health] (Line 3095, column 4):
"local_gain_health" is not a valid Double.

There are also a few new features added in 2.8.2.1 that it has not been updated for yet.
 
I've just started modding, and found out about this. Very cool.

However, version 1.25.6 doesn't work on my system, whereas version 1.22.8 does. Have the requirements changed between these versions? I have a new Win 10 machine, with the latest OS patches.
Don't believe any requirement changes. Please post "Data\log.txt" to start and we can see what's going on.

It looks like the current version doesn't recognize while/count loops:
--- Error 1 of 1 ---
At <mod>\events\zz_modified_religious_events.txt [character_event\immediate\while] (Line 1549, column 3):
The required "limit" entry was not found.
Code:
while = {
            count = 3

It also seems that it doesn't recognize variables as right-hand-side arguments:
--- Error 1 of 1 ---
At <mod>\events\mythosextras_events.txt [character_event\option\FROM\health] (Line 3095, column 4):
"local_gain_health" is not a valid Double.

There are also a few new features added in 2.8.2.1 that it has not been updated for yet.

Please list any 2.8.2.1 issues with thwe Validator - AFAIK the changelog only contains two items neither of which is in enough detail to be actionable.
 
Ah, sorry, I put 2.8.2.1 when it should just be 2.8.2, which means I probably got the dates involved wrong too and thought it hadn't updated yet.
There was one new command that the Validator was saying didn't exist, so I thought it hadn't updated for it yet. I'll need to go back and check which specific command it was when I get home - I think it might have been immortal_age history files, but I'm not 100% sure.
 
I can't figure out the Validator. First time I opened the program, I got this error:

ERROR
Audax.Validator.ItemNotFoundInScopeException: Item " %Name" was not found in this scope.
at Audax.Validator.Scope.Resolve[T](String name)
at Audax.Validator.GameValidator..ctor(Context parentContext, CFilePath path, PathResolver resolver)
at Audax.Validator.ValidationManager.ParseGameFiles()
Since there were problems with initial loading, validation cannot continue.

I'm also not able to select any game in the dropdown after typing in the correct filepath (C:\Program Files (x86)\Steam\steamapps\common\Crusader Kings II).

What's broken? How do I fix it?
 
Some minor false positives:

* New targeted_decision filter "society", scopes to society members. Unused in vanilla, but appears to work from my testing.
* Effects "society_rank_up = N" and "society_rank_down = N", to promote/demote by N society ranks.
* New scope any_quester_targeting_this
* Validator complains about variables used with "This" in custom localisation, e.g:
Code:
defined_text = {
    name = GetVariableValue
    text = {
        localisation_key = GetVariableValueString
    }
}
where
Code:
GetVariableValueString;[This.variable.GetValue];;;;;;;;;;;;;x
used like
Code:
[From.GetVariableValue]

* As mentioned before, validator reports "additive_modifier" in random = {} scope as invalid, but works, e.g.:
Code:
random = {
    chance = 0
    additive_modifier = {
        value = 100
    }
    DO_STUFF
}
Fires 100% of the time.
* Validator reports original_owner = {} as a filter inside any_artifact as invalid, but works.
 
Last edited:
I can't figure out the Validator. First time I opened the program, I got this error:



I'm also not able to select any game in the dropdown after typing in the correct filepath (C:\Program Files (x86)\Steam\steamapps\common\Crusader Kings II).

What's broken? How do I fix it?
You have extracted everything to a separate directory before trying to run the Validator, right?

Can you post the contents of Data\log.txt?

Some minor false positives:

* New targeted_decision filter "society", scopes to society members. Unused in vanilla, but appears to work from my testing.
* Effects "society_rank_up = N" and "society_rank_down = N", to promote/demote by N society ranks.
* New scope any_quester_targeting_this
* Validator complains about variables used with "This" in custom localisation, e.g:
Code:
defined_text = {
    name = GetVariableValue
    text = {
        localisation_key = GetVariableValueString
    }
}
where
Code:
GetVariableValueString;[This.variable.GetValue];;;;;;;;;;;;;x
used like
Code:
[From.GetVariableValue]

* As mentioned before, validator reports "additive_modifier" in random = {} scope as invalid, but works, e.g.:
Code:
random = {
    chance = 0
    additive_modifier = {
        value = 100
    }
    DO_STUFF
}
Fires 100% of the time.
* Validator reports original_owner = {} as a filter inside any_artifact as invalid, but works.
Please post the error for society_rank_up as Validator supposedly already supports that.

Also please post the error for localization issues as I am not sure what the exact issue is there.

Generally please include Validator error messages to be sure of what we are talking about.
 
--- Error 1 of 1 ---
At <mod>\events\mythos_WoL.txt [character_event\is_in_society] (Line 20728, column 2):
"the_cold_ones" is not a valid Bool.

is_in_society can take a bool or a society name. Code works, and can also be seen in action in the vanilla Hunt Apostates job, which uses "is_in_society = monastic_order_dominican"

--- Error 1 of 1 ---
At <mod>\events\mythosextras_events.txt [character_event\option\change_learning] (Line 2938, column 3):
"local_loss" is not a valid Int.

the effects health, change_diplomacy, change_martial, change_stewardship, change_intrigue, and change_learning give as "not a valid Int/Double" if you pass them a variable as a right-hand-side argument
the same goes for the triggers diplomacy, martial, stewardship, intrigue, and learning

--- Error 1 of 1 ---
At <mod>\common\scripted_effects\00_scripted_effects.txt [increase_depopulation_effect\if\random_list\60\modifier\location] (Line 1999, column 6):
Invalid node "location" in scope ProvRandomListModifier (value is: <a complex type>)
* called from <mod>\events\dragon_events.txt [character_event\option\any_demesne_province\increase_depopulation_effect] (Line 4995, column 4)

Calling location from a province scope is valid, albeit normally pointless. This case is in a vanilla scripted effect, just being called from modded code. It looks like it's there so that the scripted effect can be called with the same effect from both province and title scopes, in which case removing the location node would result in the code behaving differently.

--- Error 1 of 1 ---
At <mod>\events\banking_events.txt [character_event\immediate\random_artifact\limit\FROM\NOT\has_artifact] (Line 871, column 22):
"PREV" is not a valid Artifact.

PREV is "random_artifact", so this is pointing to an artifact. Also appears of the vanilla code for getting an artifact from besieging a holding.

--- Error 1 of 1 ---
At <mod>\events\mnm_secret_religious_societies_events.txt [character_event\option\hidden_effect\random_list\40\modifier\FROM] (Line 9784, column 7):
Invalid use of 'FROM': This scope has no FROM due to the fact that common\on_actions\00_on_actions.txt [on_society_bi_yearly_pulse\random_events\100] (Line 2720, column 3) has no scope.

This is vanilla code, which works. I think FROM is the society's grandmaster, though I'm not 100% sure since I can't find documentation of this on_action, so I'm judging off the code in the event and personally only seeing this event as a secret religious society grandmaster.

--- Error 1 of 1 ---
At <mod>\events\mnm_secret_religious_societies_events.txt [society_quest_event\quest_target] (Line 4273, column 2):
Invalid node "quest_target" in scope CharEvent (value is: event_target:sympathy_target)

Vanilla event. quest_target can be called from a character scope and can scope to a character, province, or title, depending on the society quest the character has.

--- Error 1 of 1 ---
At <mod>\events\mythos_WoL.txt [character_event\immediate\random_list\1\modifier\kemetic_pagan\religion_authority] (Line 17697, column 24):
Invalid node "religion_authority" in scope ReligionTrigger (value is: 0.25)

religion_authority accepts doubles as of 2.8.2

--- Error 1 of 1 ---
At <mod>\events\mythos_WoL.txt [character_event\option\if\hidden_tooltip\if\set_discovered_society] (Line 16302, column 6):
Invalid node "set_discovered_society" in scope CharIfClause (value is: yes)

Not personally tested, but from /common/societies/societies.info:
set_discovered_society = society_name # Scope must be a character, sets the character as "revealed" to be part of society_name
set_discovered_society = yes # Scope must be a character, sets the character as revealed to part of their current society
clr_discovered_society = yes # Scope must be a character, resets the character's revealed society
is_society_discovered = yes # Scope must be a character, returns true if the character has been "revealed" as part of a secret society, whether they're actually a member of it or not
is_society_discovered_real = yes # Scope must be a character, returns true if the character has been revealed as part of a secret society, and they are actually part of it

--- Error 1 of 1 ---
At <mod>\common\scripted_effects\00_scripted_effects.txt [scrying_omen_fulfilled_by_removing_disease_effect\hidden_effect\lover] (Line 15246, column 3):
Invalid node "lover" in scope CharHiddenEffect (value is: <a complex type>)
* called from <mod>\events\rip_treatment_events.txt [character_event\option\scrying_omen_fulfilled_by_removing_disease_effect] (Line 1503, column 3)
Vanilla code - lover scopes to the scoped character's lover

--- Error 1 of 1 ---
At <mod>\events\vampire_events.txt [character_event\immediate] (Line 10817, column 2):
The right sides of a "clear_event_target" clause may not be identical.
There were 6 duplicates.
[I273480|L10900|C3]: clear_event_target = new_blood_court
[I275763|L10983|C3]: clear_event_target = new_blood_court
[I278046|L11066|C3]: clear_event_target = new_blood_court
[I280350|L11149|C3]: clear_event_target = new_blood_court
[I282682|L11232|C3]: clear_event_target = new_blood_court
[I285014|L11315|C3]: clear_event_target = new_blood_court
In between clearing the event target, the event target is set again, so this code is valid and works

EDIT:
--- Error 1 of 1 ---
At <mod>\events\species_events.txt [character_event\immediate\if\random_list\1\modifier\OR\AND] (Line 1551, column 8):
There may be no duplications of a "month_of_birth" clause.
There were 2 duplicates.
[I34699|L1552|C9]: month_of_birth = 3
[I34727|L1553|C9]: month_of_birth = 5
The code in question is:
month_of_birth = 3
month_of_birth <= 5
So, duplicates make sense since it establishes a range, applying to characters born in March through May
 
Last edited:
Please post the error for society_rank_up as Validator supposedly already supports that.

Also please post the error for localization issues as I am not sure what the exact issue is there.

Generally please include Validator error messages to be sure of what we are talking about.
Rank up/down now both work in the new version.

Error for localisation with 'This' is just
--- Error 1 of 1 ---
At <mod>\localisation\other.csv [Entry\1] (Line 310, column 13):
Localization error: Invalid bracket command: "test_variable" in "This.test_variable.GetValue" in "[This.test_variable.GetValue]."

My guess would be it's an issue of the variable being in character scope, but referred to through the type-ambiguous "This", which the validator probably isn't equipped to reflect. The same error occurs if you refer to a variable through an artifact's Owner scope, e.g. [target_artifact.Owner.test_variable.GetValue]. Both work properly in-game.
 
Rank up/down now both work in the new version.

Error for localisation with 'This' is just
--- Error 1 of 1 ---
At <mod>\localisation\other.csv [Entry\1] (Line 310, column 13):
Localization error: Invalid bracket command: "test_variable" in "This.test_variable.GetValue" in "[This.test_variable.GetValue]."

My guess would be it's an issue of the variable being in character scope, but referred to through the type-ambiguous "This", which the validator probably isn't equipped to reflect. The same error occurs if you refer to a variable through an artifact's Owner scope, e.g. [target_artifact.Owner.test_variable.GetValue]. Both work properly in-game.
The validator isn't smart enough to think about scope and allows all variables at any point. Can you post a link to the mod, along with a place where the variable is defined?
 
I extracted everything to \Desktop\Audax.Validator. I've attached Data\log.txt to this comment.

Thank you for the help.
Hmm sorry not exactly sure what's wrong. I know others have seen similar errors and maybe they could chime in.

Two possible things to try
1. Before extracting the zip, right-click the zip file, and click Properties. Then If at the bottom there is a "Security" area with "This file came from ..." and an unblock button, click it, then extract the files.
2. Run the exe with admin privileges