2494 lines
62 KiB
Text
2494 lines
62 KiB
Text
namespace = fp1_trade_events
|
|
|
|
##################################################
|
|
# #Standard Trade Events
|
|
# 0001 - 0010 Raid or Trade - a raid potentially becomes a trading mission instead
|
|
# 0011 - 0020 A Comfortable Accomodation - a trade ceasefire has expired and can be renewed.
|
|
# 0021 - 0040 Visitors from Afar - courtiers swap between two places that trade with each other.
|
|
# 0041 - 0060 Belligerents with Benefits - beneficial modifiers are swapped between the capital and a foreign trade location.
|
|
#
|
|
# #Special Trade Events
|
|
# 1101 - 1130 An Alternative Arrangement - offer land to a raid-trade partner
|
|
# 1131 - 1170 The Northerner Menace - you buy off an SA's troops, or offer them a position under you.
|
|
# 1171 - 1180 A Holy Helping Hand - someone you have a raid-trade agreement with offers the hand of a child and conversion aid.
|
|
##################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# STANDARD TRADE EVENTS
|
|
|
|
##################################################
|
|
# Take or Trade?
|
|
# by Ewan Cowhig Croft
|
|
# 0001 - 0010
|
|
##################################################
|
|
|
|
# Hidden setup: could this raid become a trade mission instead?
|
|
fp1_trade_events.0001 = {
|
|
hidden = yes
|
|
scope = army
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Make sure that the army hasn't landed straight into combat or w/e.
|
|
is_army_in_combat = no
|
|
# Various checks related to scope:raider, including most of the stuff for fp1_trade_events.0002's trigger block.
|
|
scope:raider = {
|
|
#You must be leading your own forces.
|
|
this = root.army_commander
|
|
# Standard checks.
|
|
is_available_adult_or_is_commanding = yes
|
|
NOT = { has_character_flag = had_event_fp1_trade_events_0002 }
|
|
# Must be either river-capable raiders, or have invested in a suitable dynasty legacy.
|
|
OR = {
|
|
culture = { has_innovation = innovation_longboats }
|
|
dynasty ?= { has_dynasty_perk = fp1_adventure_legacy_2 }
|
|
}
|
|
# Must be at peace; not strictly, but this is the easiest way to reduce edge cases.
|
|
is_at_war = no
|
|
# Shouldn't hypothetically need to check whether or not scope:raider can actually raid the target, since that should be handled code-side before the on_action even fires.
|
|
}
|
|
# Is the target intimidating to this raid army?
|
|
army_size < fp1_trade_events_eligible_settlement_value
|
|
}
|
|
|
|
immediate = {
|
|
random = {
|
|
chance = 20
|
|
modifier = {
|
|
add = 20
|
|
scope:raider = {
|
|
culture = { has_cultural_pillar = heritage_north_germanic }
|
|
dynasty = { has_dynasty_perk = fp1_adventure_legacy_2 }
|
|
}
|
|
}
|
|
save_scope_as = raid_army
|
|
scope:raider = { trigger_event = fp1_trade_events.0002 }
|
|
}
|
|
}
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_offer_trade_deal_raider_perspective_effect = {
|
|
# Add the truce.
|
|
add_truce_both_ways = {
|
|
character = scope:raider
|
|
days = fp1_trade_events_truce_length_value
|
|
name = TRUCE_TRADE_DEAL
|
|
}
|
|
# Add some mutual opinion gain.
|
|
add_opinion = {
|
|
target = scope:raider
|
|
modifier = pleased_opinion
|
|
opinion = 20
|
|
}
|
|
# Raid loot for the army.
|
|
scope:raid_army = { add_loot = fp1_trade_events_cash_settlement_value }
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_offer_trade_deal_defender_perspective_effect = {
|
|
# Add the truce.
|
|
show_as_tooltip = {
|
|
add_truce_both_ways = {
|
|
character = scope:raider
|
|
days = fp1_trade_events_truce_length_value
|
|
name = TRUCE_TRADE_DEAL
|
|
}
|
|
}
|
|
# Add some mutual opinion gain.
|
|
reverse_add_opinion = {
|
|
target = scope:raider
|
|
modifier = pleased_opinion
|
|
opinion = 20
|
|
}
|
|
# Minor beneficial modifier gain for the county.
|
|
scope:county = {
|
|
add_county_modifier = {
|
|
modifier = trade_instead_of_raid_fp1_modifier
|
|
days = fp1_trade_events_truce_length_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# You have the chance to trade peacefully instead of raiding.
|
|
fp1_trade_events.0002 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0002.t
|
|
desc = fp1_trade_events.0002.desc
|
|
theme = raid
|
|
left_portrait = {
|
|
character = scope:raider
|
|
animation = personality_honorable
|
|
}
|
|
right_portrait = {
|
|
character = scope:county.holder
|
|
animation = disapproval
|
|
}
|
|
lower_right_portrait = scope:top_liege
|
|
override_background = { reference = burning_building }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
}
|
|
|
|
immediate = {
|
|
add_character_flag = {
|
|
flag = had_event_fp1_trade_events_0002
|
|
days = 365
|
|
}
|
|
# Grab top_liege, if they're a separate character.
|
|
if = {
|
|
limit = {
|
|
scope:county.holder != scope:county.holder.top_liege
|
|
}
|
|
scope:county.holder.top_liege = { save_scope_as = top_liege }
|
|
}
|
|
}
|
|
|
|
# Offer trade: local holder.
|
|
option = {
|
|
name = fp1_trade_events.0002.a
|
|
|
|
# Show offer results.
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
# We only want to show the two possibilities, actual percentages don't matter, since the results are decided in the recipient's event.
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0002.a.accepted
|
|
scope:county.holder = { fp1_trade_events_offer_trade_deal_raider_perspective_effect = yes }
|
|
}
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0002.a.rejected
|
|
custom_tooltip = fp1_trade_events.0002.a.tt
|
|
}
|
|
}
|
|
}
|
|
# Send the actual offer.
|
|
scope:county.holder = { trigger_event = fp1_trade_events.0003 }
|
|
# Charge a little prestige to make it a trade-off.
|
|
add_prestige = minor_prestige_loss
|
|
|
|
stress_impact = {
|
|
calm = medium_stress_impact_loss
|
|
compassionate = major_stress_impact_loss
|
|
wrathful = medium_stress_impact_gain
|
|
callous = major_stress_impact_gain
|
|
sadistic = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_compassion = 0.5
|
|
ai_greed = -0.5
|
|
}
|
|
opinion_modifier = { opinion_target = scope:county.holder.top_liege }
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = calm
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 30
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = wrathful
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = sadistic
|
|
}
|
|
}
|
|
}
|
|
|
|
# Offer trade: top liege.
|
|
option = {
|
|
name = fp1_trade_events.0002.b
|
|
trigger = {
|
|
scope:county.holder != scope:county.holder.top_liege
|
|
}
|
|
|
|
# Show offer results.
|
|
show_as_tooltip = {
|
|
random_list = {
|
|
# We only want to show the two possibilities, actual percentages don't matter, since the results are decided in the recipient's event.
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0002.a.accepted
|
|
scope:county.holder.top_liege = { fp1_trade_events_offer_trade_deal_raider_perspective_effect = yes }
|
|
}
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0002.a.rejected
|
|
custom_tooltip = fp1_trade_events.0002.a.tt
|
|
}
|
|
}
|
|
}
|
|
# Send the actual offer.
|
|
scope:county.holder.top_liege = { trigger_event = fp1_trade_events.0003 }
|
|
# Charge a little prestige to make it a trade-off.
|
|
add_prestige = minor_prestige_loss
|
|
|
|
stress_impact = {
|
|
calm = medium_stress_impact_loss
|
|
compassionate = major_stress_impact_loss
|
|
wrathful = medium_stress_impact_gain
|
|
callous = major_stress_impact_gain
|
|
sadistic = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_compassion = 0.5
|
|
ai_greed = -0.5
|
|
}
|
|
opinion_modifier = { opinion_target = scope:county.holder.top_liege }
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = calm
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 30
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = wrathful
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = sadistic
|
|
}
|
|
}
|
|
}
|
|
|
|
# Pillage it anyway.
|
|
option = {
|
|
name = fp1_trade_events.0002.c
|
|
|
|
# Nahhhhh, screw it.
|
|
custom_tooltip = fp1_trade_events.0002.c.tt
|
|
|
|
stress_impact = {
|
|
wrathful = medium_stress_impact_loss
|
|
callous = major_stress_impact_loss
|
|
sadistic = major_stress_impact_loss
|
|
calm = medium_stress_impact_gain
|
|
compassionate = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_greed = 0.5
|
|
ai_compassion = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = wrathful
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 30
|
|
has_trait = sadistic
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = calm
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = compassionate
|
|
}
|
|
}
|
|
}
|
|
|
|
# Pillage & don't poke me about this again.
|
|
option = {
|
|
name = fp1_trade_events.0002.d
|
|
# AI don't need an opt-out.
|
|
trigger = { is_ai = no }
|
|
|
|
# Furthermore, screw it for a very long time.
|
|
custom_tooltip = fp1_trade_events.0002.d.tt
|
|
add_character_flag = { flag = had_event_fp1_trade_events_0002 }
|
|
|
|
stress_impact = {
|
|
wrathful = medium_stress_impact_loss
|
|
callous = major_stress_impact_loss
|
|
sadistic = major_stress_impact_loss
|
|
calm = medium_stress_impact_gain
|
|
compassionate = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_greed = 0.5
|
|
ai_compassion = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = wrathful
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 30
|
|
has_trait = sadistic
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = calm
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = compassionate
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scripted_effect fp1_set_prime_trade_partner_effect = {
|
|
# Store the variable for general tracking.
|
|
set_variable = {
|
|
name = fp1_prime_trade_deal
|
|
value = scope:recipient
|
|
days = fp1_trade_events_truce_length_value
|
|
}
|
|
# Fire off the renewal event from the date of expiry.
|
|
trigger_event = {
|
|
id = fp1_trade_events.0011
|
|
days = fp1_trade_events_truce_renewal_date_value
|
|
}
|
|
# Trigger the on_action.
|
|
if = {
|
|
limit = {
|
|
NOT = { has_character_flag = fp1_trade_events_cycle_start }
|
|
}
|
|
add_character_flag = fp1_trade_events_cycle_start
|
|
trigger_event = { on_action = fp1_trade_events_cycle }
|
|
}
|
|
}
|
|
|
|
# A raider in your lands would prefer commerce to pillage.
|
|
fp1_trade_events.0003 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0003.t
|
|
desc = fp1_trade_events.0003.desc
|
|
theme = raid
|
|
left_portrait = {
|
|
character = scope:raider
|
|
animation = personality_bold
|
|
}
|
|
right_portrait = {
|
|
character = scope:recipient
|
|
animation = disapproval
|
|
}
|
|
override_background = { reference = burning_building }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
}
|
|
|
|
immediate = {
|
|
# Grab a scope:recipient for the portraits, since this may have gone to two different characters.
|
|
save_scope_as = recipient
|
|
}
|
|
|
|
# Unexpected, but highly welcome.
|
|
option = {
|
|
name = fp1_trade_events.0003.a
|
|
|
|
# Apply effects & inform scope:raider.
|
|
hidden_effect = {
|
|
scope:raider = {
|
|
send_interface_toast = {
|
|
title = fp1_trade_events.0003.a.tt_success
|
|
left_icon = scope:recipient
|
|
scope:recipient = { fp1_trade_events_offer_trade_deal_raider_perspective_effect = yes }
|
|
}
|
|
# Quietly work out if this would become their pre-eminent trade deal.
|
|
## Due to no existing prime trade deal.
|
|
if = {
|
|
limit = {
|
|
NOT = { has_variable = fp1_prime_trade_deal }
|
|
}
|
|
fp1_set_prime_trade_partner_effect = yes
|
|
}
|
|
## Due to a dead/landless prime trade deal or cancelled truces.
|
|
else_if = {
|
|
limit = {
|
|
has_variable = fp1_prime_trade_deal
|
|
var:fp1_prime_trade_deal = {
|
|
OR = {
|
|
is_alive = no
|
|
is_landed = no
|
|
NOR = {
|
|
has_truce = scope:raider
|
|
scope:raider = { has_truce = var:fp1_prime_trade_deal }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
fp1_set_prime_trade_partner_effect = yes
|
|
}
|
|
## Due to scope:recipient being of a higher tier than their current one.
|
|
else_if = {
|
|
limit = {
|
|
has_variable = fp1_prime_trade_deal
|
|
scope:recipient.primary_title.tier > var:fp1_prime_trade_deal.primary_title.tier
|
|
}
|
|
fp1_set_prime_trade_partner_effect = yes
|
|
}
|
|
}
|
|
}
|
|
fp1_trade_events_offer_trade_deal_defender_perspective_effect = yes
|
|
|
|
stress_impact = {
|
|
compassionate = medium_stress_impact_loss
|
|
forgiving = major_stress_impact_loss
|
|
callous = medium_stress_impact_gain
|
|
sadistic = major_stress_impact_gain
|
|
vengeful = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_compassion = 0.5
|
|
ai_vengefulness = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 30
|
|
has_trait = forgiving
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = sadistic
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -40
|
|
has_trait = vengeful
|
|
}
|
|
}
|
|
}
|
|
|
|
# *Trade*? With these murderers?!
|
|
option = {
|
|
name = fp1_trade_events.0003.b
|
|
|
|
# Gain some prestige for turning down these marauders.
|
|
add_prestige = minor_prestige_gain
|
|
# Inform scope:raider that negotiations have failed.
|
|
hidden_effect = {
|
|
scope:raider = {
|
|
send_interface_toast = {
|
|
title = fp1_trade_events.0003.b.tt_failure
|
|
left_icon = scope:recipient
|
|
custom_tooltip = fp1_trade_events.0003.b.tt_failure
|
|
}
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
compassionate = medium_stress_impact_gain
|
|
forgiving = major_stress_impact_gain
|
|
callous = medium_stress_impact_loss
|
|
sadistic = major_stress_impact_loss
|
|
vengeful = major_stress_impact_loss
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_compassion = 0.5
|
|
ai_vengefulness = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 30
|
|
has_trait = sadistic
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 40
|
|
has_trait = vengeful
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = forgiving
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
##################################################
|
|
# Comfortable Accomodation
|
|
# by Ewan Cowhig Croft
|
|
# 0011 - 0020
|
|
##################################################
|
|
|
|
scripted_trigger fp1_prime_trade_partner_still_valid_trigger = {
|
|
exists = $RAIDER$.var:fp1_prime_trade_deal
|
|
$RAIDER$.var:fp1_prime_trade_deal = {
|
|
this = $RECIPIENT$
|
|
is_alive = yes
|
|
is_landed = yes
|
|
# Make sure the truce hasn't been cancelled.
|
|
has_truce = $RAIDER$
|
|
$RAIDER$ = { has_truce = var:fp1_prime_trade_deal }
|
|
# And that the characters haven't wound up in the same realm somehow.
|
|
NOT = { top_liege = $RAIDER$.top_liege }
|
|
}
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_trade_renewed_raider_perspective_effect = {
|
|
# Add the truce.
|
|
add_truce_both_ways = {
|
|
character = scope:recipient
|
|
days = fp1_trade_events_truce_length_value
|
|
name = TRUCE_TRADE_DEAL
|
|
}
|
|
# Nudge towards friendship.
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:recipient
|
|
OPINION = 30
|
|
REASON = friend_fp1_renewed_trade_deal
|
|
}
|
|
# Gain some prestige.
|
|
add_prestige = major_prestige_gain
|
|
# Sort deal veterancy.
|
|
set_variable = {
|
|
name = fp1_renewed_trade_deal
|
|
value = scope:recipient
|
|
days = fp1_trade_events_truce_length_value
|
|
}
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_trade_renewed_defender_perspective_effect = {
|
|
# Truce added in scope:raider's perspective.
|
|
show_as_tooltip = {
|
|
add_truce_both_ways = {
|
|
character = scope:raider
|
|
days = fp1_trade_events_truce_length_value
|
|
name = TRUCE_TRADE_DEAL
|
|
}
|
|
}
|
|
# Nudge towards friendship.
|
|
show_as_tooltip = {
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:raider
|
|
OPINION = 30
|
|
REASON = friend_fp1_renewed_trade_deal
|
|
}
|
|
}
|
|
# Since prestige is the independence reward, we give a little bit of static cash.
|
|
add_gold = 50
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_trade_renewal_rejected_effect = {
|
|
add_prestige = minor_prestige_loss
|
|
custom_tooltip = fp1_trade_events.0011.b.tt
|
|
}
|
|
|
|
# A trade ceasefire has expired and can be renewed.
|
|
fp1_trade_events.0011 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0011.t
|
|
desc = {
|
|
first_valid = {
|
|
# Not your first renewal.
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = var:fp1_renewed_trade_deal
|
|
var:fp1_renewed_trade_deal = var:fp1_prime_trade_deal
|
|
}
|
|
desc = fp1_trade_events.0011.desc.subsequent_renewal
|
|
}
|
|
# First time renewing this particular deal.
|
|
desc = fp1_trade_events.0011.desc.first_renewal
|
|
}
|
|
desc = fp1_trade_events.0011.desc.outro
|
|
}
|
|
theme = stewardship
|
|
left_portrait = {
|
|
character = scope:raider
|
|
animation = personality_rational
|
|
}
|
|
right_portrait = {
|
|
character = scope:recipient
|
|
animation = personality_bold
|
|
}
|
|
override_background = { reference = market }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Standard checks.
|
|
is_landed = yes
|
|
# Scope:raider's prime trade deal must still be valid.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = scope:recipient
|
|
RAIDER = scope:raider
|
|
}
|
|
}
|
|
|
|
# A grand offer!
|
|
option = {
|
|
name = fp1_trade_events.0011.a
|
|
# Make sure players in MP don't cheese anything.
|
|
trigger = {
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = scope:recipient
|
|
RAIDER = scope:raider
|
|
}
|
|
}
|
|
|
|
# You offer a renewal to scope:recipient.
|
|
random_list = {
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0011.a.accepted
|
|
show_as_tooltip = { fp1_trade_events_trade_renewed_raider_perspective_effect = yes }
|
|
}
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0011.a.rejected
|
|
show_as_tooltip = { fp1_trade_events_trade_renewal_rejected_effect = yes }
|
|
}
|
|
}
|
|
scope:recipient = { trigger_event = fp1_trade_events.0012 }
|
|
|
|
stress_impact = {
|
|
honest = minor_stress_impact_loss
|
|
arbitrary = medium_stress_impact_gain
|
|
fickle = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_honor = 0.5
|
|
ai_sociability = 0.25
|
|
ai_rationality = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = honest
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = arbitrary
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = fickle
|
|
}
|
|
}
|
|
}
|
|
|
|
# This has run its course...
|
|
option = {
|
|
name = fp1_trade_events.0011.b
|
|
|
|
# A bit of consolation prestige for your hard-work.
|
|
add_prestige = minor_prestige_gain
|
|
# Confirm that the deal will lapse as expected.
|
|
custom_tooltip = fp1_trade_events.0011.b.tt
|
|
|
|
stress_impact = {
|
|
arbitrary = minor_stress_impact_loss
|
|
fickle = minor_stress_impact_loss
|
|
honest = minor_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_honor = -0.25
|
|
ai_sociability = -0.25
|
|
ai_rationality = -0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = arbitrary
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = fickle
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -10
|
|
has_trait = honest
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# A trading partner proposes an extension.
|
|
fp1_trade_events.0012 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0012.t
|
|
desc = {
|
|
first_valid = {
|
|
# Not your first renewal.
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = var:fp1_renewed_trade_deal
|
|
var:fp1_renewed_trade_deal = var:fp1_prime_trade_deal
|
|
}
|
|
desc = fp1_trade_events.0012.desc.subsequent_renewal
|
|
}
|
|
# First time renewing this particular deal.
|
|
desc = fp1_trade_events.0012.desc.first_renewal
|
|
}
|
|
desc = fp1_trade_events.0012.desc.outro
|
|
}
|
|
theme = stewardship
|
|
left_portrait = {
|
|
character = scope:recipient
|
|
animation = personality_rational
|
|
}
|
|
right_portrait = {
|
|
character = scope:raider
|
|
animation = admiration
|
|
}
|
|
override_background = { reference = market }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Scope:raider's prime trade deal must still be valid.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = scope:recipient
|
|
RAIDER = scope:raider
|
|
}
|
|
}
|
|
|
|
# A most agreeable proposal.
|
|
option = {
|
|
name = fp1_trade_events.0012.a
|
|
# Make sure players in MP don't cheese anything.
|
|
trigger = {
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = scope:recipient
|
|
RAIDER = scope:raider
|
|
}
|
|
}
|
|
|
|
# You agree to a renewal with scope:raider.
|
|
fp1_trade_events_trade_renewed_defender_perspective_effect = yes
|
|
# Inform scope:raider.
|
|
scope:raider = {
|
|
hidden_effect = {
|
|
send_interface_toast = {
|
|
title = fp1_trade_events.0012.a.tt_success
|
|
left_icon = scope:recipient
|
|
fp1_trade_events_trade_renewed_raider_perspective_effect = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
honest = minor_stress_impact_loss
|
|
arbitrary = medium_stress_impact_gain
|
|
fickle = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
opinion_modifier = { opinion_target = scope:raider}
|
|
ai_value_modifier = {
|
|
ai_honor = 0.5
|
|
ai_sociability = 0.25
|
|
ai_rationality = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = honest
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = arbitrary
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = fickle
|
|
}
|
|
}
|
|
}
|
|
|
|
# I'm done with this GetWomanMan.
|
|
option = {
|
|
name = fp1_trade_events.0012.b
|
|
|
|
# A bit of consolation prestige for your independence.
|
|
add_prestige = minor_prestige_gain
|
|
# Confirm that the deal will lapse as expected.
|
|
custom_tooltip = fp1_trade_events.0012.b.tt
|
|
# Inform scope:raider, who is disappointed.
|
|
scope:raider = {
|
|
add_opinion = {
|
|
target = scope:recipient
|
|
modifier = disappointed_opinion
|
|
opinion = -20
|
|
}
|
|
hidden_effect = {
|
|
send_interface_toast = {
|
|
title = fp1_trade_events.0012.b.tt_failure
|
|
left_icon = scope:recipient
|
|
fp1_trade_events_trade_renewal_rejected_effect = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
arbitrary = minor_stress_impact_loss
|
|
fickle = minor_stress_impact_loss
|
|
honest = minor_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_honor = -0.25
|
|
ai_sociability = -0.25
|
|
ai_rationality = -0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = arbitrary
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = fickle
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -10
|
|
has_trait = honest
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
##################################################
|
|
# Visitors from Afar
|
|
# by Ewan Cowhig Croft
|
|
# 0021 - 0040
|
|
##################################################
|
|
|
|
scripted_effect fp1_trade_events_0021_acquire_courtier_effect = {
|
|
# Acquire selection and boost opinion.
|
|
add_courtier = $SELECTION$
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = $SELECTION$
|
|
OPINION = 100
|
|
REASON = friend_accepted_courtier
|
|
}
|
|
# Ditch the rest.
|
|
hidden_effect = {
|
|
scope:merchant = {
|
|
if = {
|
|
limit = {
|
|
NOT = { this = $SELECTION$ }
|
|
}
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
}
|
|
scope:priest = {
|
|
if = {
|
|
limit = {
|
|
NOT = { this = $SELECTION$ }
|
|
}
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
exists = scope:spy
|
|
NOT = { scope:spy = $SELECTION$ }
|
|
}
|
|
scope:spy = {
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Courtiers swap between two places that trade with each other.
|
|
fp1_trade_events.0021 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0021.t
|
|
desc = fp1_trade_events.0021.desc
|
|
theme = alliance
|
|
left_portrait = {
|
|
character = scope:merchant
|
|
animation = personality_greedy
|
|
}
|
|
right_portrait = {
|
|
character = scope:priest
|
|
animation = personality_zealous
|
|
}
|
|
lower_center_portrait = scope:spy
|
|
lower_right_portrait = var:fp1_prime_trade_deal
|
|
override_background = { reference = docks }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Standard checks.
|
|
## Allow when commanding to be fairer to people out raiding, which we incentivise you to do personally to get pacts to begin with.
|
|
is_available_adult_or_is_commanding = yes
|
|
NOT = { has_character_flag = had_event_fp1_trade_events_0021 }
|
|
is_landed = yes
|
|
# Scope:raider's prime trade deal must still be valid.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = root.var:fp1_prime_trade_deal
|
|
RAIDER = root
|
|
}
|
|
}
|
|
|
|
weight_multiplier = {
|
|
base = 1
|
|
|
|
# Weight up a little for certain lifestyle traits, as these spread stories of your success and accomplishments.
|
|
modifier = {
|
|
add = 0.25
|
|
has_trait = diplomat
|
|
}
|
|
modifier = {
|
|
add = 0.25
|
|
has_trait = avaricious
|
|
}
|
|
# Weight up for this being a renewed treaty.
|
|
modifier = {
|
|
add = 1
|
|
exists = root.var:fp1_renewed_trade_deal
|
|
exists = root.var:fp1_prime_trade_deal
|
|
root.var:fp1_prime_trade_deal = root.var:fp1_renewed_trade_deal
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
add_character_flag = {
|
|
flag = had_event_fp1_trade_events_0021
|
|
days = 1825
|
|
}
|
|
# Save some things for loc & future events.
|
|
save_scope_as = raider
|
|
var:fp1_prime_trade_deal = { save_scope_as = partner }
|
|
# Create our players.
|
|
## A merchant.
|
|
create_character = {
|
|
template = fp1_trade_partner_merchant
|
|
location = root.capital_province
|
|
save_scope_as = merchant
|
|
}
|
|
## A priest.
|
|
create_character = {
|
|
template = fp1_trade_partner_priest
|
|
location = root.capital_province
|
|
save_scope_as = priest
|
|
}
|
|
## And a spy, if appropriate.
|
|
if = {
|
|
limit = {
|
|
NOT = { has_trait = trusting }
|
|
intrigue >= high_skill_rating
|
|
}
|
|
create_character = {
|
|
template = fp1_trade_partner_spy
|
|
location = root.capital_province
|
|
save_scope_as = spy
|
|
}
|
|
}
|
|
}
|
|
|
|
# I could use someone to count my coin...
|
|
option = {
|
|
name = fp1_trade_events.0021.a
|
|
|
|
# Select the merchant.
|
|
fp1_trade_events_0021_acquire_courtier_effect = { SELECTION = scope:merchant }
|
|
|
|
stress_impact = {
|
|
trusting = minor_stress_impact_loss
|
|
generous = medium_stress_impact_gain
|
|
paranoid = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_greed = 0.5
|
|
ai_sociability = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = generous
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
}
|
|
}
|
|
|
|
# Welcome to my service, [priest.GetFirstName]!
|
|
option = {
|
|
name = fp1_trade_events.0021.b
|
|
|
|
# Select the priest.
|
|
fp1_trade_events_0021_acquire_courtier_effect = { SELECTION = scope:priest }
|
|
|
|
stress_impact = {
|
|
trusting = minor_stress_impact_loss
|
|
zealous = medium_stress_impact_gain
|
|
paranoid = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_sociability = 0.25
|
|
ai_zeal = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = zealous
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
}
|
|
}
|
|
|
|
# And who is this accompanying you?
|
|
option = {
|
|
name = fp1_trade_events.0021.c
|
|
trigger = { exists = scope:spy }
|
|
skill = intrigue
|
|
|
|
fp1_trade_events_0021_acquire_courtier_effect = { SELECTION = scope:spy }
|
|
|
|
stress_impact = {
|
|
trusting = minor_stress_impact_loss
|
|
paranoid = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_sociability = 0.5
|
|
ai_boldness = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
}
|
|
}
|
|
|
|
# Move along, foreigners, my agreement is with [recipient.GetFirstName].
|
|
option = {
|
|
name = fp1_trade_events.0021.d
|
|
|
|
# Gain some prestige for your haughtiness.
|
|
add_prestige = medium_prestige_gain
|
|
# But annoy your trading partner.
|
|
reverse_add_opinion = {
|
|
target = var:fp1_prime_trade_deal
|
|
modifier = annoyed_opinion
|
|
opinion = -40
|
|
}
|
|
# Dispose of the guests.
|
|
hidden_effect = {
|
|
scope:merchant = {
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
scope:priest = {
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
if = {
|
|
limit = { exists = scope:spy }
|
|
scope:spy = {
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
paranoid = medium_stress_impact_loss
|
|
shy = medium_stress_impact_loss
|
|
compassionate = minor_stress_impact_gain
|
|
gregarious = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_boldness = -0.25
|
|
ai_sociability = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = paranoid
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = shy
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -10
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = gregarious
|
|
}
|
|
}
|
|
}
|
|
|
|
after = {
|
|
# Send a companion event to var:fp1_prime_trade_deal.
|
|
#var:fp1_prime_trade_deal = { trigger_event = fp1_trade_events.0031 }
|
|
var:fp1_prime_trade_deal = {
|
|
trigger_event = {
|
|
id = fp1_trade_events.0031
|
|
days = 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fp1_trade_events.0031 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0031.t
|
|
desc = fp1_trade_events.0031.desc
|
|
theme = alliance
|
|
left_portrait = {
|
|
character = scope:warrior
|
|
animation = personality_bold
|
|
}
|
|
lower_right_portrait = scope:raider
|
|
override_background = { reference = throne_room }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Standard checks.
|
|
## Allow when commanding - we want to make trading compacts a bit more equal.
|
|
is_available_adult = yes
|
|
NOT = { has_character_flag = had_event_fp1_trade_events_0031 }
|
|
is_landed = yes
|
|
# Scope:raider's prime trade deal must still be valid.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = scope:raider.var:fp1_prime_trade_deal
|
|
RAIDER = scope:raider
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
add_character_flag = {
|
|
flag = had_event_fp1_trade_events_0031
|
|
days = 1825
|
|
}
|
|
# Create scope:warrior.
|
|
create_character = {
|
|
template = fp1_trade_partner_warrior
|
|
location = scope:raider.var:fp1_prime_trade_deal.capital_province
|
|
save_scope_as = warrior
|
|
}
|
|
}
|
|
|
|
# We can always use another sword!
|
|
option = {
|
|
name = fp1_trade_events.0031.a
|
|
|
|
# Gain the warrior, who's understandably pretty hyped.
|
|
add_courtier = scope:warrior
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:warrior
|
|
OPINION = 100
|
|
REASON = friend_accepted_courtier
|
|
}
|
|
|
|
stress_impact = {
|
|
trusting = minor_stress_impact_loss
|
|
paranoid = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_sociability = 0.5
|
|
ai_boldness = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
}
|
|
}
|
|
|
|
# Be gone, bandit.
|
|
option = {
|
|
name = fp1_trade_events.0031.b
|
|
|
|
# Gain some prestige for your haughtiness.
|
|
add_prestige = medium_prestige_gain
|
|
# But annoy your trading partner, though not as much as snubbing an open delegation on the inverse.
|
|
reverse_add_opinion = {
|
|
target = scope:raider
|
|
modifier = annoyed_opinion
|
|
opinion = -20
|
|
}
|
|
# Dispose of the guest.
|
|
hidden_effect = {
|
|
scope:warrior = {
|
|
death = { death_reason = death_vanished }
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
paranoid = medium_stress_impact_loss
|
|
shy = medium_stress_impact_loss
|
|
compassionate = minor_stress_impact_gain
|
|
gregarious = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_boldness = -0.25
|
|
ai_sociability = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = paranoid
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = shy
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -10
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = gregarious
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
##################################################
|
|
# Belligerents with Benefits
|
|
# by Ewan Cowhig Croft
|
|
# 0041 - 0060
|
|
##################################################
|
|
|
|
scripted_trigger fp1_trade_events_0041_advanced_culture_comparison_trigger = {
|
|
scope:raider.culture = {
|
|
# Must have separate cultures for one to be more advanced.
|
|
this != scope:partner.culture
|
|
# And scope:partner's must be in a later era than scope:raider's.
|
|
## Tribal.
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { has_cultural_era_or_later = culture_era_early_medieval }
|
|
}
|
|
scope:partner.culture = { has_cultural_era_or_later = culture_era_early_medieval }
|
|
}
|
|
## Early Medieval.
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { has_cultural_era_or_later = culture_era_high_medieval }
|
|
}
|
|
scope:partner.culture = { has_cultural_era_or_later = culture_era_high_medieval }
|
|
}
|
|
## High Medieval.
|
|
trigger_if = {
|
|
limit = {
|
|
NOT = { has_cultural_era_or_later = culture_era_late_medieval }
|
|
}
|
|
scope:partner.culture = { has_cultural_era_or_later = culture_era_late_medieval }
|
|
}
|
|
## And you can't be later than the Late Medieval, so we ignore that'un.
|
|
}
|
|
}
|
|
|
|
scripted_trigger fp1_trade_events_0041_valid_partner_counties_trigger = {
|
|
has_county_modifier = recently_looted_modifier
|
|
NOT = { has_county_modifier = fp1_trade_events_raid_consultants_modifier }
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_0041_offer_consultation_deal_raider_perspective_effect = {
|
|
# You pay coin and get discounts to construction in your domain.
|
|
remove_treasury_or_gold = massive_gold_value
|
|
# Give a modifier with development growth to underdeveloped holdings.
|
|
every_held_title = {
|
|
title_tier = county
|
|
limit = {
|
|
development_level <= 15
|
|
}
|
|
custom = fp1_trade_events.0041.foreign_architects_growth.tt
|
|
add_county_modifier = {
|
|
modifier = fp1_trade_events_foreign_architects_modifier
|
|
years = 20
|
|
}
|
|
}
|
|
# And one without it to holdings that are adequately developed.
|
|
every_held_title = {
|
|
title_tier = county
|
|
limit = {
|
|
development_level >= 16
|
|
}
|
|
custom = fp1_trade_events.0041.foreign_architects_no_growth.tt
|
|
add_county_modifier = {
|
|
modifier = fp1_trade_events_foreign_architects_no_growth_modifier
|
|
years = 20
|
|
}
|
|
}
|
|
# Plus stepped friendship with scope:partner.
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:partner
|
|
OPINION = 30
|
|
REASON = friend_fp1_renewed_trade_deal
|
|
}
|
|
# Scope:partner gets some help with raiding.
|
|
custom_tooltip = fp1_trade_events.0041.partner_gets_raid_aid.tt
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = {
|
|
# You pay coin and get raid protection increases in one duchy.
|
|
remove_treasury_or_gold = scandinavian_adventurer_fp1_0041_gold_value
|
|
# Give modifiers that make that duchy better able to withstand raids.
|
|
$TARGET_DUCHY$ = {
|
|
save_scope_as = target_duchy
|
|
every_in_de_jure_hierarchy = {
|
|
limit = {
|
|
tier = tier_county
|
|
holder = {
|
|
OR = {
|
|
any_liege_or_above = { this = scope:partner }
|
|
this = scope:partner
|
|
}
|
|
}
|
|
}
|
|
custom = fp1_trade_events.0041.partner.benefiting_counties.tt
|
|
add_county_modifier = {
|
|
modifier = fp1_trade_events_raid_consultants_modifier
|
|
years = 20
|
|
}
|
|
# Grab the holders for happiness purposes.
|
|
holder = {
|
|
if = {
|
|
limit = {
|
|
this != scope:partner
|
|
}
|
|
add_to_list = happy_with_raid_proofing_list
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# Anyone who holds lands here other than you is duly grateful.
|
|
every_in_list = {
|
|
list = happy_with_raid_proofing_list
|
|
add_opinion = {
|
|
target = scope:partner
|
|
modifier = grateful_opinion
|
|
opinion = 30
|
|
}
|
|
}
|
|
# Plus, stepped friendship with scope:raider (actual effect handled scope:raider-side).
|
|
show_as_tooltip = {
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:raider
|
|
OPINION = 30
|
|
REASON = friend_fp1_renewed_trade_deal
|
|
}
|
|
}
|
|
# Scope:raider gets help with civic works.
|
|
custom_tooltip = fp1_trade_events.0041.raider_gets_civic_aid.tt
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_0041_consultation_rejected_effect = {
|
|
# Lose a fair bit of prestige.
|
|
add_prestige = medium_prestige_loss
|
|
}
|
|
|
|
# Beneficial modifiers are swapped between the capital and a foreign trade location.
|
|
fp1_trade_events.0041 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0041.t
|
|
desc = fp1_trade_events.0041.desc
|
|
theme = alliance
|
|
left_portrait = {
|
|
character = scope:raider
|
|
animation = personality_forgiving
|
|
}
|
|
right_portrait = {
|
|
character = scope:partner
|
|
animation = personality_content
|
|
}
|
|
override_background = { reference = docks }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Standard checks.
|
|
## Allow when commanding to be fairer to people out raiding, which we incentivise you to do personally to get pacts to begin with.
|
|
is_available_adult_or_is_commanding = yes
|
|
NOT = { has_character_flag = had_event_fp1_trade_events_0041 }
|
|
is_landed = yes
|
|
# Scope:raider's prime trade deal must still be valid & available.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = root.var:fp1_prime_trade_deal
|
|
RAIDER = root
|
|
}
|
|
root.var:fp1_prime_trade_deal = { is_available_adult_or_is_commanding = yes }
|
|
# And they've gotta be able to take the deal in some fashion.
|
|
root.var:fp1_prime_trade_deal = {
|
|
any_sub_realm_county = { fp1_trade_events_0041_valid_partner_counties_trigger = yes }
|
|
}
|
|
# Plus, there must be a trade to be made.
|
|
## Meaning one must be tribal, the other feudal.
|
|
government_has_flag = government_is_tribal
|
|
root.var:fp1_prime_trade_deal = {
|
|
NOT = { government_has_flag = government_is_tribal }
|
|
}
|
|
## And that scope:partner can't raid for some other reason.
|
|
root.var:fp1_prime_trade_deal = { can_raid_trigger = no }
|
|
}
|
|
|
|
weight_multiplier = {
|
|
base = 1
|
|
|
|
# Weight up a little for certain lifestyle traits, as these spread stories of your success and accomplishments.
|
|
modifier = {
|
|
add = 0.25
|
|
has_trait = diplomat
|
|
}
|
|
modifier = {
|
|
add = 0.25
|
|
has_trait = avaricious
|
|
}
|
|
# Weight up for this being a renewed treaty.
|
|
modifier = {
|
|
add = 1
|
|
exists = root.var:fp1_renewed_trade_deal
|
|
exists = root.var:fp1_prime_trade_deal
|
|
root.var:fp1_prime_trade_deal = root.var:fp1_renewed_trade_deal
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
add_character_flag = {
|
|
flag = had_event_fp1_trade_events_0041
|
|
days = 3625
|
|
}
|
|
# Save some things for loc & future events.
|
|
save_scope_as = raider
|
|
var:fp1_prime_trade_deal = { save_scope_as = partner }
|
|
}
|
|
|
|
# Could they build me a palace in the [partner.GetCulture] style?
|
|
option = {
|
|
name = {
|
|
trigger = { fp1_trade_events_0041_advanced_culture_comparison_trigger = yes }
|
|
text = fp1_trade_events.0041.a.advanced
|
|
}
|
|
name = {
|
|
trigger = { fp1_trade_events_0041_advanced_culture_comparison_trigger = no }
|
|
text = fp1_trade_events.0041.a.fallback
|
|
}
|
|
trigger = {
|
|
can_make_expensive_purchase_trigger = { PRICE = scandinavian_adventurer_fp1_0041_gold_value }
|
|
}
|
|
|
|
# Show possible results depending on scope:partner's response.
|
|
random_list = {
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0041.a.offer_accepted
|
|
show_as_tooltip = { fp1_trade_events_0041_offer_consultation_deal_raider_perspective_effect = yes }
|
|
}
|
|
100 = {
|
|
show_chance = no
|
|
desc = fp1_trade_events.0041.a.offer_rejected
|
|
show_as_tooltip = { fp1_trade_events_0041_consultation_rejected_effect = yes }
|
|
}
|
|
}
|
|
# And send scope:partner their event.
|
|
scope:partner = { trigger_event = fp1_trade_events.0051 }
|
|
|
|
stress_impact = {
|
|
trusting = minor_stress_impact_loss
|
|
paranoid = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_sociability = 0.5
|
|
ai_boldness = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
}
|
|
}
|
|
|
|
# Let's keep this informal.
|
|
option = {
|
|
name = fp1_trade_events.0041.b
|
|
|
|
# Stress loss; handled in stress_impact block.
|
|
|
|
stress_impact = {
|
|
base = medium_stress_impact_loss
|
|
paranoid = medium_stress_impact_loss
|
|
gregarious = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_boldness = -0.25
|
|
ai_sociability = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 20
|
|
has_trait = paranoid
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = gregarious
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_0051_inform_scope_raider_effect = {
|
|
hidden_effect = {
|
|
scope:raider = {
|
|
send_interface_toast = {
|
|
title = fp1_trade_events.0051.offer_accepted
|
|
left_icon = scope:partner
|
|
fp1_trade_events_0041_offer_consultation_deal_raider_perspective_effect = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fp1_trade_events.0051 = {
|
|
type = character_event
|
|
title = fp1_trade_events.0051.t
|
|
desc = fp1_trade_events.0051.desc
|
|
theme = alliance
|
|
left_portrait = {
|
|
character = scope:partner
|
|
animation = personality_forgiving
|
|
}
|
|
right_portrait = {
|
|
character = scope:raider
|
|
animation = personality_content
|
|
}
|
|
override_background = { reference = docks }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Standard checks done scope:raider's side.
|
|
# Scope:raider's prime trade deal must still be valid.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = scope:raider.var:fp1_prime_trade_deal
|
|
RAIDER = scope:raider
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
# Build a list of valid duchies.
|
|
## First, we sort through all valid counties and add their duchies to a list.
|
|
every_sub_realm_county = {
|
|
limit = { fp1_trade_events_0041_valid_partner_counties_trigger = yes }
|
|
duchy = { add_to_list = duchies_valid_for_raid_proofing_list }
|
|
}
|
|
## Then we order the list to pick the largest duchies.
|
|
ordered_in_list = {
|
|
list = duchies_valid_for_raid_proofing_list
|
|
max = 3
|
|
order_by = {
|
|
value = 0
|
|
|
|
# Then we add a point for every de jure county that's also de facto part of the sub-realm.
|
|
every_in_de_jure_hierarchy = {
|
|
limit = {
|
|
tier = tier_county
|
|
holder = {
|
|
OR = {
|
|
this = scope:partner
|
|
any_liege_or_above = { this = scope:partner }
|
|
}
|
|
}
|
|
}
|
|
add = 1
|
|
|
|
# And again for every one that has _also_ been raided recently, since that's a good indicator of raid-density.
|
|
if = {
|
|
limit = { has_county_modifier = recently_looted_modifier }
|
|
add = 1
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = { exists = scope:option_1 }
|
|
}
|
|
save_scope_as = option_1
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
this = scope:option_1
|
|
exists = scope:option_2
|
|
}
|
|
}
|
|
save_scope_as = option_2
|
|
}
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
this = scope:option_1
|
|
this = scope:option_2
|
|
exists = scope:option_3
|
|
}
|
|
}
|
|
save_scope_as = option_3
|
|
}
|
|
}
|
|
}
|
|
|
|
# Scope:option_1 could use some experts...
|
|
option = {
|
|
name = fp1_trade_events.0051.a
|
|
|
|
# Apply effects to scope:option_1.
|
|
fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = { TARGET_DUCHY = scope:option_1 }
|
|
# Inform scope:raider of the decision.
|
|
fp1_trade_events_0051_inform_scope_raider_effect = yes
|
|
|
|
stress_impact = {
|
|
compassionate = minor_stress_impact_loss
|
|
callous = medium_stress_impact_gain
|
|
sadistic = medium_stress_impact_gain
|
|
greedy = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_sociability = 0.5
|
|
ai_rationality = 0.5
|
|
ai_greed = -0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = compassionate
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = sadistic
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = greedy
|
|
}
|
|
}
|
|
}
|
|
|
|
# Scope:option_2 might be a good place for them?
|
|
option = {
|
|
name = fp1_trade_events.0051.b
|
|
trigger = { exists = scope:option_2 }
|
|
|
|
# Apply effects to scope:option_2.
|
|
fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = { TARGET_DUCHY = scope:option_2 }
|
|
# Inform scope:raider of the decision.
|
|
fp1_trade_events_0051_inform_scope_raider_effect = yes
|
|
|
|
stress_impact = {
|
|
compassionate = minor_stress_impact_loss
|
|
callous = medium_stress_impact_gain
|
|
sadistic = medium_stress_impact_gain
|
|
greedy = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
# AI should always pick the first & mostly-best option.
|
|
base = 0
|
|
}
|
|
}
|
|
|
|
# I think I'd prefer to shore up scope:option_3.
|
|
option = {
|
|
name = fp1_trade_events.0051.c
|
|
trigger = { exists = scope:option_3 }
|
|
|
|
# Apply effects to scope:option_3.
|
|
fp1_trade_events_0041_offer_consultation_deal_partner_perspective_effect = { TARGET_DUCHY = scope:option_3 }
|
|
# Inform scope:raider of the decision.
|
|
fp1_trade_events_0051_inform_scope_raider_effect = yes
|
|
|
|
stress_impact = {
|
|
compassionate = minor_stress_impact_loss
|
|
callous = medium_stress_impact_gain
|
|
sadistic = medium_stress_impact_gain
|
|
greedy = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
# AI should always pick the first & mostly-best option.
|
|
base = 0
|
|
}
|
|
}
|
|
|
|
# What an outrageous proposal!
|
|
option = {
|
|
name = fp1_trade_events.0051.d
|
|
|
|
# Gain a little consolation prestige.
|
|
add_prestige = minor_prestige_gain
|
|
# Inform scope:raider of the decision.
|
|
hidden_effect = {
|
|
scope:raider = {
|
|
send_interface_toast = {
|
|
title = fp1_trade_events.0051.offer_rejected
|
|
left_icon = scope:partner
|
|
fp1_trade_events_0041_consultation_rejected_effect = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
callous = minor_stress_impact_loss
|
|
sadistic = minor_stress_impact_loss
|
|
compassionate = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_greed = -0.25
|
|
ai_rationality = -0.25
|
|
ai_compassion = -0.5
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = callous
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = sadistic
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = compassionate
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##################################################
|
|
# SPECIAL TRADE EVENTS
|
|
|
|
##################################################
|
|
# The Northerner Menace
|
|
# by Ewan Cowhig Croft
|
|
# 1131 - 1170
|
|
##################################################
|
|
|
|
# You buy off an SA's troops, or offer them a position under you.
|
|
fp1_trade_events.1131 = {
|
|
type = character_event
|
|
title = fp1_trade_events.1131.t
|
|
desc = fp1_trade_events.1131.desc
|
|
theme = war
|
|
left_portrait = {
|
|
character = scope:defender
|
|
animation = worry
|
|
}
|
|
right_portrait = {
|
|
character = scope:attacker
|
|
animation = personality_greedy
|
|
}
|
|
override_background = { reference = fp1_beached_longships }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Make sure the war is still ongoing
|
|
any_character_war = {
|
|
using_cb = fp1_scandi_adventurer_conquest
|
|
primary_attacker = scope:attacker
|
|
primary_defender = scope:defender
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
# Grab the CB for general reference.
|
|
random_character_war = {
|
|
limit = {
|
|
using_cb = fp1_scandi_adventurer_conquest
|
|
primary_attacker = scope:attacker
|
|
primary_defender = scope:defender
|
|
}
|
|
save_scope_as = sa_war
|
|
}
|
|
}
|
|
|
|
# Never! Back to your frozen hellscape of a home, scum!
|
|
option = {
|
|
name = fp1_trade_events.1131.a
|
|
|
|
# Gain a bit of prestige for your boasting.
|
|
add_prestige = medium_prestige_gain
|
|
# Stress gain trade-off handled in stress impact.
|
|
# Clarify that this is merely another trade-off option.
|
|
custom_tooltip = fp1_trade_events.1131.d.tt
|
|
|
|
stress_impact = {
|
|
base = medium_stress_gain
|
|
arrogant = minor_stress_impact_loss
|
|
ambitious = minor_stress_impact_loss
|
|
stubborn = minor_stress_impact_loss
|
|
vengeful = minor_stress_impact_loss
|
|
humble = medium_stress_impact_gain
|
|
content = medium_stress_impact_gain
|
|
fickle = medium_stress_impact_gain
|
|
forgiving = medium_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_vengefulness = 0.5
|
|
ai_energy = 0.25
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = arrogant
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = ambitious
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = stubborn
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = vengeful
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = humble
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = content
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = fickle
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = forgiving
|
|
}
|
|
}
|
|
}
|
|
|
|
# Well, if it's land they want...
|
|
option = {
|
|
name = fp1_trade_events.1131.b
|
|
trigger = {
|
|
# Must be able to vassalise a duke.
|
|
highest_held_title_tier >= tier_kingdom
|
|
# Target duchy doesn't contain a player that isn't scope:defender.
|
|
NOT = {
|
|
any_player = {
|
|
# First, see if they're a vassal of scope:defender.
|
|
any_liege_or_above = { this = scope:defender }
|
|
# And if they are, make sure they have no titles held within the appropriate lands.
|
|
save_temporary_scope_as = vassal_player
|
|
any_in_list = {
|
|
list = target_titles
|
|
holder = scope:vassal_player
|
|
}
|
|
}
|
|
}
|
|
# Scope:defender must control at least some lands outside of the target duchy.
|
|
any_held_title = {
|
|
NOT = { is_in_list = target_titles }
|
|
}
|
|
}
|
|
|
|
# You allow them to win the war...
|
|
scope:sa_war = { end_war = attacker }
|
|
add_prestige = major_prestige_loss
|
|
# ... but then immediately vassalise them.
|
|
create_title_and_vassal_change = {
|
|
type = swear_fealty
|
|
save_scope_as = change
|
|
}
|
|
scope:attacker = {
|
|
change_liege = {
|
|
liege = scope:defender
|
|
change = scope:change
|
|
}
|
|
}
|
|
resolve_title_and_vassal_change = scope:change
|
|
# This also gives a nice long truce so that they can't immediately usurp you.
|
|
hidden_effect = {
|
|
cancel_truce_both_ways = scope:attacker
|
|
}
|
|
add_truce_both_ways = {
|
|
character = scope:attacker
|
|
days = 7300
|
|
name = FP1_SCANDINAVIAN_ADVENTURER_VASSAL_TRUCE_NAME
|
|
}
|
|
# Plus we whack some opinion in there for good measure.
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:attacker
|
|
OPINION = 50
|
|
REASON = friend_fp1_renewed_trade_deal
|
|
}
|
|
# Finally, add a breather before the next SA.
|
|
fp1_add_realm_size_appropriate_sa_reprieve_effect = yes
|
|
|
|
stress_impact = {
|
|
generous = minor_stress_impact_loss
|
|
humble = minor_stress_impact_loss
|
|
content = minor_stress_impact_loss
|
|
fickle = minor_stress_impact_loss
|
|
forgiving = minor_stress_impact_loss
|
|
greedy = major_stress_impact_gain
|
|
arrogant = major_stress_impact_gain
|
|
ambitious = major_stress_impact_gain
|
|
stubborn = major_stress_impact_gain
|
|
vengeful = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
# Base 0 so that only a particular kind of AI will go for this.
|
|
base = 0
|
|
ai_value_modifier = {
|
|
ai_rationality = 0.25
|
|
ai_greed = -0.5
|
|
ai_vengefulness = -0.75
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = generous
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = humble
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = content
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = fickle
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = forgiving
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = greedy
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = arrogant
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = ambitious
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = stubborn
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = vengeful
|
|
}
|
|
}
|
|
}
|
|
|
|
# In my experience, soldiers prefer gold to glory.
|
|
option = {
|
|
name = fp1_trade_events.1131.c
|
|
trigger = {
|
|
can_make_expensive_purchase_trigger = { PRICE = monumental_gold_value }
|
|
}
|
|
|
|
# Pay scope:attacker's troops to sod off...
|
|
custom_tooltip = fp1_trade_events.1131.c.tt
|
|
remove_treasury_or_gold = monumental_treasury_or_gold_value
|
|
# ... thereby winning the war.
|
|
scope:sa_war = { end_war = defender }
|
|
reverse_add_opinion = {
|
|
target = scope:attacker
|
|
modifier = humiliated_opinion
|
|
opinion = -50
|
|
}
|
|
# Add a breather before the next SA.
|
|
fp1_add_realm_size_appropriate_sa_reprieve_effect = yes
|
|
|
|
stress_impact = {
|
|
generous = minor_stress_impact_loss
|
|
humble = minor_stress_impact_loss
|
|
content = minor_stress_impact_loss
|
|
fickle = minor_stress_impact_loss
|
|
forgiving = minor_stress_impact_loss
|
|
greedy = major_stress_impact_gain
|
|
arrogant = major_stress_impact_gain
|
|
ambitious = major_stress_impact_gain
|
|
stubborn = major_stress_impact_gain
|
|
vengeful = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
# Base allowed to stay high, since the fiscal purchase here is pretty high and the AI usually won't make it anyway.
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_rationality = 0.25
|
|
ai_greed = -0.5
|
|
ai_vengefulness = -0.75
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = generous
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = humble
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = content
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = fickle
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = forgiving
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = greedy
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = arrogant
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = ambitious
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = stubborn
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = vengeful
|
|
}
|
|
}
|
|
}
|
|
|
|
# Then we'll banish these Nords to the sea.
|
|
option = {
|
|
name = fp1_trade_events.1131.d
|
|
|
|
# Opt-out.
|
|
custom_tooltip = fp1_trade_events.1131.d.tt
|
|
|
|
# No stress impact for the opt-out.
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_energy = -0.25
|
|
ai_vengefulness = -0.25
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
##################################################
|
|
# A Holy Helping Hand
|
|
# by Ewan Cowhig Croft
|
|
# 1171 - 1180
|
|
##################################################
|
|
|
|
scripted_trigger fp1_trade_events_1171_child_can_marry_trigger = {
|
|
# Rule out some unlikely candidates.
|
|
is_available_healthy_ai_adult = yes
|
|
is_ruler = no
|
|
OR = {
|
|
is_courtier_of = root.var:fp1_prime_trade_deal
|
|
host ?= root.var:fp1_prime_trade_deal
|
|
|
|
}
|
|
# Make sure they're compatible.
|
|
could_marry_character_trigger = { CHARACTER = root }
|
|
}
|
|
|
|
scripted_effect fp1_trade_events_1171_marry_partner_child_effect = {
|
|
# Marry scope:prospective_spouse.
|
|
## First, we divorce the old one. No need for checks, since we're basically regarding that marriage as invalid under the new faith.
|
|
if = {
|
|
limit = { is_married = yes }
|
|
every_spouse = {
|
|
save_temporary_scope_as = current_spouse
|
|
scope:raider = {
|
|
divorce_effect = {
|
|
DIVORCER = scope:raider
|
|
DIVORCEE = scope:current_spouse
|
|
}
|
|
}
|
|
}
|
|
}
|
|
## Then we perform the new marriage.
|
|
if = {
|
|
limit = {
|
|
has_ep2_dlc_trigger = yes
|
|
}
|
|
create_grand_wedding_betrothal = {
|
|
SPOUSE_1 = root
|
|
SPOUSE_2 = scope:prospective_spouse
|
|
HOST = root
|
|
PROMISEE = scope:partner
|
|
}
|
|
}
|
|
else = { marry = scope:prospective_spouse }
|
|
create_alliance = {
|
|
target = scope:partner
|
|
allied_through_owner = scope:raider
|
|
allied_through_target = scope:prospective_spouse
|
|
}
|
|
# Convert to scope:partner's faith.
|
|
set_character_faith_with_conversion = scope:partner.faith
|
|
# Do so in a very public and celebrated manner, gaining piety.
|
|
add_piety = massive_piety_gain
|
|
# Paid a dowry by scope:partner.
|
|
scope:partner = {
|
|
pay_short_term_gold = {
|
|
target = scope:raider
|
|
gold = massive_gold_value
|
|
}
|
|
}
|
|
}
|
|
|
|
# Someone you have a raid-trade agreement with offers the hand of a child and conversion aid.
|
|
fp1_trade_events.1171 = {
|
|
type = character_event
|
|
title = fp1_trade_events.1171.t
|
|
desc = fp1_trade_events.1171.desc
|
|
theme = alliance
|
|
left_portrait = {
|
|
character = scope:raider
|
|
animation = personality_rational
|
|
}
|
|
right_portrait = {
|
|
character = scope:partner
|
|
animation = admiration
|
|
}
|
|
lower_center_portrait = scope:prospective_spouse
|
|
override_background = { reference = docks }
|
|
|
|
trigger = {
|
|
# DLC check.
|
|
has_fp1_dlc_trigger = yes
|
|
# Standard checks.
|
|
## Allow when commanding to be fairer to people out raiding, which we incentivise you to do personally to get pacts to begin with.
|
|
is_available_adult_or_is_commanding = yes
|
|
NOT = { has_character_flag = had_event_fp1_trade_events_1171 }
|
|
is_landed = yes
|
|
# Scope:raider's prime trade deal must still be valid & available.
|
|
fp1_prime_trade_partner_still_valid_trigger = {
|
|
RECIPIENT = root.var:fp1_prime_trade_deal
|
|
RAIDER = root
|
|
}
|
|
root.var:fp1_prime_trade_deal = { is_available_adult_or_is_commanding = yes }
|
|
# Must be of a disorganised faith and separate religion.
|
|
faith = {
|
|
has_doctrine_parameter = unreformed
|
|
NOT = { religion = root.var:fp1_prime_trade_deal.religion }
|
|
# For that matter, either root must be unmarried, or scope:partner can't have syncretic folk traditions (and so respect for their marriage.)
|
|
OR = {
|
|
root = { is_married = no }
|
|
NOT = { has_doctrine = tenet_unreformed_syncretism }
|
|
}
|
|
}
|
|
# Plus, general considerations.
|
|
root.var:fp1_prime_trade_deal = {
|
|
# They must really like scope:raider.
|
|
opinion = {
|
|
target = root
|
|
value >= high_positive_opinion
|
|
}
|
|
# Have a free child.
|
|
any_child = { fp1_trade_events_1171_child_can_marry_trigger = yes }
|
|
# Not be cynical, so they may care about souls.
|
|
NOT = { has_trait = cynical }
|
|
# For the sake of sanity, filter out players.
|
|
is_ai = yes
|
|
# Since it's AI, and specific enough already, we're happy to let them plunge into debt over this.
|
|
}
|
|
# Finally, just double check the
|
|
NAND = {
|
|
has_variable_list = humsacd_hofs
|
|
is_target_in_variable_list = {
|
|
name = humsacd_hofs
|
|
target = root.var:fp1_prime_trade_deal.faith
|
|
}
|
|
}
|
|
}
|
|
weight_multiplier = {
|
|
base = 1
|
|
|
|
# Weight up a little for certain lifestyle traits, as these spread stories of your success and accomplishments.
|
|
modifier = {
|
|
add = 0.25
|
|
has_trait = diplomat
|
|
}
|
|
modifier = {
|
|
add = 0.25
|
|
has_trait = avaricious
|
|
}
|
|
# Weight up for this being a renewed treaty.
|
|
modifier = {
|
|
add = 1
|
|
exists = root.var:fp1_renewed_trade_deal
|
|
exists = root.var:fp1_prime_trade_deal
|
|
root.var:fp1_prime_trade_deal = root.var:fp1_renewed_trade_deal
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
# Once per lifetime.
|
|
add_character_flag = { flag = had_event_fp1_trade_events_1171 }
|
|
# Grab our actors.
|
|
save_scope_as = raider
|
|
var:fp1_prime_trade_deal = { save_scope_as = partner }
|
|
## Including a suitable spouse.
|
|
scope:partner = {
|
|
random_child = {
|
|
limit = { fp1_trade_events_1171_child_can_marry_trigger = yes }
|
|
save_scope_as = prospective_spouse
|
|
}
|
|
}
|
|
}
|
|
|
|
# SheHe _does_ make quite a compelling case...
|
|
option = {
|
|
name = fp1_trade_events.1171.a
|
|
|
|
# Gain assorted mixed awesome benefits.
|
|
fp1_trade_events_1171_marry_partner_child_effect = yes
|
|
# Step friendship.
|
|
progress_towards_friend_effect = {
|
|
CHARACTER = scope:partner
|
|
OPINION = 50
|
|
REASON = friend_fp1_converted_faith_married
|
|
}
|
|
|
|
stress_impact = {
|
|
cynical = minor_stress_impact_loss
|
|
trusting = minor_stress_impact_loss
|
|
greedy = minor_stress_impact_loss
|
|
paranoid = medium_stress_impact_gain
|
|
zealous = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_boldness = 0.5
|
|
ai_greed = 0.5
|
|
ai_zeal = -0.75
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = cynical
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = greedy
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = zealous
|
|
}
|
|
}
|
|
}
|
|
|
|
# Let us swear an oath of fraternity!
|
|
option = {
|
|
name = fp1_trade_events.1171.b
|
|
trigger = {
|
|
can_set_relation_best_friend_trigger = { CHARACTER = scope:partner }
|
|
}
|
|
|
|
# Gain assorted mixed awesome benefits.
|
|
hidden_effect = { fp1_trade_events_1171_marry_partner_child_effect = yes }
|
|
custom_tooltip = fp1_trade_events.1171.b.tt
|
|
# Also, become best friends.
|
|
set_relation_best_friend = { reason = best_friend_coverted_and_saved_my_soul copy_reason = friend target = scope:partner }
|
|
|
|
stress_impact = {
|
|
cynical = minor_stress_impact_loss
|
|
trusting = minor_stress_impact_loss
|
|
gregarious = minor_stress_impact_loss
|
|
paranoid = medium_stress_impact_gain
|
|
shy = major_stress_impact_gain
|
|
zealous = major_stress_impact_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_sociability = 0.5
|
|
ai_boldness = 0.5
|
|
ai_zeal = -0.75
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = cynical
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = trusting
|
|
}
|
|
modifier = { # Weight up for stress.
|
|
add = 10
|
|
has_trait = gregarious
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -20
|
|
has_trait = paranoid
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = shy
|
|
}
|
|
modifier = { # Weight down for stress.
|
|
add = -30
|
|
has_trait = zealous
|
|
}
|
|
}
|
|
}
|
|
|
|
# No manner of bribes can tempt me away.
|
|
option = {
|
|
name = {
|
|
trigger = { has_trait = cynical }
|
|
text = fp1_trade_events.1171.c.cynical
|
|
}
|
|
name = {
|
|
trigger = {
|
|
NOT = { has_trait = cynical }
|
|
}
|
|
text = fp1_trade_events.1171.c.fallback
|
|
}
|
|
|
|
# Needless to say, scope:partner is offended.
|
|
reverse_add_opinion = {
|
|
target = scope:partner
|
|
modifier = insulted_opinion
|
|
opinion = -40
|
|
}
|
|
# But hey, what a thing to turn down, amirite?
|
|
add_prestige = major_prestige_gain
|
|
|
|
# No stress for the opt-out.
|
|
ai_chance = {
|
|
base = 100
|
|
ai_value_modifier = {
|
|
ai_zeal = 0.5
|
|
ai_sociability = -0.5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|