That ID should have had only one 0, to fit in with the rest of the event ID sequence.
Vanilla decision (thirdparty_title exists in executable):--- Error 1 of 1 ---
At <mod>\decisions\faction_decisions.txt [plot_decisions\faction_claimant_ultimatum\ai_will_do\modifier[5]\liege\any_war\OR\AND[1]] (Line 1125, Column 8):
Invalid node "thirdparty_title" in scope WarTrigger (value is: <a complex type>)
faction_claimant_ultimatum = {
is_high_prio = yes
potential = {
leads_faction = faction_claimant
OR = {
NOT = { has_character_flag = faction_claimant_ultimatum_taken }
had_character_flag = { flag = faction_claimant_ultimatum_taken days = 7 }
}
liege = {
in_revolt = no
liege = {
in_revolt = no
liege = {
in_revolt = no
}
}
}
}
allow = {
war = no
prisoner = no
liege = {
NOT = { war_with = ROOT }
NOT = { reverse_has_truce = ROOT }
}
capital_holding = {
controller = {
character = ROOT
}
}
}
effect = {
liege = {
letter_event = { id = 8036 days = 3 tooltip = "EVTTOOLTIP8005" }
}
if = {
limit = {
supported_claimant = {
NOT = { character = ROOT }
OR = {
NOT = { same_liege = ROOT }
NOT = { in_faction = faction_claimant }
NOT = { supported_claimant = { character = PREV } }
}
}
}
supported_claimant = {
letter_event = { id = 8037 days = 1 }
}
}
hidden_tooltip = {
set_character_flag = faction_claimant_ultimatum_taken
}
}
revoke_allowed = {
always = no
}
ai_will_do = {
factor = 1
modifier = {
factor = 0
NOT = {
faction_power =
{
faction = faction_claimant
power = 0.5
}
}
}
modifier = {
factor = 0
faction_claimant = {
has_law = succ_feudal_elective
}
liege = {
ROOT = {
supported_claimant = {
religion = PREVPREV
culture = PREVPREV
}
}
}
}
modifier = {
factor = 0
liege = {
primary_title = {
ROOT = {
faction_claimant = {
title = PREVPREV
}
}
}
}
NOT = {
faction_power =
{
faction = faction_claimant
power = 0.75
}
}
}
modifier = {
factor = 0.5 # Slow it down a bit
}
modifier = {
factor = 0
liege = {
any_war = {
OR = {
AND = {
defender = { character = PREV }
NOT = { using_cb = depose_liege }
NOT = { using_cb = overthrow_ruler }
NOT = { using_cb = overthrow_ruler_no_calls }
NOT = { using_cb = succession_on_liege }
NOT = { using_cb = other_succession_on_liege }
[COLOR="#FF0000"]thirdparty_title[/COLOR] = {
ROOT = {
supported_claimant_title = {
war_title = PREVPREV
}
}
OR = {
is_conquered = no
conquest_culture = ROOT
}
}
attacker = {
OR = {
in_revolt = no
NOT = {
liege_before_war = {
character = PREVPREVPREV
}
}
}
}
}
AND = {
attacker = {
character = PREV
ROOT = {
supported_claimant = {
religion = PREVPREV
culture = PREVPREV
}
}
}
OR = {
using_cb = religious
using_cb = crusade
using_cb = muslim_invasion
using_cb = invasion
using_cb = tribal_invasion
using_cb = claim_all
using_cb = claim
}
}
}
}
}
}
}
}
Vanilla decision (thirdparty_title exists in executable):
Code:faction_claimant_ultimatum = { is_high_prio = yes potential = { leads_faction = faction_claimant OR = { NOT = { has_character_flag = faction_claimant_ultimatum_taken } had_character_flag = { flag = faction_claimant_ultimatum_taken days = 7 } } liege = { in_revolt = no liege = { in_revolt = no liege = { in_revolt = no } } } } allow = { war = no prisoner = no liege = { NOT = { war_with = ROOT } NOT = { reverse_has_truce = ROOT } } capital_holding = { controller = { character = ROOT } } } effect = { liege = { letter_event = { id = 8036 days = 3 tooltip = "EVTTOOLTIP8005" } } if = { limit = { supported_claimant = { NOT = { character = ROOT } OR = { NOT = { same_liege = ROOT } NOT = { in_faction = faction_claimant } NOT = { supported_claimant = { character = PREV } } } } } supported_claimant = { letter_event = { id = 8037 days = 1 } } } hidden_tooltip = { set_character_flag = faction_claimant_ultimatum_taken } } revoke_allowed = { always = no } ai_will_do = { factor = 1 modifier = { factor = 0 NOT = { faction_power = { faction = faction_claimant power = 0.5 } } } modifier = { factor = 0 faction_claimant = { has_law = succ_feudal_elective } liege = { ROOT = { supported_claimant = { religion = PREVPREV culture = PREVPREV } } } } modifier = { factor = 0 liege = { primary_title = { ROOT = { faction_claimant = { title = PREVPREV } } } } NOT = { faction_power = { faction = faction_claimant power = 0.75 } } } modifier = { factor = 0.5 # Slow it down a bit } modifier = { factor = 0 liege = { any_war = { OR = { AND = { defender = { character = PREV } NOT = { using_cb = depose_liege } NOT = { using_cb = overthrow_ruler } NOT = { using_cb = overthrow_ruler_no_calls } NOT = { using_cb = succession_on_liege } NOT = { using_cb = other_succession_on_liege } [COLOR="#FF0000"]thirdparty_title[/COLOR] = { ROOT = { supported_claimant_title = { war_title = PREVPREV } } OR = { is_conquered = no conquest_culture = ROOT } } attacker = { OR = { in_revolt = no NOT = { liege_before_war = { character = PREVPREVPREV } } } } } AND = { attacker = { character = PREV ROOT = { supported_claimant = { religion = PREVPREV culture = PREVPREV } } } OR = { using_cb = religious using_cb = crusade using_cb = muslim_invasion using_cb = invasion using_cb = tribal_invasion using_cb = claim_all using_cb = claim } } } } } } } }
NOT = {
AND = {
culture_group = celtic
owner = { culture_group = germanic }
}
}
Getting a false positive on this bit of code:
That's from a province scope, so the owner line should work fine.Code:NOT = { AND = { culture_group = celtic owner = { culture_group = germanic } } }
The error I'm getting:
No direct match found for culture_group. However, other possible matches in scope CharTrigger were found.
Left: ["culture_group"] Right: [CultureGroup]
Left: ["culture_group"] Right: [ThisChar, ThisProv, or OpinionClauseDefinedTypes]
Here, have an actual false-positive though:
The scope for rep_trade_posts is a province scope, not a title scope. Title scope gives false positives such as this:
Invalid node "any_neighbor_province" in scope TitleObjectiveTrigger (value is: <a complex type>)
Unhandled Exception: System.Security.SecurityException: No access to the given key
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) [0x00000] in <filename unknown>:0
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) [0x00000] in <filename unknown>:0
at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) [0x00000] in <filename unknown>:0
at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) [0x00000] in <filename unknown>:0
at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) [0x00000] in <filename unknown>:0
at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string)
at Audax.Validator.Boot.FrameworkVersionCheck.HasRequiredVersion () [0x00000] in <filename unknown>:0
at Audax.Validator.Boot.FrameworkVersionCheck.Check40Installed () [0x00000] in <filename unknown>:0
at Audax.Validator.Boot.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Security.SecurityException: No access to the given key
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) [0x00000] in <filename unknown>:0
at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) [0x00000] in <filename unknown>:0
at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) [0x00000] in <filename unknown>:0
at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) [0x00000] in <filename unknown>:0
at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) [0x00000] in <filename unknown>:0
at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string)
at Audax.Validator.Boot.FrameworkVersionCheck.HasRequiredVersion () [0x00000] in <filename unknown>:0
at Audax.Validator.Boot.FrameworkVersionCheck.Check40Installed () [0x00000] in <filename unknown>:0
at Audax.Validator.Boot.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
Has anyone managed to get this running under Linux (via wine, mono, etc.) by any chance? I'm having no luck with wine and mono reports:
Code:Unhandled Exception: System.Security.SecurityException: No access to the given key at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) [0x00000] in <filename unknown>:0 at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) [0x00000] in <filename unknown>:0 at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) [0x00000] in <filename unknown>:0 at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) [0x00000] in <filename unknown>:0 at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) [0x00000] in <filename unknown>:0 at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name) [0x00000] in <filename unknown>:0 at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string) at Audax.Validator.Boot.FrameworkVersionCheck.HasRequiredVersion () [0x00000] in <filename unknown>:0 at Audax.Validator.Boot.FrameworkVersionCheck.Check40Installed () [0x00000] in <filename unknown>:0 at Audax.Validator.Boot.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.Security.SecurityException: No access to the given key at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir, Boolean is_volatile) [0x00000] in <filename unknown>:0 at Microsoft.Win32.KeyHandler..ctor (Microsoft.Win32.RegistryKey rkey, System.String basedir) [0x00000] in <filename unknown>:0 at Microsoft.Win32.KeyHandler.Lookup (Microsoft.Win32.RegistryKey rkey, Boolean createNonExisting) [0x00000] in <filename unknown>:0 at Microsoft.Win32.UnixRegistryApi.OpenSubKey (Microsoft.Win32.RegistryKey rkey, System.String keyname, Boolean writable) [0x00000] in <filename unknown>:0 at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name, Boolean writable) [0x00000] in <filename unknown>:0 at Microsoft.Win32.RegistryKey.OpenSubKey (System.String name) [0x00000] in <filename unknown>:0 at (wrapper remoting-invoke-with-check) Microsoft.Win32.RegistryKey:OpenSubKey (string) at Audax.Validator.Boot.FrameworkVersionCheck.HasRequiredVersion () [0x00000] in <filename unknown>:0 at Audax.Validator.Boot.FrameworkVersionCheck.Check40Installed () [0x00000] in <filename unknown>:0 at Audax.Validator.Boot.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
Has anyone managed to get this running under Linux (via wine, mono, etc.) by any chance? I'm having no luck with wine and mono reports:
Hey Jamie, it's been a long time since I gave you some decent feedback, despite your tool being a lifesaver. Sorry about that! Here are some confirmed false positives:
- spouse_even_if_dead is a valid character-to-character scope change similar to father_even_if_dead, but it of course scopes to the spouse instead.
- dynasty = [#dynasty_id] doesn't work as a trigger, but it does work as a command. It will change the scoped character to the dynasty which corresponds to that numerical id.
- set_name = "[new name]" is a valid command inside a title scope. It will rename that title to the new name inside the quotes.
- add_weak_claim = [title_tag/FROM/PREV/ROOT etc] is a valid command inside a character scope. It will add a weak claim.
- add_claim = [title_tag/FROM/PREV/ROOT etc]: same as above, for strong claims.
- fertility = [0.0-1.0] will work as a character history command. It will also work inside a date clause, but right now the Validator rejects it when it's inside one.
- real_father = [char_id] is a valid character history command. It specifies the real father, when the kid is secretly a bastard.
- cuckoo_impregnate = [FROM/PREV/ROOT etc] is a valid command inside a character scope. It works the same as impregnate, but this will be the real father, while everybody think the father is the scoped woman's husband.
- attacker is a valid war-to-character scope change. It scopes to the main attacker in the war.
- defender: same as above, with the main defender.
- add_betrothal = [FROM/PREV/ROOT etc] and break_betrothal = [FROM/PREV/ROOT etc] are both valid commands inside a character scope.
- location is a valid siege-to-province scope change.
- at_sea = [yes/no] is a valid trigger inside a character scope.
- min_age = [age] and max_age = [age] are both valid arguments inside a create_character command (and any variations like create_random_soldier).
- graphical_culture = [FROM/PREV/ROOT etc] is a valid trigger inside a character scope. It will check if the referenced character has the same graphical culture as the scoped character.
- using_cb = [casus_belli_tag] is a valid trigger inside a war scope.
If you need any more info on any of these please ask. Thanks again for your great work!