It appears my problem was self-created (an empty <mod>localisation/text1.csv I'd made during the height of Hurricane Sandy, before my laptop battery died.)
It appears my problem was self-created (an empty <mod>localisation/text1.csv I'd made during the height of Hurricane Sandy, before my laptop battery died.)
The one to disable errors for empty provinces seems to be working.
The age things should look like this, right? (With values changed):
# Sets the minimum age of marriage
(SetVar CharacterHistory.MinAgeOfMarriage) = 0
# Sets the minimum age of being a parent
(SetVar CharacterHistory.MinAgeOfParent) = 0
# Sets the minimum age of being a guardian
(SetVar CharacterHistory.MinAgeOfGuardian) = 16
# Sets the maximum age of someone needing a guardian
(SetVar CharacterHistory.MaxAgeNeedingGuardian) = 15
# Sets the maximum age of someone
(SetVar CharacterHistory.MaxAge) = 115
This is in the Crusade CB, the relevant block is:--- Error 1 of 1 ---
At <mod>\common\cb_types\00_cb_types.txt [crusade\on_success_title\if[2]\most_participating_attacker\if\if\limit\NOT\culture] (Line 2365, Column 16):
"PREV" is not a valid Culture, ThisChar, or ThisProv.
on_success_title = { #<- PREV for statement where error is reported
if = {
limit = {
has_holder = yes
holder_scope = {
religion = ROOT
}
}
holder_scope = {
gain_settlements_under_title = {
title = PREV
enemy = FROM
is_crusade = yes # Even if the title holder is not participating in the war, gain holdings occupied by all Crusade participants
}
}
}
if = {
limit = {
OR = {
has_holder = no
NOT = {
holder_scope = {
religion = ROOT
}
}
}
}
most_participating_attacker = {
gain_settlements_under_title = {
title = PREV
enemy = FROM
}
if = {
limit = {
primary_title = { is_primary_type_title = no } # Mercs, the Pope, Holy Orders, etc
PREV = { has_holder = no }
OR = {
NOT = { character = ROOT }
independent = yes
liege = {
tier = EMPEROR
}
}
}
usurp_title = PREV
if = {
limit = {
NOT = { culture = PREV } #<- Line where error is reported.
}
hidden_tooltip = { PREV = { conquest_culture = THIS } }
}
}
}
}
any_attacker = {
limit = { character = ROOT }
participation_scaled_prestige = 500
participation_scaled_piety = 1000
if = {
limit = {
religion_group = muslim
}
participation_scaled_decadence = -100
}
}
any_attacker = {
limit = { NOT = { character = ROOT } }
hidden_tooltip = {
participation_scaled_prestige = 500
participation_scaled_piety = 1000
if = {
limit = {
religion_group = muslim
}
participation_scaled_decadence = -100
}
}
}
ROOT = {
religion_authority = 0.2
}
FROM = {
piety = -100
}
}
The event is, in fact, called, in one of the common/decisions files.--- Error 1 of 1 ---
At <mod>\events\plot_events.txt [letter_event[12]] (Line 1577, Column 1):
The event is set to be triggered only, but it is never called.
Definitely a false positive:
The event is, in fact, called, in one of the common/decisions files.
events/rebellionadd_events.txt, line 2 ff:--- Error 1 of 1 ---
At <mod>\events\rebellionadd_events.txt [letter_event[1]] (Line 2, Column 1):
The event is set to be triggered only, but it is never called.
letter_event = {
id = 555555100
on_add = {
hidden_tooltip = {
FROM = {
any_vassal = {
letter_event = { id = 555555100 days = 1 }
}
}
}
}
--- Error 1 of 1 ---
At <mod>\events\rebellionadd_events.txt [letter_event[1]\option[1]\ai_chance\modifier[9]\opinion\who] (Line 98, Column 6):
"FROM" is not a valid OpinionClauseDefinedTypes, ThisChar, or ThisTitle.
Okay, I lied, that one doesn't seem to be anywhere (probably should be though, regent is in on the plot is the comment before the event), but this one is in common/cb_types:
events/rebellionadd_events.txt, line 2 ff:
common/cb_types/00_cb_types.txt (several places):Code:letter_event = { id = 555555100
Code:on_add = { hidden_tooltip = { FROM = { any_vassal = { letter_event = { id = 555555100 days = 1 } } } } }
555555100 does, in fact, use FROM to refer to a character (the liege against whom the vassals are rebelling); I would assume the other clauses could also use it (Shaytana wrote rebellionadd_events and added the calls to the revolt CBs before he pulled his disappearing act.) This was inspired by (but not copied from) Wiz's civil war system for CK2+, so he may know more. FROM would be the defender, FROMFROM would be the attacker (I think), not sure if you could scope to a third-party claimant from a called event.
--- Error 1 of 2 ---
At <mod>\common\cb_types\00_cb_types.txt [depose_liege\on_add\hidden_tooltip\FROM\any_vassal\letter_event] (Line 3262, Column 6):
Expected format: letter_event '= <string>'
--- Error 2 of 2 ---
At <mod>\common\cb_types\00_cb_types.txt [depose_liege\on_add\hidden_tooltip\FROM\any_vassal\letter_event] (Line 3262, Column 6):
Invalid event ID.
on_add = {
hidden_tooltip = {
FROM = {
any_vassal = {
letter_event = { id = 555555100 days = 1 } #<- line 3262
}
}
}
}
It appears events in the on_add clause of CBs breaks RC6:
Code:on_add = { hidden_tooltip = { FROM = { any_vassal = { letter_event = { id = 555555100 days = 1 } #<- line 3262 } } } }
--- Error 1 of 6 ---
At <mod>\common\triggered_modifiers.txt [character_illuyanka] (Line 5266, Column 1):
Invalid node "ai_rationality" in scope <anon> (value is: -20)
--- Error 2 of 6 ---
At <mod>\common\triggered_modifiers.txt [character_illuyanka] (Line 5266, Column 1):
Invalid node "ai_honor" in scope <anon> (value is: 50)
--- Error 3 of 6 ---
At <mod>\common\triggered_modifiers.txt [character_illuyanka] (Line 5266, Column 1):
Invalid node "ai_zeal" in scope <anon> (value is: 90)
--- Error 4 of 6 ---
At <mod>\common\triggered_modifiers.txt [character_illuyanka] (Line 5266, Column 1):
Invalid node "ai_ambition" in scope <anon> (value is: -20)
--- Error 5 of 6 ---
At <mod>\common\triggered_modifiers.txt [character_illuyanka] (Line 5266, Column 1):
Invalid node "temple_levy_size" in scope <anon> (value is: 0.5)
--- Error 6 of 6 ---
At <mod>\common\triggered_modifiers.txt [character_illuyanka] (Line 5266, Column 1):
Invalid node "city_levy_size" in scope <anon> (value is: -0.1)
# 163 Illuyanka character modifier
character_illuyanka = {
potential = {
religion = illuyanka
}
trigger = {
religion = illuyanka
}
icon = 15
global_revolt_risk = 0.02
vassal_opinion = 5
church_opinion = 15
castle_vassal_tax_modifier = -0.1
temple_vassal_tax_modifier = 0.5
build_cost_modifier = -0.3
land_morale = 0.2
land_organisation = -0.1
city_levy_size = -0.1
city_vassal_max_levy = -0.1
temple_levy_size = 0.5
temple_vassal_max_levy = 0.5
monthly_character_prestige = -0.1
monthly_character_piety = 0.4
assassinate_chance_modifier = 0.05
arrest_chance_modifier = 0.05
diplomacy = -2
martial = 2
stewardship = -1
intrigue = 2
learning = 3
fertility = -0.1
ai_ambition = -20
ai_zeal = 90
ai_honor = 50
ai_rationality = -20
}
Relevant code snippet:--- Error 1 of 1 ---
At <mod>\events\NM_prestige_effects.txt [character_event[2]\option[2]\random_potential_tribal_county\new_character\new_character[1]\spawn_unit\province] (Line 570, Column 7):
"PREVPREV" is not a valid ThisProv or LandProvince.
new_character = { #<-Scope for below province = [PREV|PREVPREV] statements.
usurp_title = PREV
set_defacto_liege = THIS
if = {
limit = { ROOT = { tier = duke } }
wealth = 250
}
if = {
limit = { ROOT = { tier = king } }
wealth = 500
}
if = {
limit = { ROOT = { tier = emperor } }
wealth = 1000
}
spawn_unit = {
province = PREV #<- No error thrown here, despite scoping to same thing as below error-throwing statement
match_character = ROOT
match_mult = 0.17
earmark = prestige_revolters
}
create_character = {
random_traits = yes
dynasty = THIS
religion = ROOT
culture = ROOT
female = no
age = 18
attributes = {
martial = 10
}
trait = skilled_tactician
}
new_character = {
set_father = PREV
spawn_unit = {
province = PREVPREV #<- Above error thrown here
owner = PREV
match_character = ROOT
match_mult = 0.17
earmark = prestige_revolters
}
}
Code:# 163 Illuyanka character modifier character_illuyanka = { potential = { religion = illuyanka } trigger = { religion = illuyanka } icon = 15 global_revolt_risk = 0.02 vassal_opinion = 5 church_opinion = 15 castle_vassal_tax_modifier = -0.1 temple_vassal_tax_modifier = 0.5 build_cost_modifier = -0.3 land_morale = 0.2 land_organisation = -0.1 city_levy_size = -0.1 city_vassal_max_levy = -0.1 temple_levy_size = 0.5 temple_vassal_max_levy = 0.5 monthly_character_prestige = -0.1 monthly_character_piety = 0.4 assassinate_chance_modifier = 0.05 arrest_chance_modifier = 0.05 diplomacy = -2 martial = 2 stewardship = -1 intrigue = 2 learning = 3 fertility = -0.1 ai_ambition = -20 ai_zeal = 90 ai_honor = 50 ai_rationality = -20 }
Numahr (developer of the SELIN sub-mod for Lux Invicta) assures me that all those modifiers work.
Righty, time for some more false positives:
"There may be no duplications of a "culture" clause. (Are you missing an 'or' or 'not' wrapper?)
There were 2 duplicates.
[I2631|L149|C8]: culture = PREVPREV
[I2658|L150|C8]: culture = PREVPREVPREV"
I'm checking that it is the same as two different entities, which makes perfect sense. Referring to other scopes should not count as a duplicate, only referring to actual different cultures.
"Invalid node "any_direct_de_jure_vassal_title" in scope TitleCommand (value is: <a complex type>)" - any_direct_de_jure_vassal_title was added in 1.07
Invalid node "distance" in scope CharTrigger (value is: <a complex type>) - Distance "scope" (similar to character_event and opinion_modifier and such) was added in 1.07
I think that's all the false positives triggered by my mod.
I believe this is a false positive.
Relevant code snippet:
Code:new_character = { #<-Scope for below province = [PREV|PREVPREV] statements. usurp_title = PREV set_defacto_liege = THIS if = { limit = { ROOT = { tier = duke } } wealth = 250 } if = { limit = { ROOT = { tier = king } } wealth = 500 } if = { limit = { ROOT = { tier = emperor } } wealth = 1000 } spawn_unit = { province = PREV #<- No error thrown here, despite scoping to same thing as below error-throwing statement match_character = ROOT match_mult = 0.17 earmark = prestige_revolters } create_character = { random_traits = yes dynasty = THIS religion = ROOT culture = ROOT female = no age = 18 attributes = { martial = 10 } trait = skilled_tactician } new_character = { set_father = PREV spawn_unit = { province = PREVPREV #<- Above error thrown here owner = PREV match_character = ROOT match_mult = 0.17 earmark = prestige_revolters } }
Edit: Didn't notice the error on province = PREV in line 550, which was listed several lines below the one for line 570's province = PREVPREV.
Regardless, the event spawns units in the usurped province, so this should be considered a false positive.
Edit 2: the same syntax is used in the Muslim decadence invasions (id 91000 in decadence_events.txt)