N3OW/common/script_values/04_ep2_tournament_values.txt

2522 lines
48 KiB
Text
Raw Normal View History

2024-11-16 19:09:11 +00:00
######################
# TOURNAMENT STUFF
######################
# Contest Aptitude Values
contest_aptitude_fetch_value = {
value = 0
if = {
limit = { exists = var:contest_aptitude }
add = var:contest_aptitude
}
min = 1
}
contest_aptitude_fetch_half_value = {
value = contest_aptitude_fetch_value
divide = 2
min = 1
}
progress_to_victory_fetch_value = {
value = 0
if = {
limit = { exists = var:contest_aptitude }
add = var:contest_aptitude
}
min = 1
}
progress_to_victory_fetch_half_value = {
value = progress_to_victory_fetch_value
divide = 2
min = 1
}
progress_to_victory_fetch_team_a_half_value = {
value = var:team_a_ptv
divide = 2
min = 1
}
progress_to_victory_fetch_team_b_half_value = {
value = var:team_b_ptv
divide = 2
min = 1
}
progress_to_victory_total_ffa_current_active_phase = {
value = 0
involved_activity = {
every_guest_subset_current_phase = {
name = qualified
limit = { exists = var:progress_to_victory }
add = var:progress_to_victory
}
}
min = 1
}
progress_to_victory_own_team_ptv_value = {
value = 0
if = {
limit = {
is_in_guest_subset = { name = team_alpha }
}
add = involved_activity.var:team_a_ptv
}
else_if = {
limit = {
is_in_guest_subset = { name = team_beta }
}
add = involved_activity.var:team_b_ptv
}
}
progress_to_victory_other_team_ptv_value = {
value = 0
if = {
limit = {
is_in_guest_subset = { name = team_alpha }
}
add = involved_activity.var:team_b_ptv
}
else_if = {
limit = {
is_in_guest_subset = { name = team_beta }
}
add = involved_activity.var:team_a_ptv
}
}
progress_to_victory_total_team_current_active_phase = {
value = 0
if = {
limit = {
exists = involved_activity.var:team_a_ptv
exists = involved_activity.var:team_b_ptv
}
add = involved_activity.var:team_a_ptv
add = involved_activity.var:team_b_ptv
}
min = 1
}
progress_to_victory_versus_match_value = {
if = {
limit = {
involved_activity = { has_current_phase = tournament_phase_joust }
}
# Compare with correct rounds match
if = {
limit = { involved_activity.var:contest_versus_progress ?= 2 }
if = {
limit = { is_in_guest_subset = { name = winner } }
add = -100
}
else_if = {
limit = { exists = var:contest_finalist_match_joust.var:progress_to_victory }
add = var:contest_finalist_match_joust.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 1 }
if = {
limit = { is_in_guest_subset = { name = finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_semi_finalist_match_joust.var:progress_to_victory }
add = var:contest_semi_finalist_match_joust.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 0 }
if = {
limit = { is_in_guest_subset = { name = semi_finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_qualified_match_joust.var:progress_to_victory }
add = var:contest_qualified_match_joust.var:progress_to_victory
}
}
# Use own to make it 50% for UI as a fallback
else = { add = var:progress_to_victory }
}
if = {
limit = {
involved_activity = { has_current_phase = tournament_phase_duel }
}
# Compare with correct rounds match
if = {
limit = { involved_activity.var:contest_versus_progress ?= 2 }
if = {
limit = { is_in_guest_subset = { name = winner } }
add = -100
}
else_if = {
limit = { exists = var:contest_finalist_match_duel.var:progress_to_victory }
add = var:contest_finalist_match_duel.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 1 }
if = {
limit = { is_in_guest_subset = { name = finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_semi_finalist_match_duel.var:progress_to_victory }
add = var:contest_semi_finalist_match_duel.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 0 }
if = {
limit = { is_in_guest_subset = { name = semi_finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_qualified_match_duel.var:progress_to_victory }
add = var:contest_qualified_match_duel.var:progress_to_victory
}
}
# Use own to make it 50% for UI as a fallback
else = { add = var:progress_to_victory }
}
if = {
limit = {
involved_activity = { has_current_phase = tournament_phase_wrestling }
}
# Compare with correct rounds match
if = {
limit = { involved_activity.var:contest_versus_progress ?= 2 }
if = {
limit = { is_in_guest_subset = { name = winner } }
add = -100
}
else_if = {
limit = { exists = var:contest_finalist_match_wrestling.var:progress_to_victory }
add = var:contest_finalist_match_wrestling.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 1 }
if = {
limit = { is_in_guest_subset = { name = finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_semi_finalist_match_wrestling.var:progress_to_victory }
add = var:contest_semi_finalist_match_wrestling.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 0 }
if = {
limit = { is_in_guest_subset = { name = semi_finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_qualified_match_wrestling.var:progress_to_victory }
add = var:contest_qualified_match_wrestling.var:progress_to_victory
}
}
# Use own to make it 50% for UI as a fallback
else = { add = var:progress_to_victory }
}
if = {
limit = {
involved_activity = { has_current_phase = tournament_phase_board_game }
}
# Compare with correct rounds match
if = {
limit = { involved_activity.var:contest_versus_progress ?= 2 }
if = {
limit = { is_in_guest_subset = { name = winner } }
add = -100
}
else_if = {
limit = { exists = var:contest_finalist_match_board_game.var:progress_to_victory }
add = var:contest_finalist_match_board_game.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 1 }
if = {
limit = { is_in_guest_subset = { name = finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_semi_finalist_match_board_game.var:progress_to_victory }
add = var:contest_semi_finalist_match_board_game.var:progress_to_victory
}
}
else_if = {
limit = { involved_activity.var:contest_versus_progress ?= 0 }
if = {
limit = { is_in_guest_subset = { name = semi_finalist } }
add = -100
}
else_if = {
limit = { exists = var:contest_qualified_match_board_game.var:progress_to_victory }
add = var:contest_qualified_match_board_game.var:progress_to_victory
}
}
# Use own to make it 50% for UI as a fallback
else = { add = var:progress_to_victory }
}
min = 0
}
## Referenced to in the UI
# Returns the scoped character's chance of winning any contest based on the
# their PTV against the opposing PTV.
#
# Calculate as:
# team: team_ptv / ( team_ptv + opposing_team_ptv )
# ffa: root.var:ptv / ( sum( scope:all_qualified.var:ptv ) )
# 1v1: root.var:ptv / ( root.var:ptv + scope:opponent.var:ptv )
character_chance_of_victory = {
value = 0
if = {
limit = {
is_in_guest_subset = { name = qualified }
exists = var:progress_to_victory
}
# TEAM
if = {
limit = {
involved_activity = { has_current_phase = tournament_phase_melee }
}
# Fetch own team's PtV
add = progress_to_victory_own_team_ptv_value
# Divide by both team's PtV
divide = progress_to_victory_total_team_current_active_phase
}
# TURN/RACE
else_if = {
limit = {
involved_activity = {
OR = {
has_current_phase = tournament_phase_archery
has_current_phase = tournament_phase_recital
has_current_phase = tournament_phase_horse_race
}
}
}
# Fetch own PtV
add = var:progress_to_victory
# Divide by combined contestant's PtV
divide = progress_to_victory_total_ffa_current_active_phase
}
# VERSUS
else_if = {
limit = { exists = var:progress_to_victory }
# Fetch own PtV
add = var:progress_to_victory
# Divide by own + matches PtV
divide = {
value = var:progress_to_victory
add = progress_to_victory_versus_match_value
}
}
}
}
## Referenced in the Debug UI
# Returns the PTV of the scoped character's opponent in any situation.
# This is the pure PTV for the opponents, no their chance of victory.
#
# Return as:
# team: opposing_team_ptv
# ffa: sum( scope:all_qualified.var:ptv ) - root.var:ptv
# 1v1: scope:opponent.var:ptv
debug_opposing_progress_to_victory = {
value = 0
if = {
limit = {
is_in_guest_subset = { name = qualified }
}
# TEAM
if = {
limit = {
involved_activity = { has_current_phase = tournament_phase_melee }
}
# Fetch other team's PtV
add = progress_to_victory_other_team_ptv_value
}
# TURN/RACE
else_if = {
limit = {
exists = var:progress_to_victory
involved_activity = {
OR = {
has_current_phase = tournament_phase_archery
has_current_phase = tournament_phase_recital
has_current_phase = tournament_phase_horse_race
}
}
}
# Fetch combined contestant's PtV, except yours
add = progress_to_victory_total_ffa_current_active_phase
subtract = var:progress_to_victory
}
# VERSUS
# Fetch matched contestant's PtV
else = { add = progress_to_victory_versus_match_value }
}
min = 1
}
count_remaining_contestants = {
value = 0
involved_activity = {
every_guest_subset_current_phase = {
name = qualified
limit = {
AND = {
exists = var:progress_to_victory
var:progress_to_victory > 0
}
}
add = 1
}
}
}
# The end result of this number MUST be between 0 and 5, otherwise the game
# will crash due to being used in the UI to allocate a segmented progress bar
contest_type_aptitude_wit = {
value = 0
# Score
if = {
limit = {
involved_activity ?= {
OR = {
has_current_phase = tournament_phase_board_game
has_current_phase = tournament_phase_recital
}
}
exists = var:progress_to_victory_score
var:progress_to_victory_score >= contest_progress_increase_medium_value
}
add = {
value = 1
if = {
limit = { var:progress_to_victory_score >= contest_progress_increase_massive_value }
add = 1
}
desc = tournament_aptitude.events
}
}
# Trait
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 25
}
}
add = {
value = 1
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
add = 1
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 75
}
}
add = 1
}
desc = tourney_participant_wit
}
}
#Primary skill without Hastiludes
if = { # Diplomacy
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 25
}
}
diplomacy >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { diplomacy >= high_skill_rating }
add = 1
}
desc = diplomacy_concept
}
}
if = { # Learning
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 25
}
}
learning >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { learning >= high_skill_rating }
add = 1
}
desc = learning_concept
}
}
# Lifestyle & Genetic
if = {
limit = {
involved_activity ?= { has_current_phase = tournament_phase_recital }
has_trait = poet
}
add = {
value = 1
desc = trait_poet
}
}
if = {
limit = {
OR = {
has_trait = intellect_good_1
has_trait = intellect_good_2
has_trait = intellect_good_3
has_trait = shrewd
}
}
add = {
value = 1
desc = trait_shrewd
}
}
# Disability & Misc.
if = {
limit = {
involved_activity ?= { has_current_phase = tournament_phase_recital }
has_trait = lisping
}
add = {
value = -1
desc = trait_lisping
}
}
if = {
limit = {
involved_activity ?= { has_current_phase = tournament_phase_recital }
has_trait = stuttering
}
add = {
value = -1
desc = trait_stuttering
}
}
if = {
limit = { has_trait = dull }
add = {
value = -1
desc = trait_dull
}
}
max = 5
}
# The end result of this number MUST be between 0 and 5, otherwise the game
# will crash due to being used in the UI to allocate a segmented progress bar
contest_type_aptitude_foot = {
value = 0
# Score
if = {
limit = {
involved_activity ?= {
OR = {
has_current_phase = tournament_phase_duel
has_current_phase = tournament_phase_wrestling
}
}
exists = var:progress_to_victory_score
var:progress_to_victory_score >= contest_progress_increase_medium_value
}
add = {
value = 1
if = {
limit = { var:progress_to_victory_score >= contest_progress_increase_massive_value }
add = 1
}
desc = tournament_aptitude.events
}
}
else_if = {
limit = {
involved_activity ?= { has_current_phase = tournament_phase_melee }
exists = var:progress_to_victory_score
var:progress_to_victory_score >= contest_progress_increase_medium_value
}
add = {
value = 0.5
if = {
limit = { var:progress_to_victory_score >= contest_progress_increase_massive_value }
add = 0.5
}
desc = tournament_aptitude.events
}
}
# Trait
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
add = {
value = 1
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
add = 1
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 75
}
}
add = 1
}
desc = tourney_participant_foot
}
}
#Primary skill without Hastiludes
if = { # Prowess
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
prowess >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { prowess >= high_skill_rating }
add = 1
}
desc = prowess_concept
}
}
if = { # Martial
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
martial >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { martial >= high_skill_rating }
add = 1
}
desc = martial_concept
}
}
# Lifestyle & Genetic
if = {
limit = { has_trait = lifestyle_blademaster }
add = {
value = 1
desc = trait_lifestyle_blademaster
}
}
if = {
limit = {
OR = {
has_trait = physique_good_1
has_trait = physique_good_2
has_trait = physique_good_3
has_trait = strong
}
}
add = {
value = 1
desc = trait_strong
}
}
# Disability & Misc.
if = {
limit = { has_trait = weak }
add = {
value = -1
desc = trait_weak
}
}
if = {
limit = { has_trait = maimed }
add = {
value = -1
desc = trait_maimed
}
}
if = {
limit = { has_trait = giant }
add = {
value = 1
desc = trait_giant
}
}
if = {
limit = {
has_trait = viking
culture ?= { has_innovation = innovation_longboats }
}
add = {
value = 1
desc = trait_viking_has_longships
}
}
if = {
limit = {
has_trait = viking
exists = culture
NOT = {
culture = { has_innovation = innovation_longboats }
}
}
add = {
value = 1
desc = trait_viking_fallback
}
}
if = {
limit = { has_trait = faith_warrior }
add = {
value = 1
desc = trait_faith_warrior
}
}
if = {
limit = { has_trait = berserker }
add = {
value = 1
desc = trait_berserker
}
}
max = 5
min = 0
}
# The end result of this number MUST be between 0 and 5, otherwise the game
# will crash due to being used in the UI to allocate a segmented progress bar
contest_type_aptitude_horse = {
value = 0
# Score
if = {
limit = {
involved_activity ?= {
OR = {
has_current_phase = tournament_phase_horse_race
has_current_phase = tournament_phase_joust
}
}
exists = var:progress_to_victory_score
var:progress_to_victory_score >= contest_progress_increase_medium_value
}
add = {
value = 1
if = {
limit = { var:progress_to_victory_score >= contest_progress_increase_massive_value }
add = 1
}
desc = tournament_aptitude.events
}
}
else_if = {
limit = {
involved_activity ?= { has_current_phase = tournament_phase_melee }
exists = var:progress_to_victory_score
var:progress_to_victory_score >= contest_progress_increase_medium_value
}
add = {
value = 0.5
if = {
limit = { var:progress_to_victory_score >= contest_progress_increase_massive_value }
add = 0.5
}
desc = tournament_aptitude.events
}
}
# Trait
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 25
}
}
add = {
value = 1
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
add = 1
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 75
}
}
add = 1
}
desc = tourney_participant_foot
}
}
if = { # Prowess
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
prowess >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { prowess >= high_skill_rating }
add = 1
}
desc = prowess_concept
}
}
if = { # Martial
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
martial >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { martial >= high_skill_rating }
add = 1
}
desc = martial_concept
}
}
# Lifestyle & Genetic
if = {
limit = { has_trait = adventurer } #Bit of a stretch, I know
add = {
value = 1
desc = trait_adventurer
}
}
if = {
limit = {
OR = {
has_trait = education_martial_prowess_1
has_trait = education_martial_prowess_2
has_trait = education_martial_prowess_3
has_trait = education_martial_prowess_4
}
}
add = {
value = 1
if = {
limit = { has_trait = education_martial_prowess_2 }
add = 1
}
else_if = {
limit = { has_trait = education_martial_prowess_3 }
add = 1
}
else_if = {
limit = { has_trait = education_martial_prowess_4 }
add = 1
}
desc = trait_education_martial_prowess
}
}
# Disability & Misc.
if = {
limit = { has_trait = dwarf }
add = {
value = 1
desc = trait_dwarf
}
}
if = {
limit = { has_trait = giant }
add = {
value = -1
desc = trait_giant
}
}
max = 5
min = 0
}
# The end result of this number MUST be between 0 and 5, otherwise the game
# will crash due to being used in the UI to allocate a segmented progress bar
contest_type_aptitude_archery = {
value = 0
# Score
if = {
limit = {
involved_activity ?= { has_current_phase = tournament_phase_archery }
exists = var:progress_to_victory_score
var:progress_to_victory_score >= contest_progress_increase_medium_value
}
add = {
value = 1
if = {
limit = { var:progress_to_victory_score >= contest_progress_increase_massive_value }
add = 1
}
desc = tournament_aptitude.events
}
}
# Trait
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 25
}
}
add = {
value = 1
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
add = 1
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 75
}
}
add = 1
}
desc = tourney_participant_bow
}
}
# Trait
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 25
}
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 25
}
has_trait_xp = {
trait = tourney_participant
track = bow
value < 50
}
}
add = {
value = 1
desc = tourney_participant_foot
}
}
else_if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
has_trait_xp = {
trait = tourney_participant
track = bow
value < 75
}
}
add = {
value = 2
desc = tourney_participant_bow
}
}
else = {
add = {
value = 3
desc = tourney_participant_bow
}
}
}
#Primary skill without Hastiludes
if = { # Prowess
limit = {
NOT = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 25
}
}
prowess >= medium_skill_rating
}
add = {
value = 1
if = {
limit = { prowess >= high_skill_rating }
add = 1
}
desc = prowess_concept
}
}
# Lifestyle & Genetic
if = {
limit = {
has_trait_xp = {
trait = lifestyle_hunter
track = hunter
value >= 25
}
}
add = {
value = 1
desc = trait_lifestyle_hunter
}
}
# Disability & Misc.
if = {
limit = { has_trait = strong }
add = {
value = 1
desc = trait_strong
}
}
if = {
limit = { has_trait = weak }
add = {
value = -1
desc = trait_weak
}
}
if = {
limit = { has_trait = one_eyed }
add = {
value = -1
desc = trait_one_eyed
}
}
if = {
limit = { has_trait = maimed }
add = {
value = -5
desc = trait_maimed
}
}
max = 5
min = 0
}
contest_health_aptitude_offset_value = {
# Health
if = {
limit = { health >= excellent_health }
add = 5
}
else_if = {
limit = {
health >= good_health
health < excellent_health
}
add = 3
}
else_if = {
limit = {
health < fine_health
health > poor_health
}
add = -5
}
else_if = {
limit = {
health <= poor_health
health > dying_health
}
add = -10
}
else_if = {
limit = { health <= dying_health }
add = -20
}
}
contest_foot_aptitude_value = {
### Base ###
# Prowess
value = contest_base_aptitude_value
add = {
value = prowess_no_portrait # exclude artifacts
multiply = 1.5
}
### Additional Modifiers ###
# Artifacts - only own armor is used
if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = illustrious
}
}
add = 20
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = famed
}
}
add = 15
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = masterwork
}
}
add = 10
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = common
}
}
add = 5
}
# Tourney Trait - Foot
if = {
limit = { has_trait = tourney_participant }
add = 5
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 20
}
}
add = 10
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
add = 20
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 80
}
}
add = 20
}
}
# Strength
if = {
limit = { has_trait = giant }
add = 4
}
if = {
limit = { has_trait = strong }
add = 4
}
if = {
limit = { has_trait = viking }
add = 2
}
if = {
limit = { has_trait = faith_warrior }
add = 2
}
if = {
limit = { has_trait = berserker }
add = 4
}
if = {
limit = { has_trait = physique_good }
if = {
limit = { has_trait = physique_good_1 }
add = 3
}
else_if = {
limit = { has_trait = physique_good_2 }
add = 6
}
else_if = {
limit = { has_trait = physique_good_3 }
add = 9
}
}
# Lifestyle
if = {
limit = { has_trait = lifestyle_blademaster }
add = 4
if = {
limit = {
has_trait_xp = {
trait = lifestyle_blademaster
value >= 50
}
}
add = 8
}
if = {
limit = {
has_trait_xp = {
trait = lifestyle_blademaster
value >= 100
}
}
add = 12
}
}
# Health
add = contest_health_aptitude_offset_value
# Favors
every_character_artifact = {
limit = { artifact_type = tournament_favor }
add = 5
}
# Modifiers
add = shared_tournament_aptitude_modifiers_value
# Other
if = {
limit = { has_character_modifier = tournament_armorer_tournament_modifier }
add = 10
}
### Boundaries ###
min = 1
}
contest_melee_aptitude_value = {
value = contest_foot_aptitude_value
add = contest_horse_aptitude_value
divide = 2
### Boundaries ###
min = 1
}
contest_archery_aptitude_value = {
### Base ###
# Prowess
value = contest_base_aptitude_value
add = {
value = prowess_no_portrait # exclude artifacts
multiply = 1.5
}
### Additional Modifiers ###
# Artifacts - only own bows are used
if = {
limit = {
any_character_artifact = {
artifact_slot_type = primary_armament
OR = {
artifact_type = longbow
artifact_type = composite
artifact_type = bow
}
rarity = illustrious
}
}
add = 20
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = primary_armament
OR = {
artifact_type = longbow
artifact_type = composite
artifact_type = bow
}
rarity = famed
}
}
add = 15
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = primary_armament
OR = {
artifact_type = longbow
artifact_type = composite
artifact_type = bow
}
rarity = masterwork
}
}
add = 10
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = primary_armament
OR = {
artifact_type = longbow
artifact_type = composite
artifact_type = bow
}
rarity = common
}
}
add = 5
}
# Tourney Trait - Bow
if = {
limit = { has_trait = tourney_participant }
add = 5
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 20
}
}
add = 10
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
add = 15
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 80
}
}
add = 20
}
}
# Strength
if = {
limit = { has_trait = strong }
add = 5
}
if = {
limit = { has_trait = physique_good }
if = {
limit = { has_trait = physique_good_1 }
add = 4
}
else_if = {
limit = { has_trait = physique_good_2 }
add = 6
}
else_if = {
limit = { has_trait = physique_good_3 }
add = 9
}
}
# Lifestyle
if = {
limit = { has_trait = tourney_participant }
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 25
}
}
add = 7
}
else_if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 50
}
}
add = 14
}
else_if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = bow
value >= 75
}
}
add = 21
}
}
# Personality
if = {
limit = { has_trait = patient }
add = 3
}
# Health
add = contest_health_aptitude_offset_value
# Modifiers
add = shared_tournament_aptitude_modifiers_value
### Boundaries ###
min = 1
}
contest_pugilism_aptitude_value = {
### Base ###
# Prowess
value = contest_base_aptitude_value
add = {
value = prowess_no_portrait # exclude artifacts
multiply = 1.5
}
### Additional Modifiers ###
# Tourney Trait - Foot
if = {
limit = { has_trait = tourney_participant }
add = 5
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 20
}
}
add = 10
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 50
}
}
add = 15
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = foot
value >= 80
}
}
add = 20
}
}
# Strength
if = {
limit = { has_trait = giant }
add = 10
}
if = {
limit = { has_trait = strong }
add = 5
}
if = {
limit = { has_trait = physique_good }
if = {
limit = { has_trait = physique_good_1 }
add = 3
}
else_if = {
limit = { has_trait = physique_good_2 }
add = 6
}
else_if = {
limit = { has_trait = physique_good_3 }
add = 9
}
}
# Personality
if = {
limit = { has_trait = wrathful }
add = 3
}
if = {
limit = { has_trait = deceitful }
add = 3
}
if = {
limit = { has_trait = patient }
add = 3
}
# Health
add = contest_health_aptitude_offset_value
# Modifiers
add = shared_tournament_aptitude_modifiers_value
### Boundaries ###
min = 1
}
contest_horse_aptitude_value = {
### Base ###
# Prowess
value = contest_base_aptitude_value
add = {
value = prowess_no_portrait # exclude artifacts
multiply = 0.5
}
### Additional Modifiers ###
# Artifacts - only own armor is used
if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = illustrious
}
}
add = 20
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = famed
}
}
add = 15
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = masterwork
}
}
add = 10
}
else_if = {
limit = {
any_character_artifact = {
artifact_slot_type = armor
rarity = common
}
}
add = 5
}
# Tourney Trait - Horse
if = {
limit = { has_trait = tourney_participant }
add = 5
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 20
}
}
add = 10
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 50
}
}
add = 15
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = horse
value >= 80
}
}
add = 20
}
}
# Education
if = {
limit = { has_trait = education_martial_prowess }
if = {
limit = { has_trait = education_martial_prowess_1 }
add = 3
}
else_if = {
limit = { has_trait = education_martial_prowess_2 }
add = 6
}
else_if = {
limit = { has_trait = education_martial_prowess_3 }
add = 9
}
else = { add = 12 }
}
# Content
if = {
limit = { has_character_modifier = improved_horse_mastery_modifier }
add = 5
}
if = {
limit = { has_character_modifier = cavalry_charge_exercise_modifier }
add = 5
}
if = {
limit = { has_character_modifier = mounted_warrior_practice_modifier }
add = 5
}
if = {
limit = { has_character_modifier = tournament_farrier_mistake_modifier }
add = farrier_mistake_value
}
# Personality
if = {
limit = { has_trait = calm }
add = 3
}
if = {
limit = { has_trait = compassionate }
add = 3
}
if = {
limit = { has_trait = patient }
add = 3
}
# Health
add = contest_health_aptitude_offset_value
# Modifiers
add = shared_tournament_aptitude_modifiers_value
### Boundaries ###
min = 1
}
contest_recital_aptitude_value = {
### Base ###
# Prowess
value = contest_base_aptitude_value
add = {
value = diplomacy
}
### Additional Modifiers ###
# Tourney Trait - Wit
if = {
limit = { has_trait = tourney_participant }
add = 5
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 20
}
}
add = 10
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
add = 15
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 80
}
}
add = 20
}
}
# Lifestyle
if = {
limit = { has_trait = poet }
add = 20
}
# Disability
if = {
limit = { has_trait = lisping }
add = -10
}
if = {
limit = { has_trait = stuttering }
add = -10
}
# Modifiers
add = shared_tournament_aptitude_modifiers_value
### Boundaries ###
min = 1
}
contest_board_game_aptitude_value = {
### Base ###
# Prowess
value = contest_base_aptitude_value
add = {
value = learning
multiply = 1.5
}
### Additional Modifiers ###
# Tourney Trait - Wit
if = {
limit = { has_trait = tourney_participant }
add = 5
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 20
}
}
add = 10
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 50
}
}
add = 15
}
if = {
limit = {
has_trait_xp = {
trait = tourney_participant
track = wit
value >= 80
}
}
add = 20
}
}
# Modifiers
add = shared_tournament_aptitude_modifiers_value
### Boundaries ###
min = 1
}
contest_horse_race_aptitude_value = {
### Base ###
# Prowess
value = 0
add = primary_title.tier
multiply = contest_base_aptitude_value
### Additional Modifiers ###
# Education
if = {
limit = { has_trait = education_stewardship }
if = {
limit = { has_trait = education_stewardship_1 }
add = 2
}
else_if = {
limit = { has_trait = education_stewardship_2 }
add = 5
}
else_if = {
limit = { has_trait = education_stewardship_3 }
add = 8
}
else = { add = 10 }
}
if = {
limit = { has_character_flag = contest_horse_race_war_horse }
if = {
limit = { has_character_modifier = horse_agility_agility_modifier }
add = 20
}
else_if ={
limit = { has_character_modifier = horse_endurance_agility_modifier }
add = 15
}
else_if ={
limit = { has_character_modifier = horse_endurance_endurance_modifier }
add = 10
}
else_if ={
limit = {
OR = {
has_character_modifier = horse_agility_modifier
has_character_modifier = horse_endurance_modifier
has_character_modifier = horse_agility_strength_modifier
has_character_modifier = horse_fierceness_agility_modifier
has_character_modifier = horse_fierceness_endurance_modifier
has_character_modifier = horse_endurance_strength_modifier
}
}
add = 5
}
}
# Personality
if = {
limit = { has_trait = diligent }
add = 3
}
if = {
limit = { has_trait = overseer }
add = 3
}
if = {
limit = { has_trait = administrator }
add = 3
}
# Flavor
if = {
limit = {
exists = var:contest_horse_race_name
var:contest_horse_race_name = flag:seianian
}
multiply = 0.25
}
# Flavor
if = {
limit = {
exists = var:horse_race_jockey
var:horse_race_jockey = { is_alive = yes }
}
add = var:horse_race_jockey.contest_horse_aptitude_value
}
### Boundaries ###
min = 1
}
contest_current_contest_aptitude_value = {
value = 0
if = {
limit = { scope:activity = { has_current_phase = tournament_phase_joust } }
add = contest_horse_aptitude_value
}
else_if = {
limit = {
scope:activity = {
OR = {
has_current_phase = tournament_phase_duel
has_current_phase = tournament_phase_melee
}
}
}
add = contest_foot_aptitude_value
}
else_if = {
limit = { scope:activity = { has_current_phase = tournament_phase_board_game } }
add = contest_board_game_aptitude_value
}
else_if = {
limit = { scope:activity = { has_current_phase = tournament_phase_recital } }
add = contest_recital_aptitude_value
}
else_if = {
limit = { scope:activity = { has_current_phase = tournament_phase_horse_race } }
add = contest_horse_race_aptitude_value
}
else_if = {
limit = { scope:activity = { has_current_phase = tournament_phase_archery } }
add = contest_archery_aptitude_value
}
else = { add = contest_pugilism_aptitude_value }
### Boundaries ###
min = 1
}
contest_base_aptitude_value = 5
shared_tournament_aptitude_modifiers_value = {
value = 0
if = {
limit = { has_character_modifier = unwilling_tourneyer_modifier }
add = -10
}
if = {
limit = { has_character_modifier = generous_to_knights_modifier }
add = 5
}
}
contest_progress_increase_massive_value = 30
contest_progress_increase_major_value = 25
contest_progress_increase_medium_value = 20
contest_progress_increase_minor_value = 15
contest_progress_increase_miniscule_value = 10
contest_progress_decrease_massive_value = {
value = contest_progress_increase_massive_value
multiply = -1
}
contest_progress_decrease_major_value = {
value = contest_progress_increase_major_value
multiply = -1
}
contest_progress_decrease_medium_value = {
value = contest_progress_increase_minor_value
multiply = -1
}
contest_progress_decrease_minor_value = {
value = contest_progress_increase_minor_value
multiply = -1
}
contest_progress_decrease_miniscule_value = {
value = contest_progress_increase_miniscule_value
multiply = -1
}
tournament_team_alpha_size = {
scope:activity = {
every_guest_subset_current_phase = { name = team_alpha add = 1 }
}
}
tournament_team_beta_size = {
scope:activity = {
every_guest_subset_current_phase = { name = team_beta add = 1 }
}
}
# WAGERS
# Top = A, Bottom = B, Target = C, Odds percent = X
# (C - B) / (A - B) = X
# A
tournament_wager_top_score_value = { value = scope:wager_top_contestant.var:contest_aptitude }
# B
tournament_wager_bottom_score_value = { value = scope:wager_bottom_contestant.var:contest_aptitude }
# C
tournament_wager_target_score_value = { value = scope:wager_target.var:contest_aptitude }
# A - B
tournament_wager_top_minus_bottom_score_value = {
value = tournament_wager_top_score_value
subtract = tournament_wager_bottom_score_value
}
# C - B
tournament_wager_target_minus_bottom_value = {
value = tournament_wager_target_score_value
subtract = tournament_wager_bottom_score_value
}
# (C - B) / (A - B) = X
tournament_wager_odds_percent_value = {
value = tournament_wager_target_minus_bottom_value
divide = tournament_wager_top_minus_bottom_score_value
# Betting on yourself pays out less
if = {
limit = { scope:wagerer = scope:wager_target }
multiply = 1.5
}
# Betting on mysterious stranger pays out more
if = {
limit = {
exists = scope:mysterious_stranger
scope:mysterious_stranger = scope:wager_target
}
multiply = 0.5
}
min = 0
max = 1
}
# Convert odds percent into multiplier
tournament_wager_payout_value = {
value = tiny_gold_value
if = {
limit = { tournament_wager_odds_percent_value >= 0.9 }
multiply = 1.25 # 4/1
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.8 }
multiply = 1.5 # 2/1
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.7 }
multiply = 2 # 1/2
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.6 }
multiply = 3 # 1/3
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.5 }
multiply = 4 # 1/4
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.4 }
multiply = 5 # 1/5
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.3 }
multiply = 6 # 1/6
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.2 }
multiply = 7 # 1/7
}
else_if = {
limit = { tournament_wager_odds_percent_value >= 0.1 }
multiply = 8 # 1/8
}
else = { multiply = 9 } # 1/9
ceiling = yes
}
# Payout minus gold value
tournament_wager_winning_value = {
value = tournament_wager_payout_value
subtract = tiny_gold_value
}
tournament_wager_diff_value = {
value = tournament_wager_top_score_value
multiply = 0.5
}
tournament_versus_bout_delay_min = 1
tournament_versus_bout_delay_max = 6
tournament_versus_bout_summary_delay = 30
tournament_versus_duration_months = 1 # Versus must be specific duration to work - do not edit
tournament_standard_duration_months = 1
tournament_qualification_duration_weeks = 8
tournament_turn_contest_duration_weeks = 3
tournament_team_contest_duration_weeks = 4
tournament_race_contest_duration_weeks = 3
tournament_intent_delay_min = 1
tournament_intent_delay_max = 2
tournament_contest_aptitude_diff_value = {
value = 0
if = {
limit = { exists = var:progress_to_victory }
add = var:progress_to_victory
}
if = {
limit = { exists = scope:contest_compare.var:progress_to_victory }
subtract = scope:contest_compare.var:progress_to_victory
}
}
tournament_active_phase_count_value = {
# 1-5 Phases:
value = 1
# Tribes have less phases
# Removed; felt a little punishing - NM
#if = {
# limit = {
# NOT = { government_has_flag = government_is_tribal }
# }
# add = 1
#}
# Extra phases unlocked over time
culture = {
if = {
limit = { has_cultural_era_or_later = culture_era_early_medieval }
add = 1
}
if = {
limit = {
has_cultural_era_or_later = culture_era_high_medieval
}
add = 1
}
if = {
limit = { has_cultural_era_or_later = culture_era_late_medieval }
add = 2
}
}
# Some cultures like practicing war and words; unlock another slot in High medieval age as opposed to Late
culture = {
if = {
limit = {
NOT = {
has_cultural_era_or_later = culture_era_late_medieval
}
AND = {
has_cultural_era_or_later = culture_era_high_medieval
OR = {
has_cultural_pillar = heritage_north_germanic
has_cultural_pillar = heritage_frankish
has_cultural_pillar = heritage_iberian
has_cultural_pillar = heritage_latin
has_cultural_pillar = heritage_mongolic
has_cultural_pillar = heritage_north_germanic
has_cultural_pillar = heritage_west_germanic
has_cultural_pillar = heritage_central_germanic
}
}
}
add = 1
}
}
}
contest_contestants_count_value = {
scope:activity = {
every_attending_character = {
limit = { activity_is_valid_tournament_contestant = yes }
add = 1
}
}
}
contest_guests_count_value = {
scope:activity = {
every_attending_character = {
limit = {
NOT = { activity_is_valid_tournament_contestant = yes }
}
add = 1
}
}
}
contest_declined_invites_count_value = {
scope:activity = {
every_invited_character = {
limit = {
NOT = { is_participant_in_activity = scope:activity }
}
add = 1
}
}
}
contest_valid_contestants_count_value = {
value = contest_contestants_count_value
add = contest_guests_count_value
}
tournament_base_cost = {
value = 100
}
tournament_option_bad_cost = {
value = 20
}
tournament_option_normal_cost = {
value = 60
}
tournament_option_good_cost = {
value = 180
}
tournament_option_very_good_cost = {
value = 360
}
tournament_option_splendid_cost = {
value = 720
}
tournament_option_bad_era_scaled_cost = {
value = 20
multiply = activity_cost_scale_by_era
}
tournament_option_normal_era_scaled_cost = {
value = 60
multiply = activity_cost_scale_by_era
}
tournament_option_good_era_scaled_cost = {
value = 180
multiply = activity_cost_scale_by_era
}
tournament_option_very_good_era_scaled_cost = {
value = 360
multiply = activity_cost_scale_by_era
}
tournament_option_splendid_era_scaled_cost = {
value = 720
multiply = activity_cost_scale_by_era
}
tournament_contest_base_cost = 100
tournament_contest_base_tribal_cost = {
value = tournament_contest_base_cost
divide = 2
}
tournament_contest_horse_cost = 150
tournament_contest_horse_tribal_cost = {
value = tournament_contest_horse_cost
divide = 2
}
tournament_contest_cheap_cost = 50
tournament_contest_cheap_tribal_cost = {
value = tournament_contest_cheap_cost
divide = 2
}
tournament_contest_expensive_cost = 200
tournament_contest_expensive_tribal_cost = {
value = tournament_contest_expensive_cost
divide = 2
}
tournament_activity_cost_discount = {
value = 0.9
}
tournament_activity_cost_discount_value = {
value = tournament_activity_cost_discount
subtract = 1
}
tournament_activity_cost_max_discount = {
value = 0.75
}
tournament_activity_cost_max_discount_value = {
value = tournament_activity_cost_max_discount
subtract = 1
}
tournament_contest_cost_discount = {
value = 0.5
}
tournament_contest_cost_discount_value = {
value = tournament_contest_cost_discount
subtract = 1
}
tournament_contest_cost_low_discount = {
value = 0.9
}
tournament_contest_cost_low_discount_value = {
value = tournament_contest_cost_low_discount
subtract = 1
}
contest_versus_qualified_count = 8
contest_versus_semi_finalist_count = 4
contest_versus_finalist_count = 2
progress_to_victory_passive_contestant_value = {
value = 0
# if to avoid errors
if = {
limit = { exists = var:contest_aptitude }
value = {
value = var:contest_aptitude
multiply = 0.5
}
}
if = {
limit = { has_court_position = champion_court_position }
add = 5
}
if = {
limit = { exists = var:progress_to_victory_score }
add = {
value = var:progress_to_victory_score
#multiply = 0.5
}
}
ceiling = yes
min = 1
max = 25
}
## This variable is referenced in the UI.
progress_to_victory_current = {
value = 0
if = {
limit = { exists = var:progress_to_victory }
add = var:progress_to_victory
}
}
progress_to_victory_active_contestant_value = {
value = 0
if = {
limit = {
involved_activity ?= { activity_tournament_versus_contest_trigger = no }
}
if = {
limit = { exists = var:contest_aptitude }
value = var:contest_aptitude
}
if = {
limit = { exists = var:progress_to_victory_score }
add = var:progress_to_victory_score
}
}
else = {
if = {
limit = { exists = var:contest_aptitude }
add = {
value = var:contest_aptitude
divide = 2
}
}
if = {
limit = { exists = var:progress_to_victory_score }
add = {
value = var:progress_to_victory_score
divide = 2
}
}
}
if = {
limit = { exists = var:progress_to_victory_score }
add = var:progress_to_victory_score
}
ceiling = yes
max = 90
min = 1
}
base_progress_to_victory_qualified_value = 40
base_progress_to_victory_qualified_versus_value = 25
tournament_wait_time_before_start_months = 3
tournament_opening_event_weeks = {
value = tournament_wait_time_before_start_months
multiply = 4
add = -1
}
# 1% increment: best - worst / 40
progress_to_victory_increment_value = {
value = 30
subtract = contest_base_aptitude_value # TODO_CD_EP2 use worst instead?
divide = 40
}
# PtV to qualify: this - worst / 1% increment
progress_to_victory_contestant_qualification_value = {
value = var:contest_aptitude
subtract = contest_base_aptitude_value # TODO_CD_EP2 use worst instead?
divide = progress_to_victory_increment_value
round = yes
}
#EVENT VALUES
skilled_enforcers_value = {
value = 0
every_knight = {
limit = {
prowess >= 20
}
add = 20
}
}
legendary_enforcers_value = {
value = 0
every_knight = {
limit = {
prowess > 25
}
add = 20
}
}
farrier_mistake_value = -5
jason_locale_events_210_desired_prowess_value = {
value = accolade_prowess_requirement_value
subtract = scope:foreign_knight.prowess
}
jason_locale_events_210_desired_martial_value = {
value = maa_accolade_minimum_martial_value
subtract = scope:foreign_knight.martial
}
#REWARD VALUES
tournament_first_place_reward_prestige_major_value = major_prestige_gain
tournament_first_place_reward_prestige_medium_value = medium_prestige_gain
tournament_first_place_reward_prestige_minor_value = minor_prestige_gain
tournament_second_place_reward_prestige_major_value = medium_prestige_gain
tournament_second_place_reward_prestige_medium_value = minor_prestige_gain
tournament_second_place_reward_prestige_minor_value = miniscule_prestige_gain
tournament_third_place_reward_prestige_major_value = minor_prestige_gain
tournament_third_place_reward_prestige_medium_value = miniscule_prestige_gain
# Tournament not grand enough for a minor value.
tournament_team_winner_reward_prestige_major_value = medium_prestige_gain
tournament_team_winner_reward_prestige_medium_value = minor_prestige_gain
tournament_team_winner_reward_prestige_minor_value = miniscule_prestige_gain
tournament_team_loser_reward_prestige_major_value = minor_prestige_gain
tournament_team_loser_reward_prestige_medium_value = miniscule_prestige_gain
# Tournament not grand enough for a minor value.
# Hastiludes XP randomiser
tournament_hastiludes_xp_gain_miniscule_value = {
value = { 1 3 }
}
tournament_hastiludes_xp_gain_minor_value = {
value = { 3 7 }
}
tournament_hastiludes_xp_gain_medium_value = {
value = { 8 12 }
}
tournament_hastiludes_xp_gain_major_value = {
value = { 13 17 }
}
tournament_hastiludes_xp_gain_massive_value = {
value = 20
}
tournament_hastiludes_xp_loss_minor_value = {
value = -5
}
tournament_hastiludes_xp_loss_medium_value = {
value = -10
}
tournament_hastiludes_xp_loss_major_value = {
value = -15
}
tournament_base_cost_value = {
value = 200
}