unfucking the mod
This commit is contained in:
parent
cbe3fbcda2
commit
d887392b56
1167 changed files with 26982 additions and 13 deletions
2222
events/dlc/fp1/fp1_jomsvikings_events.txt
Normal file
2222
events/dlc/fp1/fp1_jomsvikings_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1423
events/dlc/fp1/fp1_major_decision_events.txt
Normal file
1423
events/dlc/fp1/fp1_major_decision_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2726
events/dlc/fp1/fp1_other_decision_events.txt
Normal file
2726
events/dlc/fp1/fp1_other_decision_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1113
events/dlc/fp1/fp1_scandinavian_adventurer_events.txt
Normal file
1113
events/dlc/fp1/fp1_scandinavian_adventurer_events.txt
Normal file
File diff suppressed because it is too large
Load diff
1426
events/dlc/fp1/fp1_shieldmaiden_events.txt
Normal file
1426
events/dlc/fp1/fp1_shieldmaiden_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2494
events/dlc/fp1/fp1_trade_events.txt
Normal file
2494
events/dlc/fp1/fp1_trade_events.txt
Normal file
File diff suppressed because it is too large
Load diff
971
events/dlc/fp1/fp1_trial_by_combat_events.txt
Normal file
971
events/dlc/fp1/fp1_trial_by_combat_events.txt
Normal file
|
|
@ -0,0 +1,971 @@
|
|||
namespace = fp1_tbc
|
||||
|
||||
##################################################
|
||||
# #Scope:actor-side Events
|
||||
# 0001 - 0040 Bout Maintenance & Setup
|
||||
# 0041 - 0060 Scope:actor Results
|
||||
#
|
||||
# #Scope:recipient-side Events
|
||||
# 0101 - 0110 Champion Selection
|
||||
# 0111 - 0130 Scope:recipient Results
|
||||
##################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# SCOPE:ACTOR-SIDE EVENTS
|
||||
|
||||
##################################################
|
||||
# Bout Maintenance & Setup
|
||||
# by Ewan Cowhig Croft
|
||||
# 0001 - 0040
|
||||
##################################################
|
||||
|
||||
# Everything is set for the bout to begin!
|
||||
fp1_tbc.0001 = {
|
||||
type = character_event
|
||||
window = duel_event
|
||||
title = fp1_tbc.0001.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0001.desc.intro
|
||||
first_valid = {
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0001.desc.recipient_fighting
|
||||
}
|
||||
desc = fp1_tbc.0001.desc.recipient_has_champion
|
||||
}
|
||||
desc = fp1_tbc.0001.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
scripted_animation = duel_wield_weapon
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:champion
|
||||
scripted_animation = duel_wield_weapon
|
||||
}
|
||||
override_background = { reference = terrain_scope }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# If, for any reason, scope:recipient has died or been imprisoned, then the bout is cancelled.
|
||||
scope:recipient = {
|
||||
is_alive = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
# Check that scope:actor is still in a valid state to fight.
|
||||
trial_by_combat_shown_and_not_invalid_trigger = yes
|
||||
# And scope:champion likewise.
|
||||
scope:champion = {
|
||||
OR = {
|
||||
this = scope:recipient
|
||||
eligible_knight_to_champion_trial_by_combat_trigger = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
on_trigger_fail = {
|
||||
# Inform both parties that the duel has invalidated.
|
||||
scope:actor = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0001.trigger_failure.actor
|
||||
left_icon = scope:recipient
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0001.trigger_failure.recipient
|
||||
left_icon = scope:actor
|
||||
}
|
||||
}
|
||||
# Reset scope:actor's cooldowns against scope:recipient.
|
||||
scope:actor = {
|
||||
remove_interaction_cooldown = challenge_to_trial_by_combat_interaction
|
||||
remove_interaction_cooldown_against = {
|
||||
interaction = challenge_to_trial_by_combat_interaction
|
||||
target = scope:recipient
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = "mx_cue_combat_stinger"
|
||||
# Nab scope:champion's location for terrain.
|
||||
scope:champion.location = {
|
||||
save_scope_as = background_terrain_scope
|
||||
# And scope:champion's location name for loc.
|
||||
barony = { save_scope_as = duel_location }
|
||||
}
|
||||
}
|
||||
|
||||
# Almost there.
|
||||
option = {
|
||||
name = fp1_tbc.0001.a
|
||||
|
||||
# Inform scope:actor that the bout will begin immediately.
|
||||
custom_tooltip = fp1_tbc.0001.a.tt
|
||||
# Configure the bout.
|
||||
## Tribals strip to the waist.
|
||||
single_combat_apply_default_shirtlessness_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
## Deadly fights.
|
||||
if = {
|
||||
limit = { scope:tbc_death = yes }
|
||||
configure_start_single_combat_effect = {
|
||||
SC_INITIATOR = scope:actor
|
||||
SC_ATTACKER = scope:actor
|
||||
SC_DEFENDER = scope:champion
|
||||
FATALITY = always
|
||||
FIXED = no
|
||||
LOCALE = terrain_scope
|
||||
OUTPUT_EVENT = fp1_tbc.0011
|
||||
INVALIDATION_EVENT = fp1_tbc.0021
|
||||
}
|
||||
}
|
||||
## Non-deadly fights.
|
||||
else = {
|
||||
configure_start_single_combat_effect = {
|
||||
SC_INITIATOR = scope:actor
|
||||
SC_ATTACKER = scope:actor
|
||||
SC_DEFENDER = scope:champion
|
||||
FATALITY = no
|
||||
FIXED = no
|
||||
LOCALE = terrain_scope
|
||||
OUTPUT_EVENT = fp1_tbc.0011
|
||||
INVALIDATION_EVENT = fp1_tbc.0021
|
||||
}
|
||||
}
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect fp1_tbc_non_lethal_results_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:recipient = { is_alive = yes }
|
||||
}
|
||||
# TbC ends in cash settlement.
|
||||
if = {
|
||||
limit = { scope:tbc_gold = yes }
|
||||
fp1_tbc_gold_effect = {
|
||||
TBC_VICTOR = scope:actor
|
||||
TBC_LOSER = scope:recipient
|
||||
}
|
||||
}
|
||||
# TbC ends in favour settlement.
|
||||
if = {
|
||||
limit = { scope:tbc_weak_hook = yes }
|
||||
fp1_tbc_hook_effect = {
|
||||
TBC_VICTOR = scope:actor
|
||||
TBC_LOSER = scope:recipient
|
||||
}
|
||||
}
|
||||
# TbC ends in mandated humiliation.
|
||||
if = {
|
||||
limit = { scope:tbc_humiliation = yes }
|
||||
fp1_tbc_humiliation_effect = {
|
||||
TBC_LOSER = scope:recipient
|
||||
TBC_VICTOR = scope:actor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scripted_effect fp1_tbc_consume_imprisonment_reasons_effect = {
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
scope:recipient = { is_alive = yes }
|
||||
}
|
||||
scope:actor = { consume_imprisonment_reasons = scope:recipient }
|
||||
}
|
||||
}
|
||||
|
||||
# Bout has ended, inform affected parties.
|
||||
fp1_tbc.0011 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
# If any clothes were stripped, put 'em back on.
|
||||
single_combat_clean_shirtlessness_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
# Did scope:actor win?
|
||||
if = {
|
||||
limit = { scope:sc_victor = scope:actor }
|
||||
# Apply effects; we do this separately so that there's not a weird day's delay.
|
||||
fp1_tbc_non_lethal_results_effect = yes
|
||||
# And send out the ending events.
|
||||
scope:actor = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0041
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0121
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
# Or was it scope:champion?
|
||||
else_if = {
|
||||
limit = { scope:sc_victor = scope:champion }
|
||||
# If scope:actor is still alive, they gain stress.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
}
|
||||
fp1_tbc_actor_defeated_effect = {
|
||||
TBC_LOSER = scope:actor
|
||||
TBC_VICTOR = scope:recipient
|
||||
}
|
||||
}
|
||||
# And send out the ending events.
|
||||
scope:actor = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0051
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
trigger_event = {
|
||||
id = fp1_tbc.0111
|
||||
days = 1
|
||||
}
|
||||
}
|
||||
}
|
||||
# If both parties are alive, and aren't good losers/don't have good reasons to forgive each other, then we mark them as potential rivals.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = {
|
||||
is_alive = yes
|
||||
NOR = {
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
has_trait = just
|
||||
has_trait = forgiving
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
is_alive = yes
|
||||
NOR = {
|
||||
has_trait = humble
|
||||
has_trait = content
|
||||
has_trait = just
|
||||
has_trait = forgiving
|
||||
}
|
||||
can_set_relation_potential_rival_trigger = { CHARACTER = scope:actor }
|
||||
}
|
||||
}
|
||||
scope:actor = { set_relation_potential_rival = scope:recipient }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Bout has invalidated, inform affected parties.
|
||||
fp1_tbc.0021 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
# Put your shirts back on.
|
||||
single_combat_clean_shirtlessness_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:recipient
|
||||
}
|
||||
# Inform both parties that the duel has invalidated.
|
||||
scope:actor = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0021.trigger_failure.actor
|
||||
left_icon = scope:recipient
|
||||
}
|
||||
}
|
||||
scope:recipient = {
|
||||
send_interface_toast = {
|
||||
title = fp1_tbc.0021.trigger_failure.recipient
|
||||
left_icon = scope:actor
|
||||
}
|
||||
}
|
||||
# Reset scope:actor's cooldowns against scope:recipient.
|
||||
scope:actor = {
|
||||
remove_interaction_cooldown = challenge_to_trial_by_combat_interaction
|
||||
remove_interaction_cooldown_against = {
|
||||
interaction = challenge_to_trial_by_combat_interaction
|
||||
target = scope:recipient
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:recipient has declined.
|
||||
fp1_tbc.0031 = {
|
||||
type = letter_event
|
||||
opening = fp1_tbc.0031.opening
|
||||
desc = fp1_tbc.0031.desc
|
||||
sender = scope:recipient
|
||||
|
||||
option = { name = fp1_tbc.0031.a }
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scope:actor Results
|
||||
# by Ewan Cowhig Croft
|
||||
# 0041 - 0060
|
||||
##################################################
|
||||
|
||||
# Scope:actor has won the bout.
|
||||
fp1_tbc.0041 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0041.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0041.desc.intro
|
||||
# Scope:champion died in the fighting; no need to loc for a separate scope:champion, as they can't fight to the death.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:champion = { is_alive = no }
|
||||
}
|
||||
desc = fp1_tbc.0041.desc.opponent_died
|
||||
}
|
||||
# Scope:champion is still alive.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:champion = { is_alive = yes}
|
||||
}
|
||||
desc = {
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0041.desc.opponent_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0041.desc.opponent_lives.recipient_has_champion
|
||||
}
|
||||
}
|
||||
}
|
||||
# Reward, if anything.
|
||||
first_valid = {
|
||||
# Gold.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_gold = yes }
|
||||
desc = fp1_tbc.0041.desc.reward.gold
|
||||
}
|
||||
# Weak hook.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_weak_hook = yes }
|
||||
desc = fp1_tbc.0041.desc.reward.weak_hook
|
||||
}
|
||||
# Humiliation.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_humiliation = yes }
|
||||
desc = fp1_tbc.0041.desc.reward.humiliation
|
||||
}
|
||||
# No outcome for death, since that's handled more succinctly above.
|
||||
}
|
||||
desc = fp1_tbc.0041.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
animation = personality_bold
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:recipient
|
||||
animation = shock
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
show_as_tooltip = { fp1_tbc_non_lethal_results_effect = yes }
|
||||
# Sadly, we have to apply some effects here instead of in the initial output event in order to not break tooltips.
|
||||
single_combat_have_slain_kin_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0041.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:actor has lost the bout.
|
||||
fp1_tbc.0051 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0051.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0051.desc.intro
|
||||
# Scope:actor is still alive (alternatives not included because, well...).
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0051.desc.opponent_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0051.desc.opponent_lives.recipient_has_champion
|
||||
}
|
||||
desc = fp1_tbc.0051.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:actor
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:recipient
|
||||
animation = personality_bold
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
}
|
||||
fp1_tbc_actor_defeated_effect = {
|
||||
TBC_LOSER = scope:actor
|
||||
TBC_VICTOR = scope:recipient
|
||||
}
|
||||
}
|
||||
show_as_tooltip = {
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
single_combat_have_slain_kin_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0051.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# SCOPE:RECIPIENT-SIDE EVENTS
|
||||
|
||||
##################################################
|
||||
# Champion Selection
|
||||
# by Ewan Cowhig Croft
|
||||
# 0101 - 0110
|
||||
##################################################
|
||||
|
||||
scripted_trigger fp1_tbc_knights_with_high_opinion_filter_trigger = {
|
||||
# Has a ludicrously high opinion of scope:recipient.
|
||||
opinion = {
|
||||
target = scope:recipient
|
||||
value >= 95
|
||||
}
|
||||
# And isn't one of the other knights presented.
|
||||
NOR = {
|
||||
AND = {
|
||||
exists = scope:knight_best
|
||||
this = scope:knight_best
|
||||
}
|
||||
AND = {
|
||||
exists = scope:knight_exotic
|
||||
this = scope:knight_exotic
|
||||
}
|
||||
AND = {
|
||||
exists = scope:knight_alternative
|
||||
this = scope:knight_alternative
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:recipient has accepted a challenge to a Trial-by-Combat & must designate a champion due to ineligibility.
|
||||
fp1_tbc.0101 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0101.t
|
||||
desc = fp1_tbc.0101.desc
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = disbelief
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:knight_best
|
||||
animation = personality_honorable
|
||||
}
|
||||
lower_left_portrait = scope:knight_alternative
|
||||
lower_center_portrait = scope:knight_exotic
|
||||
lower_right_portrait = scope:knight_opinion
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
play_music_cue = "mx_cue_prison"
|
||||
|
||||
# First, grab all available knights that are suitable for the Trial-by-Combat.
|
||||
every_knight = {
|
||||
limit = {
|
||||
eligible_knight_to_champion_trial_by_combat_trigger = yes
|
||||
NOT = {
|
||||
has_court_position = champion_court_position #EP1: Pluck out the champion title holder
|
||||
}
|
||||
}
|
||||
add_to_list = fp1_tbc_valid_knights_list
|
||||
}
|
||||
# Then, sort through the list, selecting the knight with the highest prowess.
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
order_by = prowess
|
||||
save_scope_as = knight_best
|
||||
}
|
||||
# After that, we grab the most interesting knight (looking at assorted prowess-ish pecial traits and factoring for those) who isn't scope:knight_best.
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
limit = {
|
||||
NOT = {
|
||||
exists = scope:knight_best
|
||||
this = scope:knight_best
|
||||
}
|
||||
has_relevant_special_single_combat_trait_trigger = yes
|
||||
}
|
||||
order_by = sce_has_single_combat_special_traits_value
|
||||
save_scope_as = knight_exotic
|
||||
}
|
||||
#EP1: Fetch your champion if they exist
|
||||
if = {
|
||||
limit = {
|
||||
employs_court_position = champion_court_position
|
||||
any_court_position_holder = {
|
||||
type = champion_court_position
|
||||
is_physically_able_adult = yes # eligible_knight_to_champion_trial_by_combat_trigger checks for prowess, and its not mandatory that the champ has high value
|
||||
}
|
||||
}
|
||||
random_court_position_holder = {
|
||||
type = champion_court_position
|
||||
save_scope_as = knight_alternative #same scope name is used due to limited portrait logic
|
||||
}
|
||||
}
|
||||
# Then take the second highest-prowess knight who isn't scope:knight_best or scope:knight_exotic.
|
||||
# EP1: Only do this if the court position of champion isn't already filled
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
limit = {
|
||||
NOR = {
|
||||
this = scope:knight_best
|
||||
AND = {
|
||||
exists = scope:knight_exotic
|
||||
this = scope:knight_exotic
|
||||
}
|
||||
}
|
||||
NOT = { employs_court_position = champion_court_position }
|
||||
}
|
||||
order_by = prowess
|
||||
save_scope_as = knight_alternative
|
||||
}
|
||||
# Next, if we've got any knight who isn't scope:knight_best, scope:knight_exotic, or scope:knight_alternative, and who would literally murder for you, we grab them.
|
||||
if = {
|
||||
limit = {
|
||||
any_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
fp1_tbc_knights_with_high_opinion_filter_trigger = yes
|
||||
}
|
||||
}
|
||||
# First, add them to a sub-list.
|
||||
every_in_list = {
|
||||
list = fp1_tbc_valid_knights_list
|
||||
limit = { fp1_tbc_knights_with_high_opinion_filter_trigger = yes }
|
||||
add_to_list = fp1_tbc_high_opinion_knights_list
|
||||
}
|
||||
# Next, try to pluck out knightly soulmates.
|
||||
if = {
|
||||
limit = {
|
||||
any_in_list = {
|
||||
list = fp1_tbc_high_opinion_knights_list
|
||||
any_relation = {
|
||||
type = soulmate
|
||||
this = scope:recipient
|
||||
}
|
||||
}
|
||||
}
|
||||
random_in_list = {
|
||||
list = fp1_tbc_high_opinion_knights_list
|
||||
limit = {
|
||||
any_relation = {
|
||||
type = soulmate
|
||||
this = scope:recipient
|
||||
}
|
||||
}
|
||||
save_scope_as = knight_opinion
|
||||
}
|
||||
}
|
||||
# Otherwise, order by prowess and select the best.
|
||||
else = {
|
||||
ordered_in_list = {
|
||||
list = fp1_tbc_high_opinion_knights_list
|
||||
order_by = prowess
|
||||
save_scope_as = knight_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
# Finally, if shenanigans have somehow deprived us of a scope:knight_best, then we want to generate someone to fill that minimum slot.
|
||||
if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:knight_best }
|
||||
}
|
||||
create_character = {
|
||||
gender_female_chance = root_soldier_female_chance
|
||||
location = scope:recipient.capital_province
|
||||
template = new_warrior_character
|
||||
faith = scope:recipient.capital_county.faith
|
||||
culture = scope:recipient.capital_county.culture
|
||||
save_scope_as = knight_best
|
||||
}
|
||||
add_courtier = scope:knight_best
|
||||
}
|
||||
}
|
||||
|
||||
# Take the most skilled knight.
|
||||
option = {
|
||||
name = fp1_tbc.0101.a
|
||||
|
||||
trigger = {
|
||||
exists = scope:knight_best
|
||||
}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_best = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.a.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_best
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 0.75
|
||||
ai_boldness = -0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# EP1: Take your already designated champion
|
||||
option = {
|
||||
name = fp1_ep1_tbc.0101.e
|
||||
trigger = {
|
||||
exists = scope:knight_alternative
|
||||
scope:knight_alternative = { has_court_position = champion_court_position }
|
||||
}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_alternative = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_ep1_tbc.0101.e.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_alternative
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 0.75
|
||||
ai_boldness = -0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Take the next most skilled knight.
|
||||
option = {
|
||||
name = fp1_tbc.0101.b
|
||||
trigger = {
|
||||
exists = scope:knight_alternative
|
||||
scope:knight_alternative = { NOT = { has_court_position = champion_court_position } }
|
||||
}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_alternative = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.b.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_alternative
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
# There's no reason for the AI to ever take this option, we offer it entirely for players who dislike/wish to preserve their best knight.
|
||||
base = 0
|
||||
}
|
||||
}
|
||||
|
||||
# Take the knight with the most special traits that *isn't* the most skilled knight.
|
||||
option = {
|
||||
name = fp1_tbc.0101.c
|
||||
trigger = { exists = scope:knight_opinion }
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_exotic = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.c.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_exotic
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_rationality = 0.5
|
||||
ai_boldness = 0.25
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Take the knight who likes me the most.
|
||||
option = {
|
||||
name = fp1_tbc.0101.d
|
||||
trigger = { exists = scope:knight_opinion}
|
||||
|
||||
# Select scope:knight_best to represent you in the bout.
|
||||
scope:knight_opinion = { save_scope_as = champion }
|
||||
custom_tooltip = fp1_tbc.0101.d.tt
|
||||
custom_tooltip = fp1_tbc.0101.bout_moves_forward
|
||||
highlight_portrait = scope:knight_opinion
|
||||
|
||||
# RP/functional choice: no stress charge.
|
||||
ai_chance = {
|
||||
base = 100
|
||||
ai_value_modifier = {
|
||||
ai_sociability = 0.5
|
||||
ai_rationality = -0.75
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Then, we skip over to scope:actor to inform them what's up.
|
||||
after = {
|
||||
# Clean up any errant scopes we no longer need to avoid debug bloat.
|
||||
clear_saved_scope = knight_best
|
||||
if = {
|
||||
limit = { exists = scope:knight_exotic }
|
||||
clear_saved_scope = knight_exotic
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:knight_alternative }
|
||||
clear_saved_scope = knight_alternative
|
||||
}
|
||||
if = {
|
||||
limit = { exists = scope:knight_opinion }
|
||||
clear_saved_scope = knight_opinion
|
||||
}
|
||||
# And transition.
|
||||
scope:actor = { trigger_event = fp1_tbc.0001 }
|
||||
}
|
||||
}
|
||||
|
||||
fp1_tbc.0102 = {
|
||||
desc = debug_main
|
||||
theme = prison
|
||||
|
||||
option = {
|
||||
name = interaction_debug_main
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Scope:recipient Results
|
||||
# by Ewan Cowhig Croft
|
||||
# 0111 - 0130
|
||||
##################################################
|
||||
|
||||
# Scope:recipient has won the bout.
|
||||
fp1_tbc.0111 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0111.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0111.desc.intro
|
||||
# Scope:actor died in the fighting; we don't account for
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:actor = { is_alive = no }
|
||||
}
|
||||
desc = fp1_tbc.0111.desc.opponent_died.recipient_fighting
|
||||
}
|
||||
# Scope:actor is still alive.
|
||||
triggered_desc = {
|
||||
trigger = {
|
||||
scope:actor = { is_alive = yes}
|
||||
}
|
||||
desc = {
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0111.desc.opponent_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0111.desc.opponent_lives.recipient_has_champion
|
||||
}
|
||||
}
|
||||
}
|
||||
desc = fp1_tbc.0111.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = personality_bold
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:actor
|
||||
animation = shock
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
if = {
|
||||
limit = {
|
||||
scope:actor = { is_alive = yes }
|
||||
}
|
||||
fp1_tbc_actor_defeated_effect = {
|
||||
TBC_LOSER = scope:actor
|
||||
TBC_VICTOR = scope:recipient
|
||||
}
|
||||
}
|
||||
# Sadly, we have to apply some effects here instead of in the initial output event in order to not break tooltips.
|
||||
single_combat_have_slain_kin_effect = {
|
||||
ATTACKER = scope:actor
|
||||
DEFENDER = scope:champion
|
||||
}
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0111.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Scope:recipient has lost the bout.
|
||||
fp1_tbc.0121 = {
|
||||
type = character_event
|
||||
title = fp1_tbc.0121.t
|
||||
desc = {
|
||||
desc = fp1_tbc.0121.desc.intro
|
||||
# We don't need to account for scope:champion dying in the fighting; if it was scope:recipient, then they're dead, and a separate champion cannot be challenged to a fight to the death.
|
||||
# Scope:champion is still alive.
|
||||
first_valid = {
|
||||
# Scope:recipient fought for themselves.
|
||||
triggered_desc = {
|
||||
trigger = { scope:champion = scope:recipient }
|
||||
desc = fp1_tbc.0121.desc.champion_lives.recipient_fighting
|
||||
}
|
||||
# Scope:recipient had a designated champion instead.
|
||||
desc = fp1_tbc.0121.desc.champion_lives.recipient_has_champion
|
||||
}
|
||||
# Reward, if anything.
|
||||
first_valid = {
|
||||
# Gold.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_gold = yes }
|
||||
desc = fp1_tbc.0121.desc.reward.gold
|
||||
}
|
||||
# Weak hook.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_weak_hook = yes }
|
||||
desc = fp1_tbc.0121.desc.reward.weak_hook
|
||||
}
|
||||
# Humiliation.
|
||||
triggered_desc = {
|
||||
trigger = { scope:tbc_humiliation = yes }
|
||||
desc = fp1_tbc.0121.desc.reward.humiliation
|
||||
}
|
||||
# No outcome for death, since that's handled more succinctly above.
|
||||
}
|
||||
desc = fp1_tbc.0121.desc.outro
|
||||
}
|
||||
theme = prison
|
||||
left_portrait = {
|
||||
character = scope:recipient
|
||||
animation = shock
|
||||
}
|
||||
right_portrait = {
|
||||
character = scope:actor
|
||||
animation = personality_bold
|
||||
}
|
||||
override_background = { reference = throne_room }
|
||||
|
||||
trigger = {
|
||||
# DLC check.
|
||||
has_fp1_dlc_trigger = yes
|
||||
# Juuuust need to double-check that they're actually alive.
|
||||
is_alive = yes
|
||||
}
|
||||
|
||||
immediate = {
|
||||
# Show duel results from the player's POV.
|
||||
show_as_tooltip = { fp1_tbc_non_lethal_results_effect = yes }
|
||||
# Sadly, we have to apply some effects here instead of in the initial output event in order to not break tooltips.
|
||||
fp1_tbc_consume_imprisonment_reasons_effect = yes
|
||||
}
|
||||
|
||||
# The bout closes.
|
||||
option = {
|
||||
name = fp1_tbc.0121.a
|
||||
|
||||
# No stress for single-option events.
|
||||
ai_chance = {
|
||||
# AI will always choose single option.
|
||||
base = 100
|
||||
}
|
||||
}
|
||||
}
|
||||
29
events/dlc/fp1/fp1_varangian_adventure_events.txt
Normal file
29
events/dlc/fp1/fp1_varangian_adventure_events.txt
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
namespace = fp1_varangian_adventures
|
||||
|
||||
##################################################
|
||||
# #Maintenance Events
|
||||
# 0001 - 0010 Boost attacker control after the war.
|
||||
##################################################
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
##################################################
|
||||
# #Maintenance Events
|
||||
|
||||
##################################################
|
||||
# Boost Attacker Control
|
||||
# by Ewan Cowhig Croft
|
||||
# 0001 - 0010
|
||||
##################################################
|
||||
|
||||
# Boost control in newly conquered lands.
|
||||
fp1_varangian_adventures.0001 = {
|
||||
hidden = yes
|
||||
|
||||
immediate = {
|
||||
every_realm_county = { change_county_control = 50 }
|
||||
}
|
||||
}
|
||||
16884
events/dlc/fp1/fp1_yearly_events.txt
Normal file
16884
events/dlc/fp1/fp1_yearly_events.txt
Normal file
File diff suppressed because it is too large
Load diff
2687
events/dlc/fp1/fp1_yearly_events_oltner.txt
Normal file
2687
events/dlc/fp1/fp1_yearly_events_oltner.txt
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue