N3OW/common/scripted_effects/tgp_debate_scripted_effects.txt

700 lines
23 KiB
Text
Raw Normal View History

2025-10-30 12:41:45 +00:00
# Find debate target
set_debate_target_effect = {
save_scope_as = debate_contender
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_favor
}
}
}
#Save current empowered movement.
situation:dynastic_cycle ?= {
random_participant_group = {
limit = { exists = var:movement_favored }
save_scope_as = current_empowered_movement
}
}
if = { # Grab the movement leader if available
limit = {
scope:current_empowered_movement = {
var:movement_leader = { involved_activity = scope:activity }
}
}
scope:current_empowered_movement = {
var:movement_leader = { save_scope_as = challenged_movement_leader }
}
}
else_if = { # Else grab a proxy
limit = {
scope:activity = {
any_attending_character = {
top_participant_group:dynastic_cycle ?= scope:current_empowered_movement
}
}
}
scope:activity = {
ordered_attending_character = {
order_by = movement_power_character_value
check_range_bounds = no
limit = {
top_participant_group:dynastic_cycle ?= scope:current_empowered_movement
}
save_scope_as = challenged_movement_leader
}
}
}
else_if = { # Else grab a character from _another_ movement
limit = {
scope:activity = {
any_attending_character = {
NOR = {
top_participant_group:dynastic_cycle ?= { participant_group_type = undecided_movement }
top_participant_group:dynastic_cycle ?= scope:host.top_participant_group:dynastic_cycle
}
}
}
}
scope:activity = {
ordered_attending_character = {
order_by = movement_power_character_value
check_range_bounds = no
limit = {
NOR = {
top_participant_group:dynastic_cycle ?= { participant_group_type = undecided_movement }
top_participant_group:dynastic_cycle ?= scope:host.top_participant_group:dynastic_cycle
}
}
save_scope_as = challenged_movement_leader
}
}
}
else = { # Invalidate activity
trigger_event = activity_system.0552
}
}
else_if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_leadership
}
}
}
scope:activity.special_guest:movement_leader ?= { save_scope_as = challenged_movement_leader }
}
scope:activity = {
set_variable = {
name = challenged_movement_leader
value = scope:challenged_movement_leader
}
set_variable = {
name = debate_contender
value = scope:debate_contender
}
}
}
# > 0 contender won and will become new leader
# <= 0 movement leader won and defended position
debate_determine_outcome_effect = {
random_list = {
10 = { # Contender is winner
modifier = {
add = 240
scope:activity.debate_outcome_value = 3
}
modifier = {
add = 70
scope:activity.debate_outcome_value = 2
}
modifier = {
add = 10
scope:activity.debate_outcome_value = 1
}
modifier = { # If opponents score is TOO high, you cannot win
factor = 0
scope:activity.debate_outcome_value <= -3
}
scope:activity.var:debate_contender = {
save_scope_as = debate_winner
}
scope:activity.var:challenged_movement_leader = {
save_scope_as = debate_loser
}
if = {
limit = {
scope:activity.debate_outcome_value < 0
}
save_scope_as = debate_unexpected_win
}
}
10 = { # challenged leader is winner
modifier = {
add = 240
scope:activity.debate_outcome_value = -3
}
modifier = {
add = 70
scope:activity.debate_outcome_value = -2
}
modifier = {
add = 10
scope:activity.debate_outcome_value = -1
}
modifier = { # If opponents score is TOO high, you cannot win
factor = 0
scope:activity.debate_outcome_value >= 3
}
scope:activity.var:debate_contender = {
save_scope_as = debate_loser
}
scope:activity.var:challenged_movement_leader = {
save_scope_as = debate_winner
}
if = {
limit = {
scope:activity.debate_outcome_value > 0
}
save_scope_as = debate_unexpected_win
}
}
}
# Apply effects
# Seize movement leadership success
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_leadership
}
}
}
# Set variables for activity conclusion desc - note that for the favor special option, these are set in the hegemon's follow up event.
scope:activity = {
set_variable = {
name = debate_winner
value = scope:debate_winner
}
}
scope:activity = {
set_variable = {
name = debate_loser
value = scope:debate_loser
}
}
# Record it
involved_activity = {
if = {
limit = {
scope:debate_winner = {
is_any_movement_leader = no
}
}
add_activity_log_entry = {
key = debate_become_movement_leader_reward
score = 80
tags = { completed }
character = scope:debate_winner
location = scope:debate_winner.location
}
}
else = {
add_activity_log_entry = {
key = debate_remain_movement_leader_reward
score = 80
tags = { completed }
character = scope:debate_winner
location = scope:debate_winner.location
}
}
}
}
}
debate_disburse_activity_ai_guest_rewards = {
if = {
limit = {
NOT = { exists = var:tgp_debate_success_score }
}
set_variable = {
name = tgp_debate_success_score
value = tgp_debate_success_score_value
}
}
if = {
limit = {
has_activity_intent = debate_increase_movement_power_intent
}
top_participant_group:dynastic_cycle ?= {
save_scope_as = my_movement
}
random = {
chance = {
value = 25
if = {
limit = { var:tgp_debate_success_score >= 100 }
add = 75
}
else_if = {
limit = { var:tgp_debate_success_score >= 75 }
add = 50
}
else_if = {
limit = { var:tgp_debate_success_score >= 50 }
add = 25
}
}
if = {
limit = { var:tgp_debate_success_score >= 100 }
change_influence = major_influence_gain
scope:my_movement = {
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_major_value
}
}
}
else_if = {
limit = { var:tgp_debate_success_score >= 75 }
change_influence = medium_influence_gain
scope:my_movement = {
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_medium_value
}
}
}
else = {
change_influence = minor_influence_gain
scope:my_movement = {
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_minor_value
}
}
}
}
}
else = {
save_scope_as = ai_guest
if = {
limit = {
NOT = {
any_relation = {
type = elder
is_ai = no
}
}
}
random = {
chance = {
value = 25
}
scope:activity = {
random_attending_character = {
limit = {
is_ai = yes
merit > scope:ai_guest.merit
num_of_relation_disciple < disciples_limit_value
NOR = {
has_relation_elder = scope:ai_guest
has_relation_disciple = scope:ai_guest
}
# Not busy with their own things.
this != scope:host
this != scope:activity.var:challenged_movement_leader
}
weight = {
base = 100
modifier = {
any_relation = {
type = disciple
count > 0
}
# even out the distribution of disciples
add = {
every_relation = {
type = disciple
add = -5
}
}
}
}
save_scope_as = elder
set_elder_relation_effect = {
ELDER = scope:elder
DISCIPLE = scope:ai_guest
MERIT = minor_merit_gain
}
}
}
}
}
}
}
debate_host_rewards_effect = {
if = {
# Host won debate
limit = {
this = scope:activity.var:debate_winner
}
# Activity is imperial debate (determines favored movement)
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_favor
}
}
}
root.top_participant_group:dynastic_cycle ?= {
# Make favored movement
save_scope_as = my_movement
}
# We raise our own Movement Power
custom_tooltip = event_increase_movement_power_major_effect_tooltip
scope:my_movement = {
make_movement_favored_effect = yes
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_major_value
}
switch = {
trigger = participant_group_type
pro_hegemon_movement = {
if = {
limit = {
situation:dynastic_cycle = {
situation_top_has_catalyst = catalyst_movement_gained_power_pro_hegemon
}
}
trigger_situation_catalyst = catalyst_movement_gained_power_pro_hegemon
2025-10-30 12:41:45 +00:00
}
}
advancement_movement = {
if = {
limit = {
situation:dynastic_cycle = {
situation_top_has_catalyst = catalyst_movement_gained_power_advancement
}
}
trigger_situation_catalyst = catalyst_movement_gained_power_advancement
2025-10-30 12:41:45 +00:00
}
}
expansion_movement = {
if = {
limit = {
situation:dynastic_cycle = {
situation_top_has_catalyst = catalyst_movement_gained_power_expansion
}
}
trigger_situation_catalyst = catalyst_movement_gained_power_expansion
2025-10-30 12:41:45 +00:00
}
}
conservative_movement = {
if = {
limit = {
situation:dynastic_cycle = {
situation_top_has_catalyst = catalyst_movement_gained_power_conservative
}
}
trigger_situation_catalyst = catalyst_movement_gained_power_conservative
2025-10-30 12:41:45 +00:00
}
}
}
}
}
else = {
make_movement_leader_effect = yes
}
}
# Then dole out secondary rewards
if = {
# We have the intent to gain disciples and gained at least one.
limit = { has_variable_list = debate_disciples }
if = {
# Code math starts at 0
limit = {
variable_list_size = {
name = debate_disciples
value = 1
}
num_of_relation_disciple >= 1
}
ordered_in_list = {
variable = debate_disciples
order_by = learning
save_scope_as = disciple_1
}
}
if = {
limit = {
variable_list_size = {
name = debate_disciples
value = 2
}
num_of_relation_disciple >= 2
}
ordered_in_list = {
variable = debate_disciples
order_by = learning
position = 1
2025-10-30 12:41:45 +00:00
save_scope_as = disciple_2
}
}
if = {
limit = {
variable_list_size = {
name = debate_disciples
value = 3
}
num_of_relation_disciple >= 3
}
ordered_in_list = {
variable = debate_disciples
order_by = learning
position = 2
save_scope_as = disciple_3
}
}
if = {
limit = {
exists = scope:disciple_3
}
custom_tooltip = gained_many_disciples
}
else_if = {
limit = {
exists = scope:disciple_2
}
custom_tooltip = gained_few_disciples
}
else_if = {
limit = {
exists = scope:disciple_1
}
custom_tooltip = gained_one_disciple
}
}
change_influence = {
# Modest reward as a base - you're the host after all!
value = major_influence_value
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_favor
}
}
this = scope:activity.var:debate_winner
}
add = monumental_influence_value
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_leadership
}
}
this = scope:activity.var:debate_winner
}
add = major_influence_value
}
}
add_prestige = {
# Modest reward as a base - you're the host after all!
value = major_prestige_value
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_favor
}
}
this = scope:activity.var:debate_winner
}
add = monumental_prestige_value
}
if = {
limit = {
scope:activity = {
has_activity_option = {
category = special_type
option = debate_type_leadership
}
}
this = scope:activity.var:debate_winner
}
add = major_prestige_value
}
}
}
debate_disburse_activity_host_rewards = {
# Regardless of outcome for intents, you should receive some influence and prestige from having hosted debate.
if = {
limit = { this = scope:host }
# Record it
involved_activity = {
add_activity_log_entry = {
key = debate_host_rewards
score = 80
tags = { completed }
show_in_conclusion = yes
character = scope:host
location = scope:host.location
scope:host = { debate_host_rewards_effect = yes }
}
}
}
else = {
show_as_tooltip = { debate_host_rewards_effect = yes }
}
}
debate_guest_rewards = {
if = {
limit = {
this = scope:activity.var:challenged_movement_leader
this = scope:activity.var:debate_winner
}
add_prestige = major_prestige_value
change_influence = major_influence_value
}
if = {
limit = {
has_activity_intent = debate_gain_elder_intent
}
if = {
limit = {
has_variable = new_elder
}
custom_tooltip = gained_new_elder_tt
}
change_influence = debate_guest_influence_reward_value
}
if = {
limit = {
has_activity_intent = debate_increase_movement_power_intent
exists = var:tgp_debate_success_score
}
top_participant_group:dynastic_cycle ?= {
save_scope_as = my_movement
}
random = {
chance = {
value = 25
if = {
limit = { var:tgp_debate_success_score >= 100 }
add = 75
}
else_if = {
limit = { var:tgp_debate_success_score >= 75 }
add = 50
}
else_if = {
limit = { var:tgp_debate_success_score >= 50 }
add = 25
}
}
if = {
limit = { var:tgp_debate_success_score >= 100 }
change_influence = major_influence_gain
scope:my_movement = {
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_major_value
}
}
}
else_if = {
limit = { var:tgp_debate_success_score >= 75 }
change_influence = medium_influence_gain
scope:my_movement = {
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_medium_value
}
}
}
else = {
change_influence = minor_influence_gain
scope:my_movement = {
event_change_movement_power_effect = {
VALUE = event_increase_movement_power_minor_value
}
}
}
}
change_influence = debate_guest_influence_reward_value
}
add_trait_xp = {
trait = confucian_education
value = {
value = lifestyle_confucian_education_xp_gain_minor_value
#High Score
if = {
limit = {
has_variable = tgp_debate_success_score
var:tgp_debate_success_score >= 75
}
multiply = 3
}
#Good Score
else_if = {
limit = {
has_variable = tgp_debate_success_score
var:tgp_debate_success_score < 75
var:tgp_debate_success_score >= 50
}
multiply = 1.5
}
#Poor Score
else_if = {
limit = {
has_variable = tgp_debate_success_score
var:tgp_debate_success_score < 50
}
multiply = 0.8
}
}
}
}
debate_disburse_activity_guest_rewards = {
save_scope_as = guest
involved_activity = {
add_activity_log_entry = {
key = debate_guest_rewards
score = 80
tags = { completed }
show_in_conclusion = yes
character = scope:guest
location = scope:guest.location
scope:guest = { debate_guest_rewards = yes }
}
}
}
debate_cleanup_effect = {
if = {
limit = {
has_variable = tgp_debate_success_score
}
set_variable = {
name = tgp_debate_success_score
value = var:tgp_debate_success_score
days = 60
}
}
# Debates
remove_variable ?= debate_selected_tactic
remove_variable ?= debate_crowd_sentiment
}