• 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.
Is global event targets also a separate category as local event targets, or are they the same? (I guess since they both use event_target:xxx they would be the same probably)
Global- and local scope- event targets share the same invocation syntax. When we try to access them then we first try and access an event target with the given name inside the local scope and if that fails then we try to access the given name in the global space.

About the war scopes that can be present while we're actually also in another scope then it's a difficult to explain but in part you're on the right track that when you scope to defender it will later on be possible to scope to attacker (iirc) since it will try to access the attacker from the (still existing) war scope.

Under normal circumstances where we for example would be in a province scope and then change the scope to the holder_scope that would transition us towards a character scope of the holder of the province while the province wouldn't be accessible anymore without any more scope changes (PREV or similar). But because of old scope juggling problems in the CB script a war scope is never cleared when transitioning through a scope change. I agree that this is a weird behavior and understand that it won't be easy to represent in the validator but there is a bunch of old script that relies on this specific behavior.
 
Mind you that this is only information from the top of my head and it might not be exactly how it works because there are some weird quirks with this war-scope.
 
--- Error 1 of 1 ---
At <mod>\common\cb_types\01_cb_types.txt [offmap_submission\on_success\FROM\hidden_tooltip\ROOT\while\ROOT_FROM\if\limit\any_realm_title\ROOT_FROM\NOT\capital_scope\title] (Line 3491, column 14):
"PREVPREV" is not a valid AnyTitle.
By my count, PREV is ROOT_FROM and PREVPREV is any_realm_title.
 
I get a ton of errors on vanilla files with this. Also, it doesn't appear to take into account when you've edited the religion icon strip, it still thinks there can't be more than 59 icons. It is also not processing my custom localization. How do I get this to work usefully?
 
As far as errors in vanilla files, report them. Either they're bugs in Validator in which case they need to be reported here so Jamie can fix them, or they're bugs in vanilla files, in which case they need to be reported so Paradox can fix them. (The religion icon strip thing is an example of things to report here. Copy the error from Validator and paste here, along with your icon strip definition. If you can't figure out if the problem is Validator or the files, report here.)

That really is the only way to get more useful results.
 
--- Error 1 of 1 ---
At <mod>\decisions\rip_various_decisions.txt [title_decisions\build_hospital] (Line 1330, column 2):
The required "filter" entry was not found.
--- Error 1 of 2 ---
At <mod>\decisions\rip_various_decisions.txt [title_decisions\build_hospital] (Line 1330, column 2):
The string build_hospital was not found in localization.
--- Error 2 of 2 ---
At <mod>\decisions\rip_various_decisions.txt [title_decisions\build_hospital] (Line 1330, column 2):
The string build_hospital_desc was not found in localization.
This particular decision is ai-only (ai = yes in from_potential), filter is for the player. Similarly, since the decision is ai-only, localizations aren't needed.
 
Ok, some of the problems were my fault, and I fixed them, but this one remains:

--- Error 1 of 1 ---
At <mod>\common\religions\african_religions.txt [african_group\bori\male_temple_holders] (Line 45, column 9):
Invalid node "male_temple_holders" in scope ReligionDef (value is: no)

I believe this is a new thing added with Holy Fury, it loads just fine and the game recognizes it. The file says you might have to change laws to make it work, but I'm not sure how right now.

As for vanilla errors, well:

ScreenShot103.png


That's just with localization and religions enabled.
 
It looks like Validator isn't handling custom localization strings properly. Taking just the first error, "String_July" is not in regular localization, but "July" is. Quoting the documentation at the top of 00_costomizable_localisation.txt,
#When adding new custom loc keys, add them to the appropriate category (or add a new one) and describe them. Name the strings "String_X" where x is its content.
# To not display anything, you can use 'localisation_key = ""'
So Validator is looking for String_X, but should be looking for X instead.
 
It looks like Validator isn't handling custom localization strings properly. Taking just the first error, "String_July" is not in regular localization, but "July" is. Quoting the documentation at the top of 00_costomizable_localisation.txt,
So Validator is looking for String_X, but should be looking for X instead.

Validator works well. Actually, none of them are false positives. String_July and String_friendly_to_outsiders, and all reported Spanish lines (String_ES_******) should exist in localisation because they are used as values of custom commands. Adding String_ at the beginning of the localisation key is only a recommendation.
 
Validator works well. Actually, none of them are false positives. String_July and String_friendly_to_outsiders, and all reported Spanish lines (String_ES_******) should exist in localisation because they are used as values of custom commands. Adding String_ at the beginning of the localisation key is only a recommendation.
I bow to your superior knowledge in this field. Now are you going to file the JIRA?

--- Error 1 of 2 ---
At <mod>\common\cb_types\02_cb_types_shattered_world.txt [shattered_world_county_conquest\on_add\ROOT\if\limit\defender] (Line 47, column 15):
Invalid node "defender" in scope CharTrigger (value is: <a complex type>)
--- Error 2 of 2 ---
At <mod>\common\cb_types\02_cb_types_shattered_world.txt [shattered_world_county_conquest\on_add\ROOT\if\attacker] (Line 48, column 5):
Invalid node "attacker" in scope CharIfClause (value is: <a complex type>)
Vanilla code:
Code:
    on_add = {
       hidden_tooltip = { fire_haruspicy_event_effect = yes }
       if = {
           limit = { defender = { is_offmap_governor = offmap_china } }
           attacker = {  
               sound_effect = china_angered_emperor
               detract_grace_super_huge_effect = yes
           }
       }
   }
I'd like to hear from @Divine or @blackninja9939 about this, but it appears to me that on_add puts the engine in a war scope, which as Divine said earlier is not canceled by non-war scope changes.
 
I think they added a bunch of language specific ones.
 
--- Error 1 of 1 ---
At <mod>\common\disease\00_disease.txt [bubonic_plague\timeperiod\months] (Line 1337, column 3):
The value '0' on node 'months' must be a positive integer.
months = 0 is used in every Bubonic Plague timeperiod definition that is labeled "dynamic historical", and only there. I confess to not knowing why, or what effect it has.
 
Last edited:
There's also a ton of "invalid bracket commands" in HolyFury.csv, which I assume are new bracket commands that they added with HF.
For "found_saint" it seems like it is called in scripted effect crusade_give_artifact_effect, this seems to be uncalled from anywhere. Documentation suggests that this might be called by the engine but that seems strange because why not make it an on_action? Also what scoping is this called from, if it is indeed called by the engine?

As for scoped_god_* it seems like they are called from effect reformation_god_names_changes_effect which is not called from anywhere. Actually there is a call from on_action_events.txt but it is commented out, hence Validator not being able to make the connection.
 
Just started using the validator.I’ve got a question.I inserted the mod name into the validator,but it consistently tells me that it could not find the mod.What should I do?
 
Use the name line from the .mod. Note that Validator treats it as case sensitive. For instance,
rwby.mod said:
name = "RWBY"
path = "mod/rwby"
You must put RWBY as the mod in Validator.
Note also that Validator won't validate a mod in an archive, it must be unpacked.
 
--- Error 1 of 1 ---
At <mod>\decisions\HF_religious_decisions.txt [settlement_decisions\destroy_great_pillar\potential\OR\AND\capital_scope\location\province] (Line 1336, column 37):
"ROOT" is not a valid MaybeEventTargetProv or Province.
MaybeEventTargetProv: cannot be because ROOT points to <TitleTrigger>, not Prov.
Just checked this in-game, province will take a holding on the right hand side.
--- Error 1 of 1 ---
At <mod>\decisions\hf_warrior_lodge_decisions.txt [targeted_decisions\claim_duel_decision\ai_will_do\title_tier_reduction_score] (Line 587, column 10):
Invalid node "title_tier_reduction_score" in scope AiWillDoFromFromNone (value is: yes)
title_tier_reduction_score is defined in common/scripted_scores/00_scripted_score_values.txt
 
Last edited:
--- Error 1 of 2 ---
At <mod>\decisions\mnm_secret_religious_societies_decisions.txt [targeted_decisions\secret_religions_renounce_secret_religion\effect\if\limit\capital_scope\NOT\true_religion_group] (Line 2493, column 15):
Invalid node "true_religion_group" in scope ProvTrigger (value is: ROOT)
--- Error 2 of 2 ---
At <mod>\decisions\mnm_secret_religious_societies_decisions.txt [targeted_decisions\secret_religions_renounce_secret_religion\effect\if\limit\capital_scope\NOT\true_religion] (Line 2502, column 15):
Invalid node "true_religion" in scope ProvTrigger (value is: ROOT)
Just checked this in-game, true_religion = ROOT and true_religion_group = ROOT works in capital_scope and location scopes, but not in capital_holding.