• 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.
Just a few more minor things:

This comes up for triggered events that are not called by other events. Again it's redundant since the validator already tells us the event is never called.
--- Error 1 of 1 ---

At <mod>\events\plot_events.txt [character_event[9]\option\hidden_tooltip\remove_opinion[1]\who] (2018, 68):
"FROM" is not a valid ThisChar, ThisProv, OpinionClauseDefinedTypes, or ThisTitle.

I also get a similar error for an event that IS called from cb_types.txt (its an event that fires for all vassals when one of them revolts):
--- Error 1 of 1 ---

At <mod>\events\vassal_revolt_events.txt [letter_event[1]\option[1]\ai_chance\modifier[2]\NOT\opinion\who] (38, 7):
"FROM" is not a valid OpinionClauseDefinedTypes, ThisChar, or ThisTitle.

And this error:
--- Error 1 of 1 ---

At <mod>\events\wizmod_events.txt [character_event[41]\option[3]\hidden_tooltip\create_random_priest\dynasty] (3205, 5):
"ROOT" is not a valid "random" or DynastyId.

For:
Code:
			create_random_priest = {
				random_traits = yes
				dynasty = ROOT
				female = no
			}

Which works fine.
 
Last edited:
Ah, so it'd be used in something like:

allow = {
any_independent_ruler = { opinion = { who = FROM value = 0 } }
}

Although I suppose you could just as well use PREV there. Nonetheless good to know.
 
dec) DEFAULT EXCEPTION CONTEXT



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(CFilePath path)
at Audax.Validator.ValidationManager.ParseGameFiles()
Since there were problems with initial loading, validation cannot continue.

I keep getting this error when i load the validator up
 
FROM is, as far as I know, the only way to get the game to properly recognise certain requirements, such as holding existing titles (has_landed_title = ). FROM in that instance is the one who's creating/usurping the title, although it did just occur to me about it also affecting usurption, I suppose it's not so much a problem (shouldn't be able to usurp a title unless you could create too), but I hadn't figured that in.

This is all based on trial and error testing though and could just be fluke on my part that it's working, and it might not be necessary (although someone asked in another thread about requirements and that's how i discovered FROM works, as the "normal way" didn't work).
 
The thing with has_landed_title in landed_titles.txt is that you can only specify titles the game has already loaded (further up the file). So if for instance you are doing a check on k_france, you can't put a has_landed_title = d_normandy inside k_france's allow, because it has not yet loaded d_normandy.
 
The thing with has_landed_title in landed_titles.txt is that you can only specify titles the game has already loaded (further up the file). So if for instance you are doing a check on k_france, you can't put a has_landed_title = d_normandy inside k_france's allow, because it has not yet loaded d_normandy.
You don't need to define allow at the beginning of an entry. Stick it at the end instead.
 
It really loads like that? Such an odd way of doing it :confused:
I never noticed it was like that myself, have you tested this or is it purely based on linear logic?
I personally haven't tested it, but I've seen several modders report that the condition won't show unless after the title it is referencing.
 
Tested the latest version and -in my case- it's going pretty well.

These are the minor things I've spotted -
View attachment 53588
global_revolt_risk works fine as trait effects

and I wonder why am I getting invalid node "opinion" in scope OpinionClause...?
View attachment 53589

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


And that's it for today :)
* Fixed global_revolt_risk
* Can you post the lover error?
* The rest don't seem like Validator issues, except maybe value/opinion. So in an opinion/reverse_opinion clause, you can have both "opinion={who=X value=Y}" and "opinion={who=X opinion=Y}"? oh why.........


Just a few more minor things:

This comes up for triggered events that are not called by other events. Again it's redundant since the validator already tells us the event is never called.


I also get a similar error for an event that IS called from cb_types.txt (its an event that fires for all vassals when one of them revolts):


And this error:


For:
Code:
			create_random_priest = {
				random_traits = yes
				dynasty = ROOT
				female = no
			}

Which works fine.
* This FROM issue is much harder to fix, unfortunately. I don't think getting rid of it is worthwhile.
* cb_types: To clarify, in on_add, on_add_posttitle, on_success, on_success_posttitle, on_fail, on_fail_postttitle, on_reverse_demand, on_reverse_demand_posttitle, and on_[attacker/defender/thirdparty]_death will have FROM be a character, while on_add_title, on_success_title, on_fail_title, on_reverse_demand_title will have FROM be a title. And is anything missing from there?
* fixed dynasty=ROOT issue.

FROM is valid to use in landed_titles.txt so you know.
Added.

dec) DEFAULT EXCEPTION CONTEXT



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(CFilePath path)
at Audax.Validator.ValidationManager.ParseGameFiles()
Since there were problems with initial loading, validation cannot continue.

I keep getting this error when i load the validator up
Is there any file "Data\log.txt"? If so please post it.

I personally haven't tested it, but I've seen several modders report that the condition won't show unless after the title it is referencing.
:wacko: Yeah, I'll chalk this up to paradox having a bug in their parser and not check it... (unless people really want it? :()

Tiny error, but might as well report it anyway:
The holding type in capital letters (E.G., CITY) is valid. (Error reported in cb_types. Line is "holding_type = CITY"
Indeed, "CITY" and "city" and "CiTY" and "cIty" are all valid, but for consistency, it's best to have everything be standard-cased (which in this case is lowercase). Of course, someone hates standard casing and in the tech files decided to capitalize all the modifiers for no good reason :angry:
 
You don't need to define allow at the beginning of an entry. Stick it at the end instead.

That's... pretty much brilliant. I can't believe I didn't think of it.
 
This is not a false positive, but a pretty dangerous bug that the Validator won't detect yet: characters whose death date happens before their birth date (and most likely, any other date clause related to them happening either before their birth or after their death). Having such a thing in your character definition files will let the mod start, but will cause crashes a week or so into the game. Might be annoying to implement, but if you could do it, it would be great!

Also, I just checked and guardian = [character_id] can and will also work inside of a date clause. The last version of the validator reports it as a bug:
--- Error 1 of 1 ---

At <mod>\history\characters\stormlands.txt [8316\8301.1.1] (250, 2):
Invalid node "guardian" in scope DateClause (value is: 1)
 
* Fixed global_revolt_risk
* Can you post the lover error?
* The rest don't seem like Validator issues, except maybe value/opinion. So in an opinion/reverse_opinion clause, you can have both "opinion={who=X value=Y}" and "opinion={who=X opinion=Y}"? oh why.........
Jamie, see if this helps
lovermodifier.jpg