• 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.
Thanks as always for another update.

Should this continue please provide a full mod repro
Small test mod included below. To reproduce in-game:
1. Start a new game as a vassal of any ruler. Start a plot to kill your liege.
2. Switch to liege (use 'charinfo' to get the character ID, 'play [charID]' to switch)
3. Hover over the second Centralization Law, which should show a tooltip matching the script in the mod's sole file (adapted from CleanSlate, shouldn't interfere in any way with vanilla CK2).
4. Switch back to the vassal, cancel the plot and plot against any other charater.
5. Switch back to the liege and note the tooltip will no longer show.

Audax.Validator\Extension\Data\Ck2\Calls\AllMisc.pdox contains a few typos, causing some crashes if used during validation. Lines 1145 through 1147 contain 'CharComand' instead of 'CharCommand'.

Code:
--- Error 1 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\from] (Line 247, column 7):
"c_91487" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 2 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\to] (Line 248, column 7):
"c_91487" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 3 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\from] (Line 252, column 7):
"owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 4 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\to] (Line 253, column 7):
"owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 5 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\from] (Line 257, column 7):
"artifact_owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 6 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\to] (Line 258, column 7):
"artifact_owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 7 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\from] (Line 262, column 7):
"original_artifact_owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 8 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\to] (Line 263, column 7):
"original_artifact_owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 9 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\from] (Line 267, column 7):
"original_owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)
--- Error 10 of 10 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\event_target:test_artifact\transfer_artifact\to] (Line 268, column 7):
"original_owner" is not a valid ThisChar.
Additional information: Expected one of: THIS, ROOT, FROM, FROMFROM, FROMFROMFROM (and so on), PREV, PREVPREV (and so on)

All tested to work.

Code:
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\has_non_aggression_pact_with] (Line 149, column 5):
"crusade_target_char" is not a valid MaybeEventTargetChar or CharTargetExcludingMaybeEventTarget.

Valid 'fancy' RHS scope. Probably one for RhsFancyScopeOptionToChar

Code:
--- Error 1 of 2 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\discovered_society] (Line 153, column 5):
Invalid node "discovered_society" in scope CharTrigger (value is: <a complex type>)
--- Error 2 of 2 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\discovered_society] (Line 292, column 5):
Invalid node "discovered_society" in scope CharCommand (value is: <a complex type>)

Valid but otherwise undocumented scope in character trigger and effect scopes.

Code:
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\society_member_of] (Line 151, column 5):
"discovered_society" is not a valid MaybeEventTargetCharSociety or SocietyThingsWithoutThis.

Valid RHS for all triggers and effects that take a society, maybe one for RhsFancyScopeOptionToSociety.

Code:
--- Error 1 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\is_reformed_religion] (Line 194, column 6):
"hospital_owner" is not a valid Bool or OnlyCharTarget.
--- Error 2 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\owned_by] (Line 158, column 6):
"hospital_owner" is not a valid MaybeEventTargetChar or CharTargetExcludingMaybeEventTarget.
--- Error 3 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\controlled_by] (Line 161, column 6):
"hospital_owner" is not a valid AnyTitle, MaybeEventTargetChar, or PrefixedCharId.
--- Error 4 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\de_facto_liege] (Line 164, column 6):
"hospital_owner" is not a valid MaybeEventTarget(Title).
--- Error 5 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\de_jure_liege] (Line 167, column 6):
"hospital_owner" is not a valid MaybeEventTargetCharTitle or AnyTitle.
--- Error 6 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\de_jure_liege_or_above] (Line 170, column 6):
"hospital_owner" is not a valid MaybeEventTargetCharTitle, AnyTitle, CharTargetExcludingMaybeEventTarget, or ThirdpartyTitleScope.
--- Error 7 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\is_quest_target_of] (Line 173, column 6):
"hospital_owner" is not a valid MaybeEventTarget(Char).
--- Error 8 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\culture] (Line 176, column 6):
"hospital_owner" is not a valid Culture or MaybeEventTargetCharCultureProvTitle, OpinionClauseDefinedTypes, CharTargetExcludingMaybeEventTarget, AnyTitle, RhsFancyScopeOptionToAny, or CapitalScope.
--- Error 9 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\culture_group] (Line 179, column 6):
"hospital_owner" is not a valid CultureGroup or MaybeEventTargetCharCultureProvTitle, OpinionClauseDefinedTypes, CharTargetExcludingMaybeEventTarget, AnyTitle, RhsFancyScopeOptionToAny, or CapitalScope.
--- Error 10 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\religion] (Line 182, column 6):
"hospital_owner" is not a valid Religion or MaybeEventTargetCharProvReligionSocietyTitle, CharTargetExcludingMaybeEventTarget, ReligionTargetCheck, SocietyThingsWithoutThis, AnyTitle, RhsFancyScopeOptionToAny, or CapitalScope.
--- Error 11 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\religion_group] (Line 185, column 6):
"hospital_owner" is not a valid ReligionGroup, Religion, or MaybeEventTargetCharProvReligionSocietyTitle, ReligionTargetCheck, CharTargetExcludingMaybeEventTarget, SocietyThingsWithoutThis, AnyTitle, RhsFancyScopeOptionToAny, or CapitalScope.
--- Error 12 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\is_heresy_of] (Line 188, column 6):
"hospital_owner" is not a valid MaybeEventTargetCharProvReligionSocietyTitle, Religion, AnyTitle, Owner, or TopLiege.
--- Error 13 of 13 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\capital_scope\is_parent_religion] (Line 191, column 6):
"hospital_owner" is not a valid MaybeEventTargetCharProvReligionSocietyTitle, Religion, AnyTitle, Owner, or TopLiege.

All tested to work. 'fort_owner' and 'trade_post_owner' also work here.
 

Attachments

  • PlotterTest.7z
    3,5 KB · Views: 0
Last edited:
Once again, thanks for the ongoing support for all the crap I keep finding. I do hope it ends at some point...

Code:
At <mod>\events\HF_saintly_bloodlines_events.txt [character_event\option\change_society_currency\society] (Line 642, column 4):
"event_target:target_society" is not a valid Society or SecretReligiousCult.

Event snippet below, tested to work. Vanilla event, as touched up in CleanSlate.

Code:
character_event = {
    id = HF.43400
    desc = EVTDESC_HF_43400
    picture = GFX_evt_monk

    is_triggered_only = yes # on_yearly_pulse, random_events

    immediate = {
        if = {
            limit = {
                religion_group = christian
                is_in_society = no
                is_heretic = no
            }

            if = {
                limit = { is_catholic_branch = yes }

                monastic_order_benedictine = {
                    save_event_target_as = target_society
                }
            }
            else_if = {
                limit = { is_orthodox_branch = yes }

                monastic_order_orthodox = {
                    save_event_target_as = target_society
                }
            }
            else_if = {
                limit = { is_nestorian_branch = yes }

                monastic_order_nestorian = {
                    save_event_target_as = target_society
                }
            }
            else_if = {
                limit = { is_miaphysite_branch = yes }

                monastic_order_monophysite = {
                    save_event_target_as = target_society
                }
            }
        }
    }

    option = {
        name = EVTOPTB_HF_43400

        trigger = {
            event_target:target_society = { always = yes }
        }

        join_society = event_target:target_society

        change_society_currency = {
            society = event_target:target_society
            value = 350
        }
    }
}

And here are a few more that I've tested to accept society event targets. All other test cases were already accepted by The Validator.

Code:
--- Error 1 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\banish_religion] (Line 339, column 5):
Event target type 'Society' is not any of Char
--- Error 2 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\num_religion_realm_provs\religion] (Line 193, column 6):
Event target type 'Society' is not any of Char
--- Error 3 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\b_lejre\is_holy_site] (Line 203, column 6):
Event target type 'Society' is not any of Char, Prov, Religion
--- Error 4 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\holy_site_distance] (Line 158, column 5):
Invalid node "holy_site_distance" in scope CharTrigger (value is: <a complex type>)
--- Error 5 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\religion_distance] (Line 163, column 5):
Invalid node "religion_distance" in scope CharTrigger (value is: <a complex type>)
--- Error 6 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\religion_distance] (Line 197, column 5):
Invalid node "religion_distance" in scope CharTrigger (value is: <a complex type>)

Code:
--- Error 1 of 2 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random_favor_ower] (Line 246, column 5):
Invalid node "random_favor_ower" in scope CharCommand (value is: <a complex type>)
--- Error 2 of 2 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random_favor_holder] (Line 250, column 5):
Invalid node "random_favor_holder" in scope CharCommand (value is: <a complex type>)

Tested to work.

Code:
--- Error 1 of 4 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\has_claim] (Line 150, column 5):
"crusade_target_title" is not a valid MaybeEventTargetCharTitle, AnyTitle, or CharTargetExcludingMaybeEventTarget.
--- Error 2 of 4 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\has_landed_title] (Line 151, column 5):
"crusade_target" is not a valid AnyTitle, Province, MaybeEventTargetProvTitle, or No.
--- Error 3 of 4 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\allow\holder_scope\is_friend] (Line 154, column 5):
"crusade_target_char" is not a valid OnlyCharTarget or Liege.
--- Error 4 of 4 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\reverse_remove_opinion\who] (Line 267, column 6):
"crusade_beneficiary" is not a valid MaybeEventTargetCharProvTitle, OpinionClauseDefinedTypes, or CharTargetExcludingMaybeEventTarget.

In response to the last report, these work wherever any title/character scope is supported, including 'export_to_variable', 'save_persistent_event_target' and of course all known triggers and effects, hence my suggestion then to add them to the system implemented by you a while ago as a response to this report.

These are supported wherever a title RHS is supported:
crusade_target
crusade_target_title

These are supported wherever a character RHS is supported:
crusade_target_char
crusade_beneficiary

To be clear, there are in-game limitations, but Validator obviously can't check those (a crusade needs to be in preparation, for example).

Code:
At <mod>\events\HF_warrior_lodge_mission_events.txt [character_event\immediate\random_list\20\trigger\any_independent_ruler\any_realm_title\location\OR] (Line 280, column 9):
The right sides of a "can_land_path_to" or "can_naval_path_to" clause may not be identical.
There were 2 duplicates.
    [I6465|L281|C10]: can_naval_path_to = {   target = "event_target:home_capital"  distance = 1000 }
    [I6550|L282|C10]: can_land_path_to = {   target = "event_target:home_capital"  distance = 1000 }

These are not duplicates. Script below, tested to work properly in-game:

Code:
location = {
    OR = {
        can_naval_path_to = { target = event_target:home_capital distance < 1000 }
        can_land_path_to = { target = event_target:home_capital distance < 1000 }
    }
}
 
In response to the last report, these work wherever any title/character scope is supported, including 'export_to_variable', 'save_persistent_event_target' and of course all known triggers and effects, hence my suggestion then to add them to the system implemented by you a while ago as a response to this report.
Char scopes are easy as we can just add them to CharTargetExcludingMaybeEventTarget which things use directly or indirectly. Title is tricker because we don't have such a thing as TitleThingsWithoutThis until the upcoming update. So there will need to be manual conversion from AnyTitle to either TitleThingsWithoutThis or TitleThings (depending on THIS stuff). So this will be a manual process of hunting things down.
 
Char scopes are easy as we can just add them to CharTargetExcludingMaybeEventTarget which things use directly or indirectly. Title is tricker because we don't have such a thing as TitleThingsWithoutThis until the upcoming update. So there will need to be manual conversion from AnyTitle to either TitleThingsWithoutThis or TitleThings (depending on THIS stuff). So this will be a manual process of hunting things down.

I'll do thorough testing sometime. Thanks for adding it!

Code:
--- Error 1 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\player_heir\export_to_variable\who] (Line 313, column 7):
"real_father_even_if_dead" is not a valid MaybeEventTargetCharProvTitle, RhsFancyScopeOptionToChar, RhsFancyScopeOptionToProv, or RhsFancyScopeOptionToTitle.
--- Error 2 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\player_heir\export_to_variable\who] (Line 319, column 7):
"real_father" is not a valid MaybeEventTargetCharProvTitle, RhsFancyScopeOptionToChar, RhsFancyScopeOptionToProv, or RhsFancyScopeOptionToTitle.
--- Error 3 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\player_heir\export_to_variable\who] (Line 325, column 7):
"father_even_if_dead" is not a valid MaybeEventTargetCharProvTitle, RhsFancyScopeOptionToChar, RhsFancyScopeOptionToProv, or RhsFancyScopeOptionToTitle.
--- Error 4 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\player_heir\set_father] (Line 301, column 6):
"real_father" is not a valid OnlyCharTarget or 0.
--- Error 5 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\player_heir\set_father] (Line 302, column 6):
"real_father_even_if_dead" is not a valid OnlyCharTarget or 0.
--- Error 6 of 6 ---
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\player_heir\set_father] (Line 304, column 6):
"father_even_if_dead" is not a valid OnlyCharTarget or 0.

Tested to work.

Code:
At <mod>\events\LT_wonder_flavor_events.txt [character_event\option\wealth] (Line 839, column 3):
"local_money_left" is not a valid MaybeEventTargetCharTitle, CharTargetExcludingMaybeEventTarget, AnyTitle, Double, or VariableName.

Vanilla event, modified by CleanSlate, script snippet provided below. Tested to work. Vanilla uses regular, non'-local_', variable names, which raise no complaints in The Validator.

Code:
immediate = {
	export_to_variable = {
		which = local_money_left
		value = stewardship
		who = event_target:emissary
	}
}

option = {
	name = EVTOPTA_LT_20020
	wealth = local_money_left
}

Code:
Beginning validation...
Beginning Laws validation...

ec) EXCEPTION CONTEXT
ec) Validation Task: Laws
Validation Key: Laws
Validation Type: Audax.Validator.GroupValidator
ec) Starting Base Context Validation  {DeJureDecisionCommandFromFromNone} constraint [DeJureDecisionCommandFromFromNone] @ <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect] (Line 161, column 3)
ec) InContextValidation {DeJureDecisionCommandFromFromNone} constraint [DeJureDecisionCommandFromFromNone] @ <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect] (Line 161, column 3)
ec) InContextValidation {CharCommand} constraint [CharCommand] @ <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope] (Line 164, column 4)
ec) Starting Base Context Validation  {CharTrigger} constraint [CharTrigger] @ <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random\additive_opinion_modifier] (Line 170, column 6)
ec) WeakMatch {CharTrigger} constraint [CharTrigger] @ <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random\additive_opinion_modifier] (Line 170, column 6)



ERROR
System.NullReferenceException: Object reference not set to an instance of an object.
   at Audax.Validator.ContextValidatorSystem.Suggestion.CalculateMessage()
   at Audax.Validator.ContextValidatorSystem.Suggestion..ctor(Context c, ElementNode node, ContextValidator validator, ValidationStatus status, IList`1 weakMatches)
   at Audax.Validator.ContextValidatorSystem.Suggestion.Report(Context c, ElementNode node, ContextValidator validator, ValidationStatus status, IList`1 weakMatches)
   at Audax.Validator.ContextValidatorSystem.ContextValidator.TryWeakMatchUnaccounted(ElementNode node, ValidationStatus status, NodeFlags flags, Boolean isConditional, Boolean pushFrame, Boolean assumesParentScope)
   at Audax.Validator.ContextValidatorSystem.ContextValidator.Validate(ElementNode node, NodeFlags flags, Boolean isOrClause, Boolean nestedOrIsCool, Boolean pushFrame)
   at Audax.Validator.ContextValidatorSystem.ContextValidatorInfo.Validate(String key, ElementNode node, NodeFlags flags, Boolean isOrClause, Boolean nestedOrIsCool)
   at Audax.Validator.ContextValidatorSystem.ContextValidatorConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.InheritanceConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ComplexConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.PlaceholderConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ChildConstraintSystem.ChildConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.InheritanceConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ComplexConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.ContextValidatorSystem.Match.MakeMatches(ElementNode node, NodeFlags flags, Boolean notAndClause, IList`1 elementsToConsider)
   at Audax.Validator.ContextValidatorSystem.ContextValidator.ValidateInContext(ElementNode node, ValidationStatus status, NodeFlags flags, Boolean notAndClause, Boolean isConditional, Boolean pushFrame, Boolean nestedOrIsCool, Boolean assumesParentScope)
   at Audax.Validator.ContextValidatorSystem.ContextValidator.ValidateInSubscope(ElementNode node, ValidationStatus status, NodeFlags flags, Boolean notAndClause, ContextValidator childValidator, Boolean isConditional, Boolean pushFrame, Boolean assumesParentScope)
   at Audax.Validator.ContextValidatorSystem.ContextValidator.ValidateInContext(ElementNode node, ValidationStatus status, NodeFlags flags, Boolean notAndClause, Boolean isConditional, Boolean pushFrame, Boolean nestedOrIsCool, Boolean assumesParentScope)
   at Audax.Validator.ContextValidatorSystem.ContextValidator.Validate(ElementNode node, NodeFlags flags, Boolean isOrClause, Boolean nestedOrIsCool, Boolean pushFrame)
   at Audax.Validator.ContextValidatorSystem.ContextValidatorInfo.Validate(String key, ElementNode node, NodeFlags flags, Boolean isOrClause, Boolean nestedOrIsCool)
   at Audax.Validator.ContextValidatorSystem.ContextValidatorConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ComplexConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.PlaceholderConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ChildConstraintSystem.ChildConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeExtension.NodeSwitcher.ValidateAsBase(ElementNode node, Constraint constraint, NodeFlags flags)
   at Audax.Validator.TypeExtension.NodeSwitcher.Worker.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeExtension.NodeSwitcher.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ComplexConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.PlaceholderConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ChildConstraintSystem.ChildConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.InheritanceConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ComplexConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.PlaceholderConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ChildConstraintSystem.ChildConstraint.Validate(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ValidateInstanceAsBase(ElementNode node, NodeFlags flags)
   at Audax.Validator.TypeCore.ComplexConstraint.ComplexConstraintWorker.ElementValidate(ElementNode node)
   at Audax.Validator.TypeCore.ComplexConstraint.ElementValidate(ElementNode node)
   at Audax.Validator.TypeExtension.DeclarativeValidatorJob.DeclarativeValidatorWorker.Validate()
   at Audax.Validator.TypeExtension.DeclarativeValidatorJob.ValidateOverride()
   at Audax.Validator.ValidatorJobBase.Validate()
   at Audax.Validator.GroupValidator.ValidateOverride()
   at Audax.Validator.ValidatorJobBase.Validate()
   at Audax.Validator.ValidatorJob.Validate()
   at Audax.Validator.GameValidator.Validate(Action onEachValidatorCompleteAction)

Validator seems to be tripping over this 'additive_opinion_modifier'-snippet, but I couldn't find the cause. I've tested it to work. Both 'this' and 'who' can be any valid character scope, including the various fancy scopes and whatnot.
Also, the 'factor'-node is not required, since it defaults to 1 if not present, which is also true for 'additive_realm_size_modifier', 'additive_power_diff_modifier' and 'additive_compared_realm_size_modifier'.

Code:
laws = {
	centralization_1 = {
		group = centralization

		<snip>

		effect = {
			holder_scope = {
				show_scope_change = no

				random = {
					chance = 1

					additive_opinion_modifier = {
						who = player_heir
						this = spouse
					}

					wealth = 10000
				}
			}
		}

		<snip>
	}
}

Code:
--- Error 1 of 3 ---
At <mod>\common\scripted_score_values\test.txt [test_score\additive_realm_size_modifier] (Line 18, column 2):
Invalid node "additive_realm_size_modifier" (value is: <a complex type>)
* called from <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random\test_score] (Line 169, column 6)
--- Error 2 of 3 ---
At <mod>\common\scripted_score_values\test.txt [test_score\additive_power_diff_modifier] (Line 13, column 2):
Invalid node "additive_power_diff_modifier" (value is: <a complex type>)
* called from <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random\test_score] (Line 169, column 6)
--- Error 3 of 3 ---
At <mod>\common\scripted_score_values\test.txt [test_score\additive_compared_realm_size_modifier] (Line 7, column 2):
Invalid node "additive_compared_realm_size_modifier" (value is: <a complex type>)
* called from <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random\test_score] (Line 169, column 6)

These all work inside scripted score values.

--------------------------------------------------------

Validator should no longer accept the 'title'-trigger inside province trigger scopes, as I've tested it to not work there.
 
Hi Jamie, been a while. Hope you're doing alright. I've got a batch of new stuff I found since last time, so I hope you're still willing to have a look at it, after such a long time. Thanks so much!

I'll do thorough testing sometime. Thanks for adding it!

Haven't been able to find anything wrong here, though I've not done an exhaustive search, or anything even remotely approaching one.

Code:
At <mod>\events\base_plot_events.txt [letter_event\option\if\limit\character] (Line 4291, column 14):
"supported_claimant" is not a valid MaybeEventTargetCharTitle, OpinionClauseDefinedTypes, CharTargetExcludingMaybeEventTarget, Bool, AnyTitle, or NewChar.
[code]

Tested to work, valid right-hand sides for character triggers, found in CleanSlate.

[code]
At <mod>\events\base_plot_events.txt [letter_event\option\FROM\usurp_title_plus_barony_if_unlanded] (Line 2740, column 4):
"plot_target_title" is not a valid AnyTitle, MaybeEventTargetTitle, or UsurpClauseTitle.

Tested to work, valid right-hand sides for title triggers and effects, found in CleanSlate.

Code:
--- Error 1 of 2 ---
At <mod>\events\HF_warrior_lodge_mission_events.txt [character_event\trigger\thirdparty_title_scope] (Line 1630, column 3):
Invalid node "thirdparty_title_scope" in scope CharTrigger (value is: <a complex type>)
--- Error 2 of 2 ---
At <mod>\events\HF_warrior_lodge_mission_events.txt [character_event\immediate\thirdparty_title_scope] (Line 1638, column 3):
Invalid node "thirdparty_title_scope" in scope CharCommand (value is: <a complex type>)

Somewhat tricky of a node, since it's related to the messy war scopes, but this is essentially always available wherever a war scope is, which includes the on_war_ on_actions.
Tested to work in both trigger and effect clauses. Might be easiest to always allow these and leave it up to modders to use them properly.
Found in CleanSlate.

Code:
At <mod>\common\laws\demesne_laws.txt [laws\centralization_1\effect\holder_scope\random\additive_realm_size_modifier] (Line 181, column 6):
The required "who" entry was not found.

This one doesn't require a 'who'-node, since it's not relative to any other character.

Code:
At <mod>\common\trade_routes\10_timbuktu_trade.txt [timbuktu_trade\start\1986] (Line 35, column 3):
"1986" is not a valid LandProvince.

Doesn't appear to be a problem in-game.

Code:
At <mod>\common\scripted_effects\99_CK2Plus_scripted_effects.txt [set_mercenaries_to_ar_culture_effect\any_title\holder_scope\reverse_religion] (Line 4270, column 4):
"PREV" is not a valid MaybeEventTargetCharProv, CharTargetExcludingMaybeEventTarget, Location, or CapitalScope.
MaybeEventTargetCharProv: cannot be because ThisChar: cannot be because PREV points to TitleCommand.
		However, a Char was expected.
	ThisProv: cannot be because PREV points to TitleCommand.
		However, a Prov was expected.
* called from <mod>\events\CK2Plus_custom_setup_events.txt [character_event\immediate\if\set_mercenaries_to_ar_culture_effect] (Line 366, column 4)

Religion can be set on titles. For mercenary companies, for example, determines the religion for randomly generated captain when current one dies.
As such, reverse_religion can take a relative title scope (PREV/FROM, etc.), as well as title IDs.

Code:
At <mod>\common\objectives\000_CK2Plus_factions.txt [faction_pretender\membership\trigger\trigger_if\limit\is_primary_heir] (Line 3909, column 15):
"FROMFROM" is not a valid Bool or OnlyCharTarget.
OnlyCharTarget: cannot be because MaybeEventTargetChar: cannot be because FROMFROM points to Title.
		However, a Char was expected.
		This is not a valid place to use FROM.

Tested to work.

Code:
At <mod>\events\base_mongol_events.txt [character_event\immediate\set_title_landless] (Line 7398, column 3):
Invalid node "set_title_landless" in scope CharCommand (value is: <a complex type>)

Tested to work in all command scopes, so long as the 'title'-field points to a title (relative scope, event target, ID, etc.)

Code:
At <mod>\events\000_CK2Plus_realm_events.txt [character_event\option\destroy_landed_title] (Line 620, column 3):
"primary_title" is not a valid MaybeEventTargetCharTitle or AnyTitle.

Tested to work.

Code:
--- Error 1 of 2 ---
At <mod>\events\base_job_chancellor.txt [character_event\mean_time_to_happen\mult_modifier\owns] (Line 2081, column 4):
"location" is not a valid MaybeEventTargetProv or LandProvince.
--- Error 2 of 2 ---
At <mod>\events\CK2Plus_imperial2_events.txt [character_event\mean_time_to_happen\mult_modifier\plot_target_char\NOT\at_location] (Line 1699, column 13):
"capital_scope" is not a valid MaybeEventTargetCharProvTitle, Province, "0", AnyTitle, or CharTargetExcludingMaybeEventTarget.

'location' and 'capital_scope' work for both 'owns' and 'at_location' triggers.

Code:
At <mod>\events\CK2Plus_misc_events.txt [character_event\option\ai_chance\mult_modifier\religion_head\ROOT\likes_better_than\than] (Line 2771, column 40):
"liege" is not a valid MaybeEventTargetChar or PrefixedCharId.

This field supports all the usual suspects ('fancy' scopes and such) that all other opinion triggers support.

Code:
At <mod>\events\CK2Plus_plot_events.txt [character_event\trigger\NOT\plot_is_known_by] (Line 7964, column 11):
"liege" is not a valid MaybeEventTargetChar or PrefixedCharId.

Tested many of the 'fancy' scopes to work here too.

Code:
--- Error 1 of 2 ---
At <mod>\events\CK2Plus_specific_realm_events.txt [character_event\immediate\while\spawn_unit\home] (Line 1785, column 5):
"c_gowrie" is not a valid MaybeEventTargetCharProv, LandProvince, "capital_scope", or "location".
--- Error 2 of 2 ---
At <mod>\events\CK2Plus_specific_realm_events.txt [character_event\option\spawn_unit\province] (Line 1342, column 4):
"c_ochrid" is not a valid MaybeEventTargetCharProvTitle, Province, AnyTitle, "capital_scope", or "location".

Tested fields that commonly take provinces to also take county titles.

Code:
At <mod>\events\CK2Plus_specific_realm_events.txt [character_event\immediate\while\spawn_unit\match_character] (Line 1788, column 5):
"k_norway" is not a valid MaybeEventTargetChar or CharTargetExcludingMaybeEventTarget.

Tested this field to take title IDs. Game uses its holder.

Code:
--- Error 1 of 1 ---
At <mod>\events\LT_wonder_flavor_events.txt [character_event\option\wealth] (Line 839, column 3):
"local_money_left" is not a valid MaybeEventTargetCharTitle, CharTargetExcludingMaybeEventTarget, AnyTitle, Double, or VariableName.

Tested to work, found in CleanSlate. Here's one of the relevant events:

Code:
# Fallback for if the emissary dies
character_event = {
	id = LT.20011
	title = evt_TITLE_LT_20011
	desc = EVTDESC_LT_20011
	picture = GFX_evt_emissary
	border = GFX_event_normal_frame_religion
	portrait = event_target:emissary

	is_triggered_only = yes
	hide_new = yes

	immediate = {
		export_to_variable = {
			which = local_money_left
			value = stewardship
			who = event_target:emissary
		}
	}

	option = {
		name = EVTOPTA_LT_20011

		wealth = local_money_left
		clr_character_flag = looking_for_a_book
		clear_flags_with_prefix = book_theme_
		clear_flags_with_prefix = book_author_
	}
}

--------------------------------------------

Validator should no longer accept the 'title'-trigger inside province trigger scopes, as I've tested it to not work there.
Validator currently doesn't complain about .mod files having both 'path = ' and 'archive = ' lines, but this causes problems in-game.
'controlled_by' (trigger) and 'controller' (scope) are not valid in county titles, only barony titles and provinces
'capital_holding'-scope does not work in province scope
'is_patrician'-trigger should no longer be accepted in title scope
 
This one doesn't require a 'who'-node, since it's not relative to any other character.
Optional or banned?

Doesn't appear to be a problem in-game.
I assume this is sea province? (so that any province works?)

Tested to work.
i.e. FROM etc here can point to title, or one can use title ids?

Validator currently doesn't complain about .mod files having both 'path = ' and 'archive = ' lines, but this causes problems in-game.
IIRC validator doesn't support zip currently - chance of people throwing in path temporarily to test mods and stuff? (in which case maybe this becomes annoying to people)
'controlled_by' (trigger) and 'controller' (scope) are not valid in county titles, only barony titles and provinces
Suspect this wouldn't be very fixable as currently we just have "title" scope without distinction between county and barony.

May be more problems/questions when I actually get implementing this
 
Optional or banned?

Banned, the game logs this as 'unknown effect'.

I assume this is sea province? (so that any province works?)

Yes, sorry for leaving that out.

i.e. FROM etc here can point to title, or one can use title ids?

Both are supported.

IIRC validator doesn't support zip currently - chance of people throwing in path temporarily to test mods and stuff? (in which case maybe this becomes annoying to people)

Validator doesn't have to support zip files, of course - modding Steam Workshop files is a bad idea. A simple warning should suffice. I'll have to check exactly what the observed issue was, since I didn't keep notes of that.

Suspect this wouldn't be very fixable as currently we just have "title" scope without distinction between county and barony.

No big deal, I've never actually seen this used in any mod.
 
Using FROM scopes in the obedient bloc in societies (e.g Assassins) is flagged as invalid.

But ROOT = { NOT = { is_foe = FROM } } for example does disable obedience to the Grandmaster if both characters are rivals.
 
For religions, features is listed as an invalid node, but placing something like features = { religion_x } under a religion's section does work.

for example, placing features = { religion_animistic } in a religion's section in 00_religions does activate that feature for that particular religion.
 
For religions, features is listed as an invalid node, but placing something like features = { religion_x } under a religion's section does work.

for example, placing features = { religion_animistic } in a religion's section in 00_religions does activate that feature for that particular religion.
To make sure we're on the same page, can you post either a mod link that shows the error, or else state that it is in vanilla? And in either case, to copy-paste the error here that Validator gives? (which you can do by clicking on the error and doing the copy shortcut operation)
 
To make sure we're on the same page, can you post either a mod link that shows the error, or else state that it is in vanilla? And in either case, to copy-paste the error here that Validator gives? (which you can do by clicking on the error and doing the copy shortcut operation)

Here's one from a mod I helped working on:

Code:
At <mod>\common\religions\00_religions.txt [christian\nonconformist\features] (Line 1554, column 1):
Invalid node "features" in scope ReligionDef (value is: <a complex type>)

Here's what the structure looks like:
Code:
christian = {
	nonconformist = {
		features = {
			religion_astrology
			religion_syncretic
			religion_gay_marriage_stub
		}
	}
}

I've got a few reports of my own, so I might as well put them here now.

First a few small tidbits.
num_of_hospitals_diff doesn't take 'who', only 'character', also takes negative integers.
I was wrong about 'capital_holding' last time, so that change should be reverted. Mea culpa, no idea what I was thinking.

Code:
At <mod>\localisation\00_CK2Plus_factions.csv [Entry\1] (Line 700, column 18):
Localization error: Invalid bracket command: "GetHumanName" in "This.GetHumanName" in "§P[This.GetHumanName]§! (§Y[This.GetBestName]§!)"

Tested to work in multiplayer.

Code:
--- Error 1 of 5 ---
At <mod>\common\laws\ze_demesne_laws.txt [laws\status_of_women_1\allow\holder_scope\difficulty] (Line 209, column 5):
"very_easy" is not a valid NonNegativeInt.
--- Error 2 of 5 ---
At <mod>\common\laws\ze_demesne_laws.txt [laws\status_of_women_1\allow\holder_scope\difficulty] (Line 210, column 5):
"easy" is not a valid NonNegativeInt.
--- Error 3 of 5 ---
At <mod>\common\laws\ze_demesne_laws.txt [laws\status_of_women_1\allow\holder_scope\difficulty] (Line 211, column 5):
"normal" is not a valid NonNegativeInt.
--- Error 4 of 5 ---
At <mod>\common\laws\ze_demesne_laws.txt [laws\status_of_women_1\allow\holder_scope\difficulty] (Line 212, column 5):
"hard" is not a valid NonNegativeInt.
--- Error 5 of 5 ---
At <mod>\common\laws\ze_demesne_laws.txt [laws\status_of_women_1\allow\holder_scope\difficulty] (Line 213, column 5):
"very_hard" is not a valid NonNegativeInt.

Also tested to work.

Code:
At <mod>\common\cb_types\china_cbs.txt [tributary_offmap_cb\on_success\defender\if\remove_tributary] (Line 696, column 5):
"suzerain" is not a valid MaybeEventTargetChar or CharTargetExcludingMaybeEventTarget.

Tested to work.

Code:
At <mod>\decisions\dynasty_decisions.txt [targeted_decisions\take_child_out_of_hiding\filter] (Line 903, column 3):
"close_relative" is not a valid FilterTarget.

Tested to work, Paradox messed up the names of these filters between AI and players.

Code:
At <mod>\common\scripted_score_values\07_sex_scores.txt [event_target_fertility_score\additive_exported_value_modifier] (Line 143, column 2):
The required "trigger" entry was not found.
* called from <mod>\common\scripted_effects\00_sex_effects.txt [unprotected_sex_effect_event_target\if\random\event_target_fertility_score] (Line 45, column 4)
* called from <mod>\events\base_feast_events.txt [character_event\option\hidden_effect\unprotected_sex_effect_event_target] (Line 4771, column 4)

No triggers are required, these work as is. Here's the script:

Code:
additive_exported_value_modifier = {
	factor = 25 # Half of average fertility
	max = 50
	min = 0
	value = fertility
	who = event_target:sex_partner
}

Code:
At <mod>\common\scripted_effects\00_sex_effects.txt [unprotected_sex_effect\if\random\from_root_fertility_score] (Line 23, column 4):
Invalid use of 'from_root_fertility_score': The scope  was inferred to be Char, but this did not work.

* called from <mod>\events\wol_carousing_events.txt [character_event\option\hidden_effect\unprotected_sex_effect] (Line 1104, column 4)

Tested to work, it's definitely in character scope. Snippets from CleanSlate:

Code:
option = {
	name = EVTOPTA_WoL_4112 # Yes

	add_character_modifier = {
		name = good_times
		years = 2
	}

	hidden_effect = {
		unprotected_sex_effect = yes
	}

	FROM = {
		character_event = { id = WoL.4113 }
	}
}

unprotected_sex_effect = {
	random = {
		chance = 50
		venereal_disease_effect = yes
	}

	if = {
		limit = {
			fertility > 0
			FROM = { fertility > 0 }
		}

		random = {
			chance = 0
			from_root_fertility_score = yes

			impregnate_effect = yes
		}
	}
}

from_root_fertility_score = {
	additive_exported_value_modifier = {
		factor = 25 # Half of average fertility
		max = 50
		min = 0
		value = fertility
		who = ROOT
		localisation_key = ROOT_fertility
	}

	additive_exported_value_modifier = {
		factor = 25 # Half of average fertility
		max = 50
		min = 0
		value = fertility
		who = FROM
		localisation_key = FROM_fertility
	}

	mult_modifier = {
		factor = 0.8
		ai = yes
		FROM = { ai = yes }
		num_of_children > 1
	}

	mult_modifier = {
		factor = 0.8
		ai = yes
		FROM = { ai = yes }
		num_of_children > 2
	}

	mult_modifier = {
		factor = 0.8
		ai = yes
		FROM = { ai = yes }
		num_of_children > 3
	}

	mult_modifier = {
		factor = 0.8
		ai = yes
		FROM = { ai = yes }
		num_of_children > 4
	}

	mult_modifier = {
		factor = 0.8
		ai = yes
		FROM = { ai = yes }
		num_of_children > 5
	}

	mult_modifier = {
		factor = 0.8
		ai = yes
		FROM = { ai = yes }
		num_of_children > 6
	}

	mult_modifier = {
		factor = 0.8

		ai = yes

		FROM = {
			ai = yes
			num_of_children > 1
		}
	}

	mult_modifier = {
		factor = 0.8

		ai = yes

		FROM = {
			ai = yes
			num_of_children > 2
		}
	}

	mult_modifier = {
		factor = 0.8

		ai = yes

		FROM = {
			ai = yes
			num_of_children > 3
		}
	}

	mult_modifier = {
		factor = 0.8

		ai = yes

		FROM = {
			ai = yes
			num_of_children > 4
		}
	}

	mult_modifier = {
		factor = 0.8

		ai = yes

		FROM = {
			ai = yes
			num_of_children > 5
		}
	}

	mult_modifier = {
		factor = 0.8

		ai = yes

		FROM = {
			ai = yes
			num_of_children > 6
		}
	}
}

Code:
Incorrect Literal
At <mod>\events\base_mongol_events.txt [character_event\immediate\set_title_landless\title] (Line 7459, column 4):
Expected value: THIS
Actual value: e_mongol_empire

Accepts title IDs in tests.

Code:
At <mod>\history\technology\africa.txt [technology\titles\c_wadai] (Line 376, column 3):
"c_wadai" is not a valid DukeTitle.

Tested to work. The game complains about it in error.log, but it works without any issues in-game.

Code:
At <mod>\localisation\00_subscription.csv [Entry\1] (Line 22, column 27):
Localization error: Invalid dollar sign command: "LEADER_TEXT" in "As you may know, Crusader Kings II features a wide variety of DLC. Have you already tried them all?\n\nThis is a fan favourite:\n\n$LEADER_TEXT$"

New localisation command, used in the game's subscription ads.

Code:
--- Error 1 of 1 ---
At <mod>\common\cb_types\99_CK2Plus_cb_types.txt [holy_war\on_add_title\attacker\else_if\limit\NOR\PREV\any_de_jure_vassal_title\is_holy_site] (Line 194, column 37):
"attacker" is not a valid MaybeEventTargetCharProvReligionSociety, Religion, CharacterId, PrefixedCharId, or SocietyThingsWithoutThis.

Tested to work, 'defender' should work too. Snippet below:

Code:
can_use_gui = {
	ROOT = {
		trigger_if = {
			limit = {
				religion = buddhist
				NOT = { culture_group = tibetan_group }
			}

			piety >= 250
		}
		trigger_else_if = {
			limit = {
				NOR = {
					FROMFROM = {
						any_de_jure_vassal_title = { is_holy_site = ROOT }
					}
				}
			}
		}
	}
}

Code:
At <mod>\common\objectives\000_CK2Plus_plots.txt [plot_overthrow_empire\success\FROM\has_landed_title] (Line 6109, column 4):
"liege" is not a valid TitleThingsWithoutThis, Province, MaybeEventTargetProvTitle, or No.

Tested to support character scopes, takes character's primary title.

Code:
--- Error 1 of 2 ---
At <mod>\events\CK2Plus_succession_law_events.txt [character_event\immediate\if\if\primary_title\heir_under_primogeniture_law] (Line 862, column 6):
Invalid node "heir_under_primogeniture_law" in scope TitleCommand (value is: <a complex type>)
--- Error 2 of 2 ---
At <mod>\events\CK2Plus_succession_law_events.txt [character_event\immediate\if\if\primary_title\heir_under_seniority_law] (Line 918, column 6):
Invalid node "heir_under_seniority_law" in scope TitleCommand (value is: <a complex type>)

Tested to work properly in title scope, not in character scope. 'heir_under_ultimogeniture_law' should work similarly.
 
Last edited:
Here's one from a mod I helped working on:
Can these features be any string or do they come from religion_features or something like that?

I was wrong about 'capital_holding' last time, so that change should be reverted. Mea culpa, no idea what I was thinking.
Ok so capital_holding does work in province scope (I think that was the last mention of capital_holding at least)
Tested to work, Paradox messed up the names of these filters between AI and players.
Ok so it should be close_relative instead of close_relatives that is allowed?
Tested to work. The game complains about it in error.log, but it works without any issues in-game.
Is this any title works, or just duke and count titles?

Tested to work, 'defender' should work too. Snippet below:
Am I reading wrong or does the example not mention attacker or defender?
 
Last edited:
Many thanks, once again!

Can these features be any string or do they come from religion_features or something like that?

They must come from common\religion_features.

Ok so capital_holding does work in province scope (I think that was the last mention of capital_holding at least)

Correct, the false positives are gone again.

Ok so it should be close_relative instead of close_relatives that is allowed?

Both are allowed, 'close_relative' is for 'filter', 'close_relatives' for 'ai_target_filter'.

Is this any title works, or just duke and count titles?

Hadn't tested this prior, but I can now confirm the game is only receptive to count and duke titles in technology history.

Am I reading wrong or does the example not mention attacker or defender?

You're correct, I copied and pasted the wrong snippet. Here's what I should have included:

Code:
on_add_title = {
	attacker = {
		show_scope_change = no

		if = {
			limit = {
				religion = buddhist
				NOT = { culture_group = tibetan_group }
			}

			piety = -250
		}
		else_if = {
			limit = {
				controls_religion = no

				NOR = {
					has_opinion_modifier = {
						name = holy_war_sanction
						who = defender
					}

					PREV = {
						any_de_jure_vassal_title = { is_holy_site = attacker }
					}
				}
			}
		}
	}
}