• 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.
With the ck2 plus mod going so slowly I've thought of making my own mini mod for myself, fixing vanilla bugs included. I tried out the validator and want to ask if there is any disadvantage to not fixing all these redundant "bugs". Will not doing so make the game go slower, or do the ruin anything on their own? I'm a noob to modding, I only know how to do basic edits and whatnot, please answer soon :D
 
Yes, in my mod, there's a nicknames.txt (with mostly vanilla nicknames but also the Syren's added ones) and no event_modifiers_00.txt, I haven't been dealing with those.
As for having another .mod file, no, I haven't gone that route.

Is anyone else getting the same as me?

Shouldn't be hard to replicate this, right?


EDIT - And I'm thinking here... Even if the Validator is not picking from the mod's nicknames.txt, it would still have to recognize some (or... all?) of the vanilla nicks, right? :unsure:

Dunno, it seems hard to replicate. Do you happen to have a download link? But hmm, you get NO error messages on top about event_modifiers or nicknames when you validate just the characters files.

To my knowledge (though I haven't specifically tried) one cannot put flags in subfolders, yeah.

What I mean, is if you have a MyCoolMod, that depends on ModA and ModB, then we would only check mod\MyCoolMod\gfx\flags for unused flags, and not gfx\flags or mods\ModA\gfx\flags. It seems like there's no reason checking the other mods since you might have removed some of the kingdoms in your mods. But is that true?

With the ck2 plus mod going so slowly I've thought of making my own mini mod for myself, fixing vanilla bugs included. I tried out the validator and want to ask if there is any disadvantage to not fixing all these redundant "bugs". Will not doing so make the game go slower, or do the ruin anything on their own? I'm a noob to modding, I only know how to do basic edits and whatnot, please answer soon :D

You mean unnecessary AND/OR? I imagine it would be a bit slower, but so small that no one would notice. The main reasons for that is that 1. it can confuse people to have that extra code, and 2. it could be a bug; e.g. there is sometimes code
Code:
OR = {
any_title = {
 blah=X
 blah2=Y
}
}

in which the OR should probably be on the inside. In this case the warning would point to something being an issue.




EDIT: In addition, it seems like the static modifiers is basically made of predefined modifiers and the landed title modifiers. The former doesn't seem like it needs localization checking (since no one would change them) and the latter doesn't need localization at all. So it seems like localization checking would only check event_modifiers for being in there. Is this right?
 
Last edited:
Dunno, it seems hard to replicate. Do you happen to have a download link? But hmm, you get NO error messages on top about event_modifiers or nicknames when you validate just the characters files.

So validating just the characters files give me no errors on event_modifiers.
But... I still get plenty of nicknames - as shown here validatecharacters.JPGand herenick_the_strong.JPG.

And truely bizarre, I tried doing the same thing to The Prince and the Thane mod and, again, I get a few unrecognized nicks (less than my mod) but at least it gives the window box option you've mentioned before.princeandthethane.JPG
So I suppose it might be something on my end...
:wacko:

Anyone having the same issue...?
 
So validating just the characters files give me no errors on event_modifiers.
But... I still get plenty of nicknames - as shown here View attachment 53503and hereView attachment 53504.

And truely bizarre, I tried doing the same thing to The Prince and the Thane mod and, again, I get a few unrecognized nicks (less than my mod) but at least it gives the window box option you've mentioned before.View attachment 53505
So I suppose it might be something on my end...
:wacko:

Anyone having the same issue...?

On the first image, look at the second error. That indicates that the Validator can't read your nicknames.txt file, and so thinks that no nicknames exist. You'll need to fix nicknames.txt and then most things should work.

Same issue in event_modifiers most likely.
 
Could you disable warnings about FROM being called in is_triggered_only events which are never called from any other event? We already get the warning about the event not being called, so it seems spammy and redundant.

Other false positives:
- Validator thinks empire = { } from a title scope is an invalid scope. It is not, it calls the empire-level title for that title (also works on provinces).

I got the following error:
Code:
--- Error 1 of 1 ---

At <mod>\common\cb_types.txt [crusade\on_success_title\if[3]\most_participating_attacker\any_demesne_title] (1920, 5):
Invalid node "location" in scope TitleCommand (value is: <a complex type>)

For:
Code:
			most_participating_attacker = {
				any_demesne_title = {
					location = {
						set_province_flag = previous_holding 
					}	
				}
				gain_settlements_under_title = {
					title = PREV
					enemy = FROM
				}				
				hidden_tooltip = { character_event = { id = 190061 } }
			}

Which by all accounts works exactly as it should.


I also get an invalid node error for:

Code:
		any_war = {
			limit = {
				OR = {
					using_cb = overthrow_ruler
					using_cb = overthrow_ruler_no_calls
					using_cb = depose_liege
				}				
				defender = {
					character = ROOT
				}	
			}
			end_war = invalid
		}

Which also works fine.

And the following error:
Code:
--- Error 1 of 1 ---

At <mod>\common\static_modifiers.txt [temple] (387, 1):
Invalid node "tech_growth_modifier" in scope <anon> (value is: 0.1)

for:
Code:
temple = {
	tax_income = 8
	heavy_infantry = 60
	light_infantry = 75
	archers = 40
	galleys = 2
	build_cost_modifier = 500
	build_time_modifier = 1825
	levy_reinforce_rate = 0.5
	land_organisation = 0.2
	tech_growth_modifier = 0.1
}

Again, tested as working.
 
One more issue. Validator does not recognize add_building = X as a valid node (targeting a barony level title), but it's tested as working fine.
 
On the first image, look at the second error. That indicates that the Validator can't read your nicknames.txt file, and so thinks that no nicknames exist. You'll need to fix nicknames.txt and then most things should work.

Same issue in event_modifiers most likely.

Got it! Thanks for pointing it out :blush:
I've been running some tests, and -correct me if I'm wrong here- it seems that if you miss a bracket even if it's the last nickname in the file, the whole file will be ignored by the game engine...

At least, now I know there's a bracket missing somewhere, will just need to find the little bugger!

I'll look into the event_modifiers then (which I haven't messed around...), let's see what gives.


EDIT 1 - The Validator states that having a factor of 1 is useless, which is true in most cases but, as far as Syren explained here, it's a different case for the nicknames.txt... If you'd like to incorporate this to your Validator.


EDIT2 - Just wanted to say (again) -
What a great tool!! Thank you so much for making this.
 
Last edited:
Jamie, can your validator find missing titles in the localization files? I know it scans thru them for bugs/missing translations, but for example in vanilla whilst there is the Kaiser title for German emperors, the Kaiserin title for German empresses and the Basileus title for Greek emperors, there is no Basilissa title for Greek empresses. There are plenty of other missing titles too -- I realize it obviously won't know which titles should be added (as that is the player/designer's choice) but could it spot 'pairs' of titles where one of the pair is missing? Such as the Greek example above.
 
Ok, so a few more tests, and I'm always getting problems with the 00_event_modifiers.txt.
I dind't mess with this file but decided to be thorough anyway.
I try to validate another mod that deals with 00_event_modifiers.txt (Prince and Thane)... and again, the Validator didn't recognize the file, accusing some bracket mistake. I went throught it a few times, and couldn't catch any brackets that were missing or as a leftover...
bracketevent_modifierPrince.JPG

So, yeah, this still elludes me.



As for the rest, just keeps getting better!
 
Could you disable warnings about FROM being called in is_triggered_only events which are never called from any other event? We already get the warning about the event not being called, so it seems spammy and redundant.

Other false positives:
- Validator thinks empire = { } from a title scope is an invalid scope. It is not, it calls the empire-level title for that title (also works on provinces).

I got the following error:
Code:
--- Error 1 of 1 ---

At <mod>\common\cb_types.txt [crusade\on_success_title\if[3]\most_participating_attacker\any_demesne_title] (1920, 5):
Invalid node "location" in scope TitleCommand (value is: <a complex type>)

For:
Code:
			most_participating_attacker = {
				any_demesne_title = {
					location = {
						set_province_flag = previous_holding 
					}	
				}
				gain_settlements_under_title = {
					title = PREV
					enemy = FROM
				}				
				hidden_tooltip = { character_event = { id = 190061 } }
			}

Which by all accounts works exactly as it should.


I also get an invalid node error for:

Code:
		any_war = {
			limit = {
				OR = {
					using_cb = overthrow_ruler
					using_cb = overthrow_ruler_no_calls
					using_cb = depose_liege
				}				
				defender = {
					character = ROOT
				}	
			}
			end_war = invalid
		}

Which also works fine.

And the following error:
Code:
--- Error 1 of 1 ---

At <mod>\common\static_modifiers.txt [temple] (387, 1):
Invalid node "tech_growth_modifier" in scope <anon> (value is: 0.1)

for:
Code:
temple = {
	tax_income = 8
	heavy_infantry = 60
	light_infantry = 75
	archers = 40
	galleys = 2
	build_cost_modifier = 500
	build_time_modifier = 1825
	levy_reinforce_rate = 0.5
	land_organisation = 0.2
	tech_growth_modifier = 0.1
}

Again, tested as working.
Fixed everything, I think.

One more issue. Validator does not recognize add_building = X as a valid node (targeting a barony level title), but it's tested as working fine.
Added.


Got it! Thanks for pointing it out :blush:
I've been running some tests, and -correct me if I'm wrong here- it seems that if you miss a bracket even if it's the last nickname in the file, the whole file will be ignored by the game engine...

At least, now I know there's a bracket missing somewhere, will just need to find the little bugger!

I'll look into the event_modifiers then (which I haven't messed around...), let's see what gives.


EDIT 1 - The Validator states that having a factor of 1 is useless, which is true in most cases but, as far as Syren explained here, it's a different case for the nicknames.txt... If you'd like to incorporate this to your Validator.


EDIT2 - Just wanted to say (again) -
What a great tool!! Thank you so much for making this.
Yes any bracket or basic syntax error = file ignored. Not the best thing to do, but things would be much harder otherwise. I recommend Notepad++ to find missing brackets; it has region collapse so you can basically collapse all regions and look at the last collapsed region, since the issue is probably in there (e.g. if you forgot to close a nickname, all the nicknames following it would be considered by Notepad++ to be part of the nickname that you forgot to close).

Fixed the nicknames issue. Thanks!

Jamie, can your validator find missing titles in the localization files? I know it scans thru them for bugs/missing translations, but for example in vanilla whilst there is the Kaiser title for German emperors, the Kaiserin title for German empresses and the Basileus title for Greek emperors, there is no Basilissa title for Greek empresses. There are plenty of other missing titles too -- I realize it obviously won't know which titles should be added (as that is the player/designer's choice) but could it spot 'pairs' of titles where one of the pair is missing? Such as the Greek example above.

I think this might be rather difficult (as the validator would have to do a lot of guessing about what is a title and what isn't. But maybe you can just search for "emperor_" and "king_" in the localization files; there aren't that many of them to deal with, and once you fix those up, then the problem shouldn't recur in the future.
 
Now I am getting this error:

--- Error 1 of 1 ---

At <mod>\events\knights_of_st_john_events.txt [province_event[1]\option\hidden_tooltip[1]\b_krakdeschevaliers\add_building] (142, 5):
"ca_order_house" is not a valid Improvement.

But ca_order_house is definitely a building that exists (in ck2+) and which is verified as working.
 
More false positives!

--- Error 1 of 1 ---

At <mod>\common\combat_tactics.txt [devestating_standfast_tactic\trigger\leader\NOT\OR\location[1]] (3084, 5):
Invalid node "terrain" in scope ProvTrigger (value is: desert)

terrain= is a valid province scope that can be used to check terrain type.

--- Error 1 of 1 ---

At <mod>\decisions\crown_laws.txt [de_jure_laws\revoke_law_1\effect] (137, 3):
Invalid node "set_allow_free_revokation" in scope DecisionCommand (value is: yes)

set_allow_free_revokation is valid and works, despite being commented out in vanilla.

--- Error 1 of 1 ---

At <mod>\decisions\employment_decisions.txt [decisions\employ_spymaster\effect] (139, 3):
Invalid node "create_random_intriguer" in scope DecisionCommand (value is: <a complex type>)

This is a valid node that generates a random spymaster.

--- Error 1 of 1 ---

At <mod>\events\character_decision_events.txt [character_event[10]\immediate\current_heir\remove_title] (495, 4):
"title_castellian" is not a valid JobTitle.

This comes from remove_title called on a minor title (such as cupbearer)... which works fine.

--- Error 1 of 1 ---

At <mod>\events\character_decision_events.txt [character_event[8]\option[1]\liege\ROOT\banish] (271, 5):
"PREV" is not a valid Yes.

This comes from banish = PREV/ROOT/FROM etc which works fine, banishes character to that particular person's court.

--- Error 1 of 1 ---

At <mod>\events\wizmod_events.txt [character_event[34]\trigger\OR\has_claim[1]] (2745, 4):
"d_kiev" is not a valid ThisTitle.

Comes from has_claim = d_kiev which once again, works fine.

--- Error 1 of 1 ---

At <mod>\events\wizmod_events.txt [character_event[34]\option\if[4]\remove_claim] (2775, 4):
"d_turov" is not a valid ThisTitle.

Same deal as above but with remove_claim

--- Error 1 of 1 ---

At <mod>\events\wizmod_events.txt [character_event[22]\option] (1542, 2):
Invalid node "set_variable" in scope Option (value is: <a complex type>)

I think you may have forgotten set_variable when fixing variables?

That should be all of them, since I just did a fresh reinstall and ran it through without anything surpressed.
 
Hey Jamie, just wanted to say thanks for your amazing work, it's being immensely useful for me so far. After using it extensively, I found the following issues:

- In the character definition files, it's possible to use the following nodes which the validator reports as invalid:
*health = # (can be any number, either integer or decimal, but I believe the game uses the values 0-10).
*fertility = # (again, the game will accept any number, but it should use decimal values from 0 to 1).
*guardian = [character_id]
*[date_clause] = { add_lover = [character_id] }


Here's an example of a valid character who uses these four nodes:
Code:
696969101 = {
	name="Varys"
	religion="catholic"
	culture="norman"	
	dna="dblcffajeaq"
	properties="cj0dik0000"
	
	martial = 2
	diplomacy = 12
	intrigue = 16
	stewardship = 9
	learning = 8
	
	health=8
	fertility=0.1
	guardian = 2001

	1057.1.1 = {birth="1057.1.1"}
	1081.1.1 = {add_lover = 3001}
}

- "death_suicide" is a valid death reason that the validator reports as invalid.

- landed_titles.txt can have counties belonging directly to a kingdom or an empire without being included in a duchy, but the validator reports:

--- Error 1 of 1 ---

At <mod>\common\landed_titles.txt [e_iron_throne\k_north] (249, 2):
Invalid node "c_bearisland" in scope KingTitleDef (value is: <a complex type>)

- Not a real bug, just a suggestion: the mod I'm working on has still a good number of unassigned gfx .tga province flags. The validator correctly detects this, but there doesn't seem to be any way to disable this check. It would be nice to be able to do it.
 
Last edited:
Now I am getting this error:



But ca_order_house is definitely a building that exists (in ck2+) and which is verified as working.

Fixed, I believe.

More false positives!



terrain= is a valid province scope that can be used to check terrain type.



set_allow_free_revokation is valid and works, despite being commented out in vanilla.



This is a valid node that generates a random spymaster.



This comes from remove_title called on a minor title (such as cupbearer)... which works fine.



This comes from banish = PREV/ROOT/FROM etc which works fine, banishes character to that particular person's court.



Comes from has_claim = d_kiev which once again, works fine.



Same deal as above but with remove_claim



I think you may have forgotten set_variable when fixing variables?

That should be all of them, since I just did a fresh reinstall and ran it through without anything surpressed.

All fixed, I think. Thanks :)

Hey Jamie, just wanted to say thanks for your amazing work, it's being immensely useful for me so far. After using it extensively, I found the following issues:

- In the character definition files, it's possible to use the following nodes which the validator reports as invalid:
*health = # (can be any number, either integer or decimal, but I believe the game uses the values 0-10).
*fertility = # (again, the game will accept any number, but it should use decimal values from 0 to 1).
*guardian = [character_id]
*[date_clause] = { add_lover = [character_id] }


Here's an example of a valid character who uses these four nodes:
Code:
696969101 = {
	name="Varys"
	religion="catholic"
	culture="norman"	
	dna="dblcffajeaq"
	properties="cj0dik0000"
	
	martial = 2
	diplomacy = 12
	intrigue = 16
	stewardship = 9
	learning = 8
	
	health=8
	fertility=0.1
	guardian = 2001

	1057.1.1 = {birth="1057.1.1"}
	1081.1.1 = {add_lover = 3001}
}

- "death_suicide" is a valid death reason that the validator reports as invalid.

- landed_titles.txt can have counties belonging directly to a kingdom or an empire without being included in a duchy, but the validator reports:



- Not a real bug, just a suggestion: the mod I'm working on has still a good number of unassigned gfx .tga province flags. The validator correctly detects this, but there doesn't seem to be any way to disable this check. It would be nice to be able to do it.

Thanks for the reports. All the issues have been fixed, except the .tga issue, since doing so would be a bit complicated (in terms of how to make it an option, and the like, rather than the actual technical difficulty.
 
Tested the latest version and -in my case- it's going pretty well.

These are the minor things I've spotted -
global_revolt_risk.JPG
global_revolt_risk works fine as trait effects

and I wonder why am I getting invalid node "opinion" in scope OpinionClause...?
nodeopinion.jpg

It also says that "lover" is not a valid OpinionModifier.


And that's it for today :)