2376 lines
60 KiB
Text
2376 lines
60 KiB
Text
# Events fired upon resolution of a combat.
|
|
#
|
|
# Event List:
|
|
# 0001-0005: 'The Undefeated' - a commander has won 100 battles without losing a single one! By Sean Hughes
|
|
# 1001-1003: 'Prisoners of War' - one or more characters were imprisoned at the end of a battle (notifications sent to concerned parties). By Sean Hughes
|
|
#
|
|
#
|
|
|
|
namespace = combat_event
|
|
|
|
#####################
|
|
# The Undefeatable #
|
|
# by Sean Hughes #
|
|
# 0001-0005 #
|
|
#####################
|
|
|
|
#Event for Winning Side: Keeps track of total number of victories the side's commander has (if they have never lost a battle). At 100 victories, they earn the nickname 'the Undefeatable'.
|
|
combat_event.0001 = {
|
|
hidden = yes
|
|
scope = combat_side
|
|
|
|
trigger = {
|
|
side_commander ?= { is_alive = yes }
|
|
side_commander = { is_ai = no } # Too expensive performance-wise to track for all commanders in the game. Substantial savings on cycles to only track for players.
|
|
OR = {
|
|
side_commander = {
|
|
# Event will only occur if this character has never lost a battle.
|
|
OR = {
|
|
NOT = { has_variable = combat_event_0001_tracker }
|
|
trigger_if = {
|
|
limit = {
|
|
has_variable = combat_event_0001_tracker
|
|
}
|
|
var:combat_event_0001_tracker > 0
|
|
}
|
|
}
|
|
}
|
|
AND = {
|
|
# However, as a special case we will fire this event if we defeat 'the Undefeatable'...
|
|
exists = enemy_side.side_commander
|
|
enemy_side.side_commander = {
|
|
has_character_flag = combat_event_undefeatable_flag
|
|
}
|
|
# ...But only if we haven't already defeated 'the Undefeatable' before!
|
|
side_commander = {
|
|
NOT = { has_character_flag = combat_event_triumphant_flag }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
if = {
|
|
#If we have defeated 'the Undefeatable', execute a special use case (skipping the rest of this event's effects).
|
|
limit = {
|
|
exists = enemy_side.side_commander
|
|
enemy_side.side_commander = {
|
|
has_character_flag = combat_event_undefeatable_flag
|
|
}
|
|
}
|
|
|
|
# Save the enemy commander's scope for localization.
|
|
enemy_side.side_commander = {
|
|
save_scope_as = enemy_commander
|
|
}
|
|
|
|
# Gain special recognition for defeating 'the Undefeatable.'
|
|
side_commander = {
|
|
# Save this scope for localization.
|
|
save_scope_as = friendly_commander
|
|
|
|
# So we don't get this outcome more than once per character.
|
|
add_character_flag = combat_event_triumphant_flag
|
|
|
|
# Trigger the event.
|
|
trigger_event = {
|
|
id = combat_event.0004
|
|
days = 1
|
|
}
|
|
}
|
|
}
|
|
else = {
|
|
# In almost all situations, add to our victory tracker. Once we reach 100, fire the special Undefeatable event.
|
|
side_commander = {
|
|
if = {
|
|
limit = {
|
|
is_alive = yes # Can be killed in combat
|
|
}
|
|
# If the victory tracking variable does not yet exist, create it.
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
has_variable = combat_event_0001_tracker
|
|
}
|
|
}
|
|
set_variable = {
|
|
name = combat_event_0001_tracker
|
|
value = 1
|
|
}
|
|
}
|
|
# Otherwise, increment it.
|
|
else = {
|
|
change_variable = {
|
|
name = combat_event_0001_tracker
|
|
add = 1
|
|
}
|
|
}
|
|
|
|
#If the commander has accumulateed 100 victories, fire the event which gives them the nickname 'the Undefeatable'.
|
|
if = {
|
|
limit = {
|
|
var:combat_event_0001_tracker = 100
|
|
}
|
|
|
|
# If there is an enemy commander, save their scope for portraits/localization in the following event.
|
|
if = {
|
|
limit = {
|
|
exists = root.enemy_side.side_commander
|
|
}
|
|
root.enemy_side.side_commander = {
|
|
save_scope_as = enemy_commander
|
|
}
|
|
}
|
|
|
|
# Fire the event which gives the victorious commander the nickname 'the Undefeatable'.
|
|
trigger_event = {
|
|
id = combat_event.0003
|
|
days = 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Event for Losing Side: Disqualifies the side's commander from ever earning the nickname 'the Undefeatable'.
|
|
combat_event.0002 = {
|
|
hidden = yes
|
|
scope = combat_side
|
|
|
|
trigger = {
|
|
side_commander ?= {
|
|
is_alive = yes
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
side_commander = {
|
|
#If we ever lose a battle, we are disqualified from achieving 'the Undefeatable' nickname.
|
|
set_variable = {
|
|
name = combat_event_0001_tracker
|
|
value = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Once a commander wins 100 battles with 0 defeats, they get a special 'the Undefeatable' nickname.
|
|
combat_event.0003 = {
|
|
type = character_event
|
|
title = combat_event.0003.t
|
|
desc = {
|
|
desc = combat_event.0003.desc.opening
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
exists = scope:enemy_commander
|
|
}
|
|
desc = combat_event.0003.desc.commander
|
|
}
|
|
desc = combat_event.0003.desc.no_commander
|
|
}
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
NOR = {
|
|
has_trait = shy
|
|
has_trait = humble
|
|
has_trait = craven
|
|
has_trait = content
|
|
has_trait = paranoid
|
|
has_trait = cautious_leader
|
|
}
|
|
}
|
|
desc = combat_event.0003.desc.alt_ending
|
|
}
|
|
desc = combat_event.0003.desc.ending
|
|
}
|
|
}
|
|
theme = battle
|
|
left_portrait = {
|
|
character = root
|
|
animation = war_over_win
|
|
}
|
|
right_portrait = {
|
|
character = scope:enemy_commander
|
|
animation = war_over_loss
|
|
}
|
|
|
|
immediate = {
|
|
add_character_flag = combat_event_undefeatable_flag
|
|
set_signature_weapon_effect = yes
|
|
}
|
|
|
|
#Option A: Accept the title "the Undefeatable", gain prestige.
|
|
option = {
|
|
name = combat_event.0003.a
|
|
give_nickname = nick_the_undefeated # We don't use 'set_nick_effect' here because this is important enough we want it to override event 'good' nicknames. Plus it's an opt-in.
|
|
add_prestige = massive_prestige_gain
|
|
|
|
add_martial_skill = 3
|
|
|
|
#AI will always pick this unless Humble.
|
|
stress_impact = {
|
|
humble = medium_stress_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
|
|
modifier = {
|
|
has_trait = humble
|
|
add = -100
|
|
}
|
|
}
|
|
}
|
|
|
|
#Option B: Reject the title "the Undefeatable", gain piety.
|
|
option = {
|
|
name = {
|
|
trigger = { has_trait = zealous }
|
|
text = combat_event.0003.b.zealous
|
|
}
|
|
name = {
|
|
trigger = { NOT = { has_trait = zealous }}
|
|
text = combat_event.0003.b
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
has_trait = zealous
|
|
}
|
|
add_piety = massive_piety_gain
|
|
}
|
|
else = {
|
|
add_prestige = medium_prestige_gain
|
|
add_piety = medium_piety_gain
|
|
}
|
|
|
|
add_martial_skill = 3
|
|
|
|
#AI will only pick this if Humble.
|
|
stress_impact = {
|
|
arrogant = medium_stress_gain
|
|
}
|
|
ai_chance = {
|
|
base = 0
|
|
|
|
modifier = {
|
|
has_trait = humble
|
|
add = 100
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#If 'the Undefeatable' is ever defeated, the commander who defeated them gets a special title.
|
|
combat_event.0004 = {
|
|
type = character_event
|
|
title = combat_event.0004.t
|
|
desc = combat_event.0004.desc
|
|
theme = battle
|
|
left_portrait = {
|
|
character = root
|
|
animation = war_over_win
|
|
}
|
|
right_portrait = {
|
|
character = scope:enemy_commander
|
|
animation = war_over_loss
|
|
}
|
|
|
|
immediate = {
|
|
set_signature_weapon_effect = yes
|
|
}
|
|
|
|
#Option A: Accept the title "the Triumphant", gain prestige.
|
|
option = {
|
|
name = combat_event.0004.a
|
|
give_nickname = nick_the_triumphant
|
|
add_prestige = massive_prestige_gain
|
|
|
|
add_martial_skill = 3
|
|
|
|
#AI will always pick this unless Humble
|
|
stress_impact = {
|
|
humble = medium_stress_gain
|
|
}
|
|
ai_chance = {
|
|
base = 100
|
|
|
|
modifier = {
|
|
has_trait = humble
|
|
add = -100
|
|
}
|
|
}
|
|
}
|
|
|
|
#Option B: Reject the title "the Triumphant", gain piety.
|
|
option = {
|
|
name = {
|
|
trigger = { has_trait = zealous }
|
|
text = combat_event.0004.b.zealous
|
|
}
|
|
name = {
|
|
trigger = { NOT = { has_trait = zealous }}
|
|
text = combat_event.0004.b
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
has_trait = zealous
|
|
}
|
|
add_piety = massive_piety_gain
|
|
}
|
|
else = {
|
|
add_prestige = medium_prestige_gain
|
|
add_piety = medium_piety_gain
|
|
}
|
|
|
|
add_martial_skill = 3
|
|
|
|
#AI will never pick this unless Humble
|
|
stress_impact = {
|
|
arrogant = medium_stress_gain
|
|
}
|
|
ai_chance = {
|
|
base = 0
|
|
|
|
modifier = {
|
|
has_trait = humble
|
|
add = 100
|
|
}
|
|
}
|
|
}
|
|
|
|
after = {
|
|
#Inform 'the Undefeatable' that they have, in fact, been defeated.
|
|
scope:enemy_commander = {
|
|
remove_character_flag = combat_event_undefeatable_flag
|
|
trigger_event = {
|
|
id = combat_event.0005
|
|
days = 1
|
|
}
|
|
show_as_tooltip = {
|
|
add_prestige_level = -1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#'The Undefeatable' is informed that they have, in fact, been defeated.
|
|
combat_event.0005 = {
|
|
type = character_event
|
|
title = combat_event.0005.t
|
|
desc = combat_event.0005.desc
|
|
theme = battle
|
|
left_portrait = {
|
|
character = scope:friendly_commander
|
|
animation = war_over_win
|
|
}
|
|
|
|
immediate = {
|
|
if = {
|
|
limit = {
|
|
scope:friendly_commander = {
|
|
has_nickname = nick_the_triumphant
|
|
}
|
|
}
|
|
show_as_tooltip = {
|
|
scope:friendly_commander = {
|
|
give_nickname = nick_the_triumphant
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Option A: Accept that they have defeated you.
|
|
option = {
|
|
name = combat_event.0005.a
|
|
|
|
add_prestige_level = -1
|
|
|
|
stress_impact = {
|
|
vengeful = medium_stress_gain
|
|
arrogant = medium_stress_gain
|
|
wrathful = minor_stress_gain
|
|
}
|
|
ai_chance = {
|
|
base = 50
|
|
|
|
ai_value_modifier = {
|
|
ai_vengefulness = -5
|
|
}
|
|
}
|
|
}
|
|
|
|
#Option B: Declare them your rival!
|
|
option = {
|
|
name = combat_event.0005.b
|
|
|
|
add_prestige_level = -1
|
|
|
|
if = {
|
|
limit = {
|
|
NOT = { has_relation_rival = scope:friendly_commander }
|
|
}
|
|
scope:friendly_commander = {
|
|
send_interface_toast = {
|
|
title = combat_event.0005.message
|
|
set_relation_rival = {
|
|
target = root
|
|
reason = rival_undefeated_defeated
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stress_impact = {
|
|
forgiving = medium_stress_gain
|
|
humble = medium_stress_gain
|
|
calm = minor_stress_gain
|
|
}
|
|
ai_chance = {
|
|
base = 5000
|
|
|
|
ai_value_modifier = {
|
|
ai_vengefulness = 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#####################
|
|
# Battle Aftermath #
|
|
# by Sean Hughes #
|
|
# 1001-1014 #
|
|
#####################
|
|
|
|
# Used for determining both who should be notifiied about captured/slain combatants.
|
|
scripted_trigger combat_event_1001_character_is_relevant_to_target_trigger = {
|
|
OR = {
|
|
# Character is of major or minor interest.
|
|
is_of_major_interest_trigger = {CHARACTER = $TARGET$ }
|
|
is_of_minor_interest_trigger = {CHARACTER = $TARGET$ }
|
|
|
|
# Courtiers normally aren't very interesting, but if one got captured in battle there has to be a reason why they were there in the first place!
|
|
is_courtier_of = $TARGET$
|
|
is_knight_of = $TARGET$
|
|
}
|
|
}
|
|
|
|
# Used for checking if a captured combatant is worth war-score.
|
|
scripted_trigger combat_event_1001_character_is_important_combatant = {
|
|
OR = {
|
|
this = scope:primary_combat_winner
|
|
this = scope:primary_combat_loser
|
|
is_heir_of = scope:primary_combat_winner
|
|
is_heir_of = scope:primary_combat_loser
|
|
}
|
|
}
|
|
|
|
# Used to transfer equipped battle gear to slayer/capturer
|
|
scripted_effect combat_transfer_equipped_artifact_effect = {
|
|
if = {
|
|
limit = {
|
|
any_equipped_character_artifact = { artifact_slot_type = $TYPE$ }
|
|
}
|
|
save_scope_as = artifact_knight
|
|
random_equipped_character_artifact = {
|
|
limit = { artifact_slot_type = $TYPE$ }
|
|
if = {
|
|
limit = { artifact_durability >= define:NInventory|ARTIFACT_LOW_DURABILITY }
|
|
save_scope_as = knight_artifact
|
|
if = {
|
|
limit = { exists = artifact_owner.house }
|
|
artifact_owner.house = { save_scope_as = artifact_house }
|
|
}
|
|
set_owner = {
|
|
target = $OWNER$
|
|
history = {
|
|
type = taken_in_battle
|
|
actor = scope:artifact_knight
|
|
recipient = $OWNER$
|
|
location = scope:artifact_knight.location
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
exists = scope:artifact_house
|
|
NOT = {
|
|
any_artifact_house_claimant = {
|
|
this = scope:artifact_house
|
|
}
|
|
}
|
|
}
|
|
scope:artifact_house = { add_house_artifact_claim = prev }
|
|
}
|
|
scope:artifact_knight = {
|
|
if = {
|
|
limit = {
|
|
NOT = {
|
|
has_personal_artifact_claim = prev
|
|
}
|
|
}
|
|
add_personal_artifact_claim = prev
|
|
}
|
|
}
|
|
#debug_log = "ART_TRAN"
|
|
}
|
|
else = {
|
|
destroy_artifact = this
|
|
#debug_log = "ART_DEST"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Used to check if a knight has fought in a battle recently.
|
|
scripted_effect petition_knight_battle_history_effect = {
|
|
if = {
|
|
limit = {
|
|
is_alive = yes
|
|
age >= 35
|
|
is_landed = no
|
|
employer.highest_held_title_tier >= tier_kingdom # No need to set variables for knights of dukes/counts
|
|
}
|
|
if = {
|
|
limit = { has_variable = hc_8170_fought_battle_for }
|
|
remove_variable = hc_8170_fought_battle_for
|
|
}
|
|
if = {
|
|
limit = { has_variable = hc_8170_fought_battle_where }
|
|
remove_variable = hc_8170_fought_battle_where
|
|
}
|
|
if = {
|
|
limit = { has_variable = hc_8170_fought_battle_against }
|
|
remove_variable = hc_8170_fought_battle_against
|
|
}
|
|
set_variable = {
|
|
name = hc_8170_fought_battle_for
|
|
value = employer
|
|
years = 15
|
|
}
|
|
set_variable = {
|
|
name = hc_8170_fought_battle_where
|
|
value = location
|
|
years = 15
|
|
}
|
|
save_scope_as = knight_scope
|
|
if = { # For winner side knights
|
|
limit = {
|
|
scope:winning_side = {
|
|
any_side_knight = { THIS = scope:knight_scope } # this knight
|
|
}
|
|
}
|
|
set_variable = {
|
|
name = hc_8170_fought_battle_against
|
|
value = scope:winning_side.enemy_side.side_primary_participant
|
|
years = 15
|
|
}
|
|
}
|
|
else = { # For loser side knights
|
|
set_variable = {
|
|
name = hc_8170_fought_battle_against
|
|
value = scope:winning_side.side_primary_participant
|
|
years = 15
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Combat Side event which handles the combatant imprisonment and death logic.
|
|
# Also determines which characters need to be notified about these occurances, and triggers notification events for them (combat_event.1002-1004 and 1012-1014).
|
|
combat_event.1001 = {
|
|
scope = combat_side
|
|
hidden = yes
|
|
|
|
trigger = {
|
|
# Prisoners of war can only be taken during an actual war.
|
|
# Non-war battles (such as from engaging Hostile forces) do not take prisoners, since PoWs cannot be released on war end if there is no war!
|
|
side_primary_participant = {
|
|
is_at_war_with = root.enemy_side.side_primary_participant
|
|
}
|
|
|
|
#Cannot happen in the tutorial
|
|
NOT = { has_global_variable = lesson_chain_war_tutorial_started }
|
|
}
|
|
|
|
immediate = {
|
|
# Save necessary scopes for later usage.
|
|
save_scope_as = winning_side
|
|
side_primary_participant = {
|
|
random_character_war = {
|
|
limit = {
|
|
OR = {
|
|
is_attacker = root.enemy_side.side_primary_participant
|
|
is_defender = root.enemy_side.side_primary_participant
|
|
}
|
|
}
|
|
save_scope_as = combat_war
|
|
if = {
|
|
limit = {
|
|
is_attacker = root.side_primary_participant
|
|
}
|
|
primary_attacker = {
|
|
save_scope_as = primary_combat_winner
|
|
}
|
|
primary_defender = {
|
|
save_scope_as = primary_combat_loser
|
|
}
|
|
}
|
|
else = {
|
|
primary_defender = {
|
|
save_scope_as = primary_combat_winner
|
|
}
|
|
primary_attacker = {
|
|
save_scope_as = primary_combat_loser
|
|
}
|
|
}
|
|
}
|
|
save_scope_as = combat_winner
|
|
}
|
|
enemy_side.side_primary_participant = {
|
|
save_scope_as = combat_loser
|
|
}
|
|
combat.location = {
|
|
save_scope_as = combat_location
|
|
}
|
|
|
|
# If there is a Commander on the losing side, check if they should be imprisoned.
|
|
if = {
|
|
limit = {
|
|
exists = enemy_side.side_commander
|
|
}
|
|
|
|
enemy_side.side_commander = {
|
|
random_list = {
|
|
# No Effect
|
|
90 = {
|
|
# Reduced risk for characters with the Stalwart Leader perk.
|
|
modifier = {
|
|
add = 100
|
|
has_perk = stalwart_leader_perk
|
|
is_ai = no
|
|
}
|
|
modifier = {
|
|
add = 30
|
|
has_perk = stalwart_leader_perk
|
|
is_ai = yes
|
|
}
|
|
#Acclaimed knights being captured has weird results, we are giving them essentially a pass
|
|
modifier = {
|
|
add = 500
|
|
is_acclaimed = yes
|
|
}
|
|
|
|
#Reduced risk for character with Bodyguard(s) that are fighting by their side
|
|
modifier = {
|
|
add = 50
|
|
employs_court_position = bodyguard_court_position
|
|
any_court_position_holder = {
|
|
type = bodyguard_court_position
|
|
save_temporary_scope_as = bodyguard
|
|
root.enemy_side = {
|
|
any_side_knight = { this = scope:bodyguard }
|
|
}
|
|
}
|
|
}
|
|
|
|
#Reduced risk for character with Garuda that are fighting by their side
|
|
modifier = {
|
|
add = 50
|
|
employs_court_position = garuda_court_position
|
|
any_court_position_holder = {
|
|
type = garuda_court_position
|
|
save_temporary_scope_as = garuda
|
|
root.enemy_side = {
|
|
any_side_knight = { this = scope:garuda }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Being stackwiped greatly increases the chance of capture.
|
|
modifier = {
|
|
scope:wipe = yes
|
|
factor = 0.20
|
|
}
|
|
}
|
|
# Captured in battle.
|
|
10 = {
|
|
trigger = {
|
|
is_alive = yes
|
|
}
|
|
modifier = {
|
|
factor = { # Prowess directly reduces chance of capture.
|
|
value = 30 # Value at which 'immunity' happens.
|
|
subtract = prowess
|
|
divide = 30
|
|
min = 0.1 # Everyone makes mistakes.
|
|
}
|
|
}
|
|
|
|
# Craven characters are more likey to flee earlier and elude capture.
|
|
modifier = {
|
|
factor = 0.5
|
|
has_trait = craven
|
|
}
|
|
modifier = {
|
|
factor = 2
|
|
has_trait = brave
|
|
}
|
|
|
|
# Certain injuries increase the chances of being caught.
|
|
modifier = {
|
|
factor = 3
|
|
OR = {
|
|
has_trait = one_legged
|
|
has_trait = maimed
|
|
}
|
|
}
|
|
|
|
# State Ransoms: characters are more likely to surrender if their liege will pay their ransom.
|
|
modifier = {
|
|
factor = 2
|
|
liege.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
|
|
NOT = { top_liege = this }
|
|
}
|
|
|
|
add_to_list = prisoners_of_war
|
|
|
|
# Log a battle event so that the imprisonment shows up in the battle summary screen.
|
|
save_temporary_scope_as = this_combatant
|
|
root = {
|
|
battle_event = {
|
|
key = "combatant_captured_in_battle"
|
|
left_portrait = scope:combat_winner
|
|
right_portrait = scope:this_combatant
|
|
type = imprison
|
|
}
|
|
}
|
|
}
|
|
# Commanders cannot be slain in the retreat phase, since we don't want to punish players for retreating from combat after they get wounded.
|
|
}
|
|
}
|
|
}
|
|
|
|
# Set history variables for petition events
|
|
every_side_knight = { petition_knight_battle_history_effect = yes }
|
|
|
|
# For each Knight on the losing side, check if they should be imprisoned/slain.
|
|
enemy_side = {
|
|
every_side_knight = {
|
|
random_list = {
|
|
85 = { # Nothing Happens
|
|
trigger = {
|
|
is_alive = yes
|
|
}
|
|
modifier = {
|
|
add = 50
|
|
has_perk = stalwart_leader_perk
|
|
is_ai = no
|
|
}
|
|
modifier = {
|
|
add = 15
|
|
has_perk = stalwart_leader_perk
|
|
is_ai = yes
|
|
}
|
|
|
|
#Reduced risk for character with bodyguards that are fighting by their side
|
|
modifier = {
|
|
add = 25
|
|
employs_court_position = bodyguard_court_position
|
|
any_court_position_holder = {
|
|
type = bodyguard_court_position
|
|
save_temporary_scope_as = bodyguard
|
|
root.enemy_side = {
|
|
any_side_knight = { this = scope:bodyguard }
|
|
}
|
|
}
|
|
}
|
|
|
|
#Reduced risk for character with Garuda that are fighting by their side
|
|
modifier = {
|
|
add = 25
|
|
employs_court_position = garuda_court_position
|
|
any_court_position_holder = {
|
|
type = garuda_court_position
|
|
save_temporary_scope_as = garuda
|
|
root.enemy_side = {
|
|
any_side_knight = { this = scope:garuda }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Being stackwiped greatly increases the chance of capture and/or death.
|
|
modifier = {
|
|
scope:wipe = yes
|
|
factor = 0.20
|
|
}
|
|
}
|
|
10 = { # Imprisonment
|
|
trigger = {
|
|
is_alive = yes
|
|
}
|
|
|
|
modifier = {
|
|
factor = { # Prowess directly reduces chance of capture
|
|
value = 30 # Value at which 'immunity' happens
|
|
subtract = prowess
|
|
divide = 30
|
|
min = 0.1 # Everyone makes mistakes.
|
|
}
|
|
}
|
|
modifier = {
|
|
factor = 2
|
|
has_trait = brave
|
|
}
|
|
modifier = {
|
|
factor = 0.5
|
|
has_trait = craven
|
|
}
|
|
modifier = {
|
|
factor = 2
|
|
OR = {
|
|
has_trait = one_legged
|
|
has_trait = disfigured
|
|
has_trait = one_eyed
|
|
has_trait = maimed
|
|
}
|
|
}
|
|
# State Ransoms: characters are more likely to surrender if their liege will pay their ransom.
|
|
modifier = {
|
|
factor = 2
|
|
liege.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
|
|
}
|
|
# House Blocs
|
|
modifier = {
|
|
factor = 1.25
|
|
scope:combat_winner.confederation ?= { has_cohesion_level_parameter = any_member_extra_capture_chance }
|
|
}
|
|
#Acclaimed knights being captured has weird results, we are giving them essentially a pass
|
|
modifier = {
|
|
factor = 0.1
|
|
is_acclaimed = yes
|
|
}
|
|
|
|
# Transfer equipped armor and weapon to winner if durability not too low
|
|
combat_transfer_equipped_artifact_effect = { TYPE = primary_armament OWNER = scope:combat_winner }
|
|
combat_transfer_equipped_artifact_effect = { TYPE = armor OWNER = scope:combat_winner }
|
|
|
|
add_to_list = prisoners_of_war
|
|
|
|
# Log a battle event so that the imprisonment shows up in the battle summary screen.
|
|
save_temporary_scope_as = this_combatant
|
|
root = {
|
|
battle_event = {
|
|
key = "combatant_captured_in_battle"
|
|
left_portrait = scope:combat_winner
|
|
right_portrait = scope:this_combatant
|
|
type = imprison
|
|
target_right = yes
|
|
}
|
|
}
|
|
}
|
|
5 = { # Death
|
|
trigger = {
|
|
is_alive = yes # Don't kill knights who are already dead! They will be accounted for later.
|
|
}
|
|
|
|
# Modifiers influencing chance to occur.
|
|
modifier = {
|
|
factor = { # Prowess directly reduces chance of capture
|
|
value = 40 # Value at which 'immunity' happens
|
|
subtract = prowess
|
|
divide = 40
|
|
min = 0.1 # Everyone makes mistakes.
|
|
}
|
|
}
|
|
|
|
# Craven characters are more likely to flee before they can be slain.
|
|
modifier = {
|
|
factor = 0.5
|
|
has_trait = craven
|
|
}
|
|
modifier = {
|
|
factor = 2
|
|
has_trait = brave
|
|
}
|
|
|
|
# Increased chance of dying the more wounded a character is.
|
|
modifier = {
|
|
factor = 2
|
|
OR = {
|
|
has_trait = one_legged
|
|
has_trait = disfigured
|
|
has_trait = one_eyed
|
|
has_trait = maimed
|
|
}
|
|
}
|
|
modifier = {
|
|
factor = 1.5
|
|
has_trait_rank = {
|
|
trait = wounded
|
|
rank = 1
|
|
}
|
|
}
|
|
modifier = {
|
|
factor = 2
|
|
has_trait_rank = {
|
|
trait = wounded
|
|
rank = 2
|
|
}
|
|
}
|
|
modifier = {
|
|
factor = 3
|
|
has_trait_rank = {
|
|
trait = wounded
|
|
rank = 3
|
|
}
|
|
}
|
|
|
|
save_died_in_battle_variables_effect = {
|
|
ENEMY = scope:combat_winner
|
|
LEADER = scope:combat_loser
|
|
LOCATION = scope:combat_location
|
|
}
|
|
|
|
# State Ransoms: characters are more likely to surrender if their liege will pay their ransom, which makes them less likely to die.
|
|
modifier = {
|
|
factor = 0.5
|
|
liege.culture = { has_cultural_parameter = knights_die_less_but_are_captured_more }
|
|
}
|
|
modifier = {
|
|
factor = 0.5
|
|
is_acclaimed = yes
|
|
}
|
|
|
|
# For messaging purposes.
|
|
add_to_list = slain_combatants
|
|
|
|
# Log a battle event so that the imprisonment shows up in the battle summary screen.
|
|
save_temporary_scope_as = this_combatant
|
|
|
|
# Get a random valid knight to be the killer.
|
|
scope:winning_side = {
|
|
random_side_knight = {
|
|
limit = {
|
|
this.prowess >= scope:this_combatant.prowess_for_combat_event_opponent
|
|
}
|
|
|
|
weight = {
|
|
base = 1
|
|
|
|
compare_modifier = {
|
|
value = this.prowess
|
|
}
|
|
|
|
modifier = {
|
|
factor = 10
|
|
this.prowess > scope:this_combatant.prowess
|
|
}
|
|
}
|
|
|
|
save_scope_as = enemy_knight
|
|
}
|
|
}
|
|
|
|
# Log the battle event and then kill the knight
|
|
if = {
|
|
limit = {
|
|
exists = scope:enemy_knight
|
|
}
|
|
# Transfer equipped armor and weapon to killer if durability not too low
|
|
combat_transfer_equipped_artifact_effect = { TYPE = primary_armament OWNER = scope:enemy_knight }
|
|
combat_transfer_equipped_artifact_effect = { TYPE = armor OWNER = scope:enemy_knight }
|
|
root = {
|
|
battle_event = {
|
|
key = "combatant_killed_in_battle"
|
|
left_portrait = scope:enemy_knight
|
|
right_portrait = scope:this_combatant
|
|
type = death
|
|
target_right = yes
|
|
}
|
|
}
|
|
|
|
death = {
|
|
death_reason = death_battle
|
|
killer = scope:enemy_knight
|
|
}
|
|
}
|
|
else = {
|
|
root = {
|
|
battle_event = {
|
|
key = "combatant_killed_in_battle_no_killer"
|
|
left_portrait = scope:combat_winner
|
|
right_portrait = scope:this_combatant
|
|
type = death
|
|
target_right = yes
|
|
}
|
|
}
|
|
|
|
death = {
|
|
death_reason = death_battle
|
|
}
|
|
}
|
|
clear_saved_scope = enemy_knight
|
|
}
|
|
0 = {
|
|
# If the knight is already dead, don't do anything (yet).
|
|
}
|
|
}
|
|
petition_knight_battle_history_effect = yes # Set history variables for petition events
|
|
}
|
|
# Add the enemy knights which were killed before the end of the battle to the casualties list.
|
|
every_in_list = {
|
|
variable = slain_side_knights
|
|
add_to_list = slain_combatants
|
|
}
|
|
clear_variable_list = slain_side_knights
|
|
}
|
|
|
|
# Also record who already died on the winning side, so the victor knows their own casualty count.
|
|
scope:winning_side = {
|
|
every_in_list = {
|
|
variable = slain_side_knights
|
|
add_to_list = victorious_slain_combatants
|
|
}
|
|
clear_variable_list = slain_side_knights
|
|
}
|
|
|
|
|
|
# Handle effects & messaging for any slain combatants.
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
any_in_list = {
|
|
list = slain_combatants
|
|
exists = this
|
|
}
|
|
any_in_list = {
|
|
list = victorious_slain_combatants
|
|
exists = this
|
|
}
|
|
}
|
|
}
|
|
# If anyone was slain after the battle, send a message to both the winner and loser of the combat to inform them of this.
|
|
scope:combat_winner = {
|
|
trigger_event = combat_event.1012
|
|
}
|
|
scope:combat_loser = {
|
|
trigger_event = combat_event.1013
|
|
}
|
|
|
|
# Send a message to all other players who may be concerned about the fate of the slain combatants.
|
|
every_player = {
|
|
limit = {
|
|
NOR = {
|
|
this = scope:combat_winner
|
|
this = scope:combat_loser
|
|
}
|
|
|
|
save_temporary_scope_as = notification_target
|
|
|
|
OR = {
|
|
any_in_list = {
|
|
list = slain_combatants
|
|
combat_event_1001_character_is_relevant_to_target_trigger = { TARGET = scope:notification_target }
|
|
}
|
|
any_in_list = {
|
|
list = victorious_slain_combatants
|
|
combat_event_1001_character_is_relevant_to_target_trigger = { TARGET = scope:notification_target }
|
|
}
|
|
}
|
|
}
|
|
trigger_event = combat_event.1014
|
|
}
|
|
}
|
|
|
|
# Handle effects & messaging for any captured combatants (must be done after slain combatants for order-of-operations reasons!).
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = prisoners_of_war
|
|
exists = this
|
|
}
|
|
}
|
|
# If anyone was captured after the battle, send a message to both the winner and loser of the combat to inform them of this.
|
|
scope:combat_winner = {
|
|
trigger_event = combat_event.1002
|
|
}
|
|
scope:combat_loser = {
|
|
trigger_event = combat_event.1003
|
|
}
|
|
# Send a message to all other players who may be concerned about the fate of the captured prisoners.
|
|
every_player = {
|
|
limit = {
|
|
NOR = {
|
|
this = scope:combat_winner
|
|
this = scope:combat_loser
|
|
}
|
|
|
|
save_temporary_scope_as = notification_target
|
|
any_in_list = {
|
|
list = prisoners_of_war
|
|
|
|
combat_event_1001_character_is_relevant_to_target_trigger = { TARGET = scope:notification_target }
|
|
}
|
|
}
|
|
trigger_event = combat_event.1004
|
|
}
|
|
}
|
|
every_side_participant = {
|
|
random = { # chance of inspiring a knight to become eligible for thug accolade
|
|
chance = 2
|
|
modifier = {
|
|
factor = accolade_progress # scales with accolade progress
|
|
}
|
|
modifier = { # must have an eligible knight
|
|
NOT = {
|
|
root = {
|
|
any_side_knight = {
|
|
can_unlock_accolade_attribute_trigger = {
|
|
ATTRIBUTE = thug
|
|
}
|
|
any_killed_character = {
|
|
OR = {
|
|
is_in_list = slain_combatants
|
|
is_in_list = victorious_slain_combatants
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
factor = 0
|
|
}
|
|
save_scope_as = accolade_liege
|
|
set_variable = {
|
|
name = accolade_progress
|
|
value = 0
|
|
}
|
|
root = {
|
|
random_side_knight = {
|
|
limit = {
|
|
can_unlock_accolade_attribute_trigger = {
|
|
ATTRIBUTE = thug
|
|
}
|
|
any_killed_character = {
|
|
OR = {
|
|
is_in_list = slain_combatants
|
|
is_in_list = victorious_slain_combatants
|
|
}
|
|
}
|
|
}
|
|
weight = {
|
|
base = 1
|
|
modifier = {
|
|
add = 50
|
|
is_acclaimed = yes
|
|
}
|
|
}
|
|
save_scope_as = accolade_knight
|
|
}
|
|
}
|
|
send_interface_message = {
|
|
type = msg_accolade_eligibility
|
|
title = accolade_thug_unlock.t
|
|
left_icon = scope:accolade_knight
|
|
right_icon = scope:accolade_liege
|
|
custom_tooltip = accolade_thug_unlock.tt
|
|
scope:accolade_knight = {
|
|
set_variable = {
|
|
name = thug_attribute_unlock
|
|
value = yes
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#####################
|
|
# Prisoners of War
|
|
|
|
# Prisoner notification event for combat winner.
|
|
combat_event.1002 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
# Initialize the variable we will use to keep track of how many relevant prisoners there are.
|
|
set_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
value = 0
|
|
}
|
|
|
|
# Re-order the combatant list based on who we care about the most.
|
|
ordered_in_list = {
|
|
list = prisoners_of_war
|
|
max = 99
|
|
check_range_bounds = no
|
|
|
|
order_by = {
|
|
value = captured_combatant_weights_for_root_participant
|
|
}
|
|
|
|
# Add the prisoners to a new list tailored to be more relevant to this character.
|
|
add_to_list = relevant_prisoners_of_war
|
|
root = {
|
|
change_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
add = 1
|
|
}
|
|
}
|
|
|
|
# Since we will send custom imprisonment events, block the default ones.
|
|
hidden_effect = {
|
|
if = {
|
|
limit = { is_alive = yes }
|
|
add_character_flag = {
|
|
flag = block_imprisonment_event
|
|
days = 1
|
|
}
|
|
}
|
|
}
|
|
|
|
# The first two prisoners on this list (i.e., the most important people to us) should be have their individual scopes saved for use in portraits & localization.
|
|
if = {
|
|
limit = {
|
|
NOT = { exists = scope:primary_prisoner }
|
|
}
|
|
save_scope_as = primary_prisoner
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
NOT = { exists = scope:secondary_prisoner }
|
|
}
|
|
save_scope_as = secondary_prisoner
|
|
}
|
|
}
|
|
|
|
# Decrement the number of relevant captured combatants, to exclude the primary prisoner from the count (for localization).
|
|
change_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
add = -1
|
|
}
|
|
|
|
# Send a message telling us about the prisoners we have captured.
|
|
send_interface_message = {
|
|
type = event_captured_combatants_good
|
|
title = combat_event.1002.pow_message.t
|
|
desc = {
|
|
first_valid = {
|
|
# Only one relevant prisoner.
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_captured_combatants = 0
|
|
}
|
|
desc = combat_event.1002.pow_message.desc.single
|
|
}
|
|
# Exactly two relevant prisoners.
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_captured_combatants = 1
|
|
}
|
|
desc = combat_event.1002.pow_message.desc.double
|
|
}
|
|
# Three or more relevant prisoners.
|
|
desc = combat_event.1002.pow_message.desc.multiple
|
|
}
|
|
desc = combat_event.1002.pow_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_prisoner
|
|
|
|
# Imprison all prisoners of war
|
|
every_in_list = {
|
|
list = relevant_prisoners_of_war
|
|
limit = { is_alive = yes }
|
|
|
|
save_temporary_scope_as = this_prisoner
|
|
scope:combat_winner = {
|
|
if = {
|
|
limit = { scope:this_prisoner = { is_imprisoned = no } }
|
|
imprison = {
|
|
target = scope:this_prisoner
|
|
type = house_arrest
|
|
}
|
|
}
|
|
}
|
|
hidden_effect = {
|
|
#######################
|
|
# If necessary, send toasts about the captured prisoner to the war leaders.
|
|
|
|
# Check if this prisoner is important enough (worth war score) that it is worth sending a toast about them in the first place.
|
|
if = {
|
|
limit = {
|
|
exists = scope:primary_combat_winner
|
|
exists = scope:primary_combat_loser
|
|
|
|
combat_event_1001_character_is_important_combatant = yes
|
|
}
|
|
save_scope_as = valuable_prisoner
|
|
|
|
# The imprisoner must be informed that they captured an important hostage.
|
|
scope:combat_winner = {
|
|
trigger_event = combat_event.1005
|
|
}
|
|
|
|
# The losing primary participant must be informed that they will/have lost warscore because a hostage was captured.
|
|
if = {
|
|
limit = {
|
|
# But not if they themselves are the prisoner! (they will get an event already upon being imprisoned).
|
|
scope:valuable_prisoner != scope:primary_combat_loser
|
|
}
|
|
scope:primary_combat_loser = {
|
|
trigger_event = combat_event.1006
|
|
}
|
|
}
|
|
|
|
# If the combat winner is different from the winning war leader, we also need to send a message to the war leader.
|
|
if = {
|
|
limit = {
|
|
scope:combat_winner != scope:primary_combat_winner
|
|
}
|
|
scope:primary_combat_winner = {
|
|
trigger_event = combat_event.1007
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if = {
|
|
limit = {
|
|
scope:combat_winner = { is_in_army = yes }
|
|
any_in_list = {
|
|
list = relevant_prisoners_of_war
|
|
is_alive = yes
|
|
is_imprisoned_by = scope:combat_winner
|
|
has_relation_rival = scope:combat_winner
|
|
}
|
|
}
|
|
every_in_list = {
|
|
list = relevant_prisoners_of_war
|
|
limit = {
|
|
is_alive = yes
|
|
is_imprisoned_by = scope:combat_winner
|
|
has_relation_rival = scope:combat_winner
|
|
}
|
|
add_to_list = captured_rivals
|
|
}
|
|
scope:combat_winner = { trigger_event = bp1_yearly.8060 }
|
|
}
|
|
}
|
|
|
|
remove_variable = num_other_relevant_captured_combatants
|
|
}
|
|
}
|
|
|
|
# Prisoner notification event for combat loser.
|
|
combat_event.1003 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
# Initialize the variable we will use to keep track of how many relevant prisoners there are.
|
|
set_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
value = 0
|
|
}
|
|
|
|
# Re-order the combatant list based on who we care about the most.
|
|
ordered_in_list = {
|
|
list = prisoners_of_war
|
|
max = 99
|
|
check_range_bounds = no
|
|
|
|
limit = {
|
|
this != root
|
|
}
|
|
|
|
order_by = {
|
|
value = captured_combatant_weights_for_root_participant
|
|
}
|
|
|
|
# Add the prisoners to a new list tailored to be more relevant to this character.
|
|
add_to_list = relevant_prisoners_of_war
|
|
root = {
|
|
change_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
add = 1
|
|
}
|
|
}
|
|
|
|
# The first two prisoners on this list (i.e., the most important people to us) should be have their individual scopes saved for use in portraits & localization.
|
|
if = {
|
|
limit = {
|
|
NOT = { exists = scope:primary_prisoner }
|
|
}
|
|
save_scope_as = primary_prisoner
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
NOT = { exists = scope:secondary_prisoner }
|
|
}
|
|
save_scope_as = secondary_prisoner
|
|
}
|
|
}
|
|
|
|
# Decrement the number of relevant captured combatants, to exclude the primary prisoner from the count (for localization).
|
|
change_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
add = -1
|
|
}
|
|
|
|
# Send a message telling us about the prisoners our enemy captured.
|
|
send_interface_message = {
|
|
type = event_captured_combatants_bad
|
|
title = combat_event.1003.pow_message.t
|
|
desc = {
|
|
first_valid = {
|
|
# Only one relevant prisoner.
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_captured_combatants = 0
|
|
}
|
|
desc = combat_event.1003.pow_message.desc.single
|
|
}
|
|
# Exactly two relevant prisoners.
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_captured_combatants = 1
|
|
}
|
|
desc = combat_event.1003.pow_message.desc.double
|
|
}
|
|
# Three or more relevant prisoners.
|
|
desc = combat_event.1003.pow_message.desc.multiple
|
|
}
|
|
desc = combat_event.1003.pow_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_prisoner
|
|
right_icon = scope:combat_winner
|
|
|
|
# Imprison all prisoners of war
|
|
every_in_list = {
|
|
list = relevant_prisoners_of_war
|
|
limit = { is_alive = yes }
|
|
|
|
save_temporary_scope_as = this_prisoner
|
|
show_as_tooltip = {
|
|
scope:combat_winner = {
|
|
imprison = {
|
|
target = scope:this_prisoner
|
|
type = house_arrest
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
remove_variable = num_other_relevant_captured_combatants
|
|
}
|
|
}
|
|
|
|
# Prisoner notification event for other relevant characters (sends a personalized notification to a player about characters of interest who were captured in battle.)
|
|
combat_event.1004 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
# Initialize the variable we will use to keep track of how many relevant prisoners there are.
|
|
set_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
value = 0
|
|
}
|
|
|
|
# Transform the list of all prisoners of war into a list of prisoners that we specifically care about.
|
|
ordered_in_list = {
|
|
list = prisoners_of_war
|
|
max = 99
|
|
check_range_bounds = no
|
|
|
|
limit = {
|
|
this != root # Do not send a message about ourselves.
|
|
combat_event_1001_character_is_relevant_to_target_trigger = { TARGET = root }
|
|
}
|
|
|
|
order_by = {
|
|
value = captured_combatant_weights_for_root_nonparticipant
|
|
}
|
|
|
|
# Add the prisoners to a new list tailored to be more relevant to this character.
|
|
add_to_list = relevant_prisoners_of_war
|
|
root = {
|
|
change_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
add = 1
|
|
}
|
|
}
|
|
|
|
# The first two prisoners on this list (i.e., the most important people to us) should be have their individual scopes saved for use in portraits & localization.
|
|
if = {
|
|
limit = {
|
|
NOT = { exists = scope:primary_prisoner }
|
|
}
|
|
save_scope_as = primary_prisoner
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
NOT = { exists = scope:secondary_prisoner }
|
|
}
|
|
save_scope_as = secondary_prisoner
|
|
}
|
|
}
|
|
|
|
# Decrement the number of relevant captured combatants, to exclude the primary prisoner from the count (for localization).
|
|
change_variable = {
|
|
name = num_other_relevant_captured_combatants
|
|
add = -1
|
|
}
|
|
|
|
# Send a message to the player informing them of the captured combatants.
|
|
send_interface_message = {
|
|
type = event_captured_combatants_neutral
|
|
title = combat_event.1004.pow_message.t
|
|
desc = {
|
|
first_valid = {
|
|
# Only one relevant prisoner.
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_captured_combatants = 0
|
|
}
|
|
desc = combat_event.1003.pow_message.desc.single
|
|
}
|
|
# Exactly two relevant prisoners.
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_captured_combatants = 1
|
|
}
|
|
desc = combat_event.1003.pow_message.desc.double
|
|
}
|
|
# Three or more relevant prisoners.
|
|
desc = combat_event.1003.pow_message.desc.multiple
|
|
}
|
|
desc = combat_event.1004.pow_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_prisoner
|
|
right_icon = scope:combat_winner
|
|
|
|
show_as_tooltip = {
|
|
every_in_list = {
|
|
list = relevant_prisoners_of_war
|
|
limit = { is_alive = yes }
|
|
|
|
save_temporary_scope_as = this_prisoner
|
|
scope:combat_winner = {
|
|
imprison = {
|
|
target = scope:this_prisoner
|
|
type = house_arrest
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
remove_variable = num_other_relevant_captured_combatants
|
|
}
|
|
}
|
|
|
|
# Sents a toast about a captured hostage to the winning commander.
|
|
combat_event.1005 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
if = {
|
|
limit = {
|
|
scope:valuable_prisoner = scope:primary_combat_loser
|
|
}
|
|
send_interface_toast = {
|
|
type = msg_character_captured_by_me
|
|
title = combat_event.1005.pow_toast.t
|
|
desc = combat_event.1005.pow_toast.desc.primary
|
|
left_icon = scope:combat_winner
|
|
right_icon = scope:valuable_prisoner
|
|
}
|
|
}
|
|
else = {
|
|
send_interface_toast = {
|
|
type = msg_character_captured_by_me
|
|
title = combat_event.1005.pow_toast.t
|
|
desc = combat_event.1005.pow_toast.desc
|
|
left_icon = scope:combat_winner
|
|
right_icon = scope:valuable_prisoner
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Sents a toast about a captured hostage to the losing primary participant.
|
|
combat_event.1006 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
send_interface_toast = {
|
|
type = msg_character_captured_by_other_side
|
|
title = combat_event.1006.pow_toast.t
|
|
desc = combat_event.1006.pow_toast.desc
|
|
left_icon = scope:combat_winner
|
|
right_icon = scope:valuable_prisoner
|
|
}
|
|
}
|
|
}
|
|
|
|
# Sents a toast about a captured hostage to the winning primary participant.
|
|
combat_event.1007 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
if = {
|
|
limit = {
|
|
scope:valuable_prisoner = scope:primary_combat_loser
|
|
}
|
|
send_interface_toast = {
|
|
type = msg_character_captured_by_me
|
|
title = combat_event.1007.pow_toast_primary.t
|
|
desc = combat_event.1007.pow_toast.desc.primary
|
|
left_icon = scope:combat_winner
|
|
right_icon = scope:valuable_prisoner
|
|
}
|
|
}
|
|
else = {
|
|
send_interface_toast = {
|
|
type = msg_character_captured_by_me
|
|
title = combat_event.1007.pow_toast.t
|
|
desc = combat_event.1007.pow_toast.desc
|
|
left_icon = scope:combat_winner
|
|
right_icon = scope:valuable_prisoner
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
scripted_effect generate_relevant_slain_combatants_list_effect = {
|
|
# Initialize the variable we will use to keep track of how many relevant casualties there are.
|
|
set_variable = {
|
|
name = num_other_relevant_slain_combatants
|
|
value = 0
|
|
}
|
|
|
|
# Re-order the combatant list based on who we care about the most.
|
|
ordered_in_list = {
|
|
list = $LIST_OF_SLAIN_COMBATANTS$
|
|
max = 99
|
|
check_range_bounds = no
|
|
|
|
limit = { # We only care about people on the enemy side who matter to us, not generic knights.
|
|
this != root # Do not send a message about ourselves.
|
|
trigger_if = {
|
|
limit = {
|
|
$LIST_ALL_CHARACTERS$ = no
|
|
}
|
|
# Must be relevant to root in some way.
|
|
OR = {
|
|
AND = {
|
|
exists = scope:combat_war
|
|
root = { is_attacker_in_war = scope:combat_war }
|
|
this = scope:combat_war.primary_defender
|
|
}
|
|
AND = {
|
|
exists = scope:combat_war
|
|
root = { is_defender_in_war = scope:combat_war }
|
|
this = scope:combat_war.primary_attacker
|
|
}
|
|
combat_event_1001_character_is_relevant_to_target_trigger = { TARGET = root }
|
|
}
|
|
}
|
|
}
|
|
|
|
order_by = {
|
|
value = 0
|
|
if = {
|
|
limit = {
|
|
OR = {
|
|
AND = {
|
|
exists = scope:combat_war
|
|
root = { is_attacker_in_war = scope:combat_war }
|
|
this = scope:combat_war.primary_defender
|
|
}
|
|
AND = {
|
|
exists = scope:combat_war
|
|
root = { is_defender_in_war = scope:combat_war }
|
|
this = scope:combat_war.primary_attacker
|
|
}
|
|
}
|
|
}
|
|
add = 1000
|
|
}
|
|
add = slain_combatant_weights_for_root_participant
|
|
}
|
|
|
|
# Add the casualties to a new list tailored to be more relevant to this character.
|
|
add_to_list = relevant_slain_combatants
|
|
root = {
|
|
change_variable = {
|
|
name = num_other_relevant_slain_combatants
|
|
add = 1
|
|
}
|
|
}
|
|
|
|
# The first two casualties on this list (i.e., the most important people to us) should be have their individual scopes saved for use in portraits & localization.
|
|
if = {
|
|
limit = {
|
|
NOT = { exists = scope:primary_deceased }
|
|
}
|
|
save_scope_as = primary_deceased
|
|
|
|
# Decrement the number of relevant slain combatants, to exclude the primary deceased from the count (for localization).
|
|
root = {
|
|
change_variable = {
|
|
name = num_other_relevant_slain_combatants
|
|
add = -1
|
|
}
|
|
}
|
|
}
|
|
else_if = {
|
|
limit = {
|
|
NOT = { exists = scope:secondary_deceased }
|
|
}
|
|
save_scope_as = secondary_deceased
|
|
}
|
|
}
|
|
}
|
|
|
|
scripted_effect clear_relevant_slain_combatants_list_effect = {
|
|
every_in_list = {
|
|
list = relevant_slain_combatants
|
|
remove_from_list = relevant_slain_combatants
|
|
}
|
|
remove_variable = num_other_relevant_slain_combatants
|
|
clear_saved_scope = primary_deceased
|
|
clear_saved_scope = secondary_deceased
|
|
}
|
|
|
|
#####################
|
|
# Slain Combatants
|
|
|
|
# Casualty notification event for combat winner.
|
|
combat_event.1012 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
# Generate a list of relevant slain characters on the enemy's side.
|
|
generate_relevant_slain_combatants_list_effect = {
|
|
LIST_OF_SLAIN_COMBATANTS = slain_combatants
|
|
LIST_ALL_CHARACTERS = no
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = relevant_slain_combatants
|
|
}
|
|
}
|
|
# Send a message telling us about the casualties we inflicted after the battle
|
|
send_interface_message = {
|
|
type = event_slain_combatants_good
|
|
title = combat_event.1012.slain_message.t
|
|
desc = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 0 }
|
|
desc = combat_event.1012.slain_message.desc.single
|
|
}
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 1 }
|
|
desc = combat_event.1012.slain_message.desc.double
|
|
}
|
|
desc = combat_event.1012.slain_message.desc.multiple
|
|
}
|
|
desc = combat_event.1012.slain_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_deceased
|
|
|
|
# Show all slain combatants.
|
|
every_in_list = {
|
|
list = relevant_slain_combatants
|
|
|
|
show_as_tooltip = {
|
|
death = {
|
|
death_reason = death_battle
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
clear_relevant_slain_combatants_list_effect = yes
|
|
|
|
# Repeat the above, but for casualties on our own side.
|
|
generate_relevant_slain_combatants_list_effect = {
|
|
LIST_OF_SLAIN_COMBATANTS = victorious_slain_combatants
|
|
LIST_ALL_CHARACTERS = yes
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = relevant_slain_combatants
|
|
}
|
|
}
|
|
# Send a message telling us about the casualties we inflicted after the battle
|
|
send_interface_message = {
|
|
type = event_slain_combatants_bad
|
|
title = combat_event.1013.slain_message.t
|
|
desc = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 0 }
|
|
desc = combat_event.1013.slain_message.desc.single
|
|
}
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 1 }
|
|
desc = combat_event.1013.slain_message.desc.double
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.multiple
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_deceased
|
|
|
|
# Show all slain combatants.
|
|
every_in_list = {
|
|
list = relevant_slain_combatants
|
|
|
|
show_as_tooltip = {
|
|
death = {
|
|
death_reason = death_battle
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
clear_relevant_slain_combatants_list_effect = yes
|
|
}
|
|
}
|
|
|
|
# Casualty notification event for combat loser.
|
|
combat_event.1013 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
# Generate a list of relevant slain characters on the enemy's side.
|
|
generate_relevant_slain_combatants_list_effect = {
|
|
LIST_OF_SLAIN_COMBATANTS = victorious_slain_combatants
|
|
LIST_ALL_CHARACTERS = no
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = relevant_slain_combatants
|
|
}
|
|
}
|
|
# Send a message telling us about the casualties we inflicted after the battle
|
|
send_interface_message = {
|
|
type = event_slain_combatants_good
|
|
title = combat_event.1012.slain_message.t
|
|
desc = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 0 }
|
|
desc = combat_event.1012.slain_message.desc.single
|
|
}
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 1 }
|
|
desc = combat_event.1012.slain_message.desc.double
|
|
}
|
|
desc = combat_event.1012.slain_message.desc.multiple
|
|
}
|
|
desc = combat_event.1012.slain_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_deceased
|
|
|
|
# Show all slain combatants.
|
|
every_in_list = {
|
|
list = relevant_slain_combatants
|
|
|
|
show_as_tooltip = {
|
|
death = {
|
|
death_reason = death_battle
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
clear_relevant_slain_combatants_list_effect = yes
|
|
|
|
# Repeat the above, but for casualties on our own side.
|
|
generate_relevant_slain_combatants_list_effect = {
|
|
LIST_OF_SLAIN_COMBATANTS = slain_combatants
|
|
LIST_ALL_CHARACTERS = yes
|
|
}
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = relevant_slain_combatants
|
|
}
|
|
}
|
|
# Send a message telling us about the casualties we inflicted after the battle
|
|
send_interface_message = {
|
|
type = event_slain_combatants_bad
|
|
title = combat_event.1013.slain_message.t
|
|
desc = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 0 }
|
|
desc = combat_event.1013.slain_message.desc.single
|
|
}
|
|
triggered_desc = {
|
|
trigger = { var:num_other_relevant_slain_combatants = 1 }
|
|
desc = combat_event.1013.slain_message.desc.double
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.multiple
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_deceased
|
|
|
|
# Show all slain combatants.
|
|
every_in_list = {
|
|
list = relevant_slain_combatants
|
|
|
|
show_as_tooltip = {
|
|
death = {
|
|
death_reason = death_battle
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
clear_relevant_slain_combatants_list_effect = yes
|
|
}
|
|
}
|
|
|
|
# Casualty notification event for other relevant characters (sends a personalized notification to a player about characters of interest who were captured in battle.)
|
|
combat_event.1014 = {
|
|
type = character_event
|
|
hidden = yes
|
|
|
|
immediate = {
|
|
every_in_list = {
|
|
list = slain_combatants
|
|
add_to_list = all_slain_combatants
|
|
}
|
|
every_in_list = {
|
|
list = victorious_slain_combatants
|
|
add_to_list = all_slain_combatants
|
|
}
|
|
|
|
# Generate a list of all relevant slain combatants on both sides.
|
|
generate_relevant_slain_combatants_list_effect = {
|
|
LIST_OF_SLAIN_COMBATANTS = all_slain_combatants
|
|
LIST_ALL_CHARACTERS = no
|
|
}
|
|
|
|
if = {
|
|
limit = {
|
|
any_in_list = {
|
|
list = relevant_slain_combatants
|
|
}
|
|
}
|
|
# Send a message to the player informing them of the slain combatants.
|
|
send_interface_message = {
|
|
type = event_slain_combatants_neutral
|
|
title = combat_event.1014.slain_message.t
|
|
desc = {
|
|
first_valid = {
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_slain_combatants = 0
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.single
|
|
}
|
|
triggered_desc = {
|
|
trigger = {
|
|
var:num_other_relevant_slain_combatants = 1
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.double
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.multiple
|
|
}
|
|
desc = combat_event.1013.slain_message.desc.end
|
|
}
|
|
tooltip = event_message_effect
|
|
left_icon = scope:primary_deceased
|
|
|
|
# Show all slain combatants.
|
|
show_as_tooltip = {
|
|
every_in_list = {
|
|
list = relevant_slain_combatants
|
|
|
|
death = {
|
|
death_reason = death_battle
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
clear_relevant_slain_combatants_list_effect = yes
|
|
}
|
|
}
|
|
|
|
# Become known as a Gajapati if you have the prerequisites
|
|
combat_event.2001 = {
|
|
hidden = yes
|
|
scope = combat_side
|
|
|
|
trigger = {
|
|
has_maa_of_type = war_elephant
|
|
side_commander ?= {
|
|
is_alive = yes
|
|
culture = {
|
|
has_cultural_parameter = elephant_bonuses_for_rank_4_education
|
|
}
|
|
OR = {
|
|
has_trait = education_diplomacy_4
|
|
has_trait = education_stewardship_4
|
|
has_trait = education_martial_4
|
|
has_trait = education_learning_4
|
|
has_trait = education_diplomacy_5
|
|
has_trait = education_stewardship_5
|
|
has_trait = education_martial_5
|
|
has_trait = education_learning_5
|
|
}
|
|
NOT = {
|
|
has_nickname = nick_gajapati
|
|
}
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
random = {
|
|
chance = 15
|
|
side_commander = { set_nickname_effect = { NICKNAME = nick_gajapati } }
|
|
}
|
|
}
|
|
}
|
|
|
|
#####################
|
|
# Accolade Glory Changes
|
|
|
|
# Battle Won: glory goes up.
|
|
combat_event.2101 = {
|
|
hidden = yes
|
|
scope = combat_side
|
|
|
|
trigger = {
|
|
OR = {
|
|
any_side_knight = {
|
|
is_acclaimed = yes
|
|
}
|
|
any_side_commander = {
|
|
is_acclaimed = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
every_side_knight = {
|
|
limit = {
|
|
is_acclaimed = yes
|
|
}
|
|
accolade = { add_glory = minor_glory_gain }
|
|
}
|
|
every_side_commander = {
|
|
limit = {
|
|
is_acclaimed = yes
|
|
}
|
|
accolade = { add_glory = minor_glory_gain }
|
|
}
|
|
}
|
|
}
|
|
|
|
# Battle Lost: glory goes down [sad trombone noises].
|
|
combat_event.2111 = {
|
|
hidden = yes
|
|
scope = combat_side
|
|
|
|
trigger = {
|
|
OR = {
|
|
any_side_knight = {
|
|
is_acclaimed = yes
|
|
}
|
|
any_side_commander = {
|
|
is_acclaimed = yes
|
|
}
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
every_side_knight = {
|
|
limit = {
|
|
is_acclaimed = yes
|
|
}
|
|
accolade = { add_glory = minimal_glory_loss }
|
|
}
|
|
every_side_commander = {
|
|
limit = {
|
|
is_acclaimed = yes
|
|
}
|
|
accolade = { add_glory = minimal_glory_loss }
|
|
}
|
|
}
|
|
}
|
|
#
|
|
######################
|
|
## Hereward the Wake
|
|
#
|
|
## You beat a Norman! Gain XP.
|
|
#combat_event.2200 = {
|
|
# hidden = yes
|
|
# scope = combat_side
|
|
#
|
|
# trigger = {
|
|
# exists = side_commander
|
|
# exists = enemy_side.side_commander
|
|
# enemy_side.side_commander = {
|
|
# has_culture = culture:norman
|
|
# }
|
|
# side_commander = {
|
|
# has_trait = the_wake
|
|
# }
|
|
# }
|
|
#
|
|
# immediate = {
|
|
# if = { #Hereward should always have the trait, but just in case
|
|
# limit = {
|
|
# side_commander = {
|
|
# has_trait = the_wake
|
|
# }
|
|
# }
|
|
# side_commander = {
|
|
# add_trait_xp = {
|
|
# trait = the_wake
|
|
# value = { 10 15 }
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
#}
|
|
|
|
##############
|
|
# Battle PoI #
|
|
##############
|
|
combat_event.3000 = {
|
|
hidden = yes
|
|
scope = combat_side
|
|
|
|
trigger = {
|
|
# Check to ensure all needed scopes are valid
|
|
exists = combat.location
|
|
exists = side_primary_participant
|
|
exists = enemy_side.side_primary_participant
|
|
|
|
combat.location = { # Check if the region has gotten one the last 25 years already
|
|
switch = {
|
|
trigger = geographical_region
|
|
graphical_western = { battle_poi_region_trigger = { REGION = graphical_western } }
|
|
graphical_mena = { battle_poi_region_trigger = { REGION = graphical_mena } }
|
|
graphical_india = { battle_poi_region_trigger = { REGION = graphical_india } }
|
|
graphical_mediterranean = { battle_poi_region_trigger = { REGION = graphical_mediterranean } }
|
|
graphical_steppe = { battle_poi_region_trigger = { REGION = graphical_steppe } }
|
|
}
|
|
NOR = { # Check that it doesn't already have any of the key data variables on the province, or a historical battle
|
|
has_travel_point_of_interest = poi_battles_historical
|
|
has_variable = battle_poi_winner
|
|
has_variable = battle_poi_loser
|
|
has_variable = battle_poi_date_day
|
|
has_variable = battle_poi_date_month
|
|
has_variable = battle_poi_date_year
|
|
}
|
|
}
|
|
|
|
# Check if this battle was important enough
|
|
calc_true_if = {
|
|
amount >= 3
|
|
any_in_list = {
|
|
list = slain_combatants
|
|
OR = {
|
|
this = root.enemy_side.side_primary_participant
|
|
is_heir_of = root.enemy_side.side_primary_participant
|
|
is_consort_of = root.enemy_side.side_primary_participant
|
|
}
|
|
}
|
|
any_in_list = {
|
|
list = prisoners_of_war
|
|
OR = {
|
|
this = root.enemy_side.side_primary_participant
|
|
is_heir_of = root.enemy_side.side_primary_participant
|
|
is_consort_of = root.enemy_side.side_primary_participant
|
|
}
|
|
}
|
|
troops_ratio <= 0.5
|
|
num_enemies_killed >= battle_poi_number_value # Scaling the later it gets, starts with 3000 before 1000 and then multiplies by 2 in 1000, 3 in 1100, etc
|
|
AND = {
|
|
percent_enemies_killed >= 65
|
|
combat = {
|
|
num_total_troops >= {
|
|
add = battle_poi_number_value
|
|
multiply = 2
|
|
}
|
|
}
|
|
}
|
|
combat = {
|
|
num_total_troops >= {
|
|
add = battle_poi_number_value
|
|
multiply = 3
|
|
}
|
|
}
|
|
combat = { warscore_value >= 15 }
|
|
side_primary_participant = { is_ai = no }
|
|
enemy_side.side_primary_participant = { is_ai = no }
|
|
}
|
|
}
|
|
|
|
immediate = {
|
|
combat.location = {
|
|
save_scope_as = combat_location
|
|
|
|
switch = { ### Setting a cooldown for the region, so we don't get too many
|
|
trigger = geographical_region
|
|
graphical_western = { battle_poi_region_cooldown_effect = { REGION = graphical_western } }
|
|
graphical_mena = { battle_poi_region_cooldown_effect = { REGION = graphical_mena } }
|
|
graphical_india = { battle_poi_region_cooldown_effect = { REGION = graphical_india } }
|
|
graphical_mediterranean = { battle_poi_region_cooldown_effect = { REGION = graphical_mediterranean } }
|
|
graphical_steppe = { battle_poi_region_cooldown_effect = { REGION = graphical_steppe } }
|
|
}
|
|
|
|
### Key data
|
|
add_to_global_variable_list = { # Add to list so it can be found by the PoI
|
|
name = battle_poi_list
|
|
target = this
|
|
}
|
|
set_variable = { # Winning Commander
|
|
name = battle_poi_winner
|
|
value = root.side_primary_participant
|
|
}
|
|
root.side_primary_participant = {
|
|
if = {
|
|
limit = {
|
|
has_dynasty = no
|
|
}
|
|
make_unprunable = yes
|
|
}
|
|
}
|
|
set_variable = { # Losing Commander
|
|
name = battle_poi_loser
|
|
value = root.enemy_side.side_primary_participant
|
|
}
|
|
root.enemy_side.side_primary_participant = {
|
|
if = {
|
|
limit = {
|
|
has_dynasty = no
|
|
}
|
|
make_unprunable = yes
|
|
}
|
|
}
|
|
set_variable = { # Day
|
|
name = battle_poi_date_day
|
|
value = current_day
|
|
}
|
|
set_variable = { # Month
|
|
name = battle_poi_date_month
|
|
value = current_month
|
|
}
|
|
set_variable = { # Year
|
|
name = battle_poi_date_year
|
|
value = current_year
|
|
}
|
|
random_list = { # Set a randomized variable, so we don't need the same desc every time
|
|
10 = { battle_poi_randomizer_effect = { NAME = 1 } }
|
|
10 = { battle_poi_randomizer_effect = { NAME = 2 } }
|
|
10 = { battle_poi_randomizer_effect = { NAME = 3 } }
|
|
}
|
|
### Extra (optional) data
|
|
if = { # Attacker
|
|
limit = {
|
|
root = { is_combat_side_attacker = yes }
|
|
}
|
|
set_variable = { name = battle_poi_attacker }
|
|
}
|
|
else = { # Defender
|
|
set_variable = { name = battle_poi_defender }
|
|
}
|
|
set_variable = { # Slain enemies (Percentage)
|
|
name = battle_poi_slain
|
|
value = root.percent_enemies_killed
|
|
}
|
|
if = { # Slay the opposing Commander
|
|
limit = {
|
|
any_in_list = {
|
|
list = slain_combatants
|
|
this = root.enemy_side.side_primary_participant
|
|
}
|
|
}
|
|
set_variable = { name = battle_poi_enemy_commander_slain }
|
|
}
|
|
if = { # Imprison the opposing Commander
|
|
limit = {
|
|
any_in_list = {
|
|
list = prisoners_of_war
|
|
this = root.enemy_side.side_primary_participant
|
|
}
|
|
}
|
|
set_variable = { name = battle_poi_enemy_commander_imprisoned }
|
|
}
|
|
root = {
|
|
random_side_knight = { # Check for particularly brave knight
|
|
limit = {
|
|
OR = {
|
|
prowess >= 20
|
|
has_trait = brave
|
|
has_trait = lifestyle_blademaster
|
|
has_trait = varangian
|
|
has_trait = berserker
|
|
}
|
|
}
|
|
scope:combat_location = {
|
|
set_variable = {
|
|
name = battle_poi_brave_knight
|
|
value = prev
|
|
}
|
|
}
|
|
}
|
|
side_primary_participant.commanding_army = { # Find a Unit Type that was in the battle
|
|
random_army_maa_regiment = {
|
|
limit = {
|
|
NOR = {
|
|
is_unit_type = siege_weapon
|
|
is_unit_type = skirmishers
|
|
}
|
|
}
|
|
switch = {
|
|
trigger = is_unit_type
|
|
archers = { battle_poi_maa_regiment_effect = { NAME = archers } }
|
|
light_cavalry = { battle_poi_maa_regiment_effect = { NAME = light_cavalry } }
|
|
archer_cavalry = { battle_poi_maa_regiment_effect = { NAME = light_cavalry } }
|
|
pikemen = { battle_poi_maa_regiment_effect = { NAME = pikemen } }
|
|
heavy_infantry = { battle_poi_maa_regiment_effect = { NAME = heavy_infantry } }
|
|
heavy_cavalry = { battle_poi_maa_regiment_effect = { NAME = heavy_cavalry } }
|
|
elephant_cavalry = { battle_poi_maa_regiment_effect = { NAME = heavy_cavalry } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|