fix
This commit is contained in:
parent
f1a979f473
commit
ffc7462322
12 changed files with 14362 additions and 0 deletions
77
common/vassal_contracts/_vassal_contracts.info
Normal file
77
common/vassal_contracts/_vassal_contracts.info
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# Vassal obligations - how much does the vassal give to their liege. The vassal's government type determines which contract type is used.
|
||||
# Note that the values can be changed with the vassal_tax_contribution_add and vassal_levy_contribution_add modifiers.
|
||||
|
||||
vassal_contract = {
|
||||
uses_opinion_of_liege = yes/no # if set to yes, scope:opinion_of_liege can be used in the levies and tax script math (it's a value that's updated daily for player contracts, for AI it uses NVassalContract::OPINION_OF_LIEGE_UPDATE_INTERVAL. No by default for performance reasons.
|
||||
|
||||
|
||||
display_mode = tree/list/radiobutton # How are the obligations displayed in the negotiate contract UI, defualt is radiobutton
|
||||
|
||||
# Or: Modifiable contract with multiple levels:
|
||||
obligation_levels = {
|
||||
# Scopes available:
|
||||
# scope:liege the liege in the contract
|
||||
# scope:vassal the vassal in the contract
|
||||
# scope:opinion_of_liege set if uses_opinion_of_liege = yes
|
||||
# scope:tax_slot the slot they are in/are being considered to be placed in
|
||||
# scope:tax_collector the collector for the above/the potential new collector
|
||||
|
||||
vassal_obligation_low = { # choose a key for the level, it will be used for localization
|
||||
levies = 0.5 # % of levies (0..1), default 0; can also use script math
|
||||
tax = 0.2 # % of gold income (0..1), default 0; can also use script math
|
||||
min_levies = 0.1 # optional min cap on tax, can alsu use script math as levies and tax
|
||||
min_tax = 0.0 # optional min cap on levies, can alsu use script math as levies and tax
|
||||
|
||||
contribution_desc = { ... } # optional dynamic description used for the breakdown of the tax & levies contribution
|
||||
|
||||
tax_contribution_postfix = "..." # Optional postfix added to the tax contribution breakdown
|
||||
levies_contribution_postfix = "..." # Optional postfix added to the levies contribution breakdown
|
||||
|
||||
unclamped_contribution_label = "..." # Breakdown label for the unclamped tax/levies contribution
|
||||
min_contribution_label = "..." # Breakdown label for the minimum tax/levies contribution the value is clamped to
|
||||
|
||||
vassal_opinion = 0 # value for opinion of liege that's added to vassal's opinion of the liege if they have this contract
|
||||
|
||||
flag = token # Arbitrary flag, can be checked in script to see if any obligation level in the current vassal contract has a flag
|
||||
|
||||
score = int # Positive means it is better for the vassal to have, 0 means neutral, negative is better for liege
|
||||
# When changing obligations the current score and new score are compared to see if it is in favour of the vassal or liege
|
||||
# and by how much.
|
||||
# Defaults to order the contracts are defined
|
||||
|
||||
ai_liege_desire = <script value int> # How much does the liege in the contract want this option
|
||||
ai_vassal_desire = <script value int> # How much does the vassal in the contract want this option
|
||||
|
||||
liege_modifier = { <character modifiers> } # Modifiers applied to the liege in the contract
|
||||
vassal_modifier = { <character modifiers> } # Modifiers applied to the vassal in the contract
|
||||
|
||||
is_valid = { <trigger> } # Is this obligation level valid for a vassal
|
||||
|
||||
# Multiplier against the total tax/levies in a contract, be careful you do not get weird stacking beavhour if multiple are on at once
|
||||
tax_factor = <script value fixed point>
|
||||
levies_factor = <script value fixed point>
|
||||
}
|
||||
vassal_obligation_normal = {
|
||||
default = yes # mark a level as default (otherwise the first will be the default)
|
||||
parent = vassal_obligation_low # What level can lead into this and that this can lead back to
|
||||
position = { x y } # Where should this obligation icon appear when modifying contracts, multiplied with the NVassalContract::OBLIGATION_OFFSET define
|
||||
icon = "path/to/image.dds" # Icon used in UI
|
||||
...
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
### AI Note
|
||||
The liege and vassal desire are used as follows:
|
||||
When finding the most desired level to change we check if any ajdacent obligation level to the currently active ones are desired by them more. Desires less than or equal to zero are not considered and if the score is less then or equal to the desire of the current level it is also not considered.
|
||||
|
||||
The does_ai_liege_in_vassal_contract_desire_obligation_change and does_ai_vassal_in_vassal_contract_desire_obligation_change triggers check that we have any obligation level change desired at all.
|
||||
|
||||
The apply_ai_vassal_obligation_vassal_most_desired and apply_ai_vassal_obligation_liege_most_desired effects apply the desired option via a weighted random of the desire score of all valid desired levels.
|
||||
|
||||
# Text
|
||||
The following should be localised
|
||||
<contract_level>
|
||||
<obligation_level>
|
||||
<obligation_level>_short
|
||||
<obligation_level>_desc
|
||||
377
common/vassal_contracts/administrative.txt
Normal file
377
common/vassal_contracts/administrative.txt
Normal file
|
|
@ -0,0 +1,377 @@
|
|||
administrative_obligations = {
|
||||
obligation_levels = {
|
||||
default = {
|
||||
levies = {
|
||||
value = 0.3
|
||||
#multiply = governor_efficiency
|
||||
}
|
||||
|
||||
tax = {
|
||||
value = 0.1
|
||||
#multiply = governor_efficiency
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
### brief: administrative_themes
|
||||
# This is referenced in code.
|
||||
#
|
||||
administrative_themes = {
|
||||
display_mode = radiobutton
|
||||
is_shown = {
|
||||
scope:vassal.primary_title.tier >= tier_duchy
|
||||
}
|
||||
obligation_levels = {
|
||||
admin_theme_balanced = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
icon = "gfx/interface/icons/theme_administration_types/icon_balanced_administration.dds"
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
is_ai = yes
|
||||
}
|
||||
}
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 0
|
||||
|
||||
score = 0
|
||||
color = { 0.7 0.7 0.7 1.0 }
|
||||
|
||||
vassal_modifier = {
|
||||
governor_xp_gain_mult = 0.2
|
||||
}
|
||||
|
||||
flag = admin_theme_balanced
|
||||
}
|
||||
admin_theme_civilian = {
|
||||
position = { 2 0 }
|
||||
icon = "gfx/interface/icons/theme_administration_types/icon_civilian_administration.dds"
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
is_ai = yes
|
||||
OR = {
|
||||
has_trait = education_stewardship
|
||||
stewardship >= very_high_skill_rating
|
||||
AND = { # Large semi-coastal themes are good for an economic focus
|
||||
any_sub_realm_county = { count >= 2 is_coastal_county = yes }
|
||||
any_sub_realm_county = { count >= 2 is_coastal_county = no }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 2
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_has_economical_boom_personality = yes
|
||||
}
|
||||
}
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 0
|
||||
|
||||
score = 0
|
||||
color = { 0.2 0.2 0.7 1.0 }
|
||||
|
||||
tax_factor = 0.5
|
||||
|
||||
vassal_modifier = {
|
||||
development_growth_factor = 0.2
|
||||
build_gold_cost = -0.1
|
||||
build_speed = -0.1
|
||||
men_at_arms_title_limit = -2
|
||||
men_at_arms_title_cap = -2
|
||||
}
|
||||
|
||||
flag = admin_stewardship_obligation_bonus
|
||||
flag = admin_influence_construction_bonus
|
||||
flag = admin_ai_is_builder
|
||||
flag = admin_theme_civilian
|
||||
flag = obligation_high_taxes
|
||||
}
|
||||
admin_theme_military = {
|
||||
position = { 1 0 }
|
||||
icon = "gfx/interface/icons/theme_administration_types/icon_military_administration.dds"
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
is_ai = yes
|
||||
OR = {
|
||||
has_trait = education_martial
|
||||
martial >= very_high_skill_rating
|
||||
primary_title = { any_owned_title_maa_regiment = { count > 4 } }
|
||||
AND = { # Large inland themes are good for military
|
||||
any_sub_realm_county = { count >= 5 }
|
||||
any_sub_realm_county = { percent >= 0.95 is_coastal_county = no }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 2
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_has_warlike_personality = yes
|
||||
}
|
||||
}
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 0
|
||||
|
||||
score = 0
|
||||
color = { 0.7 0.2 0.2 1.0 }
|
||||
|
||||
tax_factor = -0.75
|
||||
levies_factor = 0.75
|
||||
|
||||
vassal_modifier = {
|
||||
development_growth_factor = -0.25
|
||||
monthly_county_control_growth_factor = 0.1
|
||||
maa_damage_mult = 0.1
|
||||
men_at_arms_title_cap = 2
|
||||
men_at_arms_maintenance = -0.2
|
||||
}
|
||||
|
||||
flag = admin_martial_obligation_bonus
|
||||
flag = admin_theme_military
|
||||
flag = obligation_high_levies
|
||||
}
|
||||
admin_theme_frontier = {
|
||||
position = { 0 1 }
|
||||
icon = "gfx/interface/icons/theme_administration_types/icon_frontier_administration.dds"
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
is_ai = yes
|
||||
}
|
||||
}
|
||||
add = 5
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 0
|
||||
|
||||
score = 0
|
||||
color = { 0.2 0.7 0.2 1.0 }
|
||||
|
||||
is_valid = {
|
||||
custom_tooltip = {
|
||||
text = admin_theme_frontier_valid_desc
|
||||
scope:vassal = {
|
||||
any_sub_realm_county = {
|
||||
any_neighboring_county = {
|
||||
holder = {
|
||||
NOT = { top_liege = scope:vassal.top_liege }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tax_factor = -0.4
|
||||
|
||||
vassal_modifier = {
|
||||
fort_level = 2
|
||||
defender_advantage = 6
|
||||
hostile_county_attrition = -0.3
|
||||
hostile_raid_time = 0.75
|
||||
|
||||
# Values to tweak the AI slightly in order to make them more likely to declare war
|
||||
ai_boldness = 20
|
||||
ai_rationality = -15
|
||||
}
|
||||
|
||||
flag = admin_prowess_obligation_bonus
|
||||
flag = admin_duchy_expansion_unlocked
|
||||
flag = admin_ai_is_warlike
|
||||
flag = admin_theme_frontier
|
||||
flag = admin_theme_can_raid
|
||||
}
|
||||
admin_theme_imperial = {
|
||||
position = { 1 1 }
|
||||
icon = "gfx/interface/icons/theme_administration_types/icon_imperial_administration.dds"
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
NOT = {
|
||||
any_vassal = { vassal_contract_has_flag = admin_theme_imperial }
|
||||
}
|
||||
}
|
||||
scope:vassal = {
|
||||
is_ai = yes
|
||||
culture = scope:liege.culture
|
||||
faith = top_liege.primary_title.state_faith
|
||||
}
|
||||
}
|
||||
add = 5
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:liege.house
|
||||
exists = scope:vassal.house
|
||||
scope:liege.house = scope:vassal.house
|
||||
}
|
||||
add = 1
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 0
|
||||
|
||||
score = 0
|
||||
color = { 0.7 0.0 0.7 1.0 }
|
||||
|
||||
is_valid = {
|
||||
scope:liege = {
|
||||
highest_held_title_tier = tier_empire
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = admin_theme_imperial_valid_desc
|
||||
OR = {
|
||||
scope:liege = {
|
||||
NOT = {
|
||||
any_vassal = { vassal_contract_has_flag = admin_theme_imperial }
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
scope:vassal = { vassal_contract_has_flag = admin_theme_imperial }
|
||||
scope:liege = {
|
||||
any_vassal = {
|
||||
count = 1
|
||||
vassal_contract_has_flag = admin_theme_imperial
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tax_factor = 0.1
|
||||
|
||||
liege_modifier = {
|
||||
monthly_prestige_gain_per_legitimacy_level_add = 0.5
|
||||
legitimacy_gain_mult = 0.2
|
||||
}
|
||||
|
||||
vassal_modifier = {
|
||||
monthly_prestige = 0.5
|
||||
monthly_influence = 0.25
|
||||
}
|
||||
|
||||
flag = admin_theme_imperial
|
||||
flag = admin_prestige_obligation_bonus
|
||||
flag = admin_cannot_revoke_titles_without_cause
|
||||
flag = obligation_high_taxes
|
||||
}
|
||||
admin_theme_naval = {
|
||||
position = { 2 1 }
|
||||
icon = "gfx/interface/icons/theme_administration_types/icon_naval_administration.dds"
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = { is_ai = yes }
|
||||
}
|
||||
if = {
|
||||
limit = { # Large coastal areas qualify as good naval themes
|
||||
scope:vassal = {
|
||||
any_sub_realm_county = {
|
||||
count >= 3
|
||||
is_coastal_county = yes
|
||||
}
|
||||
}
|
||||
scope:liege = { # But don't go overboard with naval themes
|
||||
any_vassal = {
|
||||
percent < 0.15
|
||||
vassal_contract_has_flag = admin_theme_naval
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 3
|
||||
}
|
||||
|
||||
if = {
|
||||
limit = { # Islands are good naval candidates
|
||||
scope:vassal = {
|
||||
any_sub_realm_county = {
|
||||
percent >= 0.95
|
||||
is_coastal_county = yes
|
||||
OR = {
|
||||
any_neighboring_county = {
|
||||
percent >= 0.95
|
||||
holder = {
|
||||
OR = {
|
||||
this = scope:vassal
|
||||
any_liege_or_above = { this = scope:vassal }
|
||||
}
|
||||
}
|
||||
}
|
||||
any_neighboring_county = { count < 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 8
|
||||
}
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 0
|
||||
|
||||
score = 0
|
||||
color = { 0.0 0.4 0.7 1.0 }
|
||||
|
||||
is_valid = {
|
||||
custom_tooltip = {
|
||||
text = admin_theme_naval_valid_desc
|
||||
scope:vassal = {
|
||||
any_sub_realm_county = {
|
||||
is_coastal_county = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tax_factor = -0.2
|
||||
|
||||
liege_modifier = {
|
||||
embarkation_cost_mult = -0.1
|
||||
naval_movement_speed_mult = 0.1
|
||||
}
|
||||
|
||||
vassal_modifier = {
|
||||
embarkation_cost_mult = -0.5
|
||||
naval_movement_speed_mult = 0.25
|
||||
no_disembark_penalty = yes
|
||||
coastal_advantage = 10
|
||||
development_growth_factor = 0.1
|
||||
}
|
||||
|
||||
flag = admin_naval_duchy_expansion_unlocked
|
||||
flag = admin_tradeport_obligation_bonus
|
||||
flag = admin_theme_naval
|
||||
}
|
||||
}
|
||||
}
|
||||
25
common/vassal_contracts/clan.txt
Normal file
25
common/vassal_contracts/clan.txt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
clan_tax_collector_obligations = {
|
||||
obligation_levels = {
|
||||
default = {
|
||||
levies = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = { exists = scope:tax_collector }
|
||||
add = clan_government_levies_default
|
||||
multiply = clan_government_tax_collector_aptitude_multiplier
|
||||
}
|
||||
}
|
||||
|
||||
tax = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = { exists = scope:tax_collector }
|
||||
add = {
|
||||
value = clan_government_tax_default
|
||||
multiply = clan_government_tax_collector_aptitude_multiplier
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
189
common/vassal_contracts/feudal.txt
Normal file
189
common/vassal_contracts/feudal.txt
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
feudal_government_taxes = {
|
||||
display_mode = tree
|
||||
icon = gold_icon
|
||||
obligation_levels = {
|
||||
feudal_tax_exempt = {
|
||||
position = { 0 0 }
|
||||
|
||||
tax = exempt_feudal_tax
|
||||
vassal_opinion = 10
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 5
|
||||
score = 2
|
||||
}
|
||||
feudal_tax_low = {
|
||||
parent = feudal_tax_exempt
|
||||
position = { 1 0 }
|
||||
|
||||
tax = low_feudal_tax
|
||||
vassal_opinion = 5
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 2
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_should_focus_on_building_in_their_capital = yes
|
||||
}
|
||||
scope:vassal = {
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes <= feudal_tax_exempt_level
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 8
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 4
|
||||
score = 1
|
||||
}
|
||||
feudal_tax_normal = {
|
||||
default = yes
|
||||
parent = feudal_tax_low
|
||||
position = { 2 0 }
|
||||
|
||||
tax = normal_feudal_tax
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 3
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_should_focus_on_building_in_their_capital = yes
|
||||
}
|
||||
scope:vassal = {
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes <= feudal_tax_low_level
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 7
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 3
|
||||
score = 0
|
||||
}
|
||||
feudal_tax_high = {
|
||||
parent = feudal_tax_normal
|
||||
position = { 3 0 }
|
||||
|
||||
tax = high_feudal_tax
|
||||
vassal_opinion = -15
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 4
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_should_focus_on_building_in_their_capital = yes
|
||||
}
|
||||
scope:vassal = {
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes <= feudal_tax_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 6
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 2
|
||||
score = -1
|
||||
flag = obligation_high_taxes
|
||||
}
|
||||
feudal_tax_extortionate = {
|
||||
parent = feudal_tax_high
|
||||
position = { 4 0 }
|
||||
|
||||
tax = extortionate_feudal_tax
|
||||
vassal_opinion = -25
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 5
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_should_focus_on_building_in_their_capital = yes
|
||||
}
|
||||
scope:vassal = {
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes <= feudal_tax_high_level
|
||||
}
|
||||
}
|
||||
}
|
||||
add = 5
|
||||
}
|
||||
}
|
||||
ai_vassal_desire = 1
|
||||
score = -2
|
||||
flag = obligation_high_taxes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
feudal_government_levies = {
|
||||
display_mode = tree
|
||||
icon = soldier_icon
|
||||
obligation_levels = {
|
||||
feudal_levies_exempt = {
|
||||
position = { 0 0 }
|
||||
|
||||
levies = 0
|
||||
vassal_opinion = 10
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 5
|
||||
score = 2
|
||||
}
|
||||
feudal_levies_low = {
|
||||
parent = feudal_levies_exempt
|
||||
position = { 1 0 }
|
||||
|
||||
levies = 0.1
|
||||
vassal_opinion = 5
|
||||
|
||||
ai_liege_desire = 2
|
||||
ai_vassal_desire = 4
|
||||
score = 1
|
||||
}
|
||||
feudal_levies_normal = {
|
||||
default = yes
|
||||
parent = feudal_levies_low
|
||||
position = { 2 0 }
|
||||
|
||||
levies = 0.25
|
||||
|
||||
ai_liege_desire = 3
|
||||
ai_vassal_desire = 3
|
||||
score = 0
|
||||
}
|
||||
feudal_levies_high = {
|
||||
parent = feudal_levies_normal
|
||||
position = { 3 0 }
|
||||
|
||||
levies = 0.35
|
||||
vassal_opinion = -15
|
||||
|
||||
ai_liege_desire = 4
|
||||
ai_vassal_desire = 2
|
||||
score = -1
|
||||
flag = obligation_high_levies
|
||||
}
|
||||
feudal_levies_extortionate = {
|
||||
parent = feudal_levies_high
|
||||
position = { 4 0 }
|
||||
|
||||
levies = 0.5
|
||||
vassal_opinion = -25
|
||||
|
||||
ai_liege_desire = 5
|
||||
ai_vassal_desire = 1
|
||||
score = -2
|
||||
flag = obligation_high_levies
|
||||
}
|
||||
}
|
||||
}
|
||||
124
common/vassal_contracts/republic.txt
Normal file
124
common/vassal_contracts/republic.txt
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
republic_government_obligations = {
|
||||
obligation_levels = {
|
||||
default = {
|
||||
levies = {
|
||||
if = {
|
||||
limit = {
|
||||
primary_title.tier >= tier_county
|
||||
scope:liege.culture = {
|
||||
has_cultural_parameter = republican_vassals_pay_more
|
||||
}
|
||||
}
|
||||
value = {
|
||||
add = 0.15
|
||||
# Add an extra with the right perk
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:liege.dynasty
|
||||
scope:liege.dynasty = {
|
||||
has_dynasty_perk = fp2_urbanism_legacy_3
|
||||
}
|
||||
}
|
||||
add = 0.15
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
value = {
|
||||
add = 0.1
|
||||
# Add an extra with the right perk
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:liege.dynasty
|
||||
scope:liege.dynasty = {
|
||||
has_dynasty_perk = fp2_urbanism_legacy_3
|
||||
}
|
||||
}
|
||||
add = 0.15
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
tax = {
|
||||
if = {
|
||||
limit = { scope:liege = { government_has_flag = government_is_tribal } }
|
||||
value = {
|
||||
add = 0.05
|
||||
# Add an extra with the right perk
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:liege.dynasty
|
||||
scope:liege.dynasty = {
|
||||
has_dynasty_perk = fp2_urbanism_legacy_3
|
||||
}
|
||||
}
|
||||
add = 0.15
|
||||
}
|
||||
}
|
||||
}
|
||||
else_if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
primary_title.tier >= tier_county
|
||||
}
|
||||
scope:liege.culture = {
|
||||
has_cultural_parameter = republican_vassals_pay_more
|
||||
}
|
||||
}
|
||||
value = {
|
||||
add = 0.3
|
||||
# Add an extra with the right perk
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:liege.dynasty
|
||||
scope:liege.dynasty = {
|
||||
has_dynasty_perk = fp2_urbanism_legacy_3
|
||||
}
|
||||
}
|
||||
add = 0.15
|
||||
}
|
||||
}
|
||||
}
|
||||
else = {
|
||||
value = {
|
||||
add = 0.2
|
||||
# Add an extra with the right perk
|
||||
|
||||
if = {
|
||||
limit = {
|
||||
exists = scope:liege.dynasty
|
||||
scope:liege.dynasty = {
|
||||
has_dynasty_perk = fp2_urbanism_legacy_3
|
||||
}
|
||||
}
|
||||
add = 0.15
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
contribution_desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:liege = { government_has_flag = government_is_tribal } }
|
||||
desc = "tribal_liege_inefficiency"
|
||||
}
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:vassal = {
|
||||
primary_title.tier >= tier_county
|
||||
}
|
||||
scope:liege.culture = {
|
||||
has_cultural_parameter = republican_vassals_pay_more
|
||||
}
|
||||
}
|
||||
desc = "republican_vassals_pay_more_parameter"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
731
common/vassal_contracts/special_contracts.txt
Normal file
731
common/vassal_contracts/special_contracts.txt
Normal file
|
|
@ -0,0 +1,731 @@
|
|||
@ai_standard_liege_desire = 2
|
||||
@ai_standard_vassal_desire = 1
|
||||
# Everything below this line is 'Fine Print'
|
||||
|
||||
special_contract = {
|
||||
display_mode = radiobutton
|
||||
is_shown = {
|
||||
scope:vassal.primary_title.tier >= tier_county
|
||||
}
|
||||
obligation_levels = {
|
||||
special_contract_none = {
|
||||
position = { 0 1 }
|
||||
default = yes
|
||||
score = 0
|
||||
|
||||
ai_vassal_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
vassal_contract_has_flag = has_scutage_contract
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes >= feudal_tax_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
vassal_contract_has_flag = has_scutage_contract
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes < feudal_tax_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
vassal_contract_has_flag = has_march_contract
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_levies < feudal_levies_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
vassal_contract_has_flag = has_palatinate_contract
|
||||
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
OR = {
|
||||
vassal_contract_obligation_level:feudal_government_taxes >= feudal_tax_normal_level
|
||||
vassal_contract_obligation_level:feudal_government_levies >= feudal_levies_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
special_contract_scutage = {
|
||||
is_shown = {
|
||||
scope:vassal.primary_title.tier >= tier_duchy
|
||||
scope:vassal = { government_has_flag = government_is_feudal }
|
||||
}
|
||||
is_valid = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_scutage
|
||||
}
|
||||
}
|
||||
parent = special_contract_none
|
||||
position = { 1 1 }
|
||||
score = 0
|
||||
|
||||
tax_factor = scutage_contract_tax
|
||||
levies_factor = -0.75
|
||||
|
||||
vassal_modifier = {
|
||||
men_at_arms_maintenance = -0.2
|
||||
}
|
||||
|
||||
flag = has_scutage_contract
|
||||
flag = obligation_high_taxes
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes > feudal_tax_normal_level
|
||||
vassal_contract_obligation_level:feudal_government_levies < feudal_levies_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
if = {
|
||||
limit = {
|
||||
scope:liege = {
|
||||
ai_should_focus_on_building_in_their_capital = yes
|
||||
}
|
||||
}
|
||||
add = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
special_contract_march = {
|
||||
is_shown = {
|
||||
scope:vassal.primary_title.tier >= tier_duchy
|
||||
}
|
||||
is_valid = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_bannus
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = special_contract_march_border_trigger
|
||||
scope:vassal = {
|
||||
OR = {
|
||||
vassal_contract_has_flag = has_march_contract
|
||||
primary_title = { has_variable = historical_margrave }
|
||||
any_sub_realm_county = {
|
||||
any_neighboring_county = {
|
||||
NOT = { holder.top_liege = scope:vassal.top_liege }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
parent = special_contract_none
|
||||
position = { 1 0 }
|
||||
score = 0
|
||||
|
||||
tax_factor = march_contract_taxes
|
||||
|
||||
vassal_modifier = {
|
||||
levy_size = 0.2
|
||||
army_maintenance_mult = -0.2
|
||||
garrison_size = 0.2
|
||||
levy_reinforcement_rate = 0.2
|
||||
controlled_province_advantage = 5
|
||||
}
|
||||
|
||||
flag = has_march_contract
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
OR = {
|
||||
vassal_contract_obligation_level:feudal_government_taxes < feudal_tax_normal_level
|
||||
vassal_contract_obligation_level:feudal_government_levies > feudal_levies_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
special_contract_castellan = {
|
||||
is_shown = {
|
||||
scope:vassal.primary_title.tier = tier_county
|
||||
}
|
||||
is_valid = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_bannus
|
||||
}
|
||||
}
|
||||
parent = special_contract_none
|
||||
position = { 1 0 }
|
||||
score = 0
|
||||
|
||||
tax_factor = march_contract_taxes
|
||||
levies_factor = 0.5
|
||||
|
||||
vassal_modifier = {
|
||||
levy_size = 0.2
|
||||
army_maintenance_mult = -0.2
|
||||
garrison_size = 0.2
|
||||
levy_reinforcement_rate = 0.2
|
||||
controlled_province_advantage = 5
|
||||
}
|
||||
|
||||
flag = has_castellan_contract
|
||||
flag = obligation_high_levies
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
OR = {
|
||||
government_has_flag = government_is_clan
|
||||
AND = {
|
||||
government_has_flag = government_is_feudal
|
||||
OR = {
|
||||
vassal_contract_obligation_level:feudal_government_taxes < feudal_tax_normal_level
|
||||
vassal_contract_obligation_level:feudal_government_levies > feudal_levies_normal_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
special_contract_palatinate = {
|
||||
is_shown = { scope:vassal = { government_has_flag = government_is_feudal } }
|
||||
is_valid = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_divine_right
|
||||
}
|
||||
}
|
||||
parent = special_contract_none
|
||||
position = { 1 2 }
|
||||
score = 0
|
||||
|
||||
tax_factor = palatinate_contract_taxes
|
||||
levies_factor = palatinate_contract_levies
|
||||
|
||||
liege_modifier = {
|
||||
monthly_prestige_gain_mult = 0.05
|
||||
}
|
||||
|
||||
vassal_modifier = {
|
||||
monthly_prestige_gain_mult = 0.2
|
||||
fellow_vassal_opinion = 15
|
||||
owned_personal_scheme_success_chance_add = 10
|
||||
owned_hostile_scheme_success_chance_add = 10
|
||||
}
|
||||
|
||||
flag = has_palatinate_contract
|
||||
|
||||
ai_liege_desire = {
|
||||
value = 0
|
||||
if = {
|
||||
limit = {
|
||||
scope:vassal = {
|
||||
government_has_flag = government_is_feudal
|
||||
vassal_contract_obligation_level:feudal_government_taxes < feudal_tax_low_level
|
||||
vassal_contract_obligation_level:feudal_government_levies < feudal_levies_low_level
|
||||
}
|
||||
}
|
||||
add = @ai_standard_liege_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
religious_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
NOT = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
}
|
||||
OR = {
|
||||
NOT = {
|
||||
scope:liege.faith = {
|
||||
OR = {
|
||||
has_doctrine = tenet_tax_nonbelievers
|
||||
has_doctrine = special_doctrine_jizya
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
scope:liege.faith = {
|
||||
OR = {
|
||||
has_doctrine = tenet_tax_nonbelievers
|
||||
has_doctrine = special_doctrine_jizya
|
||||
}
|
||||
}
|
||||
scope:vassal = {
|
||||
NOT = {
|
||||
vassal_contract_has_flag = vassal_contract_cannot_revoke_titles
|
||||
}
|
||||
vassal_contract_has_flag = religiously_protected
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
obligation_levels = {
|
||||
religious_rights_none = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
religious_rights_protected = {
|
||||
is_valid = {
|
||||
NOT = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
}
|
||||
}
|
||||
parent = religious_rights_none
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 5
|
||||
|
||||
vassal_modifier = {
|
||||
county_opinion_add = 5
|
||||
}
|
||||
|
||||
flag = religiously_protected
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = 10
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fortification_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_battlements
|
||||
}
|
||||
}
|
||||
obligation_levels = {
|
||||
fortification_rights_none = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
fortification_rights_granted = {
|
||||
is_valid = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_battlements
|
||||
}
|
||||
}
|
||||
parent = fortification_rights_none
|
||||
position = { 1 0 }
|
||||
|
||||
liege_modifier = {
|
||||
castle_holding_build_gold_cost = 0.05
|
||||
}
|
||||
|
||||
vassal_modifier = {
|
||||
castle_holding_build_gold_cost = -0.15
|
||||
castle_holding_holding_build_gold_cost = -0.5
|
||||
additional_fort_level = 1
|
||||
}
|
||||
|
||||
tax_factor = fortification_rights_contract_taxes
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
coinage_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_currency_02
|
||||
}
|
||||
}
|
||||
obligation_levels = {
|
||||
coinage_rights_none = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
coinage_rights_granted = {
|
||||
is_valid = {
|
||||
scope:liege.culture = {
|
||||
has_innovation = innovation_currency_02
|
||||
}
|
||||
}
|
||||
parent = coinage_rights_none
|
||||
position = { 1 0 }
|
||||
|
||||
liege_modifier = {
|
||||
development_growth_factor = -0.02
|
||||
}
|
||||
vassal_modifier = {
|
||||
character_capital_county_monthly_development_growth_add = 0.3
|
||||
}
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
succession_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
scope:vassal = {
|
||||
can_have_confederate_partition_succession_law_trigger = yes
|
||||
}
|
||||
}
|
||||
obligation_levels = {
|
||||
succession_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
succession_rights_forced_partition = {
|
||||
is_valid = {
|
||||
scope:vassal = {
|
||||
can_have_confederate_partition_succession_law_trigger = yes
|
||||
}
|
||||
}
|
||||
score = -1
|
||||
parent = succession_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = -5
|
||||
|
||||
flag = locked_to_partition
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
war_declaration_rights = {
|
||||
display_mode = checkbox
|
||||
obligation_levels = {
|
||||
war_declaration_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
war_declaration_rights_allowed = {
|
||||
parent = war_declaration_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 5
|
||||
|
||||
flag = vassal_contract_war_override
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
council_rights = {
|
||||
display_mode = checkbox
|
||||
obligation_levels = {
|
||||
council_rights_none = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
council_rights_guaranteed = {
|
||||
parent = council_rights_none
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 5
|
||||
|
||||
flag = can_demand_council_seat
|
||||
|
||||
liege_modifier = {
|
||||
powerful_vassal_opinion = -2
|
||||
}
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
title_revocation_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
OR = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
NOR = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
scope:liege.faith = {
|
||||
has_doctrine_parameter = unlock_jizya_contract
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
obligation_levels = {
|
||||
title_revocation_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
title_revocation_rights_protected = {
|
||||
is_valid = {
|
||||
OR = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
NOR = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
scope:liege.faith = {
|
||||
has_doctrine_parameter = unlock_jizya_contract
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parent = title_revocation_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 5
|
||||
|
||||
flag = vassal_contract_cannot_revoke_titles
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
jizya_special_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
scope:liege.faith = {
|
||||
OR = {
|
||||
has_doctrine = tenet_tax_nonbelievers
|
||||
has_doctrine = special_doctrine_jizya
|
||||
}
|
||||
}
|
||||
NOT = { scope:vassal.faith = scope:liege.faith }
|
||||
scope:vassal = {
|
||||
OR = {
|
||||
NOT = {
|
||||
vassal_contract_has_flag = religiously_protected
|
||||
}
|
||||
AND = {
|
||||
vassal_contract_has_flag = religiously_protected
|
||||
vassal_contract_has_flag = vassal_contract_cannot_revoke_titles
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
obligation_levels = {
|
||||
jizya_special_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
jizya_special_rights_granted = {
|
||||
is_valid = {
|
||||
scope:liege.faith = {
|
||||
OR = {
|
||||
has_doctrine = tenet_tax_nonbelievers
|
||||
has_doctrine = special_doctrine_jizya
|
||||
}
|
||||
}
|
||||
NOT = { scope:vassal.faith = scope:liege.faith }
|
||||
}
|
||||
parent = jizya_special_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 20
|
||||
tax_factor = 0.4
|
||||
levies_factor = -0.4
|
||||
|
||||
vassal_modifier = {
|
||||
monthly_prestige = -0.25
|
||||
}
|
||||
|
||||
flag = vassal_contract_cannot_revoke_titles
|
||||
flag = religiously_protected
|
||||
flag = obligation_high_taxes
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
iqta_special_rights = {
|
||||
display_mode = checkbox
|
||||
|
||||
obligation_levels = {
|
||||
iqta_special_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
iqta_special_rights_granted = {
|
||||
parent = iqta_special_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 5
|
||||
tax_factor = -0.5
|
||||
levies_factor = -0.5
|
||||
|
||||
liege_modifier = {
|
||||
men_at_arms_maintenance = -0.02
|
||||
men_at_arms_recruitment_cost = -0.02
|
||||
}
|
||||
|
||||
vassal_modifier = {
|
||||
men_at_arms_maintenance = -0.1
|
||||
men_at_arms_recruitment_cost = -0.1
|
||||
}
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ghazi_special_rights = {
|
||||
display_mode = checkbox
|
||||
is_shown = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
}
|
||||
obligation_levels = {
|
||||
ghazi_special_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
ghazi_special_rights_granted = {
|
||||
is_valid = {
|
||||
scope:vassal.faith = scope:liege.faith
|
||||
}
|
||||
parent = ghazi_special_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 10
|
||||
levies_factor = -0.25
|
||||
|
||||
liege_modifier = {
|
||||
monthly_piety_gain_mult = 0.1
|
||||
}
|
||||
|
||||
vassal_modifier = {
|
||||
monthly_piety_gain_mult = 0.1
|
||||
|
||||
}
|
||||
|
||||
flag = vassal_contract_cheaper_religious_war
|
||||
flag = vassal_contract_increase_prestige_cb_cost
|
||||
|
||||
ai_liege_desire = @ai_standard_liege_desire
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
marriage_favor_rights = {
|
||||
display_mode = checkbox
|
||||
obligation_levels = {
|
||||
marriage_favor_rights_default = {
|
||||
default = yes
|
||||
position = { 0 0 }
|
||||
|
||||
ai_liege_desire = 1
|
||||
ai_vassal_desire = 0
|
||||
}
|
||||
marriage_favor_rights_granted = {
|
||||
parent = marriage_favor_rights_default
|
||||
position = { 1 0 }
|
||||
|
||||
vassal_opinion = 20
|
||||
tax_factor = 0.1
|
||||
levies_factor = 0.1
|
||||
|
||||
flag = vassal_contract_marriage_favor
|
||||
flag = obligation_high_taxes
|
||||
flag = obligation_high_levies
|
||||
|
||||
ai_liege_desire = 0
|
||||
ai_vassal_desire = @ai_standard_vassal_desire
|
||||
}
|
||||
}
|
||||
}
|
||||
42
common/vassal_contracts/theocratic.txt
Normal file
42
common/vassal_contracts/theocratic.txt
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
theocracy_government_obligations = {
|
||||
obligation_levels = {
|
||||
default = {
|
||||
levies = {
|
||||
if = {
|
||||
limit = { NOT = { scope:liege.faith = scope:vassal.faith } }
|
||||
value = 0.1
|
||||
}
|
||||
else = {
|
||||
value = 0.1
|
||||
multiply = scope:liege.piety_level
|
||||
}
|
||||
}
|
||||
tax = {
|
||||
if = {
|
||||
limit = { NOT = { scope:liege.faith = scope:vassal.faith } }
|
||||
value = 0.1
|
||||
}
|
||||
else_if = {
|
||||
limit = { scope:liege.piety_level >= 1 }
|
||||
add = 0.05
|
||||
add = {
|
||||
value = 0.1
|
||||
multiply = scope:liege.piety_level
|
||||
}
|
||||
}
|
||||
#else = {
|
||||
# value = 0
|
||||
#}
|
||||
}
|
||||
contribution_desc = {
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { NOT = { scope:liege.faith = scope:vassal.faith } }
|
||||
desc = "theocracy_government_vassal_contribution_wrong_faith"
|
||||
}
|
||||
desc = "theocracy_government_vassal_contribution_piety_level"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
26
common/vassal_contracts/tribal.txt
Normal file
26
common/vassal_contracts/tribal.txt
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
tribal_government_obligations = {
|
||||
obligation_levels = {
|
||||
default = {
|
||||
levies = {
|
||||
value = 0
|
||||
max = 1
|
||||
scope:liege = {
|
||||
add = {
|
||||
value = 0.15
|
||||
multiply = prestige_level
|
||||
}
|
||||
}
|
||||
}
|
||||
tax = {
|
||||
value = 0
|
||||
max = 0.5
|
||||
scope:liege = {
|
||||
add = {
|
||||
value = 0.08
|
||||
multiply = prestige_level
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
6439
gui/hud.gui
Normal file
6439
gui/hud.gui
Normal file
File diff suppressed because it is too large
Load diff
4723
gui/window_character.gui
Normal file
4723
gui/window_character.gui
Normal file
File diff suppressed because it is too large
Load diff
1110
gui/window_title.gui
Normal file
1110
gui/window_title.gui
Normal file
File diff suppressed because it is too large
Load diff
499
gui/window_title_appointment.gui
Normal file
499
gui/window_title_appointment.gui
Normal file
|
|
@ -0,0 +1,499 @@
|
|||
window = {
|
||||
name = "title_appointment"
|
||||
movable = no
|
||||
allow_outside = yes
|
||||
layer = windows_layer
|
||||
|
||||
using = Window_Size_Sidebar
|
||||
using = Window_Background_Sidebar
|
||||
|
||||
state = {
|
||||
name = _show
|
||||
using = Animation_FadeIn_Standard
|
||||
using = Sound_WindowShow_Standard
|
||||
|
||||
on_start = "[GetVariableSystem.Set( 'hide_bottom_left_HUD', 'true' )]"
|
||||
}
|
||||
|
||||
state = {
|
||||
name = _hide
|
||||
using = Animation_FadeOut_Standard
|
||||
using = Sound_WindowHide_Standard
|
||||
|
||||
on_start = "[GetVariableSystem.Clear( 'hide_bottom_left_HUD' )]"
|
||||
}
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
using = Window_Margins_Sidebar
|
||||
datacontext = "[SuccessionAppointmentWindow.GetTitle]"
|
||||
|
||||
hbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
|
||||
background = {
|
||||
using = Background_Header_Tall
|
||||
}
|
||||
|
||||
coa_title_big_crown = {}
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
hbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
margin_top = 20
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "[Title.GetHolder.GetTopLiege.GetPrimaryTitle.GetName]"
|
||||
default_format = "#weak"
|
||||
max_width = 350
|
||||
}
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "TITLE_APPOINTMENT_HEADER"
|
||||
max_width = 350
|
||||
}
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "TITLE_APPOINTMENT_LAW"
|
||||
max_width = 350
|
||||
}
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "TITLE_APPOINTMENT_CURRENT_HOLDER"
|
||||
max_width = 350
|
||||
}
|
||||
|
||||
expand = {}
|
||||
}
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
buttons_window_control = {
|
||||
blockoverride "button_close"
|
||||
{
|
||||
onclick = "[SuccessionAppointmentWindow.Close]"
|
||||
}
|
||||
|
||||
blockoverride "button_back"
|
||||
{
|
||||
visible = "[HasViewHistory]"
|
||||
onclick = "[OpenFromViewHistory]"
|
||||
tooltip = "[GetViewHistoryTooltip]"
|
||||
}
|
||||
|
||||
blockoverride "button_me"
|
||||
{
|
||||
onclick = "[DefaultOnCharacterClick( GetPlayer.GetID )]"
|
||||
}
|
||||
}
|
||||
|
||||
expand = {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scrollbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
blockoverride "scrollbox_content" {
|
||||
|
||||
vbox_character_list = {
|
||||
datacontext = "[SuccessionAppointmentWindow.GetCandidates]"
|
||||
layoutpolicy_horizontal = expanding
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
blockoverride "skill_sort_buttons" {}
|
||||
|
||||
blockoverride "container_implementation" {
|
||||
fixedgridbox = {
|
||||
name = "characters_grid"
|
||||
datamodel = "[CharacterSelectionList.GetList]"
|
||||
layoutpolicy_horizontal = expanding
|
||||
addcolumn = 522
|
||||
addrow = 162
|
||||
|
||||
item = {
|
||||
widget = {
|
||||
size = { 522 140 }
|
||||
datacontext = "[CharacterListItem.GetCharacter]"
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
layoutpolicy_vertical = expanding
|
||||
margin = { 8 4 }
|
||||
|
||||
background = {
|
||||
using = Background_Area
|
||||
}
|
||||
|
||||
background = {
|
||||
visible = no # TODO: visible if character is part of your house
|
||||
spriteType = Corneredstretched
|
||||
spriteborder = { 15 15 }
|
||||
using = Color_Blue
|
||||
alpha = 0.6
|
||||
texture = "gfx/interface/component_masks/mask_frame.dds"
|
||||
|
||||
margin = { 0 4 }
|
||||
margin_left = 10
|
||||
|
||||
modify_texture = {
|
||||
blend_mode = alphamultiply
|
||||
alpha = 0.9
|
||||
mirror = horizontal
|
||||
texture = "gfx/interface/component_masks/mask_fade_horizontal.dds"
|
||||
}
|
||||
|
||||
modify_texture = {
|
||||
mirror = vertical
|
||||
blend_mode = alphamultiply
|
||||
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
|
||||
}
|
||||
}
|
||||
|
||||
background = {
|
||||
visible = no # TODO: visible if character is part of your house
|
||||
spriteType = Corneredtiled
|
||||
using = Color_Blue
|
||||
alpha = 0.6
|
||||
texture = "gfx/interface/component_masks/patterns/mask_pattern_02.dds"
|
||||
|
||||
margin = { 0 4 }
|
||||
margin_left = 10
|
||||
margin_right = 50
|
||||
|
||||
modify_texture = {
|
||||
blend_mode = alphamultiply
|
||||
alpha = 0.9
|
||||
mirror = horizontal
|
||||
texture = "gfx/interface/component_masks/mask_fade_horizontal.dds"
|
||||
}
|
||||
|
||||
modify_texture = {
|
||||
spriteType = Corneredtiled
|
||||
spriteborder = { 15 15 }
|
||||
blend_mode = alphamultiply
|
||||
texture = "gfx/interface/component_masks/mask_texture_01.dds"
|
||||
}
|
||||
|
||||
modify_texture = {
|
||||
mirror = vertical
|
||||
blend_mode = alphamultiply
|
||||
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
|
||||
}
|
||||
}
|
||||
|
||||
# Ranking and Name
|
||||
hbox = {
|
||||
spacing = 12
|
||||
layoutpolicy_horizontal = expanding
|
||||
margin = { 12 4 }
|
||||
background = {
|
||||
using = Background_Area_ExtraDark
|
||||
margin_left = 8
|
||||
|
||||
modify_texture = {
|
||||
blend_mode = alphaMultiply
|
||||
texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds"
|
||||
}
|
||||
}
|
||||
|
||||
text_single = {
|
||||
text = TITLE_APPOINTMENT_RANK
|
||||
tooltip = "TITLE_APPOINTMENT_RANK_TOOLTIP"
|
||||
default_format = "#T"
|
||||
align = nobaseline
|
||||
}
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "[Character.GetUINameNoTooltip|U]"
|
||||
max_width = 344
|
||||
align = nobaseline
|
||||
}
|
||||
expand = {}
|
||||
}
|
||||
|
||||
hbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
spacing = 4
|
||||
|
||||
portrait_head = {}
|
||||
|
||||
hbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[Character.GetHouse]"
|
||||
|
||||
coa_house_medium = {
|
||||
|
||||
powerful_family_bonus = {
|
||||
parentanchor = bottom|right
|
||||
}
|
||||
}
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
margin_left = 12
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "[Character.GetRelationToString( GetPlayer )]"
|
||||
tooltip = "[Character.GetRelationToString( GetPlayer )]"
|
||||
max_width = 230
|
||||
}
|
||||
|
||||
vbox_candidate_details = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button_support_candidacy = {}
|
||||
spacer = {
|
||||
size = { 8 0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
widget = {
|
||||
name = "player_candidate"
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[SuccessionAppointmentWindow.GetTopCandidate]"
|
||||
visible = "[SuccessionAppointmentWindow.HasTopCandidate]"
|
||||
|
||||
size = { 280 170}
|
||||
|
||||
vbox = {
|
||||
margin = { 8 12 }
|
||||
margin_right = 24
|
||||
datacontext = "[CharacterListItem.GetCharacter]"
|
||||
|
||||
vbox = {
|
||||
margin = { 12 0 }
|
||||
layoutpolicy_horizontal = expanding
|
||||
|
||||
background = {
|
||||
using = Background_Area
|
||||
margin_bottom = 30
|
||||
margin_left = -8
|
||||
margin_right = 8
|
||||
}
|
||||
|
||||
hbox = {
|
||||
spacing = 4
|
||||
margin = { 12 4 }
|
||||
|
||||
layoutpolicy_horizontal = expanding
|
||||
|
||||
background = {
|
||||
using = Background_Area_Dark
|
||||
|
||||
modify_texture = {
|
||||
blend_mode = alphaMultiply
|
||||
texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds"
|
||||
}
|
||||
}
|
||||
|
||||
text_single = {
|
||||
text = "TITLE_APPOINTMENT_SUCCESSION_TOP_CANDIDATE"
|
||||
margin_right = 8
|
||||
align = nobaseline
|
||||
}
|
||||
|
||||
text_single = {
|
||||
text = "TITLE_APPOINTMENT_RANK"
|
||||
tooltip = "TITLE_APPOINTMENT_RANK_TOOLTIP"
|
||||
default_format = "#T"
|
||||
align = nobaseline
|
||||
}
|
||||
|
||||
text_single = {
|
||||
text = "[Character.GetShortUINameNoTooltip]"
|
||||
align = nobaseline
|
||||
}
|
||||
|
||||
expand = {}
|
||||
}
|
||||
|
||||
hbox = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
margin_left = 20
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_vertical = expanding
|
||||
|
||||
vbox_candidate_details = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
}
|
||||
|
||||
expand = {}
|
||||
}
|
||||
|
||||
vbox = {
|
||||
layoutpolicy_vertical = expanding
|
||||
datacontext = "[Character.GetHouse]"
|
||||
margin_left = 12
|
||||
|
||||
coa_house_medium = {
|
||||
powerful_family_bonus = {
|
||||
parentanchor = bottom|right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
expand = {}
|
||||
button_support_candidacy = {
|
||||
datacontext = "[CharacterListItem.GetCharacter]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
portrait_shoulders = {
|
||||
datacontext = "[CharacterListItem.GetCharacter]"
|
||||
parentanchor = center
|
||||
blockoverride "coa" {}
|
||||
position = { 112 -4 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
window_character_filter = {
|
||||
datacontext = "[SuccessionAppointmentWindow.GetCandidates]"
|
||||
position = { 600 50 }
|
||||
|
||||
blockoverride "addition_filter" {
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('range_filter')]"
|
||||
}
|
||||
|
||||
vbox_filter_group = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
|
||||
datacontext = "[CharacterSelectionList.GetCategory('personal_filter_category')]"
|
||||
blockoverride "filters" {
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('ruler_filter')]"
|
||||
}
|
||||
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('adult_filter')]"
|
||||
}
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('gender_filter')]"
|
||||
}
|
||||
|
||||
divider = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
}
|
||||
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('married_filter')]"
|
||||
}
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('imprisoned_filter')]"
|
||||
}
|
||||
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('hook_filter')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
vbox_filter_group = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetCategory('membership_filter_category')]"
|
||||
blockoverride "filters" {
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('religion_filter')]"
|
||||
}
|
||||
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('culture_filter')]"
|
||||
}
|
||||
|
||||
filter_item = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
datacontext = "[CharacterSelectionList.GetFilter('dynasty_house_filter')]"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
types TitleAppointment
|
||||
{
|
||||
type vbox_candidate_details = vbox
|
||||
{
|
||||
maximumsize = { 260 -1 }
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
max_width = 240
|
||||
margin_bottom = 4
|
||||
text = "TITLE_APPOINTMENT_SUCCESSION_SCORE"
|
||||
|
||||
tooltipwidget = {
|
||||
widget_value_breakdown_tooltip = {
|
||||
datacontext = "[SuccessionAppointmentWindow.GetSuccessionScoreBreakdown( Character.Self )]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
text_single = {
|
||||
layoutpolicy_horizontal = expanding
|
||||
text = "TITLE_APPOINTMENT_GOVERNOR_EFFICIENCY"
|
||||
tooltip = "ADMIN_WINDOW_THEME_GOVERNOR_EFFICIENCY_VALID_TT"
|
||||
max_width = 240
|
||||
}
|
||||
}
|
||||
|
||||
type button_support_candidacy = button_round {
|
||||
name = "support_candidacy"
|
||||
size = { 48 48 }
|
||||
onclick = "[Character.OpenPlayerInteractionWithTargetTitle( 'influence_candidacy_interaction', Title.Self )]"
|
||||
enabled = "[Character.IsPlayerInteractionValid( 'influence_candidacy_interaction' )]"
|
||||
tooltip = "[Character.GetPlayerInteractionTooltip( 'influence_candidacy_interaction' )]"
|
||||
|
||||
button_promote_candidate = {
|
||||
alwaystransparent = yes
|
||||
parentanchor = center
|
||||
position = { 1 -1 }
|
||||
size = { 32 32 }
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue