First Commit - Initialization

This commit is contained in:
Archgit 2024-12-18 21:22:13 -05:00
commit 432da03702
183 changed files with 24763 additions and 0 deletions

View File

@ -0,0 +1,9 @@
version="B_0.1"
tags={
"Character Interactions"
"Gameplay"
}
name="Universal Contract Assistance & Foment Revolt"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Contract_Assistance_&_Foment_Revolt"
remote_file_id="2979921118"

View File

@ -0,0 +1,635 @@

# Creator: DevZero
##########################################################################################################
# CA Gold
##########################################################################################################
m_cafr_ca_gold_value = {
value = 0
if = {
limit = { scope:recipient.gold > 50 }
add = scope:recipient.gold
}
multiply = {
value = 0
if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.4
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.6
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.8
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 1
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.3
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.5
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.65
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.8
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.15
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.3
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.5
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.75
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.1
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.25
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.45
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.6
}
}
round = yes
if = {
limit = {
scope:recipient.gold < 1
}
multiply = 0
}
else_if = {
limit = {
scope:recipient.gold < 51
}
add = scope:recipient.gold
}
}
########################################################################################################
# CA Contribution
########################################################################################################
m_cafr_ca_war_contribution_value = {
value = 0
add = {
value = 0
if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_empire
}
}
add = 1400
}
else_if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
}
add = 1000
}
else_if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
}
add = 500
}
else_if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_county
}
}
add = 300
}
}
add = {
value = 0
if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
add = 2200
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
add = 1500
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
add = 1000
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_county
}
}
add = 750
}
}
}
#######################################################################################################################
# RCA Gold
#######################################################################################################################
m_cafr_rca_gold_value = {
value = 0
if = {
limit = { scope:actor.gold > 50 }
add = scope:actor.gold
}
multiply = {
value = 0
if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.75
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.5
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.35
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_county
}
}
}
add = 0.25
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.85
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.65
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.55
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
}
add = 0.4
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.95
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.8
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.7
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
}
add = 0.65
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_county
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 1
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.95
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.8
}
else_if = {
limit = {
AND = {
scope:actor = {
highest_held_title_tier = tier_empire
}
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
}
add = 0.75
}
}
round = yes
if = {
limit = {
scope:actor.gold < 1
}
multiply = 0
}
else_if = {
limit = {
scope:actor.gold < 51
}
add = scope:actor.gold
}
}
#######################################################################################################################
# RCA Contribution Value
#######################################################################################################################
m_cafr_rca_war_contribution_value = {
value = 0
add = {
value = 0
if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_empire
}
}
add = 2200
}
else_if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_kingdom
}
}
add = 1500
}
else_if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_duchy
}
}
add = 1000
}
else_if = {
limit = {
scope:actor = {
highest_held_title_tier = tier_county
}
}
add = 750
}
}
add = {
value = 0
if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_empire
}
}
add = 1400
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_kingdom
}
}
add = 1000
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_duchy
}
}
add = 500
}
else_if = {
limit = {
scope:recipient = {
highest_held_title_tier = tier_county
}
}
add = 300
}
}
}

View File

@ -0,0 +1,8 @@
version="B_0.1"
tags={
"Character Interactions"
"Gameplay"
}
name="Universal Contract Assistance & Foment Revolt"
supported_version="1.*"
remote_file_id="2979921118"

View File

@ -0,0 +1,19 @@
l_english:
m_cafr_contribution_count_title: "$contract_assistance_interaction$: Contract Expectations"
m_cafr_contribution_count_text: "\nYour expected [war_contribution|E] is: [SCOPE.ScriptValue('m_cafr_ca_war_contribution_value')|Z0]. \n\n\nYour expected payment is [gold_i][SCOPE.ScriptValue('m_cafr_ca_gold_value')|V0].
m_cafr_contract_assistance_interaction_condition_tt:1 "If [actor.GetShortUINamePossessive] [war_contribution|E] is at least [SCOPE.ScriptValue('m_cafr_ca_war_contribution_value')|Z0] when the [war|E] ends:"
m_cafr_request_contract_assistance_interaction_condition_tt:1 "If [recipient.GetShortUINamePossessive] [war_contribution|E] is at least [SCOPE.ScriptValue('m_cafr_rca_war_contribution_value')|Z0] when the [war|E] ends:"
m_cafr_aid_title: "$contract_assistance_interaction$: Contract Expectations"
m_cafr_aid_text: "\nYour expected [war_contribution|E] is: [SCOPE.ScriptValue('m_cafr_ca_war_contribution_value')|Z0]. \n\n\nYour expected payment is [gold_i][SCOPE.ScriptValue('m_cafr_ca_gold_value')|V0].
m_cafr_rca_recipient_gold_consideration_negative.tt: "[recipient.GetShortUIName] doesn't think offered [gold|E] is worth it: #N -50#!"
m_cafr_ca_recipient_gold_consideration_postitive.tt: "[recipient.GetShortUIName] is getting a good deal: #P +100#!"
rca_hostile_faith_reason: "Differences in Faiths: $VALUE|=+0$"
rca_dynasty_enemy_reason: "Opponent is of same dynasty: $VALUE|=+0$"

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

10
Fealty_to_Heir.mod Normal file
View File

@ -0,0 +1,10 @@
version="0.1A"
tags={
"Balance"
"Character Interactions"
"Gameplay"
}
name="Vassal Fealty to Heir"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Fealty_to_Heir"
remote_file_id="2992224656"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,9 @@
version="0.1A"
tags={
"Balance"
"Character Interactions"
"Gameplay"
}
name="Vassal Fealty to Heir"
supported_version="1.*"
remote_file_id="2992224656"

View File

@ -0,0 +1,119 @@
####################################
# Events for mod_fealty_to_heir.txt
# Developed by idev
####################################
namespace = mod_fealty_to_heir
# Positive Interaction from vassal, is going to ally heir.
mod_fealty_to_heir.0001 = {
type = letter_event
opening = {
desc = fealty_response_positive_opening
}
desc = fealty_response_positive
sender = scope:recipient
option = {
name = fealty_response_to_vassal_positive
}
}
mod_fealty_to_heir.0002 = {
type = letter_event
opening = {
desc = fealty_response_negative_opening
}
desc = fealty_response_negative
sender = scope:recipient
option = {
name = fealty_response_to_vassal_negative_opinion_boost
scope:recipient = {
add_opinion = {
modifier = respect_opinion
target = scope:actor
opinion = 20
}
}
}
option = {
name = fealty_response_to_vassal_negative
duel = {
skill = intrigue
target = scope:recipient
25 = {
desc = fealty_response_to_vassal_negative_imprisonment.tt
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
illegal_imprisonment_dread_effect = yes
imprison_character_effect = {
TARGET = scope:recipient
IMPRISONER = scope:actor
}
}
75 = {
desc = fealty_response_to_vassal_negative_imprisonment_2.tt
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
add_opinion = {
target = scope:recipient
modifier = treasonous_imprison_refusal
}
imprison_tyranny_effect = yes
}
}
}
option = {
name = fealty_response_to_vassal_negative_hook
duel = {
skill = diplomacy
target = scope:recipient
60 = {
desc = fealty_response_to_vassal_negative_hook.tt
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
scope:actor = {
add_hook = {
target = scope:recipient
type = favor_hook
}
}
}
40 = {
desc = fealty_response_to_vassal_negative_hook_2.tt
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
scope:recipient = {
add_opinion = {
modifier = frustrated_opinion
target = scope:actor
opinion = -20
}
}
}
}
}
}

View File

@ -0,0 +1,38 @@
l_english:
# Main Interaction Descipttors
fealty_to_heir_interaction: "Ask for Oath of Fealty to Heir"
fealty_to_heir_interaction_desc: " Ask [recipient.GetShortUINameNoTooltip] to swear fealty to your primary heir"
# Option Descriptions
m_prestige_option_desc: " Leverage political capital to secure the deal with [recipient.GetShortUINameNoTooltip] "
m_piety_option_desc: " Leverage religious influence to secure the deal with [recipient.GetShortUINameNoTooltip] "
m_gold_option_desc: " Leverage wealth to secure the deal with [recipient.GetShortUINameNoTooltip] "
m_hook_option_desc: " Leverage a favor to secure the deal with [recipient.GetShortUINameNoTooltip] "
m_hof_option_desc: " Ask Head of Faith to help secure the deal with [recipient.GetShortUINameNoTooltip] "
# Acceptance chance desciptors
m_leige_uses_weak_hook_interaction.tt.accept_chance: "Owe favor: #P +25#!"
m_vassal_imprisoned_by_you.tt.accept_chance: "May lead to my Release: #P +50#!"
m_leige_uses_hof_interaction.tt.accept_chance: "Intercession from Head of Faith: #P +10#!"
m_ambitious_vassal.tt.likes_prestige: "[GetTrait('ambitious').GetName(GetNullCharacter)] likes Prestige: #P +10#!"
m_knight_likes_prestige.tt: "Knight Appreciates Acclaim: #P +15#! "
m_cynical_dislikes_piety.tt: "[GetTrait('cynical').GetName(GetNullCharacter)] dislikes Religious Exchange: #N -10#! "
m_cynical_dislikes_hof.tt: "[GetTrait('cynical').GetName(GetNullCharacter)] dislikes Religious Exchange: #N -15#! "
m_zealous_likes_hof.tt: "[GetTrait('zealous').GetName(GetNullCharacter)] likes Religious Exchange: #P +35#!"
# Letter responses
fealty_response_positive_opening: "My leige, "
fealty_response_positive: " I appreciate your forethought in this matter. After many considerations, I believe such an arrangement would be of benefit to us both. Thereby, I formally swear an oath of alliance between myself and your heir."
fealty_response_to_vassal_positive: " A most righteous decision! "
## Negative letter response were not used as can_send_despite_rejection = no. Assumed that players would not want to be able to spend resources for no reason. Original reason for existing was to explore a demand_conversion style 'might accept' trigger to an event. Brevity took precedence. Keeping for possible user requested changes / further development.
fealty_response_negative_opening: "My leige, "
fealty_response_negative: "I regret to inform you that I can not swear an oath of alliance with your heir. As I'm sure you are aware, there are many considerations one must make to come to a decision. Might a day come in the future where circumstances change, I may reconsider. "
fealty_response_to_vassal_negative: " You may come to regret this . . ."
fealty_response_to_vassal_negative_hook: " Surely the court will see this as a slight!"
fealty_response_to_vassal_negative_opinion_boost: " I suppose some things are not meant to be."
fealty_response_to_vassal_negative_hook.tt: " We shall note a royal favor is required to rectify this slight"
fealty_response_to_vassal_negative_hook_2.tt: " [recipient.GetShortUINameNoTooltip] does not agree to favor"
fealty_response_to_vassal_negative_imprisonment.tt: " [recipient.GetShortUINameNoTooltip] is imprisoned"
fealty_response_to_vassal_negative_imprisonment_2.tt: " [recipient.GetShortUINameNoTooltip] refuses imprisonment"

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

10
Find_Spouse_Expanded.mod Normal file
View File

@ -0,0 +1,10 @@
version="0.1A"
tags={
"Character Interactions"
"Gameplay"
"Balance"
}
name="Find Spouse Expanded"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Find_Spouse_Expanded"
remote_file_id="2988672797"

View File

@ -0,0 +1,415 @@

#########################################################################
# Marry 'find spouse interaction' for Members of Dynasty if Dynasty Head
# Developed by idev
#########################################################################
find_spouse_expanded_interaction = {
icon = icon_marriage
category = interaction_category_diplomacy
common_interaction = yes
desc = marry_off_interaction_desc
send_name = marry_off_send
needs_recipient_to_open = no
special_interaction = arrange_marriage_interaction
interface = marriage
use_diplomatic_range = yes
redirect = {
if = {
limit = {
exists = scope:secondary_actor
}
scope:recipient = {
save_scope_as = secondary_recipient
matchmaker = {
save_scope_as = recipient
}
}
}
else_if = {
scope:recipient = {
save_scope_as = secondary_actor
}
clear_saved_scope = recipient
}
}
populate_recipient_list = {
scope:secondary_actor = {
if = {
limit = {
allowed_to_marry_same_sex_trigger = yes
}
every_opposite_sex_spouse_candidate = {
limit = {
NAND = {
is_landless_ruler = yes
faith.religious_head = this
NOT = { scope:secondary_actor.faith = faith }
}
}
add_to_list = characters
}
every_same_sex_spouse_candidate = {
limit = {
NAND = {
is_landless_ruler = yes
faith.religious_head = this
NOT = { scope:secondary_actor.faith = faith }
}
}
add_to_list = characters
}
}
else = {
every_opposite_sex_spouse_candidate = {
limit = {
NAND = {
is_landless_ruler = yes
faith.religious_head = this
NOT = { scope:secondary_actor.faith = faith }
}
}
add_to_list = characters
}
}
}
}
cost = {
prestige = {
value = 0
if = {
limit = {
exists = scope:actor
exists = scope:recipient
exists = scope:secondary_recipient
scope:recipient = {
OR = {
AND = {
vassal_contract_has_flag = vassal_contract_marriage_favor
is_allied_to = scope:actor
}
NOT = { vassal_contract_has_flag = vassal_contract_marriage_favor}
}
}
}
add = {
scope:actor = {
every_vassal = {
limit = {
vassal_contract_has_flag = vassal_contract_marriage_favor
NOT = { is_allied_to = scope:actor }
NOR = {
this = scope:recipient
this = scope:secondary_recipient
}
}
add = medium_prestige_value
}
}
desc = VASSAL_WITH_MARRIAGE_FAVOR
}
}
}
}
interface_priority = 60
# actor, recipient ... characters arranging the marriage
# secondary_actor, secondary_recipient ... characters that should marry
is_shown = {
scope:secondary_actor = {
#Is this someone I can marry off? // MOD NOTE: Code written to ensure no duplication in menus due to vanilla allowances.
OR = {
AND = {
scope:actor = { is_house_head = yes }
dynasty = scope:actor.dynasty
NOR = {
AND = {
is_child_of = scope:actor
target_is_liege_or_above = scope:actor
}
is_courtier_of = scope:actor
scope:actor = this
}
}
}
#They can be married
can_marry_trigger = yes
#To account for a person marrying their concubines
trigger_if = {
limit = {
is_concubine = yes
}
is_concubine_of = scope:actor
can_marry_character_trigger = { CHARACTER = scope:actor }
}
}
}
is_valid_showing_failures_only = {
#Diplomatic availability & prison
scope:secondary_actor = {
is_busy_in_events_localised = yes
is_imprisoned = no
}
marriage_interaction_non_loyal_diarchs_refuse_secondary_marriage_trigger = { TARGET = secondary_actor }
trigger_if = {
limit = {
NOT = { scope:secondary_actor = scope:secondary_recipient }
}
marriage_interaction_non_loyal_diarchs_refuse_secondary_marriage_trigger = { TARGET = secondary_recipient }
}
marriage_interaction_non_loyal_diarchs_refuse_secondary_marriage_trigger = { TARGET = actor }
marriage_interaction_non_loyal_diarchs_refuse_secondary_marriage_trigger = { TARGET = recipient }
}
has_valid_target_showing_failures_only = {
marriage_interaction_valid_target_trigger = yes #Checks marriage status, betrothed, gender, consanguinity, faith hostility etc.
#Diplomatic availability & prison (located here because these will never be set at the start)
scope:recipient = {
is_busy_in_events_localised = yes
is_imprisoned = no
}
NOT = {
scope:actor = {
is_at_war_with = scope:recipient
}
}
trigger_if = {
limit = { NOT = { scope:recipient = scope:secondary_recipient } }
scope:secondary_recipient = {
is_busy_in_events_localised = yes
is_imprisoned = no
}
}
#secondary_actor is checked above because they are always available
#Blocks AI from marrying player guests
scope:secondary_recipient = {
trigger_if = {
limit = {
is_pool_guest = yes
host = {
is_ai = no
NOT = { this = scope:actor }
}
}
NOT = { is_pool_guest_of = host }
}
}
}
on_accept = {
marriage_interaction_on_accept_effect = yes
scope:secondary_actor.liege = {
if = {
limit = {
AND = {
is_alive = yes
is_ruler = yes
is_close_or_extended_family_of = scope:secondary_actor
}
}
create_alliance = {
target = scope:recipient
allied_through_owner = scope:secondary_actor
allied_through_target = scope:secondary_recipient
}
}
}
}
on_decline = {
scope:actor = {
if = {
limit = { NOT = { this = scope:recipient } }
trigger_event = marriage_interaction.0011
}
}
}
auto_accept = {
marriage_interaction_auto_accept_trigger = yes #Strong hook conditions
}
ai_accept = {
base = 0 # Should be 0 for all interactions
marriage_ai_accept_modifier = yes
}
send_option = {
flag = matrilineal
localization = "MATRILINEAL_OFFER"
starts_enabled = {
scope:actor = {
OR = {
faith = {
has_doctrine = doctrine_gender_female_dominated
}
AND = {
scope:secondary_actor = { is_female = yes }
faith = { has_doctrine = doctrine_gender_equal }
}
AND = {
exists = scope:secondary_actor
scope:actor = scope:secondary_actor
is_female = yes
is_ai = no
}
}
}
}
}
send_option = {
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = MARRIAGE_HOOK
}
#This option cannot be linked with the hook icon, because recipient isn't known in the right-click menu
send_options_exclusive = no
show_effects_in_notification = no
greeting = positive
notification_text = {
first_valid = {
triggered_desc = {
trigger = {
scope:secondary_actor = {
is_adult = yes
}
scope:secondary_recipient = {
is_adult = yes
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:matrilineal = yes
scope:secondary_actor = scope:actor
scope:secondary_recipient = scope:recipient
}
desc = MARRIAGE_NOTIFICATION_BOTH_PERSONAL_MATRI
}
triggered_desc = {
trigger = {
scope:matrilineal = yes
scope:secondary_actor = scope:actor
}
desc = MARRIAGE_NOTIFICATION_ACTOR_PERSONAL_MATRI
}
triggered_desc = {
trigger = {
scope:matrilineal = yes
scope:secondary_recipient = scope:recipient
}
desc = MARRIAGE_NOTIFICATION_RECIPIENT_PERSONAL_MATRI
}
triggered_desc = {
trigger = {
scope:matrilineal = yes
}
desc = MARRIAGE_NOTIFICATION_MATRI
}
triggered_desc = {
trigger = {
scope:secondary_actor = scope:actor
scope:secondary_recipient = scope:recipient
}
desc = MARRIAGE_NOTIFICATION_BOTH_PERSONAL
}
triggered_desc = {
trigger = {
scope:secondary_actor = scope:actor
}
desc = MARRIAGE_NOTIFICATION_ACTOR_PERSONAL
}
triggered_desc = {
trigger = {
scope:secondary_recipient = scope:recipient
}
desc = MARRIAGE_NOTIFICATION_RECIPIENT_PERSONAL
}
desc = MARRIAGE_NOTIFICATION
}
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:matrilineal = yes
scope:secondary_actor = scope:actor
scope:secondary_recipient = scope:recipient
}
desc = BETROTHAL_NOTIFICATION_BOTH_PERSONAL_MATRI
}
triggered_desc = {
trigger = {
scope:matrilineal = yes
scope:secondary_actor = scope:actor
}
desc = BETROTHAL_NOTIFICATION_ACTOR_PERSONAL_MATRI
}
triggered_desc = {
trigger = {
scope:matrilineal = yes
scope:secondary_recipient = scope:recipient
}
desc = BETROTHAL_NOTIFICATION_RECIPIENT_PERSONAL_MATRI
}
triggered_desc = {
trigger = {
scope:matrilineal = yes
}
desc = BETROTHAL_NOTIFICATION_MATRI
}
triggered_desc = {
trigger = {
scope:secondary_actor = scope:actor
scope:secondary_recipient = scope:recipient
}
desc = BETROTHAL_NOTIFICATION_BOTH_PERSONAL
}
triggered_desc = {
trigger = {
scope:secondary_actor = scope:actor
}
desc = BETROTHAL_NOTIFICATION_ACTOR_PERSONAL
}
triggered_desc = {
trigger = {
scope:secondary_recipient = scope:recipient
}
desc = BETROTHAL_NOTIFICATION_RECIPIENT_PERSONAL
}
desc = BETROTHAL_NOTIFICATION
}
}
}
}
}

View File

@ -0,0 +1,9 @@
version="0.1A"
tags={
"Character Interactions"
"Gameplay"
"Balance"
}
name="Find Spouse Expanded"
supported_version="1.*"
remote_file_id="2988672797"

View File

@ -0,0 +1,3 @@
l_english:
find_spouse_expanded_interaction: "Find Spouse"
actor_secondary_find_spouse_expanded_interaction: "Spouse"

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

View File

@ -0,0 +1,10 @@
version="0.1A"
tags={
"Decisions"
"Gameplay"
"Balance"
}
name="Ingratiate Heir Decision"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Ingratiate_Heir_Decision"
remote_file_id="2989664759"

View File

@ -0,0 +1,185 @@

#########################################################################
# Ingratiate Heir Decision
# Developed by idev
#########################################################################
mod_ingratiate_heir_decision = {
picture = {
reference = "gfx/interface/illustrations/decisions/decision_dynasty_house.dds"
}
decision_group_type = decisions
desc = mod_ingratiate_heir_decision_desc
sort_order = 80
cooldown = { years = 10 }
is_shown = {
is_ruler = yes
is_ai = no
}
is_valid_showing_failures_only = {
root.primary_heir.dynasty = root.dynasty
}
widget = {
gui = "decision_view_widget_decision_option_list_controller"
controller = decision_option_list_controller
item = {
value = mod_ingratiate_heir_very_modest
localization = mod_ingratiate_heir_very_modest_loc
ai_chance = { value = 0 }
}
item = {
value = mod_ingratiate_heir_modest
localization = mod_ingratiate_heir_modest_loc
ai_chance = { value = 0 }
}
item = {
value = mod_ingratiate_heir_substantial
localization = mod_ingratiate_heir_substantial_loc
ai_chance = { value = 0 }
}
}
effect = {
if = {
limit = { scope:mod_ingratiate_heir_very_modest = yes }
show_as_tooltip = {
add_prestige = -250
add_piety = -100
}
primary_heir = {
add_prestige = 250
add_piety = 100
}
every_vassal_or_below = {
add_opinion = {
modifier = impressed_opinion
target = root.primary_heir
opinion = 5
}
}
}
else_if = {
limit = { scope:mod_ingratiate_heir_modest = yes }
show_as_tooltip = {
add_prestige = -600
add_piety = -250
}
primary_heir = {
add_prestige = 600
add_piety = 250
}
every_vassal_or_below = {
add_opinion = {
modifier = impressed_opinion
target = root.primary_heir
opinion = 10
}
}
}
else_if = {
limit = { scope:mod_ingratiate_heir_substantial = yes }
show_as_tooltip = {
add_prestige = -1350
add_piety = -500
}
primary_heir = {
add_prestige = 1350
add_piety = 500
}
every_vassal_or_below = {
add_opinion = {
modifier = impressed_opinion
target = root.primary_heir
opinion = 20
}
}
}
trigger_event = {
id = mod_ingratiate_heir.0001
}
}
cost = {
gold = {
if = {
limit = { scope:mod_ingratiate_heir_very_modest = yes }
add = {
value = 215
multiply = activity_cost_scale_by_era
divide = 2.5
}
}
if = {
limit = { scope:mod_ingratiate_heir_modest = yes }
add = {
value = 625
multiply = activity_cost_scale_by_era
divide = 2.5
}
}
if = {
limit = { scope:mod_ingratiate_heir_substantial = yes }
add = {
value = 1150
multiply = activity_cost_scale_by_era
divide = 2.5
}
}
}
prestige = {
if = {
limit = { scope:mod_ingratiate_heir_very_modest = yes }
add = {
value = 250
}
}
else_if = {
limit = { scope:mod_ingratiate_heir_modest = yes }
add = {
value = 600
}
}
else = {
add = {
value = 1350
}
}
}
piety = {
if = {
limit = { scope:mod_ingratiate_heir_very_modest = yes }
add = {
value = 100
}
}
else_if = {
limit = { scope:mod_ingratiate_heir_modest = yes }
add = {
value = 250
}
}
else = {
add = 500
}
}
}
ai_check_interval = 0
}

View File

@ -0,0 +1,9 @@
version="0.1A"
tags={
"Decisions"
"Gameplay"
"Balance"
}
name="Ingratiate Heir Decision"
supported_version="1.*"
remote_file_id="2989664759"

View File

@ -0,0 +1,26 @@
####################################
# Events for mod_ingratiate_heir_decision.txt
# Developed by idev
####################################
namespace = mod_ingratiate_heir
# Positive outcome.
mod_ingratiate_heir.0001 = {
type = character_event
title = mod_ingratiate_event_title
desc = mod_ingratiate_event_desc
theme = realm
left_portrait = {
character = root
animation = personality_honorable
}
immediate = {
play_music_cue = "mx_cue_birth"
}
option = {
name = mod_ingratiate_event_option_text
}
}

View File

@ -0,0 +1,26 @@
l_english:
mod_ingratiate_heir_decision: "Ingratiate Heir"
mod_ingratiate_heir_decision_desc: "I should ingratiate my heir to the realm to make a possible succession an easier transition."
mod_ingratiate_heir_decision_tooltip: "I should ingratiate my heir to the realm to make a possible succession an easier transition."
mod_ingratiate_heir_very_modest_loc: " Very Modest Committment "
mod_ingratiate_heir_very_modest_tooltip: " Requires [prestige_i]250 [prestige|E] and [piety_i]100 [piety|E]"
mod_ingratiate_heir_modest_loc: " Modest Committment "
mod_ingratiate_heir_modest_tooltip: " Requires [prestige_i]600 [prestige|E] and [piety_i]250 [piety|E]"
mod_ingratiate_heir_substantial_loc: " Substantial Committment "
mod_ingratiate_heir_substantial_tooltip: " Requires [prestige_i]1350 [prestige|E] and [piety_i]500 [piety|E]"
mod_ingratiate_heir_decision_confirm: "Ingratiate my heir with the realm!"
mod_ingratiate_event_title: " To Heir On the Side of Caution"
mod_ingratiate_event_desc: " \nWhether honest intentioned or not, I have endeared my heir to the realm just that little bit more. \n\nBe it at my expense, I can rest a little easier now as stability beckons in the hearts of my subjects and I have endorsed my heir as a true and viable candidate to fill my stead. "
mod_ingratiate_event_option_text: " May my heir someday rule with great favor! "

View File

@ -0,0 +1,26 @@
l_german:
mod_ingratiate_heir_decision: "Meinen Erben beliebt machen"
mod_ingratiate_heir_decision_desc: "Ich sollte meinen Erben im Reich beliebt machen, um di mögliche Erbfolge zu erleichtern."
mod_ingratiate_heir_decision_tooltip: "Ich sollte meinen Erben im Reich beliebt machen, um die mögliche Erbfolge zu erleichtern."
mod_ingratiate_heir_very_modest_loc: " Sehr bescheidener Einsatz "
mod_ingratiate_heir_very_modest_tooltip: " Benötigt [prestige_i]250 [prestige|E] und [piety_i]100 [piety|E]"
mod_ingratiate_heir_modest_loc: " Mäßiger Einsatz "
mod_ingratiate_heir_modest_tooltip: " Benötigt [prestige_i]600 [prestige|E] und [piety_i]250 [piety|E]"
mod_ingratiate_heir_substantial_loc: " Erheblicher Einsatz "
mod_ingratiate_heir_substantial_tooltip: " Benötigt [prestige_i]1350 [prestige|E] und [piety_i]500 [piety|E]"
mod_ingratiate_heir_decision_confirm: "Mach meinen Erben im Reich beliebt!"
mod_ingratiate_event_title: " Zur Absicherung des Erben"
mod_ingratiate_event_desc: " \nOb beabsichtigt oder nicht, habe ich meinen Erben im Reich ein bisschen beliebter gemacht. \n\nDank meines Einsatzes, kann ich jetzt entspannter schlafen, da zukünftige Stabilität winkt und ich meinen Erben vor meinen Bürgern als rechtmäßigen und brauchbaren Kandidat für mein Amt befürwortet habe. "
mod_ingratiate_event_option_text: " Möge mein Erbe eines Tages mit meiner Gunst regieren! "

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

View File

@ -0,0 +1,11 @@
version="0.1"
tags={
"Events"
"Gameplay"
"Schemes"
"Character Interactions"
}
name="Medieval Thievery (No AI Version)"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Medieval_Thievery_No_AI"
remote_file_id="3156900884"

View File

@ -0,0 +1,239 @@
mt_recompense_cb = {
icon = county_conquest_cb
group = conquest
combine_into_one = yes
should_show_war_goal_subview = no
allowed_for_character = {
always = no # cb will be called when neccesarry, it is not a common cb option
}
attacker_score_from_occupation_scale = 150
attacker_score_from_battles_scale = 150
defender_score_from_battles_scale = 150
# AI doesn't matter as the cb is called by effect, not by consideration
# ai_can_target_all_titles = {
# can_use_viking_invasion_cbs_trigger = yes
# }
ai_score_mult = {
value = viking_conquest_ai_score_value
# As a feudal gov, do not attack owner of tribal holdings if you have a tribal holding to convert already
add = {
every_in_list = {
list = target_titles
if = {
limit = { feudal_clan_tribal_conquest_constraints = yes }
add = -1000
}
}
}
# AI in struggles act insularly for wars that don't have a familial or legal basis.
multiply = struggle_wars_prioritise_struggle_targets_value
}
should_invalidate = {
NOT = {
any_in_list = {
list = target_titles
any_in_de_jure_hierarchy = {
tier = tier_county
holder = {
OR = {
this = scope:defender
target_is_liege_or_above = scope:defender
}
}
}
}
}
}
on_invalidated_desc = msg_county_conquest_war_invalidated_message
on_invalidated = {}
cost = {
piety = {
value = 0
if = {
limit = {
scope:defender.faith = scope:attacker.faith
}
add = {
value = 25
desc = CB_SAME_FAITH_COST
}
add = {
value = 5
multiply = scope:attacker.realm_size
desc = CB_REALM_SIZE_COST
max = 75
}
}
multiply = common_cb_piety_cost_multiplier
}
prestige = {
value = 0
if = {
limit = {
NOT = { scope:defender.faith = scope:attacker.faith }
}
add = {
value = 50
desc = CB_COST_DIFFERENT_FAITH
}
add = {
value = 5
multiply = scope:attacker.realm_size
desc = CB_REALM_SIZE_COST
max = 100
}
}
multiply = common_cb_prestige_cost_multiplier
}
}
on_declaration = {
on_declared_war = yes
}
on_victory_desc = {
desc = mt_recompense_cb_victory_desc
}
on_victory = {
scope:attacker = { show_pow_release_message_effect = yes }
#EP2 accolade glory gain for winning against higher ranked enemy
scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes }
# Prestige Progress for the Attacker
every_in_list = {
list = target_titles
scope:attacker = {
add_prestige_experience = minor_prestige_value
}
}
# Allies on both sides get full prestige value for helping in the war, based on their war participation.
modify_allies_of_participants_fame_values = {
WINNER = scope:attacker
FAME_BASE = minor_prestige_value
IS_RELIGIOUS_WAR = no
WINNER_ALLY_FAME_SCALE = 1
LOSER_ALLY_FAME_SCALE = 1
}
# Truce
add_truce_attacker_victory_effect = yes
}
on_white_peace_desc = {
desc = mt_recompense_cb_wp_desc
}
on_white_peace = {
scope:attacker = { show_pow_release_message_effect = yes }
# Prestige loss for the attacker
scope:attacker = {
add_prestige = {
value = minor_prestige_value
multiply = -1.0
}
stress_impact = {
ambitious = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
}
# Allies on both sides get full prestige value for helping in the war, based on their war participation.
modify_allies_of_participants_fame_values = {
WINNER = scope:attacker # Not important as the scales are identical
FAME_BASE = minor_prestige_value
IS_RELIGIOUS_WAR = no
WINNER_ALLY_FAME_SCALE = 1
LOSER_ALLY_FAME_SCALE = 1
}
scope:defender = {
stress_impact = {
arrogant = medium_stress_impact_gain
}
}
add_truce_white_peace_effect = yes
}
on_defeat_desc = {
desc = mt_recompense_cb_defeat_desc
}
on_defeat = {
scope:attacker = { show_pow_release_message_effect = yes }
#EP2 accolade glory gain for winning against higher ranked enemy
scope:defender = { accolade_defender_war_end_glory_gain_low_effect = yes }
# Prestige loss for the attacker
scope:attacker = {
pay_short_term_gold_reparations_effect = {
GOLD_VALUE = 1
}
add_prestige = {
value = medium_prestige_value
multiply = -1.0
}
}
# Prestige for Defender
scope:defender = {
add_prestige_war_defender_effect = {
PRESTIGE_VALUE = medium_prestige_value
}
}
# Allies on both sides get full prestige value for helping in the war, based on their war participation.
modify_allies_of_participants_fame_values = {
WINNER = scope:defender
FAME_BASE = minor_prestige_value
IS_RELIGIOUS_WAR = no
WINNER_ALLY_FAME_SCALE = 1
LOSER_ALLY_FAME_SCALE = 1
}
add_truce_attacker_defeat_effect = yes
scope:attacker = {
save_temporary_scope_as = loser
}
on_lost_aggression_war_discontent_loss = yes
}
transfer_behavior = transfer
on_primary_attacker_death = inherit
on_primary_defender_death = inherit
attacker_allies_inherit = yes
defender_allies_inherit = yes
attacker_ticking_warscore = 0
attacker_wargoal_percentage = 0.7
war_name = mt_recompense_war_name
war_name_base = "CONQUEST_WAR_NAME_BASE"
cb_name = "CONQUEST_COUNTY_CB_NAME"
interface_priority = 76
max_defender_score_from_occupation = 150
max_attacker_score_from_occupation = 150
}

View File

@ -0,0 +1,543 @@
##############################################################################################################################
# Medievel Thievery Mod
# Developed by DevZero (some code taken from pdx) - the mod has thievery in the name after all...
# Notes: First iteration -- Might need to balance piety and prestige values, will judge by community feedback
##############################################################################################################################
# Interaction name is a holdover from before mod was expanded. Leaving as-is so as not to create any localization issues, and it matters very little.
mt_steal_gold_interaction = {
icon = mt_interaction_icon
common_interaction = yes
interface_priority = 12
category = interaction_category_hostile
desc = mt_steal_gold_interaction_desc
cooldown = { months = 18 }
cooldown_against_recipient = {years = 3}
is_shown = {
NOT = {
scope:recipient = scope:actor
scope:actor = {
OR = {
intrigue < 10
is_allied_to = scope:recipient
age < 11
}
}
scope:recipient = {
is_ruler = no
}
}
# PDX Multiplayer Checks | Mod not balanced or made for multiplayer, but in case someone uses it.
NAND = { # Game Rules!
has_game_rule = no_players_multiplayer_murder_schemes
scope:actor = {
is_ai = no
}
scope:recipient = {
is_ai = no
}
}
NAND = {
has_game_rule = no_player_families_multiplayer_murder_schemes
scope:actor = {
is_ai = no
}
scope:recipient = {
OR = {
is_ai = no
any_close_family_member = {
AND = {
is_ai = no
NOT = { this = scope:actor }
}
}
}
}
}
}
is_valid_showing_failures_only = {
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
}
# Will stop AI as they do not trigger the flags -- must trigger on player
can_send = {
trigger_if = {
limit = {
scope:actor = {
is_ai = no
}
}
custom_tooltip = {
text = mt_can_send_requirement
OR = {
scope:steal_gold = yes
scope:steal_prestige = yes
scope:steal_piety = yes
}
}
}
}
on_accept = {
scope:actor = {
save_scope_as = mt_thief
}
scope:recipient = {
save_scope_as = mt_victim
}
if = {
limit = {
scope:steal_gold = yes
}
scope:actor = {
add_character_flag = gold_action_taken
duel = {
skill = intrigue
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
give_or_update_embezzler_secret_effect = {
TARGET = scope:recipient
STAKE = mt_steal_gold_value
}
show_as_tooltip = {
add_gold = {
value = mt_steal_gold_value
}
}
show_as_tooltip = {
scope:recipient = {
add_gold = {
value = mt_steal_gold_value
multiply = -1
}
}
}
scope:actor = {
if = {
limit = { has_trait = greedy }
add_stress = massive_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
pay_short_term_gold = {
target = scope:actor
gold = {
value = mt_steal_gold_value
}
}
trigger_event = {
id = mt_event.1001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = greedy
can_set_relation_nemesis_trigger = { CHARACTER = scope:actor }
}
set_relation_nemesis = {
target = scope:actor
reason = rival_tried_to_embezzle
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI Reciprocations
hidden_effect = {
mt_reciprocal_gold_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:steal_prestige = yes
}
scope:actor = {
add_character_flag = prestige_action_taken
duel = {
skill = diplomacy
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_prestige = {
value = 0
add = mt_steal_prestige_value
}
scope:recipient = {
add_prestige = {
value = 0
add = mt_steal_prestige_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = arrogant }
add_stress = medium_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.2001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = arrogant
}
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -75
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_prestige_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:steal_piety = yes
}
scope:actor = {
add_character_flag = piety_action_taken
duel = {
skill = learning
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_piety = {
value = mt_steal_piety_value
}
scope:recipient = {
add_piety = {
value = mt_steal_piety_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = humble }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = massive_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.3001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Forgiving characters lose a little less.
if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_piety_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:ai_option = yes
}
hidden_effect = {
mt_ai_action_effect = yes
}
}
}
# Player Options
send_option = {
flag = steal_gold
localization = mt_local_gold
is_valid = {
NOT = { scope:recipient.gold < 50 }
}
}
send_option = {
flag = steal_prestige
localization = mt_local_prestige
is_valid = {
NOT = { scope:recipient.prestige < 50 }
}
}
send_option = {
flag = steal_piety
localization = mt_local_piety
is_valid = {
NOT = { scope:recipient.piety < 50 }
}
}
send_options_exclusive = yes
auto_accept = yes
####################################################
# AI
ai_will_do = {
base = 0
}
}

View File

@ -0,0 +1,145 @@
mt_steal_gold_value = {
value = 0
if = {
limit = { scope:recipient.gold > 0 }
add = scope:recipient.gold
}
multiply = {
value = 0.2
if = {
limit = {
scope:recipient.gold <= 100
}
add = 0
}
else_if = {
limit = {
scope:recipient.gold <= 250
}
add = 0.05
}
else_if = {
limit = {
scope:recipient.gold <= 500
}
add = 0.1
}
else_if = {
limit = {
scope:recipient.gold <= 750
}
add = 0.125
}
else_if = {
limit = {
scope:recipient.gold <= 1000
}
add = 0.15
}
else = {
add = 0.175
}
}
round = yes
}
mt_steal_prestige_value = {
value = 0
if = {
limit = { scope:recipient.prestige > 0 }
add = scope:recipient.prestige
}
multiply = {
value = 0.2
if = {
limit = {
scope:recipient.prestige <= 100
}
add = 0
}
else_if = {
limit = {
scope:recipient.prestige <= 250
}
add = 0.05
}
else_if = {
limit = {
scope:recipient.prestige <= 500
}
add = 0.1
}
else_if = {
limit = {
scope:recipient.prestige <= 750
}
add = 0.125
}
else_if = {
limit = {
scope:recipient.prestige <= 1000
}
add = 0.15
}
else = {
add = 0.175
}
}
round = yes
}
mt_steal_piety_value = {
value = 0
if = {
limit = { scope:recipient.piety > 0 }
add = scope:recipient.piety
}
multiply = {
value = 0.2
if = {
limit = {
scope:recipient.piety <= 100
}
add = 0
}
else_if = {
limit = {
scope:recipient.piety <= 250
}
add = 0.05
}
else_if = {
limit = {
scope:recipient.piety <= 500
}
add = 0.1
}
else_if = {
limit = {
scope:recipient.piety <= 750
}
add = 0.125
}
else_if = {
limit = {
scope:recipient.piety <= 1000
}
add = 0.15
}
else = {
add = 0.175
}
}
round = yes
}
mt_thief_caught_gold_value = {
value = 0
if = {
limit = {
scope:mt_thief.gold > 0
}
add = scope:mt_thief.gold
}
}

View File

@ -0,0 +1,861 @@

mt_thief_commonfolk_atrifact_effect_01 = {
create_artifact = {
name = "Commonfolk Tapestry"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = tapestry
visuals = tapestry
rarity = masterwork
modifier = artifact_court_grandeur_baseline_add_2_modifier
modifier = artifact_monthly_tyranny_3_modifier
modifier = artifact_mercenary_hire_cost_mult_2_modifier
modifier = artifact_monthly_intrigue_lifestyle_xp_1_modifier
}
}
mt_thief_commonfolk_atrifact_effect_02 = {
create_artifact = {
name = "A Song of Water and Lava"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = book
visuals = book
rarity = masterwork
modifier = artifact_court_grandeur_baseline_add_2_modifier
modifier = artifact_fertility_gain_2_modifier
modifier = artifact_negate_health_penalty_add_3_modifier
modifier = artifact_short_reign_duration_mult_3_modifier
modifier = artifact_dread_gain_mult_1_modifier
modifier = artifact_intrigue_1_modifier
}
}
mt_thief_commonfolk_atrifact_effect_03 = {
create_artifact = {
name = "Flowers"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = miscellaneous
visuals = flowers
rarity = masterwork
modifier = artifact_attraction_opinion_1_modifier
}
}
mt_thief_commonfolk_atrifact_effect_04 = {
create_artifact = {
name = "Peasant's Bone"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = miscellaneous
visuals = bone
rarity = common
modifier = artifact_build_gold_cost_1_modifier
}
}
mt_reciprocal_gold_effect = {
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.1002
days = { 7 10 }
}
}
}
}
# AI Murder Retribution
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = murderer
has_trait = schemer
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = education_intrigue_4
has_trait = education_intrigue_5
dread > 75
}
}
}
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# AI Reciprocal Abduct (torturer's delight)
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = torturer
has_trait = ambitious
has_trait = cannibal
}
}
}
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = administrator
has_trait = architect
}
}
}
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# AI Sends Scoundrels to 'persuade' thief to give all Gold
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = greedy
has_trait = overseer
}
}
}
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# War time, Rah!
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = education_martial_5
has_trait = wrathful
has_trait = strategist
martial > 20
}
}
}
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# Else no consequences -- opinion penalty already accessed
}
mt_reciprocal_prestige_effect = {
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.1003
days = { 7 10 }
}
}
}
}
# AI Murder Retribution
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = murderer
has_trait = schemer
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = education_intrigue_4
has_trait = education_intrigue_5
dread > 75
}
}
}
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# AI Reciprocal Abduct (torturer's delight)
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = torturer
has_trait = ambitious
has_trait = cannibal
}
}
}
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = administrator
has_trait = architect
}
}
}
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# AI Sends Scoundrels to 'persuade' thief to give all Gold
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = greedy
has_trait = overseer
}
}
}
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# War time, Rah!
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = education_martial_5
has_trait = wrathful
has_trait = strategist
martial > 20
}
}
}
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# Else no consequences -- opinion penalty already accessed
}
mt_reciprocal_piety_effect = {
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.1004
days = { 7 10 }
}
}
}
}
# AI Murder Retribution
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = murderer
has_trait = schemer
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = education_intrigue_4
has_trait = education_intrigue_5
dread > 75
}
}
}
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# AI Reciprocal Abduct (torturer's delight)
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = torturer
has_trait = ambitious
has_trait = cannibal
}
}
}
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = administrator
has_trait = architect
}
}
}
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# AI Sends Scoundrels to 'persuade' thief to give all Gold
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = greedy
has_trait = overseer
}
}
}
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# War time, Rah!
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = education_martial_5
has_trait = wrathful
has_trait = strategist
martial > 20
}
}
}
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# Else no consequences -- opinion penalty already accessed
}
# AI action 'selection' since they don't use send options (default to gold theft)
mt_ai_action_effect = {
if = {
limit = {
scope:actor = {
OR = {
has_trait = august
has_trait = arrogant
has_trait = education_diplomacy_5
has_trait = ambitious
has_trait = diplomat
}
}
}
scope:actor = {
duel = {
skill = diplomacy
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_prestige = {
value = 0
add = mt_steal_prestige_value
}
scope:recipient = {
add_prestige = {
value = 0
add = mt_steal_prestige_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = arrogant }
add_stress = medium_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.2001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = arrogant
}
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -75
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_prestige_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:actor = {
OR = {
has_trait = zealous
has_trait = theologian
has_trait = education_learning_5
has_trait = education_learning_4
}
}
}
scope:actor = {
duel = {
skill = learning
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_piety = {
value = mt_steal_piety_value
}
scope:recipient = {
add_piety = {
value = mt_steal_piety_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = humble }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = massive_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.3001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Forgiving characters lose a little less.
if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_piety_effect = yes
}
}
}
}
}
else = {
scope:actor = {
duel = {
skill = intrigue
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
give_or_update_embezzler_secret_effect = {
TARGET = scope:recipient
STAKE = mt_steal_gold_value
}
show_as_tooltip = {
add_gold = {
value = mt_steal_gold_value
}
}
show_as_tooltip = {
scope:recipient = {
add_gold = {
value = mt_steal_gold_value
multiply = -1
}
}
}
scope:actor = {
if = {
limit = { has_trait = greedy }
add_stress = massive_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
pay_short_term_gold = {
target = scope:actor
gold = {
value = mt_steal_gold_value
}
}
trigger_event = {
id = mt_event.1001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = greedy
can_set_relation_nemesis_trigger = { CHARACTER = scope:actor }
}
set_relation_nemesis = {
target = scope:actor
reason = rival_tried_to_embezzle
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI Reciprocations
hidden_effect = {
mt_reciprocal_gold_effect = yes
}
}
}
}
}
}

View File

@ -0,0 +1,10 @@
version="0.1"
tags={
"Events"
"Gameplay"
"Schemes"
"Character Interactions"
}
name="Medieval Thievery (No AI Version)"
supported_version="1.*"
remote_file_id="3156900884"

View File

@ -0,0 +1,510 @@
##################################################################################################################
# Medievel Thievery Events
# Developed by DevZero
# Notes: Need to start war in event option: learn it!
##################################################################################################################
# Events are in order as follows:
# 1001, 2001, 3001 - Alert player of sucessful theft against them -- gold / prestige / piety respectively
# 1002, 1003, 1004 - Player action to unsuccessful theft against them -- gold / prestige / piety respectively for flavor text
# 1021, 1022 - Second layer to player action -- Reciprocal Thieve / Reciprocal Scheme
# 5000 - Fallback for player to reselect options (didn't like or wanted to see the rest)
namespace = mt_event
# Event to let player know there was a successful attempt against them to steal gold
mt_event.1001 = {
type = character_event
title = mt_notify_gold_title
desc = mt_notify_gold_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
option = {
name = mt_notify_gold_option.a
}
option = {
name = mt_notify_gold_option.b
}
}
# Event to let player know there was a successful attempt against them to steal prestige
mt_event.2001 = {
type = character_event
title = mt_notify_prestige_title
desc = mt_notify_prestige_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
option = {
name = mt_notify_prestige_option.a
}
option = {
name = mt_notify_prestige_option.b
}
option = {
name = mt_notify_prestige_option.c
}
}
# Event to let player know there was a successful attempt against them to steal piety
mt_event.3001 = {
type = character_event
title = mt_notify_piety_title
desc = mt_notify_piety_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
option = {
name = mt_notify_piety_option.a
}
option = {
name = mt_notify_piety_option.b
}
option = {
name = mt_notify_piety_option.c
}
}
##################################################################################################################################
##################################################################################################################################
# Caught!
# Steal Failure Gold -- Advises Player of theif, player can select two reciprical action categories or two actions
mt_event.1002 = {
type = character_event
title = mt_caught_gold_reciprocal_main_title
desc = mt_caught_gold_reciprocal_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# Start war - No overreaction here to speak of ...
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters).
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}
#Steal Failure Prestige
mt_event.1003 = {
type = character_event
title = mt_caught_prestige_reciprocal_main_title
desc = mt_caught_prestige_reciprocal_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# Start war - No overreaction here to speak of ...
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = county_conquest_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters).
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}
# Steal Failure Piety
mt_event.1004 = {
type = character_event
title = mt_caught_piety_reciprocal_main_title
desc = mt_caught_piety_reciprocal_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# # Start war - No overreaction here to speak of ...
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters).
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}
#########################################################################################################
# Reciprocal Thievery
mt_event.1021 = {
type = character_event
title = mt_reiprocal_thieve_main_title
desc = mt_reiprocal_thieve_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Send scoundrels (take all gold or kills thief)
option = {
name = mt_reciprocal_thieve_employ_rogues_option
custom_tooltip = mt_reciprocal_rogues_employ_desc.tt
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# Send marauders to torment their capital
option = {
name = mt_reciprocal_thieve_scoundrel_disturb_option
custom_tooltip = mt_reciprocal_scoundrel_disturb_employ_desc.tt
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# Send scoundrels to thieve the realm (may get artifact)
option = {
name = mt_reciprocal_thieve_employ_theives_option
custom_tooltip = mt_reciprocal_thieve_employ_desc.tt
random_list = {
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_01 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_02 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_03 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_04 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_05 = yes
}
}
}
random_list = {
50 = {
scope:mt_thief.capital_county = {
add_county_modifier = county_corruption_thieves_guild_modifier
}
}
50 = {
}
}
}
# Nevermind
option = {
name = mt_reciprocal_nervermind_exit.tt
trigger_event = {
id = mt_event.5000
}
}
}
# Personal Schemes
mt_event.1022 = {
type = character_event
title = mt_reciprocal_personal_title
desc = mt_reciprocal_personal_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Murder the ne'er-do-well!
option = {
name = mt_reciprocal_murder_option.tt
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# Abduct the ne'er-do-well!
option = {
name = mt_reciprocal_abduct_option.tt
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
# Nevermind
option = {
name = mt_reciprocal_nervermind_exit.tt
trigger_event = {
id = mt_event.5000
}
}
}
#############################################################################################################
# Redirect Fallback Should Player want to address different options or see all -- 'Nevermind Option Event'
mt_event.5000 = {
type = character_event
title = mt_reciprocal_fallback_title
desc = mt_reciprocal_fallback_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct / fab hook)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# Start war -- don't know how to create claim on artifact
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters) and opinion boost with nayer-do-well.
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}

View File

@ -0,0 +1,86 @@
l_english:
# Interaction
mt_steal_gold_interaction: "Thieve"
mt_steal_gold_interaction_desc: "Thieve from [recipient.GetTitledFirstName]"
mt_steal_gold_interaction.tt.success.actor: "You're successful in your thievery"
mt_steal_gold_interaction_tt.failure.actor: "Your dastardly ploy is uncovered"
mt_can_send_requirement: "Must choose an option"
mt_local_gold: "Thieve Gold"
mt_local_prestige: "Thieve Prestige"
mt_local_piety: "Thieve Piety"
#### Events
# Event: Not Caught - Notify / Don't reveal
mt_notify_gold_title: "Thievery: Missing Gold"
mt_notify_gold_desc: "\n\nI have been hearing through various sources that there is missing gold from the treasury. Though after a short rummaging, a lowly administrative scribe found nothing."
mt_notify_gold_option.a: "I shall delve no further ino the matter, surely I would have noticed!"
mt_notify_gold_option.b: "Another question left to the philosophers I suppose!"
mt_notify_prestige_title: "Thievery: Regal Reputation"
mt_notify_prestige_desc: "\n\nThere has been much talk amidst the realm. Someone has besmirched my regal nature and reputation! Unduly and unfairly, I say. Why lead a campaign that turns the secular opinion against the great leader of the realm? One intercepted letter's introduction reads #italic '... we must recognize those worthy of fame and those of whom are not ... '#! Blasphemous!"
mt_notify_prestige_option.a: "The colloquial #italic 'we' #! is reserved for those with leeches and the mad! "
mt_notify_prestige_option.b: "One must not concern themself with the opinions of the sheep."
mt_notify_prestige_option.c: "One must simply know me to understand if my reputation is just!"
mt_notify_piety_title: "Thievery: Piousness"
mt_notify_piety_desc: "\n\nTalk among the common folk is that my piousness is in question. Someone has undoubtedly spread this slanderous information in an effort to increase their own standing in the matter."
mt_notify_piety_option.a: "I am just as pious as the rest!"
mt_notify_piety_option.b: "Does this person know me?"
mt_notify_piety_option.c: "None shall come of this."
# Event: Caught
mt_caught_gold_reciprocal_main_title: "Thievery: Gold"
mt_caught_gold_reciprocal_main_desc: "\n\n[mt_thief.GetTitledFirstName] Has been named as ne'er-do-well against me in a ploy to thieve from #EMP my #! treasury!\n\nRumors spread and the news has made its rounds amongst the commonfolk. The realm awaits my response."
mt_caught_prestige_reciprocal_main_title: "Thievery: Regal Reputation"
mt_caught_prestige_reciprocal_main_desc: "\n\n[mt_thief.GetTitledFirstName] Has been named as ne'er-do-well against me in a ploy to lessen my reputation in the secular realm in service of [mt_thief.GetHerHis] own!\n\nRumors spread and the news has made its rounds amongst the commonfolk. The realm awaits my response."
mt_caught_piety_reciprocal_main_title: "Thievery: Piousness"
mt_caught_piety_reciprocal_main_desc: "\n\n[mt_thief.GetTitledFirstName] Has been named as ne'er-do-well against me in a ploy to service [mt_thief.GetHerHis] own reputation regarding piousness. While the ploy was uncovered, there could have been questions regarding my piousness!\n\nRumors spread and the news has made its rounds amongst the commonfolk. The realm awaits my response."
mt_reciprocal_thieve_option.tt: "#italic Ohhh,#! two can play at that game!"
mt_reciprocal_personal_scheme_option.tt: "Let's make this personal!"
mt_reciprocal_war_option.tt: "Raise the army!"
mt_non_reciprocal_option.tt: "I'll not lower myself to the same level as the swine!"
# Reciprocal Thievery
mt_reiprocal_thieve_main_title: "Thievery: The Games We Play"
mt_reiprocal_thieve_main_desc: "\n\nAn eye for an eye makes the realm blind -- or so I've been told. Though whoever said that must not of been wronged in such a way! Some sort of justice must be served! Honor demands it!"
mt_reciprocal_thieve_employ_rogues_option: "I'll convince local rogues to inflitrate [mt_thief.GetHerHis] castle during the night!"
mt_reciprocal_rogues_employ_desc.tt: "#italic Simply, [mt_thief.GetSheHe] will pay or meet the ire of the rogues #!"
mt_reciprocal_thieve_employ_theives_option: "I'll send local thieves to harass the commonfolk among [mt_thief.GetHerHis] realm!"
mt_reciprocal_thieve_employ_desc.tt: "#italic Regality be damned, recompense will come from someone #!"
mt_reciprocal_thieve_scoundrel_disturb_option: "I'll send a band of local scoundrels to sow chaos in [mt_thief.GetHerHis] capital!"
mt_reciprocal_scoundrel_disturb_employ_desc.tt: "#italic Surely as rain is wet, [mt_thief.GetHerHis] capital will come to dislike the ruffians set upon it #!"
# Reciprocal Personal
mt_reciprocal_personal_title: "Thievery: Let's Get Personal"
mt_reciprocal_personal_desc: "\n\nForget the rest, there is one person responsible and [mt_thief.GetTitledFirstName] will face my personal judgement. The question becomes rather, what sort of justice shall be enacted!"
mt_reciprocal_murder_option.tt: "[mt_thief.GetTitledFirstName] shall serve the ground as fertilizer!"
mt_reciprocal_abduct_option.tt: "Abduct now, decide later..."
# War Reciprocal Option
mt_reciprocal_war_desc.tt: "#italic No overreaction here to speak of#!"
# Fallback
mt_reciprocal_fallback_title: "Thievery: Decisions, Decisions..."
mt_reciprocal_fallback_desc: "\n\n#italic Hmmm.. let me think ...#!"
# Exit option for all level 2 events
mt_reciprocal_nervermind_exit.tt: "Maybe I should rethink my options..."
# Reciprocal War
mt_recompense_cb: "Recompense Casus Belli"
mt_recompense_war_name: "Recompense War"
mt_recompense_cb_victory_desc: "You benefit from the spoils of war as just recompense!"
mt_recompense_cb_wp_desc: "Hostilities end between the two sides."
mt_recompense_cb_defeat_desc: "You are embarassed on the field of battle."

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

10
Medievel_Thievery.mod Normal file
View File

@ -0,0 +1,10 @@
version="0.1"
tags={
"Schemes"
"Gameplay"
"Character Interactions"
}
name="Medievel Thievery"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Medievel_Thievery"
remote_file_id="3143275236"

View File

@ -0,0 +1,239 @@
mt_recompense_cb = {
icon = county_conquest_cb
group = conquest
combine_into_one = yes
should_show_war_goal_subview = no
allowed_for_character = {
always = no # cb will be called when neccesarry, it is not a common cb option
}
attacker_score_from_occupation_scale = 150
attacker_score_from_battles_scale = 150
defender_score_from_battles_scale = 150
# AI doesn't matter as the cb is called by effect, not by consideration
# ai_can_target_all_titles = {
# can_use_viking_invasion_cbs_trigger = yes
# }
ai_score_mult = {
value = viking_conquest_ai_score_value
# As a feudal gov, do not attack owner of tribal holdings if you have a tribal holding to convert already
add = {
every_in_list = {
list = target_titles
if = {
limit = { feudal_clan_tribal_conquest_constraints = yes }
add = -1000
}
}
}
# AI in struggles act insularly for wars that don't have a familial or legal basis.
multiply = struggle_wars_prioritise_struggle_targets_value
}
should_invalidate = {
NOT = {
any_in_list = {
list = target_titles
any_in_de_jure_hierarchy = {
tier = tier_county
holder = {
OR = {
this = scope:defender
target_is_liege_or_above = scope:defender
}
}
}
}
}
}
on_invalidated_desc = msg_county_conquest_war_invalidated_message
on_invalidated = {}
cost = {
piety = {
value = 0
if = {
limit = {
scope:defender.faith = scope:attacker.faith
}
add = {
value = 25
desc = CB_SAME_FAITH_COST
}
add = {
value = 5
multiply = scope:attacker.realm_size
desc = CB_REALM_SIZE_COST
max = 75
}
}
multiply = common_cb_piety_cost_multiplier
}
prestige = {
value = 0
if = {
limit = {
NOT = { scope:defender.faith = scope:attacker.faith }
}
add = {
value = 50
desc = CB_COST_DIFFERENT_FAITH
}
add = {
value = 5
multiply = scope:attacker.realm_size
desc = CB_REALM_SIZE_COST
max = 100
}
}
multiply = common_cb_prestige_cost_multiplier
}
}
on_declaration = {
on_declared_war = yes
}
on_victory_desc = {
desc = mt_recompense_cb_victory_desc
}
on_victory = {
scope:attacker = { show_pow_release_message_effect = yes }
#EP2 accolade glory gain for winning against higher ranked enemy
scope:attacker = { accolade_attacker_war_end_glory_gain_low_effect = yes }
# Prestige Progress for the Attacker
every_in_list = {
list = target_titles
scope:attacker = {
add_prestige_experience = minor_prestige_value
}
}
# Allies on both sides get full prestige value for helping in the war, based on their war participation.
modify_allies_of_participants_fame_values = {
WINNER = scope:attacker
FAME_BASE = minor_prestige_value
IS_RELIGIOUS_WAR = no
WINNER_ALLY_FAME_SCALE = 1
LOSER_ALLY_FAME_SCALE = 1
}
# Truce
add_truce_attacker_victory_effect = yes
}
on_white_peace_desc = {
desc = mt_recompense_cb_wp_desc
}
on_white_peace = {
scope:attacker = { show_pow_release_message_effect = yes }
# Prestige loss for the attacker
scope:attacker = {
add_prestige = {
value = minor_prestige_value
multiply = -1.0
}
stress_impact = {
ambitious = medium_stress_impact_gain
arrogant = medium_stress_impact_gain
}
}
# Allies on both sides get full prestige value for helping in the war, based on their war participation.
modify_allies_of_participants_fame_values = {
WINNER = scope:attacker # Not important as the scales are identical
FAME_BASE = minor_prestige_value
IS_RELIGIOUS_WAR = no
WINNER_ALLY_FAME_SCALE = 1
LOSER_ALLY_FAME_SCALE = 1
}
scope:defender = {
stress_impact = {
arrogant = medium_stress_impact_gain
}
}
add_truce_white_peace_effect = yes
}
on_defeat_desc = {
desc = mt_recompense_cb_defeat_desc
}
on_defeat = {
scope:attacker = { show_pow_release_message_effect = yes }
#EP2 accolade glory gain for winning against higher ranked enemy
scope:defender = { accolade_defender_war_end_glory_gain_low_effect = yes }
# Prestige loss for the attacker
scope:attacker = {
pay_short_term_gold_reparations_effect = {
GOLD_VALUE = 1
}
add_prestige = {
value = medium_prestige_value
multiply = -1.0
}
}
# Prestige for Defender
scope:defender = {
add_prestige_war_defender_effect = {
PRESTIGE_VALUE = medium_prestige_value
}
}
# Allies on both sides get full prestige value for helping in the war, based on their war participation.
modify_allies_of_participants_fame_values = {
WINNER = scope:defender
FAME_BASE = minor_prestige_value
IS_RELIGIOUS_WAR = no
WINNER_ALLY_FAME_SCALE = 1
LOSER_ALLY_FAME_SCALE = 1
}
add_truce_attacker_defeat_effect = yes
scope:attacker = {
save_temporary_scope_as = loser
}
on_lost_aggression_war_discontent_loss = yes
}
transfer_behavior = transfer
on_primary_attacker_death = inherit
on_primary_defender_death = inherit
attacker_allies_inherit = yes
defender_allies_inherit = yes
attacker_ticking_warscore = 0
attacker_wargoal_percentage = 0.7
war_name = mt_recompense_war_name
war_name_base = "CONQUEST_WAR_NAME_BASE"
cb_name = "CONQUEST_COUNTY_CB_NAME"
interface_priority = 76
max_defender_score_from_occupation = 150
max_attacker_score_from_occupation = 150
}

View File

@ -0,0 +1,743 @@
##############################################################################################################################
# Medievel Thievery Mod
# Developed by DevZero (some code taken from pdx) - the mod has thievery in the name after all...
# Notes: First iteration -- Might need to balance piety and prestige values, will judge by community feedback
##############################################################################################################################
# Interaction name is a holdover from before mod was expanded. Leaving as-is so as not to create any localization issues, and it matters very little.
mt_steal_gold_interaction = {
icon = mt_interaction_icon
common_interaction = yes
interface_priority = 12
category = interaction_category_hostile
desc = mt_steal_gold_interaction_desc
cooldown = { months = 20 }
cooldown_against_recipient = {years = 3}
is_shown = {
NOT = {
scope:recipient = scope:actor
scope:actor = {
OR = {
intrigue < 10
is_allied_to = scope:recipient
age < 11
}
}
scope:recipient = {
is_ruler = no
}
}
# PDX Multiplayer Checks | Mod not balanced or made for multiplayer, but in case someone uses it.
NAND = { # Game Rules!
has_game_rule = no_players_multiplayer_murder_schemes
scope:actor = {
is_ai = no
}
scope:recipient = {
is_ai = no
}
}
NAND = {
has_game_rule = no_player_families_multiplayer_murder_schemes
scope:actor = {
is_ai = no
}
scope:recipient = {
OR = {
is_ai = no
any_close_family_member = {
AND = {
is_ai = no
NOT = { this = scope:actor }
}
}
}
}
}
}
is_valid_showing_failures_only = {
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
}
# Will stop AI as they do not trigger the flags -- must trigger on player
can_send = {
trigger_if = {
limit = {
scope:actor = {
is_ai = no
}
}
custom_tooltip = {
text = mt_can_send_requirement
OR = {
scope:steal_gold = yes
scope:steal_prestige = yes
scope:steal_piety = yes
}
}
}
trigger_else = {
scope:recipient = {
NOT = {
has_character_flag = flag_mt_ai_theft_victim
}
}
}
}
on_accept = {
scope:actor = {
save_scope_as = mt_thief
}
scope:recipient = {
save_scope_as = mt_victim
}
if = {
limit = {
scope:steal_gold = yes
}
scope:actor = {
duel = {
skill = intrigue
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
give_or_update_embezzler_secret_effect = {
TARGET = scope:recipient
STAKE = mt_steal_gold_value
}
show_as_tooltip = {
add_gold = {
value = mt_steal_gold_value
}
}
show_as_tooltip = {
scope:recipient = {
add_gold = {
value = mt_steal_gold_value
multiply = -1
}
}
}
scope:actor = {
if = {
limit = { has_trait = greedy }
add_stress = massive_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
pay_short_term_gold = {
target = scope:actor
gold = {
value = mt_steal_gold_value
}
}
trigger_event = {
id = mt_event.1001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = greedy
can_set_relation_nemesis_trigger = { CHARACTER = scope:actor }
}
set_relation_nemesis = {
target = scope:actor
reason = rival_tried_to_embezzle
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI Reciprocations
hidden_effect = {
mt_reciprocal_gold_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:steal_prestige = yes
}
scope:actor = {
duel = {
skill = diplomacy
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_prestige = {
value = 0
add = mt_steal_prestige_value
}
scope:recipient = {
add_prestige = {
value = 0
add = mt_steal_prestige_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = arrogant }
add_stress = medium_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.2001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = arrogant
}
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -75
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_prestige_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:steal_piety = yes
}
scope:actor = {
duel = {
skill = learning
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_piety = {
value = mt_steal_piety_value
}
scope:recipient = {
add_piety = {
value = mt_steal_piety_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = humble }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = massive_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.3001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Forgiving characters lose a little less.
if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_piety_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:ai_option = yes
}
hidden_effect = {
mt_ai_action_effect = yes
}
}
}
# AI Option -- effects, choice and such filtered out in the effect. AI can not pick options normally so we filter based on traits and default to theft of gold. This choice is hidden from the player and should be first among the options so the ai defaults to it.
send_option = {
flag = ai_option
is_shown = {
scope:actor = {
is_ai = yes
}
}
is_valid = {
scope:actor = {
is_ai = yes
}
}
}
# Player Options
send_option = {
flag = steal_gold
localization = mt_local_gold
is_valid = {
NOT = { scope:recipient.gold < 50 }
}
}
send_option = {
flag = steal_prestige
localization = mt_local_prestige
is_valid = {
NOT = { scope:recipient.prestige < 50 }
}
}
send_option = {
flag = steal_piety
localization = mt_local_piety
is_valid = {
NOT = { scope:recipient.piety < 50 }
}
}
send_options_exclusive = yes
auto_accept = yes
####################################################
# AI
ai_targets = {
ai_recipients = neighboring_rulers
max = 3
}
ai_targets = {
ai_recipients = leige
max = 1
}
ai_targets = {
ai_recipients = realm_characters
max = 5
}
ai_targets = {
ai_recipients = peer_vassals
max = 3
}
ai_frequency = 240
ai_potential = {
AND = {
age > 15
intrigue > 9
AND = {
OR = {
has_trait = schemer
has_trait = deceitful
has_trait = education_intrigue_4
has_trait = education_intrigue_5
}
OR = {
has_trait = greedy
has_trait = ambitious
has_trait = arbitrary
}
}
}
}
ai_will_do = {
base = 0
####################################
# Weights - Who am I? Who are YOU!?
# Weigh Opinion
opinion_modifier = {
opinion_target = scope:recipient
multiplier = -0.25
}
# Weigh Personality.
ai_value_modifier = {
ai_boldness = 0.10
ai_greed = 0.25
ai_honor = -1
}
########################
# Debt based modifiers - I NEED IT, GIVE IT HERE!
modifier = {
add = 5
debt_level = 1
}
### Is one year in debt.
modifier = {
add = 10
debt_level = 2
}
### Is two years in debt.
modifier = {
add = 20
debt_level = 3
}
### Is three years in debt.
modifier = {
add = 35
debt_level = 4
}
### Is four years in debt.
modifier = {
add = 50
debt_level = 5
}
### Is over five years in debt.
modifier = {
add = 75
debt_level >= 6
}
#########################
# Traits
modifier = {
add = 15
has_trait = deceitful
}
modifier = {
add = -150
has_trait = honest
}
modifier = {
add = -15
has_trait = generous
}
modifier = {
add = -25
has_trait = compassionate
}
modifier = {
add = -10
has_trait = temperate
}
modifier = {
add = -5
has_trait = calm
}
modifier = {
add = -20
has_trait = humble
}
modifier = {
add = -15
has_trait = craven
}
modifier = {
add = 5
has_trait = ambitious
}
modifier = {
add = 10
has_trait = greedy
}
modifier = {
add = -35
has_trait = content
}
modifier = {
add = -30
has_trait = just
}
##############################
# Specialized Criteria
# Rival
modifier = {
add = 15
scope:actor = {
has_relation_rival = scope:recipient
}
}
# Nemesis
modifier = {
add = 25
scope:actor = {
has_relation_nemesis = scope:recipient
}
}
# Friend of Some Kind
modifier = {
add = -100
scope:actor = {
OR = {
has_relation_friend = scope:recipient
has_relation_best_friend = scope:recipient
has_relation_lover = scope:recipient
has_relation_soulmate = scope:recipient
has_relation_guardian = scope:recipient
has_relation_ward = scope:recipient
}
}
}
# Probably not the best idea to steal from the Head of my Faith . . .
modifier = {
add = -85
scope:actor.faith.religious_head = scope:recipient
}
}
}

View File

@ -0,0 +1,145 @@
mt_steal_gold_value = {
value = 0
if = {
limit = { scope:recipient.gold > 0 }
add = scope:recipient.gold
}
multiply = {
value = 0.2
if = {
limit = {
scope:recipient.gold <= 100
}
add = 0
}
else_if = {
limit = {
scope:recipient.gold <= 250
}
add = 0.05
}
else_if = {
limit = {
scope:recipient.gold <= 500
}
add = 0.1
}
else_if = {
limit = {
scope:recipient.gold <= 750
}
add = 0.125
}
else_if = {
limit = {
scope:recipient.gold <= 1000
}
add = 0.15
}
else = {
add = 0.175
}
}
round = yes
}
mt_steal_prestige_value = {
value = 0
if = {
limit = { scope:recipient.prestige > 0 }
add = scope:recipient.prestige
}
multiply = {
value = 0.2
if = {
limit = {
scope:recipient.prestige <= 100
}
add = 0
}
else_if = {
limit = {
scope:recipient.prestige <= 250
}
add = 0.05
}
else_if = {
limit = {
scope:recipient.prestige <= 500
}
add = 0.1
}
else_if = {
limit = {
scope:recipient.prestige <= 750
}
add = 0.125
}
else_if = {
limit = {
scope:recipient.prestige <= 1000
}
add = 0.15
}
else = {
add = 0.175
}
}
round = yes
}
mt_steal_piety_value = {
value = 0
if = {
limit = { scope:recipient.piety > 0 }
add = scope:recipient.piety
}
multiply = {
value = 0.2
if = {
limit = {
scope:recipient.piety <= 100
}
add = 0
}
else_if = {
limit = {
scope:recipient.piety <= 250
}
add = 0.05
}
else_if = {
limit = {
scope:recipient.piety <= 500
}
add = 0.1
}
else_if = {
limit = {
scope:recipient.piety <= 750
}
add = 0.125
}
else_if = {
limit = {
scope:recipient.piety <= 1000
}
add = 0.15
}
else = {
add = 0.175
}
}
round = yes
}
mt_thief_caught_gold_value = {
value = 0
if = {
limit = {
scope:mt_thief.gold > 0
}
add = scope:mt_thief.gold
}
}

View File

@ -0,0 +1,890 @@

mt_thief_commonfolk_atrifact_effect_01 = {
create_artifact = {
name = "Commonfolk Tapestry"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = tapestry
visuals = tapestry
rarity = masterwork
modifier = artifact_court_grandeur_baseline_add_2_modifier
modifier = artifact_monthly_tyranny_3_modifier
modifier = artifact_mercenary_hire_cost_mult_2_modifier
modifier = artifact_monthly_intrigue_lifestyle_xp_1_modifier
}
}
mt_thief_commonfolk_atrifact_effect_02 = {
create_artifact = {
name = "A Song of Water and Lava"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = book
visuals = book
rarity = masterwork
modifier = artifact_court_grandeur_baseline_add_2_modifier
modifier = artifact_fertility_gain_2_modifier
modifier = artifact_negate_health_penalty_add_3_modifier
modifier = artifact_short_reign_duration_mult_3_modifier
modifier = artifact_dread_gain_mult_1_modifier
modifier = artifact_intrigue_1_modifier
}
}
mt_thief_commonfolk_atrifact_effect_03 = {
create_artifact = {
name = "Flowers"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = miscellaneous
visuals = flowers
rarity = masterwork
modifier = artifact_attraction_opinion_1_modifier
}
}
mt_thief_commonfolk_atrifact_effect_04 = {
create_artifact = {
name = "Peasant's Bone"
description = "A product at the expense of the commonfolk from another realm. Procured from a thieves guild and given to the sponsoring ruler as proof of realm harassment. "
type = miscellaneous
visuals = bone
rarity = common
modifier = artifact_build_gold_cost_1_modifier
}
}
mt_reciprocal_gold_effect = {
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.1002
days = { 7 10 }
}
}
}
}
# AI Murder Retribution
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = murderer
has_trait = schemer
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = education_intrigue_4
has_trait = education_intrigue_5
dread > 75
}
}
}
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# AI Reciprocal Abduct (torturer's delight)
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = torturer
has_trait = ambitious
has_trait = cannibal
}
}
}
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = administrator
has_trait = architect
}
}
}
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# AI Sends Scoundrels to 'persuade' thief to give all Gold
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = greedy
has_trait = overseer
}
}
}
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# War time, Rah!
else_if = {
limit = {
scope:mt_victim = {
AND = {
OR = {
has_trait = education_martial_5
has_trait = strategist
martial > 20
}
OR = {
has_trait = wrathful
has_trait = vengeful
}
}
}
}
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# Else no consequences -- opinion penalty already assessed
}
mt_reciprocal_prestige_effect = {
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.1003
days = { 7 10 }
}
}
}
}
# AI Murder Retribution
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = murderer
has_trait = schemer
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = education_intrigue_4
has_trait = education_intrigue_5
dread > 75
}
}
}
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# AI Reciprocal Abduct (torturer's delight)
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = torturer
has_trait = ambitious
has_trait = cannibal
}
}
}
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = administrator
has_trait = architect
}
}
}
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# AI Sends Scoundrels to 'persuade' thief to give all Gold
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = greedy
has_trait = overseer
}
}
}
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# War time, Rah!
else_if = {
limit = {
scope:mt_victim = {
AND = {
OR = {
has_trait = education_martial_5
has_trait = strategist
martial > 20
}
OR = {
has_trait = wrathful
has_trait = vengeful
}
}
}
}
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# Else no consequences -- opinion penalty already accessed
}
mt_reciprocal_piety_effect = {
if = {
limit = {
scope:recipient = {
is_ai = no
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.1004
days = { 7 10 }
}
}
}
}
# AI Murder Retribution
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = murderer
has_trait = schemer
has_trait = vengeful
has_trait = sadistic
has_trait = callous
has_trait = education_intrigue_4
has_trait = education_intrigue_5
dread > 75
}
}
}
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# AI Reciprocal Abduct (torturer's delight)
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = torturer
has_trait = ambitious
has_trait = cannibal
}
}
}
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = administrator
has_trait = architect
}
}
}
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# AI Sends Scoundrels to 'persuade' thief to give all Gold
else_if = {
limit = {
scope:mt_victim = {
OR = {
has_trait = greedy
has_trait = overseer
}
}
}
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# War time, Rah!
else_if = {
limit = {
scope:mt_victim = {
AND = {
OR = {
has_trait = education_martial_5
has_trait = strategist
martial > 20
}
OR = {
has_trait = wrathful
has_trait = vengeful
}
}
}
}
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# Else no consequences -- opinion penalty already accessed
}
# AI action 'selection' since they don't use send options (default to gold theft)
mt_ai_action_effect = {
scope:mt_victim = {
add_character_flag = {
flag = flag_mt_ai_theft_victim
years = 7
}
}
if = {
limit = {
scope:actor = {
OR = {
has_trait = august
has_trait = arrogant
has_trait = education_diplomacy_5
has_trait = ambitious
has_trait = diplomat
}
}
}
scope:actor = {
duel = {
skill = diplomacy
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_prestige = {
value = 0
add = mt_steal_prestige_value
}
scope:recipient = {
add_prestige = {
value = 0
add = mt_steal_prestige_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = arrogant }
add_stress = medium_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.2001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = arrogant
}
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -75
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_prestige_effect = yes
}
}
}
}
}
else_if = {
limit = {
scope:actor = {
OR = {
has_trait = zealous
has_trait = theologian
has_trait = education_learning_5
has_trait = education_learning_4
}
}
}
scope:actor = {
duel = {
skill = learning
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
add_piety = {
value = mt_steal_piety_value
}
scope:recipient = {
add_piety = {
value = mt_steal_piety_value
multiply = -1
}
}
scope:actor = {
if = {
limit = { has_trait = humble }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = massive_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
trigger_event = {
id = mt_event.3001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Forgiving characters lose a little less.
if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI reciprocations
hidden_effect = {
mt_reciprocal_piety_effect = yes
}
}
}
}
}
else = {
scope:actor = {
duel = {
skill = intrigue
target = scope:recipient
50 = {
desc = mt_steal_gold_interaction.tt.success.actor
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction.tt.success.actor
left_icon = scope:recipient
give_or_update_embezzler_secret_effect = {
TARGET = scope:recipient
STAKE = mt_steal_gold_value
}
show_as_tooltip = {
add_gold = {
value = mt_steal_gold_value
}
}
show_as_tooltip = {
scope:recipient = {
add_gold = {
value = mt_steal_gold_value
multiply = -1
}
}
}
scope:actor = {
if = {
limit = { has_trait = greedy }
add_stress = massive_stress_impact_loss
}
if = {
limit = { has_trait = compassionate }
add_stress = medium_stress_impact_gain
}
if = {
limit = { has_trait = deceitful }
add_stress = minor_stress_impact_loss
}
if = {
limit = { has_trait = content }
add_sress = medium_stress_impact_gain
}
if = {
limit = { has_trait = temperate }
add_stress = minor_stress_impact_gain
}
if = {
limit = { has_trait = honest }
add_stress = massive_stress_impact_gain
}
if = {
limit = { has_trait = just }
add_stress = medium_stress_impact_gain
}
}
}
hidden_effect = {
scope:recipient = {
pay_short_term_gold = {
target = scope:actor
gold = {
value = mt_steal_gold_value
}
}
trigger_event = {
id = mt_event.1001
days = { 7 10 }
}
}
}
}
50 = {
desc = mt_steal_gold_interaction_tt.failure.actor
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = mt_steal_gold_interaction_tt.failure.actor
left_icon = scope:recipient
scope:recipient = {
# Greedy characters will not forgive this slight if they can help it.
if = {
limit = {
has_trait = greedy
can_set_relation_nemesis_trigger = { CHARACTER = scope:actor }
}
set_relation_nemesis = {
target = scope:actor
reason = rival_tried_to_embezzle
}
}
# Forgiving characters lose a little less.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -10
}
}
# Otherwise, folks do be mad.
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -45
}
}
}
}
####################################################################################################################
# Events and AI Reciprocations
hidden_effect = {
mt_reciprocal_gold_effect = yes
}
}
}
}
}
}

View File

@ -0,0 +1,9 @@
version="0.1"
tags={
"Schemes"
"Gameplay"
"Character Interactions"
}
name="Medievel Thievery"
supported_version="1.*"
remote_file_id="3143275236"

View File

@ -0,0 +1,510 @@
##################################################################################################################
# Medievel Thievery Events
# Developed by DevZero
# Notes: Need to start war in event option: learn it!
##################################################################################################################
# Events are in order as follows:
# 1001, 2001, 3001 - Alert player of sucessful theft against them -- gold / prestige / piety respectively
# 1002, 1003, 1004 - Player action to unsuccessful theft against them -- gold / prestige / piety respectively for flavor text
# 1021, 1022 - Second layer to player action -- Reciprocal Thieve / Reciprocal Scheme
# 5000 - Fallback for player to reselect options (didn't like or wanted to see the rest)
namespace = mt_event
# Event to let player know there was a successful attempt against them to steal gold
mt_event.1001 = {
type = character_event
title = mt_notify_gold_title
desc = mt_notify_gold_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
option = {
name = mt_notify_gold_option.a
}
option = {
name = mt_notify_gold_option.b
}
}
# Event to let player know there was a successful attempt against them to steal prestige
mt_event.2001 = {
type = character_event
title = mt_notify_prestige_title
desc = mt_notify_prestige_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
option = {
name = mt_notify_prestige_option.a
}
option = {
name = mt_notify_prestige_option.b
}
option = {
name = mt_notify_prestige_option.c
}
}
# Event to let player know there was a successful attempt against them to steal piety
mt_event.3001 = {
type = character_event
title = mt_notify_piety_title
desc = mt_notify_piety_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
option = {
name = mt_notify_piety_option.a
}
option = {
name = mt_notify_piety_option.b
}
option = {
name = mt_notify_piety_option.c
}
}
##################################################################################################################################
##################################################################################################################################
# Caught!
# Steal Failure Gold -- Advises Player of theif, player can select two reciprical action categories or two actions
mt_event.1002 = {
type = character_event
title = mt_caught_gold_reciprocal_main_title
desc = mt_caught_gold_reciprocal_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# Start war - No overreaction here to speak of ...
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters).
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}
#Steal Failure Prestige
mt_event.1003 = {
type = character_event
title = mt_caught_prestige_reciprocal_main_title
desc = mt_caught_prestige_reciprocal_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# Start war - No overreaction here to speak of ...
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = county_conquest_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters).
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}
# Steal Failure Piety
mt_event.1004 = {
type = character_event
title = mt_caught_piety_reciprocal_main_title
desc = mt_caught_piety_reciprocal_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# # Start war - No overreaction here to speak of ...
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters).
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}
#########################################################################################################
# Reciprocal Thievery
mt_event.1021 = {
type = character_event
title = mt_reiprocal_thieve_main_title
desc = mt_reiprocal_thieve_main_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Send scoundrels (take all gold or kills thief)
option = {
name = mt_reciprocal_thieve_employ_rogues_option
custom_tooltip = mt_reciprocal_rogues_employ_desc.tt
random_list = {
20 = {
scope:mt_thief = {
pay_short_term_gold = {
target = scope:mt_victim
gold = mt_thief_caught_gold_value
}
}
}
70 = {
scope:mt_thief = {
add_trait = wounded_1
}
}
10 = {
}
}
}
# Send marauders to torment their capital
option = {
name = mt_reciprocal_thieve_scoundrel_disturb_option
custom_tooltip = mt_reciprocal_scoundrel_disturb_employ_desc.tt
scope:mt_thief.capital_county = {
random_list = {
50 = {
change_development_level = -1
}
50 = {
change_development_progress = -50
}
}
add_county_modifier = county_corruption_bandits_rampant_modifier
}
}
# Send scoundrels to thieve the realm (may get artifact)
option = {
name = mt_reciprocal_thieve_employ_theives_option
custom_tooltip = mt_reciprocal_thieve_employ_desc.tt
random_list = {
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_01 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_02 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_03 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_04 = yes
}
}
20 = {
scope:mt_victim = {
mt_thief_commonfolk_atrifact_effect_05 = yes
}
}
}
random_list = {
50 = {
scope:mt_thief.capital_county = {
add_county_modifier = county_corruption_thieves_guild_modifier
}
}
50 = {
}
}
}
# Nevermind
option = {
name = mt_reciprocal_nervermind_exit.tt
trigger_event = {
id = mt_event.5000
}
}
}
# Personal Schemes
mt_event.1022 = {
type = character_event
title = mt_reciprocal_personal_title
desc = mt_reciprocal_personal_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Murder the ne'er-do-well!
option = {
name = mt_reciprocal_murder_option.tt
scope:mt_victim = {
start_scheme = {
type = murder
target = scope:mt_thief
}
}
}
# Abduct the ne'er-do-well!
option = {
name = mt_reciprocal_abduct_option.tt
scope:mt_victim = {
start_scheme = {
type = abduct
target = scope:mt_thief
}
}
}
# Nevermind
option = {
name = mt_reciprocal_nervermind_exit.tt
trigger_event = {
id = mt_event.5000
}
}
}
#############################################################################################################
# Redirect Fallback Should Player want to address different options or see all -- 'Nevermind Option Event'
mt_event.5000 = {
type = character_event
title = mt_reciprocal_fallback_title
desc = mt_reciprocal_fallback_desc
theme = default
override_background = { reference = study }
left_portrait = {
character = scope:mt_victim
animation = personality_bold
}
# Two can play at that game! - Thieve Back
option = {
name = mt_reciprocal_thieve_option.tt
trigger_event = {
id = mt_event.1021
}
}
# Let's make this personal! - Get back at character directly (murder / abduct / fab hook)
option = {
name = mt_reciprocal_personal_scheme_option.tt
trigger_event = {
id = mt_event.1022
}
}
# Start war -- don't know how to create claim on artifact
option = {
name = mt_reciprocal_war_option.tt
custom_tooltip = mt_reciprocal_war_desc.tt
scope:mt_victim = {
start_war = {
casus_belli = mt_recompense_cb
target = scope:mt_thief
target_title = scope:mt_thief.capital_county
}
}
}
# let it go -- stress relieving (especially forgiving characters) and opinion boost with nayer-do-well.
option = {
name = mt_non_reciprocal_option.tt
scope:mt_victim = {
if = {
limit = {
has_trait = forgiving
}
add_stress = -50
}
else = {
add_stress = -10
}
}
}
}

View File

@ -0,0 +1,86 @@
l_english:
# Interaction
mt_steal_gold_interaction: "Thieve"
mt_steal_gold_interaction_desc: "Thieve from [recipient.GetTitledFirstName]"
mt_steal_gold_interaction.tt.success.actor: "You're successful in your thievery"
mt_steal_gold_interaction_tt.failure.actor: "Your dastardly ploy is uncovered"
mt_can_send_requirement: "Must choose an option"
mt_local_gold: "Thieve Gold"
mt_local_prestige: "Thieve Prestige"
mt_local_piety: "Thieve Piety"
#### Events
# Event: Not Caught - Notify / Don't reveal
mt_notify_gold_title: "Thievery: Missing Gold"
mt_notify_gold_desc: "\n\nI have been hearing through various sources that there is missing gold from the treasury. Though after a short rummaging, a lowly administrative scribe found nothing."
mt_notify_gold_option.a: "I shall delve no further ino the matter, surely I would have noticed!"
mt_notify_gold_option.b: "Another question left to the philosophers I suppose!"
mt_notify_prestige_title: "Thievery: Regal Reputation"
mt_notify_prestige_desc: "\n\nThere has been much talk amidst the realm. Someone has besmirched my regal nature and reputation! Unduly and unfairly, I say. Why lead a campaign that turns the secular opinion against the great leader of the realm? One intercepted letter's introduction reads #italic '... we must recognize those worthy of fame and those of whom are not ... '#! Blasphemous!"
mt_notify_prestige_option.a: "The colloquial #italic 'we' #! is reserved for those with leeches and the mad! "
mt_notify_prestige_option.b: "One must not concern themself with the opinions of the sheep."
mt_notify_prestige_option.c: "One must simply know me to understand if my reputation is just!"
mt_notify_piety_title: "Thievery: Piousness"
mt_notify_piety_desc: "\n\nTalk among the common folk is that my piousness is in question. Someone has undoubtedly spread this slanderous information in an effort to increase their own standing in the matter."
mt_notify_piety_option.a: "I am just as pious as the rest!"
mt_notify_piety_option.b: "Does this person know me?"
mt_notify_piety_option.c: "None shall come of this."
# Event: Caught
mt_caught_gold_reciprocal_main_title: "Thievery: Gold"
mt_caught_gold_reciprocal_main_desc: "\n\n[mt_thief.GetTitledFirstName] Has been named as ne'er-do-well against me in a ploy to thieve from #EMP my #! treasury!\n\nRumors spread and the news has made its rounds amongst the commonfolk. The realm awaits my response."
mt_caught_prestige_reciprocal_main_title: "Thievery: Regal Reputation"
mt_caught_prestige_reciprocal_main_desc: "\n\n[mt_thief.GetTitledFirstName] Has been named as ne'er-do-well against me in a ploy to lessen my reputation in the secular realm in service of [mt_thief.GetHerHis] own!\n\nRumors spread and the news has made its rounds amongst the commonfolk. The realm awaits my response."
mt_caught_piety_reciprocal_main_title: "Thievery: Piousness"
mt_caught_piety_reciprocal_main_desc: "\n\n[mt_thief.GetTitledFirstName] Has been named as ne'er-do-well against me in a ploy to service [mt_thief.GetHerHis] own reputation regarding piousness. While the ploy was uncovered, there could have been questions regarding my piousness!\n\nRumors spread and the news has made its rounds amongst the commonfolk. The realm awaits my response."
mt_reciprocal_thieve_option.tt: "#italic Ohhh,#! two can play at that game!"
mt_reciprocal_personal_scheme_option.tt: "Let's make this personal!"
mt_reciprocal_war_option.tt: "Raise the army!"
mt_non_reciprocal_option.tt: "I'll not lower myself to the same level as the swine!"
# Reciprocal Thievery
mt_reiprocal_thieve_main_title: "Thievery: The Games We Play"
mt_reiprocal_thieve_main_desc: "\n\nAn eye for an eye makes the realm blind -- or so I've been told. Though whoever said that must not of been wronged in such a way! Some sort of justice must be served! Honor demands it!"
mt_reciprocal_thieve_employ_rogues_option: "I'll convince local rogues to inflitrate [mt_thief.GetHerHis] castle during the night!"
mt_reciprocal_rogues_employ_desc.tt: "#italic Simply, [mt_thief.GetSheHe] will pay or meet the ire of the rogues #!"
mt_reciprocal_thieve_employ_theives_option: "I'll send local thieves to harass the commonfolk among [mt_thief.GetHerHis] realm!"
mt_reciprocal_thieve_employ_desc.tt: "#italic Regality be damned, recompense will come from someone #!"
mt_reciprocal_thieve_scoundrel_disturb_option: "I'll send a band of local scoundrels to sow chaos in [mt_thief.GetHerHis] capital!"
mt_reciprocal_scoundrel_disturb_employ_desc.tt: "#italic Surely as rain is wet, [mt_thief.GetHerHis] capital will come to dislike the ruffians set upon it #!"
# Reciprocal Personal
mt_reciprocal_personal_title: "Thievery: Let's Get Personal"
mt_reciprocal_personal_desc: "\n\nForget the rest, there is one person responsible and [mt_thief.GetTitledFirstName] will face my personal judgement. The question becomes rather, what sort of justice shall be enacted!"
mt_reciprocal_murder_option.tt: "[mt_thief.GetTitledFirstName] shall serve the ground as fertilizer!"
mt_reciprocal_abduct_option.tt: "Abduct now, decide later..."
# War Reciprocal Option
mt_reciprocal_war_desc.tt: "#italic No overreaction here to speak of#!"
# Fallback
mt_reciprocal_fallback_title: "Thievery: Decisions, Decisions..."
mt_reciprocal_fallback_desc: "\n\n#italic Hmmm.. let me think ...#!"
# Exit option for all level 2 events
mt_reciprocal_nervermind_exit.tt: "Maybe I should rethink my options..."
# Reciprocal War
mt_recompense_cb: "Recompense Casus Belli"
mt_recompense_war_name: "Recompense War"
mt_recompense_cb_victory_desc: "You benefit from the spoils of war as just recompense!"
mt_recompense_cb_wp_desc: "Hostilities end between the two sides."
mt_recompense_cb_defeat_desc: "You are embarassed on the field of battle."

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

View File

@ -0,0 +1,8 @@
version="0.1a"
tags={
"Religion"
"Culture"
}
name="Mongol Playthrough Culture & Religion"
supported_version="1.9.2.1"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Mongol_Playthrough_Culture_&_Religion"

View File

@ -0,0 +1,543 @@
# Buildings by DevZero
#################################################
# Special Buildings -
################################################
great_high_hall_of_asgard_01 = {
asset = {
type = pdxmesh
name = "fp2_building_special_toledo_city_walls_01_a_mesh"
}
type_icon = "icon_building_royal_forest.dds"
is_enabled = {
OR = {
scope:holder.faith = norse_pagan
scope:holder.culture.heritage = heritage_north_germanic
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
}
show_disabled = yes
type = special
cost_gold = 25000
construction_time = slow_construction_time
character_modifier = {
knight_limit = 3
monthly_dynasty_prestige_mult = 0.15
monthly_dynasty_prestige = 1
cultural_head_fascination_mult = 0.50
monthly_lifestyle_xp_gain_mult = 0.65
}
province_modifier = {
monthly_income = 15
fort_level = 3
}
county_modifier = {
development_growth = 0.50
development_growth_factor = 0.50
levy_size = 0.2
}
flag = travel_point_of_interest_wonder
}
###########################################################################################################################
# Special Duchy Viking
shield_of_the_viking_01 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
OR = {
scope:holder.faith = norse_pagan
scope:holder.culture.heritage = heritage_north_germanic
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
scope:holder = {
has_title = d_viken
}
}
}
cost = {
gold = 120
prestige = 500
}
levy = 1500
max_garrison = 1500
defender_holding_advantage = 25
duchy_capital_county_modifier = {
tax_mult = 0.10
levy_size = 0.05
garrison_size = 0.05
hostile_raid_time = 2
travel_danger = -15
fort_level = 2
}
province_modifier = {
fort_level = 5
garrison_size = 1.05
levy_size = 0.15
stationed_maa_damage_mult = 0.25
stationed_maa_toughness_mult = 0.25
stationed_maa_pursuit_mult = 0.25
stationed_maa_screen_mult = 0.25
}
character_modifier = {
knight_limit = 3
knight_effectiveness_mult = 1
army_maintenance_mult = -0.2
men_at_arms_cap = 1
men_at_arms_limit = 2
monthly_piety = 1
monthly_prestige = 1
}
type = duchy_capital
next_building = shield_of_the_viking_02
}
shield_of_the_viking_02 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
OR = {
scope:holder.faith = norse_pagan
scope:holder.culture.heritage = heritage_north_germanic
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
scope:holder = {
has_title = d_viken
}
}
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_battlements
}
}
cost = {
prestige = expensive_building_tier_3_cost
piety = expensive_building_tier_3_cost
}
levy = 1500
max_garrison = 1500
defender_holding_advantage = 30
duchy_capital_county_modifier = {
tax_mult = 0.20
levy_size = 0.15
garrison_size = 0.15
hostile_raid_time = 3
travel_danger = -20
fort_level = 2
}
province_modifier = {
fort_level = 8
garrison_size = 1.2
levy_size = 0.25
stationed_maa_damage_mult = 0.5
stationed_maa_toughness_mult = 0.5
stationed_maa_pursuit_mult = 0.5
stationed_maa_screen_mult = 0.5
}
character_modifier = {
knight_limit = 6
knight_effectiveness_mult = 1.25
army_maintenance_mult = -0.25
monthly_piety = 2
monthly_prestige = 2
men_at_arms_cap = 2
men_at_arms_limit = 4
}
type = duchy_capital
next_building = shield_of_the_viking_03
}
shield_of_the_viking_03 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
OR = {
scope:holder.faith = norse_pagan
scope:holder.culture.heritage = heritage_north_germanic
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
scope:holder = {
has_title = d_viken
}
}
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_hoardings
}
}
cost = {
prestige = expensive_building_tier_4_cost
piety = expensive_building_tier_4_cost
}
levy = 1750
max_garrison = 1750
defender_holding_advantage = 35
duchy_capital_county_modifier = {
tax_mult = 0.30
levy_size = 0.25
garrison_size = 0.25
hostile_raid_time = 4
travel_danger = -25
fort_level = 2
}
province_modifier = {
fort_level = 12
garrison_size = 1.35
levy_size = 0.35
stationed_maa_damage_mult = 0.75
stationed_maa_toughness_mult = 0.75
stationed_maa_pursuit_mult = 0.75
stationed_maa_screen_mult = 0.75
}
character_modifier = {
knight_limit = 9
knight_effectiveness_mult = 1.5
army_maintenance_mult = -0.35
monthly_piety = 3
monthly_prestige = 3
men_at_arms_cap = 3
men_at_arms_limit = 6
}
type = duchy_capital
next_building = shield_of_the_viking_04
}
shield_of_the_viking_04 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
OR = {
scope:holder.faith = norse_pagan
scope:holder.culture.heritage = heritage_north_germanic
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
scope:holder = {
has_title = d_viken
}
}
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_machicolations
}
}
cost = {
prestige = expensive_building_tier_4_cost
piety = expensive_building_tier_4_cost
}
levy = 1750
max_garrison = 1750
defender_holding_advantage = 35
duchy_capital_county_modifier = {
tax_mult = 0.40
levy_size = 0.35
garrison_size = 0.35
hostile_raid_time = 5
travel_danger = -30
fort_level = 2
}
province_modifier = {
fort_level = 15
garrison_size = 1.5
levy_size = 0.50
stationed_maa_damage_mult = 1
stationed_maa_toughness_mult = 1
stationed_maa_pursuit_mult = 1
stationed_maa_screen_mult = 1
}
character_modifier = {
knight_limit = 12
knight_effectiveness_mult = 2
army_maintenance_mult = -0.5
monthly_piety = 4
monthly_prestige = 4
men_at_arms_cap = 4
men_at_arms_limit = 8
}
type = duchy_capital
flag = fully_upgraded_duchy_capital_building
}
#############################################################################################################################
grand_yurt_01 = {
construction_time = slow_construction_time
is_enabled = {
}
type_icon = "icon_building_military_camps.dds"
cost = {
gold = 350
prestige = 500
}
province_modifier = {
monthly_income = 5
fort_level = 2
garrison_size = 0.1
travel_danger = -10
stationed_archer_cavalry_damage_mult = 0.35
stationed_archer_cavalry_pursuit_mult = 0.25
defender_holding_advantage = 8
}
county_modifier = {
development_growth = 0.2
}
character_modifier = {
steppe_development_growth_factor = 0.20
archer_cavalry_max_size_add = 3
knight_limit = 2
}
type = special
flag = travel_point_of_interest_martial
}
#####################################################
# Duchy Capitol Buidlings
#####################################################
bohemian_keep_01 = {
construction_time = slow_construction_time
is_enabled = {
AND = {
county.holder = {
has_title = prev.duchy
}
barony = title:b_praha
}
}
type_icon = "icon_building_ramparts.dds"
cost = {
gold = 120
prestige = 500
}
duchy_capital_county_modifier = {
tax_mult = 0.10
levy_size = 0.05
garrison_size = 0.15
hostile_raid_time = 0.2
travel_danger = -15
additional_fort_level = normal_building_fort_level_tier_2
}
province_modifier = {
monthly_income = 3
stationed_maa_damage_mult = normal_maa_damage_tier_1
stationed_maa_toughness_mult = normal_maa_toughness_tier_1
}
character_modifier = {
knight_limit = 2
knight_effectiveness_mult = 0.1
monthly_dynasty_prestige_mult = 0.05
}
type = duchy_capital
next_building = bohemian_keep_02
}
bohemian_keep_02 = {
construction_time = slow_construction_time
can_construct_potential = {
building_requirement_castle_city_church = { LEVEL = 01 }
building_requirement_tribal = no
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_battlements
}
}
is_enabled = {
AND = {
county.holder = {
has_title = prev.duchy
}
barony = title:b_praha
}
}
cost_gold = expensive_building_tier_4_cost
duchy_capital_county_modifier = {
tax_mult = 0.20
levy_size = 0.1
garrison_size = 0.25
hostile_raid_time = 0.25
travel_danger = -20
additional_fort_level = normal_building_fort_level_tier_2
}
province_modifier = {
monthly_income = 4
stationed_maa_damage_mult = normal_maa_damage_tier_2
stationed_maa_toughness_mult = normal_maa_toughness_tier_2
}
character_modifier = {
knight_limit = 4
knight_effectiveness_mult = 0.15
monthly_dynasty_prestige_mult = 0.05
intrigue = 1
}
next_building = bohemian_keep_03
type = duchy_capital
}
bohemian_keep_03 = {
construction_time = slow_construction_time
can_construct_potential = {
building_requirement_castle_city_church = { LEVEL = 01 }
building_requirement_tribal = no
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_hoardings
}
}
is_enabled = {
AND = {
county.holder = {
has_title = prev.duchy
}
barony = title:b_praha
}
}
show_disabled = no
cost_gold = expensive_building_tier_5_cost
duchy_capital_county_modifier = {
tax_mult = 0.30
levy_size = 0.15
garrison_size = 0.25
hostile_raid_time = 0.3
travel_danger = -25
additional_fort_level = normal_building_fort_level_tier_4
}
province_modifier = {
monthly_income = 5
stationed_maa_damage_mult = normal_maa_damage_tier_3
stationed_maa_toughness_mult = normal_maa_toughness_tier_3
}
character_modifier = {
knight_limit = 6
knight_effectiveness_mult = 0.25
monthly_dynasty_prestige_mult = 0.05
intrigue = 1
}
type = duchy_capital
flag = fully_upgraded_duchy_capital_building
}

View File

@ -0,0 +1,173 @@
give_military_host_interaction = {
interface_priority = 25
common_interaction= yes
use_diplomatic_range = yes
category = interaction_category_diplomacy
desc = give_military_host_interaction_desc
icon = sponsor_military_gift
is_shown = {
scope:recipient = {
is_ruler = yes
highest_held_title_tier >= tier_county
}
NOT = {
scope:actor = scope:recipient
}
}
can_send = {
custom_tooltip = {
text = mh_can_send_requirement
OR = {
scope:small_military_gift = yes
scope:medium_military_gift = yes
scope:large_military_gift = yes
}
}
}
on_accept = {
if = {
limit = {
scope:small_military_gift = yes
}
scope:recipient = {
give_military_host_small_effect = yes
}
}
else_if = {
limit = {
scope:medium_military_gift = yes
}
scope:recipient = {
give_military_host_medium_effect = yes
}
}
else_if = {
limit = {
scope:large_military_gift = yes
}
scope:recipient = {
give_military_host_large_effect = yes
}
}
}
cost = {
gold = {
value = 0
if = {
limit = {
scope:small_military_gift = yes
}
add = give_military_interaction_gold_cost_small
}
else_if = {
limit = {
scope:medium_military_gift = yes
}
add = give_military_interaction_gold_cost_medium
}
else_if = {
limit = {
scope:large_military_gift = yes
}
add = give_military_interaction_gold_cost_large
}
}
prestige = {
value = 0
if = {
limit = {
scope:small_military_gift = yes
}
add = give_military_interaction_prestige_cost_small
}
else_if = {
limit = {
scope:medium_military_gift = yes
}
add = give_military_interaction_prestige_cost_medium
}
else_if = {
limit = {
scope:large_military_gift = yes
}
add = give_military_interaction_prestige_cost_large
}
}
}
send_option = {
flag = small_military_gift
localization = "Sponsor Small Army"
is_shown = {
exists = scope:actor
}
is_valid = {
scope:actor = {
custom_tooltip = {
text = mh_small_army_requirement
AND = {
gold > 250
prestige > 100
}
}
}
}
}
send_option = {
flag = medium_military_gift
localization = "Sponsor Moderate Army"
is_shown = {
exists = scope:actor
}
is_valid = {
scope:actor = {
custom_tooltip = {
text = mh_medium_army_requirement
AND = {
gold > 500
prestige > 250
}
}
}
}
}
send_option = {
flag = large_military_gift
localization = "Sponsor Large Army"
is_shown = {
exists = scope:actor
}
is_valid = {
scope:actor = {
custom_tooltip = {
text = mh_large_army_requirement
AND = {
gold > 1000
prestige > 500
}
}
}
}
}
send_options_exclusive = yes
# Always up to get some free military!
auto_accept = yes
}

View File

@ -0,0 +1,122 @@
instruct_physician_to_treat_ill_interaction = {
interface_priority = 25
common_interaction= yes
use_diplomatic_range = yes
category = interaction_category_friendly
desc = instruct_physician_to_treat_ill_interaction_desc
icon = icon_scheme_crypto_religion
is_shown = {
NOT = {
OR = {
scope:actor = scope:recipient
NOT = {
scope:actor = {
exists = court_position:court_physician_court_position
}
}
}
}
scope:recipient = {
# Remember to add court position - physician requirement
is_alive = yes
AND = {
# Coutier / Related in some way
OR = {
is_courtier_of = scope:actor
is_close_or_extended_family_of = scope:actor
scope:recipient.dynasty = scope:actor.dynasty
}
# Has bad health traits and does not have reducing disease symptoms - currently being treated. No psychiatric afflictions here!
OR = {
has_trait = ill
has_trait = pneumonic
has_trait = great_pox
has_trait = lovers_pox
has_trait = leper
has_trait = wounded_1
has_trait = wounded_2
has_trait = wounded_3
has_trait = maimed
has_trait = gout_ridden
has_trait = consumption
has_trait = cancer
has_trait = typhus
has_trait = bubonic_plague
has_trait = smallpox
has_character_modifier = infected_wound_modifier
has_character_modifier = gangrene_modifier
has_trait = sickly
}
# Is not currently being treated (reduced diseased symptoms character modifier)
NOT = {
has_character_modifier = safe_disease_treatment_success_high_modifier
has_character_modifier = safe_disease_treatment_success_low_modifier
has_character_modifier = safe_disease_treatment_failure_modifier
has_character_modifier = risky_disease_treatment_success_high_modifier
has_character_modifier = risky_disease_treatment_success_low_modifier
has_character_modifier = risky_disease_treatment_failure_modifier
has_character_modifier = safe_wound_treatment_success_high_modifier
has_character_modifier = safe_wound_treatment_success_low_modifier
has_character_modifier = safe_wound_treatment_failure_modifier
has_character_modifier = risky_wound_treatment_success_modifier
has_character_modifier = risky_wound_treatment_failure_modifier
}
}
}
}
on_send = {
scope:recipient = {
if = {
limit = {
OR = {
has_trait = sickly
has_trait = consumption
has_trait = cancer
has_trait = typhus
has_trait = bubonic_plague
has_trait = smallpox
has_trait = ill
has_trait = pneumonic
has_trait = great_pox
has_trait = lovers_pox
has_trait = leper
}
}
it_disease_event_effect = yes
instruct_treatment_disease_effect = yes
}
else_if = {
limit = {
OR = {
has_character_modifier = infected_wound_modifier
has_character_modifier = gangrene_modifier
has_trait = wounded_1
has_trait = wounded_2
has_trait = wounded_3
has_trait = maimed
}
}
it_wounded_event_effect = yes
instruct_treatment_wounded_effect = yes
}
}
}
# 3102 for disease
#41
# Always want to be helped
auto_accept = yes
}

View File

@ -0,0 +1,116 @@
##############################################################################################################################
# Medievel Thievery Mod
# Developed by DevZero (some code taken from pdx) - the mod has thievery in the name after all...
# Notes: for AI inclusion, look at ai in diarch_interactions > syphon -- ai greed, boldness, honor for base, then modifiers
##############################################################################################################################
norse_asgard_enabled_interaction = {
icon = icon_scheme_fabricate_hook
common_interaction = yes
interface_priority = 100
category = interaction_category_friendly
desc = norse_asgard_enabled_interaction_desc
cooldown = { months = 18 }
cooldown_against_recipient = {years = 5}
is_shown = {
scope:actor.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
NOT = {Scope:recipient = scope:acotr}
}
is_valid_showing_failures_only = {
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
}
on_accept = {
scope:actor = {
duel = {
skill = learning
target = scope:recipient
55 = {
desc = norse_asgard_enabled_interaction.tt.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = norse_asgard_enabled_interaction.tt.success
left_icon = scope:recipient
add_hook = {
target = scope:recipient
type = loyalty_hook
}
}
}
45 = {
desc = norse_asgard_enabled_interaction.tt.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = norse_asgard_enabled_interaction.tt.failure
left_icon = scope:recipient
scope:recipient = {
# Vengeful characters will not take it well.
if = {
limit = {
has_trait = vengeful
can_set_relation_rival_trigger = { CHARACTER = scope:actor }
}
set_relation_rival = {
target = scope:actor
reason = rival_tried_to_embezzle
}
}
# Forgiving characters aren't too bothered.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -5
}
}
# Otherwise, folks are skeptical
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -15
}
}
}
}
}
}
}
}
auto_accept = yes
ai_will_do = {
base = 0
}
}

View File

@ -0,0 +1,157 @@
ambassador_culture_court_position = {
max_available_positions = 1
category = court_position_category_royal
minimum_rank = kingdom
valid_position = {
highest_held_title_tier >= tier_kingdom
}
opinion = {
value = regular_court_position_opinion
}
revoke_cost = {
prestige = minor_court_position_prestige_cost
}
salary = {
round = no
gold = medium_court_position_salary
}
base_employer_modifier = {
}
scaling_employer_modifiers = {
terrible = {
cultural_head_acceptance_gain_mult = 0.05
}
poor = {
cultural_head_acceptance_gain_mult = 0.10
}
average = {
cultural_head_acceptance_gain_mult = 0.15
}
good = {
cultural_head_acceptance_gain_mult = 0.20
}
excellent = {
cultural_head_acceptance_gain_mult = 0.25
}
}
modifier = {
monthly_prestige = minor_court_position_prestige_salary
}
on_court_position_received = {
basic_gained_court_position_effect = yes
}
on_court_position_revoked = {
basic_revoked_court_position_effect = yes
}
on_court_position_invalidated = {
basic_invalidated_court_position_effect = yes
}
candidate_score = {
value = 0
}
aptitude_level_breakpoints = { 20 40 60 80 }
# How good is this character in this position? root scope is the holder of the court position
aptitude = {
value = 1
add = {
value = diplomacy
multiply = 2
max = 40
desc = court_position_skill_diplomacy
}
add = {
value = learning
multiply = 1.75
max = 35
desc = court_position_skill_learning
}
if = {
limit = {
has_trait = compassionate
}
add = {
value = 5
desc = court_position_compassionate_trait
}
}
if = {
limit = {
has_trait = gregarious
}
add = {
value = 20
desc = court_position_gregarious_trait
}
}
if = {
limit = {
has_trait = diplomat
}
add = {
value = 15
desc = court_position_diplomat_trait
}
}
if = {
limit = {
has_trait = callous
}
add = {
value = -30
desc = court_position_callous_trait
}
}
if = {
limit = {
has_trait = deceitful
}
add = {
value = -25
desc = court_position_deceitful_trait
}
}
if = {
limit = {
has_trait = schemer
}
add = {
value = -35
desc = court_position_schemer_trait
}
}
if = {
limit = { has_trait = murderer }
add = {
value = -50
desc = court_position_murderer_trait
}
}
add = court_position_aptitude_family_business_value
add = court_position_aptitude_low_penalty_value
}
is_shown = {
always = yes
}
}

View File

@ -0,0 +1,159 @@
court_liaison_court_position = {
max_available_positions = 1
category = court_position_category_royal
minimum_rank = kingdom
opinion = {
value = regular_court_position_opinion
}
revoke_cost = {
prestige = minor_court_position_prestige_cost
}
salary = {
round = no
gold = minor_court_position_salary
}
scaling_employer_modifiers = {
terrible = {
monthly_court_grandeur_change_mult = 0.1
}
poor = {
monthly_court_grandeur_change_mult = 0.15
}
average = {
monthly_court_grandeur_change_mult = 0.25
court_grandeur_baseline_add = 1
}
good = {
monthly_court_grandeur_change_mult = 0.35
court_grandeur_baseline_add = 2
}
excellent = {
monthly_court_grandeur_change_mult = 0.5
court_grandeur_baseline_add = 3
}
}
modifier = {
monthly_prestige = minor_court_position_prestige_salary
}
on_court_position_received = {
basic_gained_court_position_effect = yes
}
on_court_position_revoked = {
basic_revoked_court_position_effect = yes
}
on_court_position_invalidated = {
basic_invalidated_court_position_effect = yes
}
candidate_score = {
value = 0
}
aptitude_level_breakpoints = { 20 40 60 80 }
# How good is this character in this position? root scope is the holder of the court position
aptitude = {
value = 1
add = {
value = diplomacy
multiply = 2
max = 40
desc = court_position_skill_diplomacy
}
if = {
limit = {
has_trait = generous
}
add = {
value = 25
desc = court_position_generous_trait
}
}
if = {
limit = {
has_trait = callous
}
add = {
value = -20
desc = court_position_callous_trait
}
}
if = {
limit = {
has_trait = compassionate
}
add = {
value = 10
desc = court_position_compassionate_trait
}
}
if = {
limit = {
has_trait = arrogant
}
add = {
value = 5
desc = court_position_arrogant_trait
}
}
if = {
limit = {
has_trait = diplomat
}
value = 50
desc = court_position_diplomat_trait
}
if = {
limit = { has_trait = education_diplomacy }
add = {
value = 4
if = {
limit = { has_trait = education_diplomacy_2 }
add = 4
}
else_if = {
limit = { has_trait = education_diplomacy_3 }
add = 8
}
else_if = {
limit = { has_trait = education_diplomacy_4 }
add = 12
}
else_if = {
limit = { has_trait = education_diplomacy_5 }
add = 22
}
desc = education_diplomacy
}
}
add = court_position_aptitude_family_business_value
add = court_position_aptitude_low_penalty_value
}
valid_position = {
highest_held_title_tier >= tier_kingdom
}
valid_character = {
scope:employee = {
OR = {
is_vassal_of = scope:liege
is_courtier_of = scope:liege
}
}
}
}

View File

@ -0,0 +1,185 @@
diplomatic_liaison_court_position = {
max_available_positions = 1
category = court_position_category_royal
minimum_rank = kingdom
valid_position = {
highest_held_title_tier >= tier_kingdom
}
opinion = {
value = regular_court_position_opinion
}
revoke_cost = {
prestige = minor_court_position_prestige_cost
}
salary = {
round = no
gold = medium_court_position_salary
}
base_employer_modifier = {
max_personal_schemes_add = 1
}
scaling_employer_modifiers = {
terrible = {
personal_scheme_power_mult = -0.1
}
poor = {
personal_scheme_power_mult = -0.05
}
average = {
personal_scheme_power_mult = 0
}
good = {
personal_scheme_power_mult = 0.05
}
excellent = {
personal_scheme_power_mult = 0.1
}
}
modifier = {
monthly_prestige = minor_court_position_prestige_salary
}
on_court_position_received = {
basic_gained_court_position_effect = yes
}
on_court_position_revoked = {
basic_revoked_court_position_effect = yes
}
on_court_position_invalidated = {
basic_invalidated_court_position_effect = yes
}
candidate_score = {
value = 0
}
aptitude_level_breakpoints = { 20 40 60 80 }
# How good is this character in this position? root scope is the holder of the court position
aptitude = {
value = 1
add = {
value = diplomacy
multiply = 2
max = 40
desc = court_position_skill_diplomacy
}
add = {
value = learning
multiply = 1.25
max = 35
desc = court_position_skill_learning
}
if = {
limit = {
has_trait = compassionate
}
add = {
value = 5
desc = court_position_compassionate_trait
}
}
if = {
limit = {
has_trait = gregarious
}
add = {
value = 20
desc = court_position_gregarious_trait
}
}
if = {
limit = {
has_trait = diplomat
}
add = {
value = 15
desc = court_position_diplomat_trait
}
}
if = {
limit = {
has_trait = callous
}
add = {
value = -30
desc = court_position_callous_trait
}
}
if = {
limit = {
has_trait = deceitful
}
add = {
value = -25
desc = court_position_deceitful_trait
}
}
if = {
limit = {
has_trait = schemer
}
add = {
value = -35
desc = court_position_schemer_trait
}
}
if = {
limit = { has_trait = murderer }
add = {
value = -50
desc = court_position_murderer_trait
}
}
add = court_position_aptitude_family_business_value
add = court_position_aptitude_low_penalty_value
}
is_shown = {
OR = {
AND = {
diplomacy > 16
NOT = {
OR = {
has_trait = callous
has_trait = deceitful
has_trait = schemer
has_trait = sadistic
has_trait = murderer
}
}
}
AND = {
OR = {
has_trait = gregarious
has_trait = diplomat
has_trait = family_first
has_trait = education_diplomacy_3
has_trait = education_diplomacy_4
has_trait = education_diplomacy_5
}
diplomacy > 9
}
}
}
}

View File

@ -0,0 +1,155 @@
master_of_intrigue_court_position = {
max_available_positions = 1
category = court_position_category_royal
minimum_rank = kingdom
valid_position = {
highest_held_title_tier >= tier_kingdom
}
opinion = {
value = regular_court_position_opinion
}
revoke_cost = {
prestige = minor_court_position_prestige_cost
}
salary = {
round = no
gold = medium_court_position_salary
}
base_employer_modifier = {
max_hostile_schemes_add = 1
}
scaling_employer_modifiers = {
terrible = {
hostile_scheme_power_mult = -0.1
}
poor = {
hostile_scheme_power_mult = -0.05
}
average = {
hostile_scheme_power_mult = 0
}
good = {
hostile_scheme_power_mult = 0.05
}
excellent = {
hostile_scheme_power_mult = 0.1
}
}
modifier = {
monthly_prestige = minor_court_position_prestige_salary
}
on_court_position_received = {
basic_gained_court_position_effect = yes
}
on_court_position_revoked = {
basic_revoked_court_position_effect = yes
}
on_court_position_invalidated = {
basic_invalidated_court_position_effect = yes
}
candidate_score = {
value = 0
}
aptitude_level_breakpoints = { 20 40 60 80 }
# How good is this character in this position? root scope is the holder of the court position
aptitude = {
value = 1
add = {
value = intrigue
multiply = 2
max = 40
desc = court_position_skill_intrigue
}
add = {
value = learning
multiply = 1.75
max = 35
desc = court_position_skill_learning
}
if = {
limit = {
has_trait = compassionate
}
add = {
value = -25
desc = court_position_compassionate_trait
}
}
if = {
limit = {
has_trait = brave
}
add = {
value = 5
desc = court_position_brave_trait
}
}
if = {
limit = {
has_trait = just
}
add = {
value = -20
desc = court_position_just_trait
}
}
if = {
limit = {
has_trait = callous
}
add = {
value = 10
desc = court_position_callous_trait
}
}
if = {
limit = {
has_trait = deceitful
}
add = {
value = 25
desc = court_position_deceitful_trait
}
}
if = {
limit = {
has_trait = schemer
}
value = 50
desc = court_position_schemer_trait
}
add = court_position_aptitude_family_business_value
add = court_position_aptitude_low_penalty_value
}
is_shown = {
AND = {
OR = {
has_trait = education_intrigue_3
has_trait = education_intrigue_4
has_trait = education_intrigue_5
}
intrigue > 11
}
}
}

View File

@ -0,0 +1,157 @@
master_warden_court_position = {
max_available_positions = 1
category = court_position_category_royal
minimum_rank = kingdom
valid_position = {
highest_held_title_tier >= tier_kingdom
}
opinion = {
value = regular_court_position_opinion
}
revoke_cost = {
prestige = minor_court_position_prestige_cost
}
salary = {
round = no
gold = minor_court_position_salary
}
scaling_employer_modifiers = {
terrible = {
monthly_county_control_change_add = 0.0
}
poor = {
monthly_county_control_change_add = 0.0
}
average = {
monthly_county_control_change_add = 0.05
}
good = {
monthly_county_control_change_add = 0.1
}
excellent = {
monthly_county_control_change_add = 0.15
}
}
custom_employer_modifier_description = master_warden_employer_custom_effect_description
modifier = {
monthly_prestige = minor_court_position_prestige_salary
}
on_court_position_received = {
basic_gained_court_position_effect = yes
}
on_court_position_revoked = {
basic_revoked_court_position_effect = yes
}
on_court_position_invalidated = {
basic_invalidated_court_position_effect = yes
}
candidate_score = {
value = 0
}
aptitude_level_breakpoints = { 20 40 60 80 }
# How good is this character in this position? root scope is the holder of the court position
aptitude = {
value = 1
add = {
value = intrigue
multiply = 1.75
max = 40
desc = court_position_skill_intrigue
}
add = {
value = martial
multiply = 1.75
max = 40
desc = court_position_skill_martial
}
add = {
value = prowess
max = 20
desc = court_position_skill_prowess
}
if = {
limit = {
has_trait = compassionate
}
add = {
value = -25
desc = court_position_compassionate_trait
}
}
if = {
limit = {
has_trait = brave
}
add = {
value = 5
desc = court_position_brave_trait
}
}
if = {
limit = {
has_trait = just
}
add = {
value = 15
desc = court_position_just_trait
}
}
if = {
limit = {
has_trait = callous
}
add = {
value = 10
desc = court_position_callous_trait
}
}
if = {
limit = {
has_trait = torturer
}
add = {
value = 25
desc = court_position_torturer_trait
}
}
add = court_position_aptitude_family_business_value
add = court_position_aptitude_low_penalty_value
}
is_shown = {
OR = {
AND = {
OR = {
prowess > 15
martial > 11
intrigue > 15
dread > 35
}
OR = {
has_trait = education_martial_1
has_trait = education_martial_2
has_trait = education_martial_3
has_trait = education_martial_4
has_trait = education_martial_5
dread > 35
prowess > 15
}
}
}
}
}

View File

@ -0,0 +1,26 @@
neo_mongol = {
color = mongol
ethos = ethos_bureaucratic
heritage = heritage_mongolic
language = language_mongolic
martial_custom = martial_custom_male_only
traditions = {
tradition_horse_lords
tradition_hard_rule
tradition_dwellers_of_the_steppe
tradition_steppe_tolerance
}
name_list = name_list_mongol
coa_gfx = { mongol_coa_gfx steppe_coa_gfx }
building_gfx = { steppe_building_gfx }
clothing_gfx = { mongol_clothing_gfx }
unit_gfx = { mongol_unit_gfx }
ethnicities = {
10 = asian
}
}

View File

@ -0,0 +1,622 @@
# steppe tradition
tradition_dwellers_of_the_steppe = {
category = realm
layers = {
0 = steward
1 = indian/indian2.dds
4 = steppe.dds
}
can_pick = {
custom_tooltip = {
text = culture_in_steppe_terrain_desc
any_culture_county = {
any_county_province = {
terrain = steppe
}
}
}
}
parameters = {
hunting_traits_more_valued = yes
pastures_building_bonuses = yes
}
character_modifier = {
men_at_arms_recruitment_cost = 0.15
men_at_arms_maintenance = 0.05
knight_limit = 2
steppe_travel_danger = steppe_medium_danger_reduction
}
county_modifier = {
steppe_development_growth_factor = 0.2
steppe_construction_gold_cost = -0.15
steppe_levy_size = 0.15
}
cost = {
prestige = {
add = {
value = tradition_base_cost
desc = BASE
format = "BASE_VALUE_FORMAT"
}
if = {
limit = {
culture_pillar:ethos_egalitarian = { is_in_list = traits }
}
add = {
value = tradition_incompatible_ethos_penalty
desc = culture_not_egalitarian
}
}
if = {
limit = {
NOT = {
any_culture_county = {
count >= 5
any_county_province = {
terrain = steppe
}
}
}
}
add = {
value = tradition_unfulfilled_criteria_penalty
desc = culture_in_steppe_terrain_count_desc
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = {
value = 0
if = {
limit = {
NOT = {
scope:character = {
any_sub_realm_county = {
count >= 2
culture = scope:character.culture
any_county_province = {
terrain = steppe
}
}
}
}
}
multiply = 0
}
if = {
limit = {
scope:character = {
government_has_flag = government_is_tribal
}
}
multiply = 0
}
if = {
limit = {
scope:character = {
any_sub_realm_county = {
count >= 5
culture = scope:character.culture
any_county_province = {
terrain = steppe
}
}
}
}
add = 100
}
}
}
# raid tradition
tradition_ritualistic_reaving = {
category = ritual
layers = {
0 = intrigue
1 = mediterranean
4 = battle.dds
}
can_pick = {
scope:character.culture = {
custom_tooltip = {
text = m_already_has_raid_tradition_desc
NOT = { has_cultural_tradition = tradition_practiced_pirates }
}
custom_tooltip = {
text = m_has_pacifist_tradition_desc
NOT = { has_cultural_tradition = tradition_pacifism }
}
}
scope:character.faith = {
custom_tooltip = {
text = m_has_pacifist_tenet_desc
NOR = {
has_doctrine = tenet_dharmic_pacifism
has_doctrine = tenet_pacifism
}
}
}
}
parameters = {
culture_can_raid_over_land_even_if_feudal_no_restrictions = yes
culture_can_raid_at_sea_even_if_feudal_no_restrictions = yes
}
character_modifier = {
siege_phase_time = -0.10
movement_speed_land_raiding = 0.20
max_loot_mult = 0.25
development_growth_factor = -0.10
feudal_government_tax_contribution_mult = -0.25
}
cost = {
prestige = {
add = {
value = tradition_base_cost
multiply = 1.5
desc = BASE
format = "BASE_VALUE_FORMAT"
}
# Ethos requirement.
if = {
limit = {
NOT = {
culture_pillar:ethos_bellicose = { is_in_list = traits }
}
}
add = {
value = tradition_incompatible_ethos_penalty
desc = not_bellicose_desc
}
}
# Government is Feudal or Clan Extra Cost
if = {
limit = {
scope:character = {
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_clan
}
}
}
add = {
value = tradition_incompatible_ethos_penalty
multiply = 2
desc = m_govenment_incompatible_penalty_desc
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = {
value = 0
if = {
limit = { # Should be rare for most cultures
has_cultural_pillar = heritage_berber
}
add = 5
}
}
}
# learning tradition
tradition_aptitudinal_teachings = {
category = societal
layers = {
0 = intrigue
1 = mediterranean
4 = aptitudinal_teachings.dds
}
can_pick = {
custom_description = {
text = m_has_incompatible_alexandrian_catechism_tenet
scope:character.faith = {
NOT = { doctrine:tenet_alexandrian_catechism = { is_in_list = selected_doctrines } }
}
}
}
character_modifier = {
learning = 4
monthly_learning_lifestyle_xp_gain_mult = 0.2
faith_creation_piety_cost_mult = 0.20
}
cost = {
prestige = {
add = {
value = tradition_base_cost
multiply = 2
desc = BASE
format = "BASE_VALUE_FORMAT"
}
# Ethos requirement.
if = {
limit = {
NOR = {
culture_pillar:ethos_bureaucratic = { is_in_list = traits }
culture_pillar:ethos_spiritual = { is_in_list = traits }
culture_pillar:ethos_egalitarian = { is_in_list = traits }
}
}
add = {
value = tradition_incompatible_ethos_penalty
multiply = 2
desc = not_bureaucratic_spiritual_or_egalitarian_desc
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = {
value = 0
}
}
# dread ruling tradition
tradition_hard_rule = {
category = realm
layers = {
0 = martial
1 = mena
2 = hard_rule_layer2.dds
3 = 3.dds
4 = hard_rule.dds
}
can_pick = {
custom_tooltip = {
text = m_surpasses_dread_threshold
scope:character.dread > 35
}
custom_tooltip = {
text = cannot_have_tradition_court_eunuchs
NOT = { culture_tradition:tradition_court_eunuchs = { is_in_list = traits } }
}
custom_tooltip = {
text = cannot_have_tradition_merciful_blindings
NOT = { culture_tradition:tradition_merciful_blindings = { is_in_list = traits } }
}
}
parameters = {
can_demand_higher_ransoms_from_lower_tiers = yes
can_recruit_prisoners_easily = yes
pardoning_gives_loyalty = yes
can_blind_prisoners = yes
can_castrate_prisoners = yes
}
character_modifier = {
vassal_levy_contribution_mult = -0.10
vassal_opinion = -5
short_reign_duration_mult = 0.3
hostile_scheme_power_mult = 0.2
dread_gain_mult = 0.1
dread_baseline_add = 20
}
cost = {
prestige = {
add = {
value = tradition_base_cost
desc = BASE
format = "BASE_VALUE_FORMAT"
}
if = {
limit = {
NOR = {
culture_pillar:ethos_courtly = { is_in_list = traits }
culture_pillar:ethos_stoic = { is_in_list = traits }
}
}
add = {
value = tradition_incompatible_ethos_penalty
desc = not_stoic_or_courtly_desc
}
}
if = {
limit = { scope:character.dread < 75 }
add = {
value = tradition_incompatible_ethos_penalty
desc = m_less_than_high_dread_desc
}
}
if = {
limit = { scope:character.dread >= 75 }
add = {
value = tradition_incompatible_ethos_penalty
multiply = -1
divide = 2
desc = m_high_dread_desc
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = { value = 0 }
}
# viking development
tradition_scandinavian_development = { # Need to update values
category = regional
layers = {
0 = intrigue
1 = mena/mena3.dds
4 = scand_dev.dds
}
is_shown = {
has_cultural_pillar = heritage_north_germanic
}
can_pick = {
custom_tooltip = {
text = m_scandinavian_innovation_requirement
has_innovation = innovation_development_01
}
}
parameters = {
can_appoint_court_gardener = yes
can_recruit_gardeners = yes
can_enact_high_partition_succession_law = yes
coastal_agriculture_building_bonuses = yes
development_gain_on_building_complete = yes
}
character_modifier = {
development_growth_factor = 0.25
construction_time = 0.05
holding_build_gold_cost = 0.15
character_capital_county_monthly_development_growth_add = 0.25
}
county_modifier = {
taiga_development_growth_factor = 0.05
plains_development_growth_factor = 0.05
taiga_construction_gold_cost = 0.05
taiga_levy_size = 0.15
}
cost = {
prestige = {
add = {
value = tradition_base_cost
desc = BASE
format = "BASE_VALUE_FORMAT"
}
if = {
limit = {
NOR = {
culture_pillar:ethos_communal = { is_in_list = traits }
culture_pillar:ethos_bureaucratic = { is_in_list = traits }
culture_pillar:ethos_stoic = { is_in_list = traits }
}
}
add = {
value = tradition_incompatible_ethos_penalty
multiply = 2
desc = not_communal_bureaucratic_or_stoic_desc
}
}
if = {
limit = {
NOT = {
any_culture_county = {
any_county_province = {
has_building_or_higher = royal_forest_01
}
}
}
}
add = {
value = tradition_unfulfilled_criteria_penalty
desc = m_no_reserve_penalty
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = {
value = 0
}
}
# religious tradition
tradition_synergenistic_faith = {
category = ritual
layers = {
0 = learning
1 = mena/mena1.dds
4 = temple.dds
}
can_pick = {
custom_tooltip = {
any_culture_county = {
percent >= 0.2
any_county_province = {
has_holding_type = church_holding
}
}
text = 20_percent_churches
}
}
parameters = {
extra_piety_from_temple_construction = yes
renown_from_temple_construction = yes
more_fervor_on_church_construction = yes
}
character_modifier = {
monthly_learning_lifestyle_xp_gain_mult = 0.05
monthly_piety_from_buildings_mult = 0.10
faith_conversion_piety_cost_mult = 0.50
church_holding_build_gold_cost = 0.15
monthly_piety = 1
}
cost = {
prestige = {
add = {
value = tradition_base_cost
desc = BASE
format = "BASE_VALUE_FORMAT"
}
if = {
limit = {
NOR = {
culture_pillar:ethos_courtly = { is_in_list = traits }
culture_pillar:ethos_communal = { is_in_list = traits }
culture_pillar:ethos_spiritual = { is_in_list = traits }
}
}
add = {
value = tradition_incompatible_ethos_penalty
desc = not_courtly_communal_or_spiritual_desc
}
}
if = {
limit = {
trigger_if = {
limit = {
scope:character = {
is_ai = no
}
}
NOT = {
any_ruler = {
count >= 5
culture = prev
primary_title.tier >= tier_county
faith = scope:character.faith
has_trait = zealous
}
}
}
trigger_else = {
always = no
}
}
add = {
value = tradition_unfulfilled_criteria_penalty
desc = rulers_with_same_faith_zealous_desc
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = {
value = 0
}
}
# Familial tradition
tradition_familial_bonds = {
category = societal
layers = {
0 = intrigue
1 = western/western2.dds
4 = ritualised_friendship.dds
}
can_pick = {
# Must have at least one friend. No friendless losers. Especially you, Nick.
custom_tooltip = {
text = need_at_least_one_friend
culture_head ?= {
any_relation = {
type = friend
count >= 1
}
}
}
}
parameters = {
automatic_befriend_access = yes
may_propose_best_friendship = yes
strong_hooks_and_stress_effects_best_friends = yes
may_select_friendship_synergy_bonus = yes
close_family_better_councillors = yes
close_family_better_court_positions = yes
landing_house_members_gives_renown = yes
renown_from_feasts = yes
penalty_for_revoking_titles_from_close_family = yes
}
character_modifier = {
intrigue = -1
hostile_scheme_power_mult = -0.20
monthly_dynasty_prestige_mult = 0.05
dynasty_opinion = 10
}
cost = {
prestige = {
# Base cost.
add = {
value = tradition_base_cost
desc = BASE
format = "BASE_VALUE_FORMAT"
}
# No ethos requirement: everyone likes friends.
# Need at least ten friends.
if = {
limit = { exists = culture_head }
if = {
limit = {
culture_head = {
any_relation = {
type = friend
count < 5
}
}
}
add = {
value = tradition_unfulfilled_criteria_penalty
multiply = 2.5
desc = m_guess_you_need_more_friends_desc
}
}
}
multiply = tradition_replacement_cost_if_relevant
}
}
ai_will_do = {
value = 0
}
}

View File

@ -0,0 +1,50 @@
m_asgard_decision = {
major = yes
sort_order = 0
is_shown = {
AND = {
has_title = title:b_oslosyslar
title:b_oslosyslar.title_province = root.capital_province
}
NOT = {
is_target_in_global_variable_list = {
name = unavailable_unique_decisions
target = flag:flag_discovered_great_hall_of_asgard
}
}
}
picture = "gfx/interface/illustrations/decisions/asgard_decision_image.dds"
cost = {
prestige = 1000
piety = 1000
}
effect = {
save_scope_as = asgard_founder
trigger_event = {
id = norse_asgard_event.0001
}
add_to_global_variable_list = {
name = unavailable_unique_decisions
target = flag:flag_discovered_great_hall_of_asgard
}
show_as_tooltip = {
custom_tooltip = "You may find something special within the province."
}
hidden_effect = {
m_hall_of_asgard_effect = yes
}
}
}

View File

@ -0,0 +1,34 @@
m_mongol_grand_yurt_decision = {
major = yes
sort_order = 94
picture = "gfx/interface/illustrations/decisions/grand_yurt_decision_image.dds"
is_shown = {
has_title = title:b_karabalgasun
NOT = {
is_target_in_global_variable_list = {
name = unavailable_unique_decisions
target = flag:flag_built_great_yurt
}
}
}
is_valid = {
has_trait = greatest_of_khans
}
cost = {
prestige = 2500
}
effect = {
m_grand_yurt_mongol_effect = yes
add_to_global_variable_list = {
name = unavailable_unique_decisions
target = flag:flag_built_great_yurt
}
}
}

View File

@ -0,0 +1,83 @@
###########################################################
# Legacy Perks Expanded
# by dev.main
###########################################################
# Expand fp2 legacy tracks to all dynasties
fp2_urbanism_legacy_track = {
is_shown = {
has_dlc_feature = the_fate_of_iberia
dynasty = {
OR = {
dynast = {
NOT = {
culture = {
has_cultural_pillar = heritage_iberian
}
}
}
has_dynasty_perk = fp2_coterie_legacy_1
}
}
}
}
fp2_coterie_legacy_track = {
is_shown = {
has_dlc_feature = the_fate_of_iberia
dynasty = {
OR = {
dynast = {
NOT = {
culture = {
has_cultural_pillar = heritage_iberian
}
}
}
has_dynasty_perk = fp2_coterie_legacy_1
}
}
}
}
# New dynasty tracks
m_vikingr_legacy_track = {
is_shown = {
dynasty = {
OR = {
dynast = {
culture = {
OR = {
this = culture:norse
any_parent_culture_or_above = {
this = culture:norse
}
}
}
}
has_dynasty_perk = m_vikingr_legacy_1
}
}
}
}
m_genghis_of_the_steppe_legacy_track = {
is_shown = {
dynasty = {
OR = {
dynast = {
culture = {
OR = {
has_cultural_pillar = heritage_turkic
has_cultural_pillar = heritage_mongolic
has_cultural_pillar = heritage_tibetan
has_cultural_tradition = tradition_dwellers_of_the_steppe
}
}
}
has_dynasty_perk = m_ghengis_of_the_steppe_legacy_1
}
}
}
}

View File

@ -0,0 +1,323 @@
###########################################################
# Legacy Perks Expanded
# by devzero
###########################################################
# Expand fp2 legacies to all dynasties
# URBANISM LEGACIES
fp2_urbanism_legacy_1 = { # Flourishing Cities
legacy = fp2_urbanism_legacy_track
effect = {
# Each city increases development rate of their county
custom_description_no_bullet = { text = fp2_urbanism_legacy_1_effect }
}
ai_chance = {
value = 0
if = {
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_iberian
has_cultural_pillar = heritage_arabic
}
}
}
add = 10
}
if = {
limit = {
can_start_new_legacy_track_trigger = no
}
multiply = 0
}
}
}
fp2_urbanism_legacy_2 = { # Republican Teaching
legacy = fp2_urbanism_legacy_track
# Chance to gain an extra traits for members of the dynasty or children educated by the members of the dynasty
effect = {
custom_description_no_bullet = { text = fp2_urbanism_legacy_2_effect }
}
ai_chance = {
value = 100
}
}
fp2_urbanism_legacy_3 = { #Replace by > faster and cheaper city development
legacy = fp2_urbanism_legacy_track
character_modifier = {
city_holding_build_speed = -0.1
city_holding_build_gold_cost = -0.1
city_holding_holding_build_speed = -0.1
city_holding_holding_build_gold_cost = -0.1
}
ai_chance = {
value = 100
}
}
fp2_urbanism_legacy_4 = { #Replace by > get prestige + cool character on dev level gain
legacy = fp2_urbanism_legacy_track
# Gain Prestige and guest when completing a building
effect = {
custom_description_no_bullet = { text = fp2_urbanism_legacy_4_effect }
}
ai_chance = {
value = 100
}
}
fp2_urbanism_legacy_5 = { #Replace by ???
legacy = fp2_urbanism_legacy_track
effect = {
custom_description_no_bullet = { text = fp2_urbanism_legacy_5_effect }
}
ai_chance = {
value = 100
}
}
# COTERIE LEGACIES
fp2_coterie_legacy_1 = { # Inner Circle
legacy = fp2_coterie_legacy_track
effect = {
custom_description_no_bullet = { text = fp2_coterie_legacy_1_effect }
}
ai_chance = {
value = 0
if = {
limit = {
culture = {
OR = {
has_cultural_pillar = heritage_iberian
has_cultural_pillar = heritage_arabic
}
}
}
add = 10
}
if = {
limit = {
can_start_new_legacy_track_trigger = no
}
multiply = 0
}
}
}
fp2_coterie_legacy_2 = { # House bonds
legacy = fp2_coterie_legacy_track
effect = {
custom_description_no_bullet = { text = fp2_coterie_legacy_2_effect }
}
ai_chance = {
value = 100
}
}
fp2_coterie_legacy_3 = { # Unity
legacy = fp2_coterie_legacy_track
effect = {
custom_description_no_bullet = { text = fp2_coterie_legacy_3_effect }
}
character_modifier = {
dynasty_house_opinion = 10
}
ai_chance = {
value = 100
}
}
fp2_coterie_legacy_4 = { # Eternal Trust
legacy = fp2_coterie_legacy_track
effect = {
custom_description_no_bullet = { text = fp2_coterie_legacy_4_effect }
}
ai_chance = {
value = 100
}
}
fp2_coterie_legacy_5 = { # Pragmatic Roots
legacy = fp2_coterie_legacy_track
effect = {
custom_description_no_bullet = { text = fp2_coterie_legacy_5_effect }
}
ai_chance = {
value = 100
}
}
# New dynasty perks
m_vikingr_legacy_1 = {
legacy = m_vikingr_legacy_track
character_modifier = {
negative_inactive_inheritance_chance = -0.20
positive_inactive_inheritance_chance = 0.20
genetic_trait_strengthen_chance = 0.2
positive_random_genetic_chance = 0.35
dynasty_opinion = 20
}
ai_chance = { value = 0 }
}
m_vikingr_legacy_2 = {
legacy = m_vikingr_legacy_track
character_modifier = {
domain_limit = 1
vassal_limit = 20
development_growth = 0.15
short_reign_duration_mult = -0.25
}
ai_chance = { value = 0 }
}
m_vikingr_legacy_3 = {
legacy = m_vikingr_legacy_track
character_modifier = {
knight_limit = 3
knight_effectiveness_mult = 0.50
men_at_arms_limit = 2
movement_speed = 0.25
}
effect = {
dynasty = {
add_dynasty_modifier = {
modifier = fp1_legacy_of_piracy_modifier
}
}
}
ai_chance = { value = 0 }
}
m_vikingr_legacy_4 = {
legacy = m_vikingr_legacy_track
character_modifier = {
monthly_lifestyle_xp_gain_mult = 0.35
stewardship = 3
learning = 2
}
ai_chance = { value = 0 }
}
m_vikingr_legacy_5 = {
legacy = m_vikingr_legacy_track
character_modifier = {
general_opinion = 25
max_personal_schemes_add = 1
max_hostile_schemes_add = 1
}
ai_chance = { value = 0 }
}
m_genghis_of_the_steppe_legacy_1 = {
legacy = m_genghis_of_the_steppe_legacy_track
character_modifier = {
dread_baseline_add = 15
dread_decay_mult = -0.15
dread_per_tyranny_add = 1
cowed_vassal_tax_contribution_mult = 0.2
}
ai_chance = { value = 0 }
}
m_genghis_of_the_steppe_legacy_2 = {
legacy = m_genghis_of_the_steppe_legacy_track
character_modifier = {
max_hostile_schemes_add = 1
monthly_intrigue_lifestyle_xp_gain_mult = 0.15
}
effect = {
custom_description_no_bullet = {
text = glory_legacy_4_perk_effect
}
}
ai_chance = { value = 0 }
}
m_genghis_of_the_steppe_legacy_3 = {
legacy = m_genghis_of_the_steppe_legacy_track
character_modifier = {
steppe_development_growth_factor = 0.25
prisoner_opinion = 10
hostile_county_attrition = -0.15
owned_hostile_scheme_success_chance_add = 15
}
ai_chance = { value = 0 }
}
m_genghis_of_the_steppe_legacy_4 = {
legacy = m_genghis_of_the_steppe_legacy_track
character_modifier = {
men_at_arms_limit = 1
prowess = 3
army_maintenance_mult = -0.05
mercenary_hire_cost_mult = -0.1
}
ai_chance = { value = 0 }
}
m_genghis_of_the_steppe_legacy_5 = {
legacy = m_genghis_of_the_steppe_legacy_track
character_modifier = {
knight_limit = 3
knight_effectiveness_mult = 0.25
archer_cavalry_max_size_add = 3
siege_weapon_siege_value_mult = 0.1
men_at_arms_cap = 1
}
ai_chance = { value = 0 }
}

View File

@ -0,0 +1,173 @@
pledged_light_footmen = {
type = skirmishers
can_recruit = {
always = no
}
damage = 10
toughness = 16
pursuit = 10
screen = 16
terrain_bonus = {
forest = { damage = 4 toughness = 6 }
taiga = { damage = 4 toughness = 6 }
jungle = { damage = 4 toughness = 6 }
}
counters = {
heavy_infantry = 1
}
buy_cost = { gold = skirmisher_recruitment_cost }
low_maintenance_cost = { gold = skirmisher_low_maint_cost }
high_maintenance_cost = { gold = skirmisher_high_maint_cost }
stack = 100
ai_quality = { value = culture_ai_weight_skirmishers }
icon = skirmishers
}
pledged_bowmen = {
type = archers
can_recruit = {
always = no
}
damage = 25
toughness = 10
pursuit = 0
screen = 0
terrain_bonus = {
hills = { damage = 10 toughness = 4 }
forest = { toughness = 4 screen = 4 }
taiga = { toughness = 4 screen = 4 }
}
counters = {
skirmishers = 1
}
buy_cost = { gold = bowmen_recruitment_cost }
low_maintenance_cost = { gold = bowmen_low_maint_cost }
high_maintenance_cost = { gold = bowmen_high_maint_cost }
stack = 100
ai_quality = {
value = culture_ai_weight_archers
value = counter_synergy_ai_weight_archers
}
icon = bowmen
}
pledged_light_horsemen = {
type = light_cavalry
can_recruit = {
always = no
}
damage = 22
toughness = 15
pursuit = 30
screen = 30
terrain_bonus = {
plains = { damage = 15 }
drylands = { damage = 15 }
hills = { damage = -5 }
mountains = { damage = -10 pursuit = -20 }
desert_mountains = { damage = -15 pursuit = -20 }
wetlands = { damage = -15 toughness = -10 pursuit = -30 screen = -30 }
}
counters = {
archers = 1
}
winter_bonus = {
harsh_winter = { damage = -5 toughness = -2 }
}
buy_cost = { gold = light_cavalry_recruitment_cost }
low_maintenance_cost = { gold = light_cavalry_low_maint_cost }
high_maintenance_cost = { gold = light_cavalry_high_maint_cost }
stack = 100
ai_quality = {
value = culture_ai_weight_light_cavalry
value = counter_synergy_ai_weight_light_cavalry
}
icon = light_cavalry
}
pledged_pikemen_unit = {
type = pikemen
can_recruit = {
always = no
}
damage = 22
toughness = 24
pursuit = 0
screen = 0
terrain_bonus = {
mountains = { toughness = 12 }
desert_mountains = { toughness = 12 }
hills = { toughness = 8 }
}
counters = {
light_cavalry = 1
heavy_cavalry = 1
camel_cavalry = 1
elephant_cavalry = 1
}
buy_cost = { gold = pikemen_recruitment_cost }
low_maintenance_cost = { gold = pikemen_low_maint_cost }
high_maintenance_cost = { gold = pikemen_high_maint_cost }
stack = 100
ai_quality = {
value = culture_ai_weight_pikemen
value = counter_synergy_ai_weight_pikemen
}
icon = pikemen
}
pledged_house_guard = {
type = heavy_infantry
can_recruit = {
always = no
}
damage = 40
toughness = 32
pursuit = 0
screen = 24
counters = {
pikemen = 2
archers = 2
}
buy_cost = { gold = 50 }
low_maintenance_cost = { gold = 0 }
high_maintenance_cost = { gold = 1 }
max_sub_regiments = 5
stack = 100
ai_quality = { value = 100 }
icon = house_guard
}

View File

@ -0,0 +1,46 @@
guardians_of_valhalla = {
type = heavy_infantry
damage = 65
toughness = 45
pursuit = 50
screen = 25
can_recruit = {
dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
terrain_bonus = {
farmlands = { damage = 6 toughness = 4 }
plains = { damage = 6 toughness = 4 }
hills = { damage = 6 toughness = 4 }
taiga = { damage = 6 toughness = 4 }
mountains = {damage = 6 toughness = 4 }
}
counters = {
pikemen = 1
skirmishers = 1
archers = 1
heavy_infantry = 1
}
winter_bonus = {
normal_winter = { toughness = 8 screen = 8 }
harsh_winter = { toughness = 8 screen = 8 }
}
siege_tier = 4
siege_value = 0.025
buy_cost = { gold = 50 }
low_maintenance_cost = { gold = 0 }
high_maintenance_cost = { gold = 1 }
stack = 100
ai_quality = { value = 100 }
icon = varangian_veterans
}

View File

@ -0,0 +1,16 @@
great_hall_of_asgard_modifier = {
icon = asatru_raven_positive
life_expectancy = 5
fertility = 0.35
negative_random_genetic_chance = -0.5
domain_limit = 2
knight_limit = 3
men_at_arms_cap = 2
heavy_infantry_siege_value_add = 0.1
knight_effectiveness_mult = 1
development_growth = 0.1
development_growth_factor = 0.2
monthly_lifestyle_xp_gain_mult = 0.25
}

View File

@ -0,0 +1,193 @@

give_military_interaction_gold_cost_small = {
value = 250
if = {
limit = {
exists = scope:actor
}
scope:actor.culture = {
if = {
limit = {
has_cultural_era_or_later = culture_era_late_medieval
}
multiply = 3
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
multiply = 1.5
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_early_medieval
}
multiply = 1.25
}
else = {
multiply = 0.75
}
}
}
round = yes
}
give_military_interaction_gold_cost_medium = {
value = 500
if = {
limit = {
exists = scope:actor
}
scope:actor.culture = {
if = {
limit = {
has_cultural_era_or_later = culture_era_late_medieval
}
multiply = 3
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
multiply = 1.5
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_early_medieval
}
multiply = 1.25
}
else = {
multiply = 0.75
}
}
}
round = yes
}
give_military_interaction_gold_cost_large = {
value = 1000
if = {
limit = {
exists = scope:actor
}
scope:actor.culture = {
if = {
limit = {
has_cultural_era_or_later = culture_era_late_medieval
}
multiply = 3
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
multiply = 1.5
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_early_medieval
}
multiply = 1.25
}
else = {
multiply = 0.75
}
}
}
round = yes
}
give_military_interaction_prestige_cost_small = {
value = 100
if = {
limit = {
exists = scope:actor
}
scope:actor.culture = {
if = {
limit = {
has_cultural_era_or_later = culture_era_late_medieval
}
multiply = 3
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
multiply = 1.5
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_early_medieval
}
multiply = 1.25
}
else = {
multiply = 0.75
}
}
}
round = yes
}
give_military_interaction_prestige_cost_medium = {
value = 250
if = {
limit = {
exists = scope:actor
}
scope:actor.culture = {
if = {
limit = {
has_cultural_era_or_later = culture_era_late_medieval
}
multiply = 3
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
multiply = 1.5
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_early_medieval
}
multiply = 1.25
}
else = {
multiply = 0.75
}
}
}
round = yes
}
give_military_interaction_prestige_cost_large = {
value = 500
if = {
limit = {
exists = scope:actor
}
scope:actor.culture = {
if = {
limit = {
has_cultural_era_or_later = culture_era_late_medieval
}
multiply = 3
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
multiply = 1.5
}
else_if = {
limit = {
has_cultural_era_or_later = culture_era_early_medieval
}
multiply = 1.25
}
else = {
multiply = 0.75
}
}
}
round = yes
}

View File

@ -0,0 +1,82 @@
give_military_host_small_effect = {
spawn_army = {
men_at_arms = {
type = pledged_light_footmen
stacks = 1
}
men_at_arms = {
type = pledged_bowmen
stacks = 1
}
men_at_arms = {
type = pledged_light_horsemen
stacks = 1
}
men_at_arms = {
type = pledged_pikemen_unit
stacks = 1
}
men_at_arms = {
type = pledged_house_guard
stacks = 1
}
location = scope:recipient.capital_province
inheritable = no
name = funded_small_army
}
}
give_military_host_medium_effect = {
spawn_army = {
men_at_arms = {
type = pledged_light_footmen
stacks = 3
}
men_at_arms = {
type = pledged_bowmen
stacks = 3
}
men_at_arms = {
type = pledged_light_horsemen
stacks = 3
}
men_at_arms = {
type = pledged_pikemen_unit
stacks = 3
}
men_at_arms = {
type = pledged_house_guard
stacks = 3
}
location = scope:recipient.capital_province
inheritable = no
name = funded_modest_army
}
}
give_military_host_large_effect = {
spawn_army = {
men_at_arms = {
type = pledged_light_footmen
stacks = 6
}
men_at_arms = {
type = pledged_bowmen
stacks = 6
}
men_at_arms = {
type = pledged_light_horsemen
stacks = 6
}
men_at_arms = {
type = pledged_pikemen_unit
stacks = 6
}
men_at_arms = {
type = pledged_house_guard
stacks = 6
}
location = scope:recipient.capital_province
inheritable = no
name = funded_large_army
}
}

View File

@ -0,0 +1,81 @@
instruct_treatment_disease_effect = {
random_list = {
33 = {
scope:recipient = {
add_character_modifier = {
modifier = safe_disease_treatment_success_high_modifier
years = 3
}
}
}
33 = {
scope:recipient = {
add_character_modifier = {
modifier = safe_disease_treatment_success_low_modifier
years = 3
}
}
}
33 = {
scope:recipient = {
add_character_modifier = {
modifier = safe_disease_treatment_failure_modifier
years = 3
}
}
}
}
}
instruct_treatment_wounded_effect = {
random_list = {
33 = {
scope:recipient = {
add_character_modifier = {
modifier = safe_wound_treatment_success_high_modifier
years = 3
}
}
}
33 = {
scope:recipient = {
add_character_modifier = {
modifier = safe_wound_treatment_success_low_modifier
years = 3
}
}
}
33 = {
scope:recipient = {
add_character_modifier = {
modifier = safe_wound_treatment_failure_modifier
years = 3
}
}
}
}
}
it_disease_event_effect = {
scope:actor = {
trigger_event = {
id = instruct_health.0001
}
}
}
it_wounded_event_effect = {
scope:actor = {
trigger_event = {
id = instruct_health.0002
}
}
}
add_character_modifier = {
modifier = scratched_and_bruised
years = 3
}

View File

@ -0,0 +1,5 @@
m_grand_yurt_mongol_effect = {
province:7525 = {
add_special_building = grand_yurt_01
}
}

View File

@ -0,0 +1,205 @@
m_hall_of_asgard_effect = {
province:234= {
add_special_building=great_high_hall_of_asgard_01
}
dynasty = {
add_dynasty_modifier = {
modifier = great_hall_of_asgard_modifier
}
# Great modifier for the dynasty
add_dynasty_prestige = excessive_dynasty_prestige_gain
}
spawn_army = {
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = trebuchet
stacks = 5
}
men_at_arms = {
type = pikemen
stacks = 10
}
men_at_arms = {
type = pikemen
stacks = 5
}
men_at_arms = {
type = jomsviking_pirates
stacks = 10
}
men_at_arms = {
type = jomsviking_pirates
stacks = 5
}
uses_supply = no
location = capital_province
origin = capital_province
inheritable = yes
name = norse_army_host
}
spawn_army = {
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = trebuchet
stacks = 5
}
men_at_arms = {
type = pikemen
stacks = 10
}
men_at_arms = {
type = pikemen
stacks = 5
}
men_at_arms = {
type = jomsviking_pirates
stacks = 10
}
men_at_arms = {
type = jomsviking_pirates
stacks = 5
}
uses_supply = no
location = capital_province
origin = capital_province
inheritable = yes
name = norse_army_host
}
spawn_army = {
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = trebuchet
stacks = 5
}
men_at_arms = {
type = pikemen
stacks = 10
}
men_at_arms = {
type = pikemen
stacks = 5
}
men_at_arms = {
type = jomsviking_pirates
stacks = 10
}
men_at_arms = {
type = jomsviking_pirates
stacks = 5
}
uses_supply = no
location = capital_province
origin = capital_province
inheritable = yes
name = norse_army_host
}
spawn_army = {
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = trebuchet
stacks = 5
}
men_at_arms = {
type = pikemen
stacks = 10
}
men_at_arms = {
type = pikemen
stacks = 5
}
men_at_arms = {
type = jomsviking_pirates
stacks = 10
}
men_at_arms = {
type = jomsviking_pirates
stacks = 5
}
uses_supply = no
location = capital_province
origin = capital_province
inheritable = yes
name = norse_army_host
}
spawn_army = {
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = guardians_of_valhalla
stacks = 10
}
men_at_arms = {
type = trebuchet
stacks = 5
}
men_at_arms = {
type = pikemen
stacks = 10
}
men_at_arms = {
type = pikemen
stacks = 5
}
men_at_arms = {
type = jomsviking_pirates
stacks = 10
}
men_at_arms = {
type = jomsviking_pirates
stacks = 5
}
uses_supply = no
location = capital_province
origin = capital_province
inheritable = yes
name = norse_army_host
}
}

View File

@ -0,0 +1,8 @@
expanded_ransom_interaction_effect = {
scope:recipient = {
pay_short_term_gold = {
value = scope:recipient.gold
target = scope:actor
}
}
}

View File

@ -0,0 +1,7 @@
version="0.1a"
tags={
"Religion"
"Culture"
}
name="Mongol Playthrough Culture & Religion"
supported_version="1.9.2.1"

View File

@ -0,0 +1,54 @@
# Physician events to decide types of treatment
namespace = instruct_health
# Disease Treatment Track
instruct_health.0001 = {
type = character_event
title = it_disease_event_title
desc = it_disease_event_desc
theme = healthcare
right_portrait = {
character = scope:recipient
animation = personality_honorable
}
immediate = {
play_music_cue = "mx_cue_peace_ensues"
}
option = {
name = it_disease_event_option_text.a
}
option ={
name = it_disease_event_option_text.b
}
}
instruct_health.0002 = {
type = character_event
title = it_wounded_event_title
desc = it_wounded_event_desc
theme = healthcare
right_portrait = {
character = scope:recipient
animation = personality_honorable
}
immediate = {
play_music_cue = "mx_cue_peace_ensues"
}
option = {
name = it_wounded_event_option_text.a
}
option ={
name = it_wounded_event_option_text.b
}
}

View File

@ -0,0 +1,27 @@
#####################################################
# Norse Asgard Event
# Developed by DevZero
#####################################################
namespace = norse_asgard_event
# Epic Event! Desciption and Title Should Match
norse_asgard_event.0001 = {
type = character_event
title = norse_asgard_event_title
desc = norse_asgard_event_desc
theme = new_royal_court
left_portrait = {
character = scope:asgard_founder
animation = personality_honorable
}
immediate = {
play_music_cue = "mx_cue_epic_sacral_moment"
}
option = {
name = norse_asgard_event_option_text
}
}

View File

@ -0,0 +1,188 @@
l_english:
#Tradition: Dwellers of the Steppe
tradition_dwellers_of_the_steppe_name: "Dwellers of the Steppe"
tradition_dwellers_of_the_steppe_desc: "This culture values vast dry fields and open skies. Preferring to settle and develop steppe lands despite the associated burdens. Equestrian and pastorial endeavors tend to flourish in this culture, though such an economical pillar brings with it a high cost of maintenance."
culture_in_steppe_terrain_desc: "The [culture|E] is not present in any [county|E] with Steppe [terrain|E]"
culture_in_steppe_terrain_count_desc: "The [culture|E] is not present in at least #V 5#! [counties|E] with Steppe [terrain|E]"
# Tradition: Ritualistic Reaving
tradition_ritualistic_reaving_name: "Ritualistic Reaving"
tradition_ritualistic_reaving_desc: "Raiding and reaving has become a staple of this culture. While rewarding in terms of plunder, loot and other categories, gaining wealth from others often leads to less of a desire in land enrichment."
m_has_pacifist_tenet_desc: "[faith|E] has a pacifistic tenet"
m_has_pacifist_tradition_desc: "[culture|E] has a pacifistic [tradition|E]"
m_already_has_raid_tradition_desc: "[culture|E] already has too similar a tradition"
m_govenment_incompatible_penalty_desc: "Government is Clan or Feudal"
# Tradition: Aptitudinal Teachings
tradition_aptitudinal_teachings_name: "Aptitudinal Teachings"
tradition_aptitudinal_teachings_desc: "Carrying forth traditions of old, we expect theologians and scholars to conduct inquiries into the present state of affairs and question intelligently."
m_has_incompatible_alexandrian_catechism_tenet: "Faith follows teachings from the Catechetical School of Alexandria"
# Tradition: Hard Rule
tradition_hard_rule_name: "Hard Rule"
tradition_hard_rule_desc: "This culture has a tradition of harsh punishments and a staunch ruling perogative."
m_surpasses_dread_threshold: "Your level of [dread|E] does not exceed 35"
m_less_than_high_dread_desc: "Your level of [dread|E] does not exceed 75"
m_high_dread_desc: "[dread|E] level is very high"
# Tradition: Scandinavian Development
tradition_scandinavian_development_name: "Scandinavian Development"
tradition_scandinavian_development_desc: "Understanding the value of development, we choose to put an emphasis on investing into our lands and people."
m_no_reserve_penalty: "No Royal Reserve building in county of this [culture|E]"
m_scandinavian_innovation_requirement: "Missing Public Works [innovation|E]"
# Tradition: Synergenistic Faith
tradition_synergenistic_faith_name: "Synergenistic Faith"
tradition_synergenistic_faith_desc: "Culture and Faith are the twin pillars that are the foundation for any realm, we must ensure the two compliment eachother."
# Tradition: Familial Bonds
tradition_familial_bonds_name: "Familial Bonds"
tradition_familial_bonds_desc: "Keeping to your word and building a bond with others is important for prosperity and enjoyment."
m_guess_you_need_more_friends_desc: "Less than ten friends"
# Dynastic Legacy Track & Perks: Vikingr (Family, Growth, Guardian, Scholar, Honor)
m_vikingr_legacy_track_name: "Víkingr"
m_vikingr_legacy_track_desc: "Through Perspicacity, Providence, and Strength may the vikingr grow evermore prosperous"
m_vikingr_legacy_1_name: "Skuldalið"
m_vikingr_legacy_2_name: "Groði"
m_vikingr_legacy_3_name: "Vorðr"
m_vikingr_legacy_4_name: "Seiðr"
m_vikingr_legacy_5_name: "Heiðr"
# Dynastic Legacy Track & Perks: Ghengis
m_genghis_of_the_steppe_legacy_track_name: "Legend of the Steppe"
m_genghis_of_the_steppe_legacy_track_desc: "Blood, Fire and mighty Steeds shall overcome all"
m_genghis_of_the_steppe_legacy_1_name: "Intransigent Rulers"
m_genghis_of_the_steppe_legacy_2_name: "Conspiratorial Courts"
m_genghis_of_the_steppe_legacy_3_name: "Adjudicators of the Steppe"
m_genghis_of_the_steppe_legacy_4_name: "Commandants of Strength"
m_genghis_of_the_steppe_legacy_5_name: "Terrors of the Steppe"
# Buildings
building_type_great_high_hall_of_asgard_01: "Hliðskjálf af Ásgarðr"
building_type_great_high_hall_of_asgard_01_desc: "The great hall was built as a monument to venerate the top qualities among the norse gods and serve as a wonderous structure to inspire humanity. Foreign stone, precious metals and other elements comprise the nearly etherial presentation and worksmanship. The great structure is thought to beget legend and instill perspicacity, wisdom, and strength to all who visit. Hidden within and amongst the mountains and taiga, accessible only by the select few with knowledge of its whereabouts with their bravery and determination matching the treacherous routes. A great wall was built in the province in support of creating a better stronghold."
building_great_high_hall_of_asgard_01: "Hliðskjálf af Ásgarðr"
building_great_high_hall_of_asgard_01_desc: "The great hall was built as a monument to venerate the top qualities among the norse gods and serve as a wonderous structure to inspire humanity. Foreign stone, precious metals and other elements comprise the nearly etherial presentation and worksmanship. The great structure is thought to beget legend and instill perspicacity, wisdom, and strength to all who visit. Hidden within and amongst the mountains and taiga, accessible only by the select few with knowledge of its whereabouts with their bravery and determination matching the treacherous routes. A great wall was built in the province in support of creating a better stronghold."
building_type_bohemian_keep_01: "Great Bohemian Keep"
building_type_bohemian_keep_01_desc: "A resplendent keep meant to last and serve as an important hub for the realm."
building_bohemian_keep_01: "Brick and Mortar"
building_bohemian_keep_01_desc: " It is the duty of any good stronghold, to surpass upkeep and improve the very structure."
building_bohemian_keep_02: "Well Trained Gaurdsmen"
building_bohemian_keep_02_desc: "Among the keep should be guardsmen trained in basic subtrifuge in addition to the normal performance of duties."
building_bohemian_keep_03: "Reinforced Brick and Mortar"
building_bohemian_keep_03_desc: "Reinforced layers and well designed spaces fit for higher capacity and better defensive capabilities."
#Viking Duchy Building in Oslo, meant to be upgraded each era. ' Shield of Viking '
building_type_shield_of_the_viking_01: "Víkingr Véurr"
building_type_shield_of_the_viking_01_desc: "Great structures, built for defense and militaristic purposes. Colloquially named as the viking shield, thought to be impenetrable."
building_shield_of_the_viking_01: "Grand Norse Fortress"
building_shield_of_the_viking_01_desc: "Norse warriors and master-craftsmen further the development of the defensible position by creating a wonderful fortress, inspired by Valhalla."
building_shield_of_the_viking_02: "Elegant Corridors"
building_shield_of_the_viking_02_desc: "The structures within are improved and given elegance; adorned with foreign metal, cloth, and other decorative materials."
building_shield_of_the_viking_03: "Center for Exoerience and Education"
building_shield_of_the_viking_03_desc: "A center has been built to facilitate various educations and competencies, along with a newly built fortified ground."
building_shield_of_the_viking_04: "Elite Military Expansion and Training "
building_shield_of_the_viking_04_desc: "Great care has been taken to create an exceptionally well rounded norse warrior, attracting Væringi and other elite warriors alike."
building_type_grand_yurt_01: "Grand Yurt"
building_type_grand_yurt_01_desc: "A great yurt majestically embellished and established atop a fortified position."
building_grand_yurt_01: "Grand Yurt"
building_grand_yurt_01_desc: "A great yurt majestically embellished and established atop a fortified position."
# Norse Decisions
m_asgard_decision: "Venture out in Search of the Fabled Hliðskjálf af Ásgarðr"
m_asgard_decision_desc: "You read about a great hidden hall among the taiga and mountains within the province, and find curious indicators of its existence within the province.Explore just how expansive this new discovery is and what use it may have in furthering your people."
m_asgard_decision_tooltip: "Search for the fabled area."
m_asgard_decision_confirm: "Venture into the Unknown"
# Norse Modifier
great_hall_of_asgard_modifier: "Hliðskjálf af Ásgarðr Skapari"
great_hall_of_asgard_modifier_desc: "This dynasty's members are the original discoverers and true guardians of the Hliðskjálf af Ásgarðr."
norse_asgard_enabled_interaction: "Strategically Indebt"
norse_asgard_enabled_interaction_desc: "Learned from the grand library of Hliðskjálf af Ásgarðr, your family is adept in the ways of social engineering; through generational knowledge passed down through various secret writings."
norse_asgard_enabled_interaction.tt.success: "You successfully gain their loyalty"
norse_asgard_enabled_interaction.tt.failure: "You do not successfully gain their loyalty"
guardians_of_valhalla: "Elite of Hliðskjálf"
guardians_of_valhalla_flavor: "Elite guardians found upon the exploration of the Hliðskjálf af Ásgarðr."
# Norse Event
norse_asgard_event_title: "The Great Discovery: Hliðskjálf af Ásgarðr"
norse_asgard_event_desc: " \nOne would not dare believe it true as it seems almost etherial. After reading up on the history of the new capital and seeing the markings within the province, I thought myself obsessed with a legend. Yet I have made the discovery of a thousand lifetimes! The Hliðskjálf af Ásgarðr! \n\n It is a vast network of structures, grand halls, and exquisitely interwoven nature. Rivers, caves, a world resembling myth! Grand halls, libraries, natural hot springs atop the mountain, among the trees. This is it. This is to be the penultimate of our dynasty! We will continue to build and create a grand legacy rivaling only the gods through perspicacity, providence and prosperity!
norse_asgard_event_option_text: "May our family forever protect, steward, and appreciate this sacred place with each other!"
norse_army_host: "Legendary Host of Hliðskjálf"
# Mongol Decision
m_mongol_grand_yurt_decision: "Establish a Grand Yurt"
m_mongol_grand_yurt_decision_desc: "Commission and establish a grand yurt worthy of the great khan."
m_mongol_grand_yurt_decision_tooltip: "Commission a grand yurt in lieu of your status as the greatest of khans."
m_mongol_grand_yurt_decision_confirm: "Commission the Yurt"
# Prisoner Release Expanded
prisoner_release_expanded_interaction: "Ask Master Warden to Negotiate Release"
prisoner_release_expanded_interaction_desc: "Set your master warden to the task of negotiating a release with your prisoner."
prisoner_release_expanded_strong_hook_option_failure_toast_title: "Doubts regarding [recipient.GetTitledFirstName]'s promise."
prisoner_release_expanded_strong_hook_option_success: "Swears loyalty to you"
prisoner_release_expanded_strong_hook_option_failure: "Disingenuously swears loyalty to you"
# Court Positions
master_warden_court_position: "Master Warden"
master_warden_court_position_desc: "The master warden is responsible for prisoners and dealing with unscrupulous matters of the realm."
master_of_intrigue_court_position: "Master of Intrigue"
master_of_intrigue_court_position_desc: "The master of intrigue is responsible for expanding the ruler's capability in matters of intrigue."
master_warden_employer_custom_effect_description: "Will allow you to task them with negotiating releases for prisoners, giving you more release options."
court_liaison_court_position: "Court Liaison"
court_liaison_court_position_desc: "The court liaison is responsible for ensuring proper maintenance of the royal court and preserving the court's image to foreign diplomats alike."
diplomatic_liaison_court_position: "Diplomatic Liaison"
diplomatic_liaison_court_position_desc: "Is responsible for expanding the ruler's capability in matters of diplomacy."
ambassador_culture_court_position: "Cultural Ambassador"
ambassador_culture_court_position_desc: "Is responsible for creating cultural cohesion within the realm."
# Instruct Physician to Treat
instruct_physician_to_treat_ill_interaction: "Instruct Court Physician to Treat"
instruct_physician_to_treat_ill_interaction_desc: "Instruct your court physician to attempt treatment on [recipient.GetTitledFirstName]."
# Instruct Physician Localizations
it_disease_event_title: "Treatment: Disease"
it_disease_event_desc: "\nI have instructed court physician to help aid in [recipient.GetTitledFirstName]'s affliction. "
it_disease_event_option_text.a: "I wish [recipient.GetTitledFirstName] a safe treatment and recovery."
it_disease_event_option_text.b: "I mean, what is the worst that is going to happen right?"
it_wounded_event_title: "Treatment: Wound"
it_wounded_event_desc: "\nI have instructed my court physician to help treat [recipient.GetTitledFirstName]'s wound."
it_wounded_event_option_text.a: "I hope [recipient.GetTitledFirstName]'s wound clears up.' "
it_wounded_event_option_text.b: "I mean, what is the worst that is going to happen right?"
# Military Gift Interaction
give_military_host_interaction: "Sponsor Military Host"
give_military_host_interaction_desc: "Sponsor an army for [recipient.GetTitledFirstName]"
pledged_house_guard: "Pledged House Guard"
pledged_pikemen_unit: "Pledged Pikemen"
pledged_light_horsemen: "Pledged Light Horsemen"
pledged_bowmen: "Pledged Bowmen"
pledged_light_footmen: "Pledged Light Footmen"
funded_small_army: "[actor.GetTitledFirstName]'s Sponsored Army"
funded_modest_army: "[actor.GetTitledFirstName]'s Sponsored Army"
funded_large_army: "[actor.GetTitledFirstName]'s Sponsored Army"
mh_small_army_requirement: "Requires [gold_i]250 [gold|E] and [prestige_i]100 [prestige|E]"
mh_medium_army_requirement: "Requires [gold_i]500 [gold|E] and [prestige_i]250 [prestige|E]"
mh_large_army_requirement: "Requires [gold_i]1000 [gold|E] and [prestige_i]500 [prestige|E]"
mh_can_send_requirement: "Must select and option to send"
# New Mongol Culture
neo_mongol: "Tibetan Mongol"
neo_mongol_name: "Tibetan Mongol"
neo_mongol_collective_noun: "Tibetan Mongols"
neo_mongol_prefix: "Tibetan Mongolic"

11
Realm_Management_Tour.mod Normal file
View File

@ -0,0 +1,11 @@
version="0.1a"
tags={
"Balance"
"Character Interactions"
"Events"
"Gameplay"
"Schemes"
}
name="Realm Management Tour"
supported_version="1.9.2.1"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/Realm_Management_Tour"

View File

@ -0,0 +1,10 @@
version="0.1a"
tags={
"Balance"
"Character Interactions"
"Events"
"Gameplay"
"Schemes"
}
name="Realm Management Tour"
supported_version="1.9.2.1"

View File

@ -0,0 +1,7 @@
l_english:
activity_tour_special_type_title:0 "[ActivityWindow.GetActivity.GetSpecialOption.GetOption.GetName] Success"
activity_tour_special_type_desc:0 "[ActivityWindow.GetActivity.GetSpecialOption.GetOption.GetDescription]"
activity_tour_special_type_bar_segment_0_tt:0 "Bar Segment 1"
activity_tour_special_type_bar_segment_1_tt:0 "Bar Segment 2"
activity_tour_special_type_bar_segment_2_tt:0 "Bar Segment 3"
activity_tour_special_type_bar_segment_3_tt:0 "Bar Segment 4"

7
dummydir.mod Normal file
View File

@ -0,0 +1,7 @@
version="0.1"
tags={
"Utilities"
}
name="dummydir"
supported_version="1.14.2.2"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/dummydir"

6
dummydir/descriptor.mod Normal file
View File

@ -0,0 +1,6 @@
version="0.1"
tags={
"Utilities"
}
name="dummydir"
supported_version="1.14.2.2"

8
master.mod Normal file
View File

@ -0,0 +1,8 @@
version="1.0"
tags={
"Total Conversion"
}
name="Master"
supported_version="1.*"
path="/home/user0/.local/share/Paradox Interactive/Crusader Kings III/mod/master"
remote_file_id="3162040068"

View File

@ -0,0 +1,543 @@
# Buildings by DevZero
#################################################
# Special Buildings
################################################
great_high_hall_of_asgard_01 = {
asset = {
type = pdxmesh
name = "fp2_building_special_toledo_city_walls_01_a_mesh"
}
type_icon = "icon_building_royal_forest.dds"
is_enabled = {
OR = {
scope:holder.faith = norse_pagan
scope:holder.culture.heritage = heritage_north_germanic
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
}
}
type = special
cost_gold = 25000
construction_time = slow_construction_time
character_modifier = {
knight_limit = 3
monthly_dynasty_prestige_mult = 0.15
monthly_dynasty_prestige = 5
cultural_head_fascination_mult = 0.35
monthly_lifestyle_xp_gain_mult = 0.50
}
province_modifier = {
monthly_income = 15
fort_level = 3
}
county_modifier = {
development_growth = 0.50
development_growth_factor = 0.50
levy_size = 0.2
}
flag = travel_point_of_interest_wonder
}
grand_yurt_01 = {
construction_time = slow_construction_time
is_enabled = {
}
type_icon = "icon_building_military_camps.dds"
cost = {
gold = 350
prestige = 500
}
province_modifier = {
monthly_income = 5
fort_level = 2
garrison_size = 0.1
travel_danger = -10
stationed_archer_cavalry_damage_mult = 0.35
stationed_archer_cavalry_pursuit_mult = 0.25
defender_holding_advantage = 8
}
county_modifier = {
development_growth = 0.2
}
character_modifier = {
steppe_development_growth_factor = 0.20
archer_cavalry_max_size_add = 3
knight_limit = 2
}
type = special
flag = travel_point_of_interest_martial
}
###########################################################################################################################
# Special Duchy
###########################################################################################################################
shield_of_the_viking_01 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
scope:holder.culture = {
has_cultural_pillar = heritage_north_germanic
}
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
scope:holder = {
has_title = title:d_viken
}
}
}
cost = {
gold = 120
prestige = 500
}
levy = 1500
max_garrison = 1500
defender_holding_advantage = 25
duchy_capital_county_modifier = {
tax_mult = 0.10
levy_size = 0.05
garrison_size = 0.05
hostile_raid_time = 2
travel_danger = -15
fort_level = 2
}
province_modifier = {
fort_level = 5
garrison_size = 1.05
levy_size = 0.15
stationed_maa_damage_mult = 0.25
stationed_maa_toughness_mult = 0.25
stationed_maa_pursuit_mult = 0.25
stationed_maa_screen_mult = 0.25
}
character_modifier = {
knight_limit = 3
knight_effectiveness_mult = 1
army_maintenance_mult = -0.2
men_at_arms_cap = 1
men_at_arms_limit = 2
monthly_piety = 1
monthly_prestige = 1
}
type = duchy_capital
next_building = shield_of_the_viking_02
}
shield_of_the_viking_02 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
scope:holder.culture = {
has_cultural_pillar = heritage_north_germanic
}
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
scope:holder = {
has_title = title:d_viken
}
}
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_battlements
}
}
cost = {
prestige = expensive_building_tier_3_cost
piety = expensive_building_tier_3_cost
}
levy = 1500
max_garrison = 1500
defender_holding_advantage = 30
duchy_capital_county_modifier = {
tax_mult = 0.20
levy_size = 0.15
garrison_size = 0.15
hostile_raid_time = 3
travel_danger = -20
fort_level = 3
}
province_modifier = {
fort_level = 8
garrison_size = 1.2
levy_size = 0.25
stationed_maa_damage_mult = 0.5
stationed_maa_toughness_mult = 0.5
stationed_maa_pursuit_mult = 0.5
stationed_maa_screen_mult = 0.5
}
character_modifier = {
knight_limit = 6
knight_effectiveness_mult = 1.25
army_maintenance_mult = -0.25
monthly_piety = 2
monthly_prestige = 2
men_at_arms_cap = 2
men_at_arms_limit = 4
}
type = duchy_capital
next_building = shield_of_the_viking_03
}
shield_of_the_viking_03 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
scope:holder.culture = {
has_cultural_pillar = heritage_north_germanic
}
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
scope:holder = {
has_title = title:d_viken
}
}
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_hoardings
}
}
cost = {
prestige = expensive_building_tier_4_cost
piety = expensive_building_tier_4_cost
}
levy = 1750
max_garrison = 1750
defender_holding_advantage = 35
duchy_capital_county_modifier = {
tax_mult = 0.30
levy_size = 0.25
garrison_size = 0.25
hostile_raid_time = 4
travel_danger = -25
fort_level = 4
}
province_modifier = {
fort_level = 12
garrison_size = 1.35
levy_size = 0.35
stationed_maa_damage_mult = 0.75
stationed_maa_toughness_mult = 0.75
stationed_maa_pursuit_mult = 0.75
stationed_maa_screen_mult = 0.75
}
character_modifier = {
knight_limit = 9
knight_effectiveness_mult = 1.5
army_maintenance_mult = -0.35
monthly_piety = 3
monthly_prestige = 3
men_at_arms_cap = 3
men_at_arms_limit = 6
}
type = duchy_capital
next_building = shield_of_the_viking_04
}
shield_of_the_viking_04 = {
construction_time = slow_construction_time
type_icon = "icon_building_hall_of_heroes.dds"
is_enabled = {
AND = {
scope:holder.culture = {
has_cultural_pillar = heritage_north_germanic
}
scope:holder.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
scope:holder = {
has_title = title:d_viken
}
}
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_machicolations
}
}
cost = {
prestige = expensive_building_tier_4_cost
piety = expensive_building_tier_4_cost
}
levy = 1750
max_garrison = 1750
defender_holding_advantage = 35
duchy_capital_county_modifier = {
tax_mult = 0.40
levy_size = 0.35
garrison_size = 0.35
hostile_raid_time = 5
travel_danger = -30
fort_level = 5
}
province_modifier = {
fort_level = 15
garrison_size = 1.5
levy_size = 0.50
stationed_maa_damage_mult = 1
stationed_maa_toughness_mult = 1
stationed_maa_pursuit_mult = 1
stationed_maa_screen_mult = 1
}
character_modifier = {
knight_limit = 12
knight_effectiveness_mult = 2
army_maintenance_mult = -0.5
monthly_piety = 4
monthly_prestige = 4
men_at_arms_cap = 4
men_at_arms_limit = 8
}
type = duchy_capital
flag = fully_upgraded_duchy_capital_building
}
#####################################################
# Duchy Capitol Buidlings
#####################################################
bohemian_keep_01 = {
construction_time = slow_construction_time
is_enabled = {
AND = {
county.holder = {
has_title = prev.duchy
}
barony = title:b_praha
}
}
type_icon = "icon_building_ramparts.dds"
cost = {
gold = 120
prestige = 500
}
duchy_capital_county_modifier = {
tax_mult = 0.10
levy_size = 0.05
garrison_size = 0.15
hostile_raid_time = 0.2
travel_danger = -15
additional_fort_level = normal_building_fort_level_tier_2
}
province_modifier = {
monthly_income = 3
stationed_maa_damage_mult = normal_maa_damage_tier_1
stationed_maa_toughness_mult = normal_maa_toughness_tier_1
}
character_modifier = {
knight_limit = 2
knight_effectiveness_mult = 0.1
monthly_dynasty_prestige_mult = 0.05
}
type = duchy_capital
next_building = bohemian_keep_02
}
bohemian_keep_02 = {
construction_time = slow_construction_time
can_construct_potential = {
building_requirement_castle_city_church = { LEVEL = 01 }
building_requirement_tribal = no
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_battlements
}
}
is_enabled = {
AND = {
county.holder = {
has_title = prev.duchy
}
barony = title:b_praha
}
}
cost_gold = expensive_building_tier_4_cost
duchy_capital_county_modifier = {
tax_mult = 0.20
levy_size = 0.1
garrison_size = 0.25
hostile_raid_time = 0.25
travel_danger = -20
additional_fort_level = normal_building_fort_level_tier_2
}
province_modifier = {
monthly_income = 4
stationed_maa_damage_mult = normal_maa_damage_tier_2
stationed_maa_toughness_mult = normal_maa_toughness_tier_2
}
character_modifier = {
knight_limit = 4
knight_effectiveness_mult = 0.15
monthly_dynasty_prestige_mult = 0.05
intrigue = 1
}
next_building = bohemian_keep_03
type = duchy_capital
}
bohemian_keep_03 = {
construction_time = slow_construction_time
can_construct_potential = {
building_requirement_castle_city_church = { LEVEL = 01 }
building_requirement_tribal = no
}
can_construct_showing_failures_only = {
culture = {
has_innovation = innovation_hoardings
}
}
is_enabled = {
AND = {
county.holder = {
has_title = prev.duchy
}
barony = title:b_praha
}
}
show_disabled = no
cost_gold = expensive_building_tier_5_cost
duchy_capital_county_modifier = {
tax_mult = 0.30
levy_size = 0.15
garrison_size = 0.25
hostile_raid_time = 0.3
travel_danger = -25
additional_fort_level = normal_building_fort_level_tier_4
}
province_modifier = {
monthly_income = 5
stationed_maa_damage_mult = normal_maa_damage_tier_3
stationed_maa_toughness_mult = normal_maa_toughness_tier_3
}
character_modifier = {
knight_limit = 6
knight_effectiveness_mult = 0.25
monthly_dynasty_prestige_mult = 0.05
intrigue = 1
}
type = duchy_capital
flag = fully_upgraded_duchy_capital_building
}
###############################################################################################
# Buildings
###############################################################################################

View File

@ -0,0 +1,173 @@
give_military_host_interaction = {
interface_priority = 25
common_interaction= yes
use_diplomatic_range = yes
category = interaction_category_diplomacy
desc = give_military_host_interaction_desc
icon = sponsor_military_gift
is_shown = {
scope:recipient = {
is_ruler = yes
highest_held_title_tier >= tier_county
}
NOT = {
scope:actor = scope:recipient
}
}
can_send = {
custom_tooltip = {
text = mh_can_send_requirement
OR = {
scope:small_military_gift = yes
scope:medium_military_gift = yes
scope:large_military_gift = yes
}
}
}
on_accept = {
if = {
limit = {
scope:small_military_gift = yes
}
scope:recipient = {
give_military_host_small_effect = yes
}
}
else_if = {
limit = {
scope:medium_military_gift = yes
}
scope:recipient = {
give_military_host_medium_effect = yes
}
}
else_if = {
limit = {
scope:large_military_gift = yes
}
scope:recipient = {
give_military_host_large_effect = yes
}
}
}
cost = {
gold = {
value = 0
if = {
limit = {
scope:small_military_gift = yes
}
add = give_military_interaction_gold_cost_small
}
else_if = {
limit = {
scope:medium_military_gift = yes
}
add = give_military_interaction_gold_cost_medium
}
else_if = {
limit = {
scope:large_military_gift = yes
}
add = give_military_interaction_gold_cost_large
}
}
prestige = {
value = 0
if = {
limit = {
scope:small_military_gift = yes
}
add = give_military_interaction_prestige_cost_small
}
else_if = {
limit = {
scope:medium_military_gift = yes
}
add = give_military_interaction_prestige_cost_medium
}
else_if = {
limit = {
scope:large_military_gift = yes
}
add = give_military_interaction_prestige_cost_large
}
}
}
send_option = {
flag = small_military_gift
localization = "Sponsor Small Army"
is_shown = {
exists = scope:actor
}
is_valid = {
scope:actor = {
custom_tooltip = {
text = mh_small_army_requirement
AND = {
gold > 250
prestige > 100
}
}
}
}
}
send_option = {
flag = medium_military_gift
localization = "Sponsor Moderate Army"
is_shown = {
exists = scope:actor
}
is_valid = {
scope:actor = {
custom_tooltip = {
text = mh_medium_army_requirement
AND = {
gold > 500
prestige > 250
}
}
}
}
}
send_option = {
flag = large_military_gift
localization = "Sponsor Large Army"
is_shown = {
exists = scope:actor
}
is_valid = {
scope:actor = {
custom_tooltip = {
text = mh_large_army_requirement
AND = {
gold > 1000
prestige > 500
}
}
}
}
}
send_options_exclusive = yes
# Always up to get some free military!
auto_accept = yes
}

View File

@ -0,0 +1,122 @@
instruct_physician_to_treat_ill_interaction = {
interface_priority = 25
common_interaction= yes
use_diplomatic_range = yes
category = interaction_category_friendly
desc = instruct_physician_to_treat_ill_interaction_desc
icon = icon_scheme_crypto_religion
is_shown = {
NOT = {
OR = {
scope:actor = scope:recipient
NOT = {
scope:actor = {
exists = court_position:court_physician_court_position
}
}
}
}
scope:recipient = {
# Remember to add court position - physician requirement
is_alive = yes
AND = {
# Coutier / Related in some way
OR = {
is_courtier_of = scope:actor
is_close_or_extended_family_of = scope:actor
scope:recipient.dynasty = scope:actor.dynasty
}
# Has bad health traits and does not have reducing disease symptoms - currently being treated. No psychiatric afflictions here!
OR = {
has_trait = ill
has_trait = pneumonic
has_trait = great_pox
has_trait = lovers_pox
has_trait = leper
has_trait = wounded_1
has_trait = wounded_2
has_trait = wounded_3
has_trait = maimed
has_trait = gout_ridden
has_trait = consumption
has_trait = cancer
has_trait = typhus
has_trait = bubonic_plague
has_trait = smallpox
has_character_modifier = infected_wound_modifier
has_character_modifier = gangrene_modifier
has_trait = sickly
}
# Is not currently being treated (reduced diseased symptoms character modifier)
NOT = {
has_character_modifier = safe_disease_treatment_success_high_modifier
has_character_modifier = safe_disease_treatment_success_low_modifier
has_character_modifier = safe_disease_treatment_failure_modifier
has_character_modifier = risky_disease_treatment_success_high_modifier
has_character_modifier = risky_disease_treatment_success_low_modifier
has_character_modifier = risky_disease_treatment_failure_modifier
has_character_modifier = safe_wound_treatment_success_high_modifier
has_character_modifier = safe_wound_treatment_success_low_modifier
has_character_modifier = safe_wound_treatment_failure_modifier
has_character_modifier = risky_wound_treatment_success_modifier
has_character_modifier = risky_wound_treatment_failure_modifier
}
}
}
}
on_send = {
scope:recipient = {
if = {
limit = {
OR = {
has_trait = sickly
has_trait = consumption
has_trait = cancer
has_trait = typhus
has_trait = bubonic_plague
has_trait = smallpox
has_trait = ill
has_trait = pneumonic
has_trait = great_pox
has_trait = lovers_pox
has_trait = leper
}
}
it_disease_event_effect = yes
instruct_treatment_disease_effect = yes
}
else_if = {
limit = {
OR = {
has_character_modifier = infected_wound_modifier
has_character_modifier = gangrene_modifier
has_trait = wounded_1
has_trait = wounded_2
has_trait = wounded_3
has_trait = maimed
}
}
it_wounded_event_effect = yes
instruct_treatment_wounded_effect = yes
}
}
}
# 3102 for disease
#41
# Always want to be helped
auto_accept = yes
}

View File

@ -0,0 +1,179 @@
join_war_interaction = {
category = interaction_category_diplomacy
interface = interfere_in_war
special_interaction = interfere_in_war_interaction
popup_on_receive = yes
desc = join_war_interaction_desc
icon = change_allegiance
greeting = positive
notification_text = join_war_interaction_notification
is_shown = {
scope:recipient = {
is_at_war = yes
NOR = {
this = scope:actor
is_at_war_with = scope:actor
}
}
}
is_valid_showing_failures_only = {
# recipient is not in (any) war against your liege(s)
trigger_if = {
limit = { exists = scope:actor.liege }
custom_description = {
text = join_war_interaction_recipient_warring_with_my_liege
subject = scope:recipient
scope:actor = {
NOT = {
any_liege_or_above = {
is_at_war_with = scope:recipient
}
}
}
}
}
# recipient is ally or defending against a holy war
trigger_if = {
limit = {
scope:actor = {
NOT = { target_is_liege_or_above = scope:recipient }
}
}
trigger_if = {
limit = {
scope:recipient = {
any_character_war = {
OR = {
#Must be either the same faith as the character being holy warred...
scope:recipient.faith = scope:actor.faith
#... Or, same religion, *and* you couldn't holy war them yourself.
AND = {
scope:recipient.faith.religion = scope:actor.faith.religion
scope:actor.faith = {
faith_hostility_level = {
target = scope:recipient.faith
value < religious_cb_enabled_hostility_level
}
}
}
}
any_war_defender = { this = scope:recipient }
}
}
}
# Deliberately blank; we've passed the trigger and making a desc out of this doesn't make sense
}
}
# recipient is liege
trigger_else = {
custom_description = {
text = join_war_interaction_recipient_not_liege
subject = scope:recipient
scope:actor = {
target_is_liege_or_above = scope:recipient
}
}
}
}
can_be_picked = {
exists = scope:target
scope:target = {
# recipient is war leader
is_war_leader = scope:recipient
# If not holy war, special exception for liege trying to put down his vassal's peasant revolt.
trigger_if = {
limit = {
is_religious_war = no
scope:actor = { target_is_vassal_or_below = scope:recipient }
primary_defender = scope:recipient
primary_attacker = {
is_leading_faction_type = peasant_faction
}
}
always = yes
}
# making the default behavior explicit if no other trigger_(else_)ifs are valid
trigger_else = {
always = yes
}
}
joiner_not_already_in_another_war_with_any_target_war_participants_trigger = {
WARRIOR = scope:recipient
JOINER = scope:actor
}
}
on_accept = {
scope:target = {
hidden_effect = {
set_called_to = scope:actor
}
if = {
limit = {
is_attacker = scope:recipient
}
add_attacker = scope:actor
}
else = {
add_defender = scope:actor
}
}
scope:actor = {
stress_impact = {
craven = medium_stress_impact_gain
shy = minor_stress_impact_gain
}
}
scope:recipient = {
if = {
limit = {
is_ai = yes
}
progress_towards_friend_effect = {
CHARACTER = scope:actor
OPINION = no
}
}
else = {
hidden_effect = { #To nudge friendship
if = {
limit = {
NOR = {
has_relation_friend = scope:actor
has_relation_potential_friend = scope:actor
}
}
set_relation_potential_friend = scope:actor
}
}
}
}
}
on_decline = {
scope:actor = {
trigger_event = char_interaction.0236
}
}
auto_accept = yes
ai_accept = {
base = 100 # everyone wants help
}
ai_will_do = {
base = -1000 # only players can join all the wars
}
}

View File

@ -0,0 +1,116 @@
##############################################################################################################################
# Medievel Thievery Mod
# Developed by DevZero (some code taken from pdx) - the mod has thievery in the name after all...
# Notes: for AI inclusion, look at ai in diarch_interactions > syphon -- ai greed, boldness, honor for base, then modifiers
##############################################################################################################################
norse_asgard_enabled_interaction = {
icon = icon_scheme_fabricate_hook
common_interaction = yes
interface_priority = 100
category = interaction_category_friendly
desc = norse_asgard_enabled_interaction_desc
cooldown = { months = 18 }
cooldown_against_recipient = {years = 5}
is_shown = {
scope:actor.dynasty = {
has_dynasty_modifier = great_hall_of_asgard_modifier
}
NOT = {Scope:recipient = scope:acotr}
}
is_valid_showing_failures_only = {
scope:recipient = { NOT = { has_strong_hook = scope:actor } }
}
on_accept = {
scope:actor = {
duel = {
skill = learning
target = scope:recipient
55 = {
desc = norse_asgard_enabled_interaction.tt.success
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
min = -49
}
send_interface_toast = {
title = norse_asgard_enabled_interaction.tt.success
left_icon = scope:recipient
add_hook = {
target = scope:recipient
type = loyalty_hook
}
}
}
45 = {
desc = norse_asgard_enabled_interaction.tt.failure
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = -49
}
send_interface_toast = {
title = norse_asgard_enabled_interaction.tt.failure
left_icon = scope:recipient
scope:recipient = {
# Vengeful characters will not take it well.
if = {
limit = {
has_trait = vengeful
can_set_relation_rival_trigger = { CHARACTER = scope:actor }
}
set_relation_rival = {
target = scope:actor
reason = rival_tried_to_embezzle
}
}
# Forgiving characters aren't too bothered.
else_if = {
limit = { has_trait = forgiving }
add_opinion = {
target = scope:actor
modifier = disappointed_opinion
opinion = -5
}
}
# Otherwise, folks are skeptical
else = {
add_opinion = {
target = scope:actor
modifier = trust_opinion
opinion = -15
}
}
}
}
}
}
}
}
auto_accept = yes
ai_will_do = {
base = 0
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,157 @@
ambassador_culture_court_position = {
max_available_positions = 1
category = court_position_category_royal
minimum_rank = kingdom
valid_position = {
highest_held_title_tier >= tier_kingdom
}
opinion = {
value = regular_court_position_opinion
}
revoke_cost = {
prestige = minor_court_position_prestige_cost
}
salary = {
round = no
gold = medium_court_position_salary
}
base_employer_modifier = {
}
scaling_employer_modifiers = {
terrible = {
cultural_head_acceptance_gain_mult = 0.05
}
poor = {
cultural_head_acceptance_gain_mult = 0.10
}
average = {
cultural_head_acceptance_gain_mult = 0.15
}
good = {
cultural_head_acceptance_gain_mult = 0.20
}
excellent = {
cultural_head_acceptance_gain_mult = 0.25
}
}
modifier = {
monthly_prestige = minor_court_position_prestige_salary
}
on_court_position_received = {
basic_gained_court_position_effect = yes
}
on_court_position_revoked = {
basic_revoked_court_position_effect = yes
}
on_court_position_invalidated = {
basic_invalidated_court_position_effect = yes
}
candidate_score = {
value = 0
}
aptitude_level_breakpoints = { 20 40 60 80 }
# How good is this character in this position? root scope is the holder of the court position
aptitude = {
value = 1
add = {
value = diplomacy
multiply = 2
max = 40
desc = court_position_skill_diplomacy
}
add = {
value = learning
multiply = 1.75
max = 35
desc = court_position_skill_learning
}
if = {
limit = {
has_trait = compassionate
}
add = {
value = 5
desc = court_position_compassionate_trait
}
}
if = {
limit = {
has_trait = gregarious
}
add = {
value = 20
desc = court_position_gregarious_trait
}
}
if = {
limit = {
has_trait = diplomat
}
add = {
value = 15
desc = court_position_diplomat_trait
}
}
if = {
limit = {
has_trait = callous
}
add = {
value = -30
desc = court_position_callous_trait
}
}
if = {
limit = {
has_trait = deceitful
}
add = {
value = -25
desc = court_position_deceitful_trait
}
}
if = {
limit = {
has_trait = schemer
}
add = {
value = -35
desc = court_position_schemer_trait
}
}
if = {
limit = { has_trait = murderer }
add = {
value = -50
desc = court_position_murderer_trait
}
}
add = court_position_aptitude_family_business_value
add = court_position_aptitude_low_penalty_value
}
is_shown = {
always = yes
}
}

Some files were not shown because too many files have changed in this diff Show More