namespace = board_games ################################################## # # Playing a Board Game # 0001 - 0010 The Greatest Game - Match # 0011 - 0030 Processing & Invalidation events # 0031 - 0030 The Greatest Game - Winner # 0041 - 0040 The Greatest Game - Loser ################################################## ################################################## # PLAYING CHESS ################################################## # The Greatest Game # by Ewan Cowhig Croft # 0001 - 0010 ################################################## scripted_effect bg_play_move_type_effect = { # Set the move type played. ## Either we're scope:bg_defender... if = { limit = { this = scope:bg_defender } save_scope_value_as = { name = bg_defender_move value = flag:$SKILL$ } } ## Or else we must be scope:bg_attacker. else = { save_scope_value_as = { name = bg_attacker_move value = flag:$SKILL$ } } # Run the duel. duel = { skill = $SKILL$ value = decent_skill_rating # Crit success. 10 = { show_chance = no compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } bg_play_move_type_effect_extraneous_advantages_self_modifier = yes desc = board_games.0001.$LOC_KEY$.tt.crit_success custom_tooltip = board_games.0001.$LOC_KEY$.tt.crit_success.tt # Save the result. set_variable = { name = bg_move_result value = flag:crit_success } } # Success. 40 = { show_chance = no compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } bg_play_move_type_effect_extraneous_advantages_self_modifier = yes desc = board_games.0001.$LOC_KEY$.tt.success custom_tooltip = board_games.0001.$LOC_KEY$.tt.success.tt # Save the result. set_variable = { name = bg_move_result value = flag:success } } # Failure. 40 = { show_chance = no compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } bg_play_move_type_effect_extraneous_advantages_opponent_modifier = yes desc = board_games.0001.$LOC_KEY$.tt.failure custom_tooltip = board_games.0001.$LOC_KEY$.tt.failure.tt # Save the result. set_variable = { name = bg_move_result value = flag:failure } } # Crit failure. 10 = { show_chance = no compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } bg_play_move_type_effect_extraneous_advantages_opponent_modifier = yes desc = board_games.0001.$LOC_KEY$.tt.crit_failure custom_tooltip = board_games.0001.$LOC_KEY$.tt.crit_failure.tt # Save the result. set_variable = { name = bg_move_result value = flag:crit_failure } } } } # Main board game processing event. board_games.0001 = { type = character_event window = duel_event title = board_games.0001.t desc = { # Intro section. first_valid = { # Is this our first move? triggered_desc = { trigger = { scope:bg_defender.var:bg_current_round = 1 this = scope:bg_defender } desc = board_games.0001.desc.intro.opening.defender } triggered_desc = { trigger = { scope:bg_defender.var:bg_current_round = 1 this = scope:bg_attacker } desc = board_games.0001.desc.intro.opening.attacker } # Otherwise, standard chained intro. desc = board_games.0001.desc.intro.subsequent } # What did our opponent play? first_valid = { ## Diplomacy triggered_desc = { trigger = { OR = { AND = { exists = scope:bg_defender exists = scope:bg_attacker_move this = scope:bg_defender scope:bg_attacker_move = flag:diplomacy } AND = { exists = scope:bg_attacker exists = scope:bg_defender_move this = scope:bg_attacker scope:bg_defender_move = flag:diplomacy } } } desc = { first_valid = { # Crit Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_success } } } desc = board_games.0001.desc.intro.diplomacy.crit_success } # Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:success } } } desc = board_games.0001.desc.intro.diplomacy.success } # Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:failure } } } desc = board_games.0001.desc.intro.diplomacy.failure } # Crit Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_failure } } } desc = board_games.0001.desc.intro.diplomacy.crit_failure } } } } ## Martial triggered_desc = { trigger = { OR = { AND = { exists = scope:bg_defender exists = scope:bg_attacker_move this = scope:bg_defender scope:bg_attacker_move = flag:martial } AND = { exists = scope:bg_attacker exists = scope:bg_defender_move this = scope:bg_attacker scope:bg_defender_move = flag:martial } } } desc = { first_valid = { # Crit Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_success } } } desc = board_games.0001.desc.intro.martial.crit_success } # Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:success } } } desc = board_games.0001.desc.intro.martial.success } # Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:failure } } } desc = board_games.0001.desc.intro.martial.failure } # Crit Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_failure } } } desc = board_games.0001.desc.intro.martial.crit_failure } } } } ## Stewardship triggered_desc = { trigger = { OR = { AND = { exists = scope:bg_defender exists = scope:bg_attacker_move this = scope:bg_defender scope:bg_attacker_move = flag:stewardship } AND = { exists = scope:bg_attacker exists = scope:bg_defender_move this = scope:bg_attacker scope:bg_defender_move = flag:stewardship } } } desc = { first_valid = { # Crit Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_success } } } desc = board_games.0001.desc.intro.stewardship.crit_success } # Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:success } } } desc = board_games.0001.desc.intro.stewardship.success } # Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:failure } } } desc = board_games.0001.desc.intro.stewardship.failure } # Crit Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_failure } } } desc = board_games.0001.desc.intro.stewardship.crit_failure } } } } ## Intrigue triggered_desc = { trigger = { OR = { AND = { exists = scope:bg_defender exists = scope:bg_attacker_move this = scope:bg_defender scope:bg_attacker_move = flag:intrigue } AND = { exists = scope:bg_attacker exists = scope:bg_defender_move this = scope:bg_attacker scope:bg_defender_move = flag:intrigue } } } desc = { first_valid = { # Crit Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_success } } } desc = board_games.0001.desc.intro.intrigue.crit_success } # Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:success } } } desc = board_games.0001.desc.intro.intrigue.success } # Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:failure } } } desc = board_games.0001.desc.intro.intrigue.failure } # Crit Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_failure } } } desc = board_games.0001.desc.intro.intrigue.crit_failure } } } } ## Learning triggered_desc = { trigger = { OR = { AND = { exists = scope:bg_defender exists = scope:bg_attacker_move this = scope:bg_defender scope:bg_attacker_move = flag:learning } AND = { exists = scope:bg_attacker exists = scope:bg_defender_move this = scope:bg_attacker scope:bg_defender_move = flag:learning } } } desc = { first_valid = { # Crit Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_success } } } desc = board_games.0001.desc.intro.learning.crit_success } # Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:success } } } desc = board_games.0001.desc.intro.learning.success } # Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:failure } } } desc = board_games.0001.desc.intro.learning.failure } # Crit Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_failure } } } desc = board_games.0001.desc.intro.learning.crit_failure } } } } ## Prowess triggered_desc = { trigger = { OR = { AND = { exists = scope:bg_defender exists = scope:bg_attacker_move this = scope:bg_defender scope:bg_attacker_move = flag:prowess } AND = { exists = scope:bg_attacker exists = scope:bg_defender_move this = scope:bg_attacker scope:bg_defender_move = flag:prowess } } } desc = { first_valid = { # Crit Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_success } } } desc = board_games.0001.desc.intro.prowess.crit_success } # Success triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:success } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:success } } } desc = board_games.0001.desc.intro.prowess.success } # Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:failure } } } desc = board_games.0001.desc.intro.prowess.failure } # Crit Failure triggered_desc = { trigger = { OR = { AND = { this = scope:bg_defender scope:bg_attacker.var:bg_move_result = flag:crit_failure } AND = { this = scope:bg_attacker scope:bg_defender.var:bg_move_result = flag:crit_failure } } } desc = board_games.0001.desc.intro.prowess.crit_failure } } } } } # Was someone countered? first_valid = { # Yes! I countered them. triggered_desc = { trigger = { exists = scope:bg_counterer this = scope:bg_counterer } desc = board_games.0001.desc.i_have_countered } # Yes! I have been countered. triggered_desc = { trigger = { exists = scope:bg_counterer this != scope:bg_counterer } desc = board_games.0001.desc.i_am_countered } # Nope, just the page breaks please. desc = board_games.0001.desc.no_counters } ## How is the match going? ### Us relative to each other. first_valid = { # I'm winning by miles. triggered_desc = { trigger = { var:bg_current_score >= bg_relative_score_heavy_difference_threshold_value } desc = board_games.0001.desc.relative_victory.winning_heavily } # I'm winning. triggered_desc = { trigger = { var:bg_current_score >= bg_relative_score_light_difference_threshold_value } desc = board_games.0001.desc.relative_victory.winning_somewhat } # We're essentially equal. triggered_desc = { trigger = { var:bg_current_score >= scope:bg_opponent.var:bg_current_score } desc = board_games.0001.desc.relative_victory.drawing } # I'm losing. triggered_desc = { trigger = { var:bg_current_score <= bg_relative_score_heavy_difference_threshold_value } desc = board_games.0001.desc.relative_victory.losing_somewhat } # I'm losing by miles. triggered_desc = { trigger = { var:bg_current_score <= bg_relative_score_light_difference_threshold_value } desc = board_games.0001.desc.relative_victory.losing_heavily } } ### And either one of us towards actual victory. first_valid = { # Either of us could win. triggered_desc = { trigger = { var:bg_current_score >= bg_close_to_winning_threshold_value scope:bg_opponent.var:bg_current_score >= bg_close_to_winning_threshold_value } desc = board_games.0001.desc.actual_victory.both_close } # I could win. triggered_desc = { trigger = { var:bg_current_score >= bg_close_to_winning_threshold_value } desc = board_games.0001.desc.actual_victory.i_am_close } # They could win. triggered_desc = { trigger = { scope:bg_opponent.var:bg_current_score >= bg_close_to_winning_threshold_value } desc = board_games.0001.desc.actual_victory.they_are_close } # Sudden death is about to kick in. triggered_desc = { trigger = { scope:bg_defender.var:bg_current_round >= bg_round_cap_value } desc = board_games.0001.desc.actual_victory.sudden_death } # Neither of us are close. desc = board_games.0001.desc.actual_victory.neither_close } ## Fluff segment. ### Opponent Winning triggered_desc = { trigger = { # Since we're processing a whole mess o'random valids here, and they're *all* fluff, we restrict this to AI only. is_ai = no # We let the other player be haughty by making them the tie-breaker. trigger_if = { limit = { has_variable = bg_gib_only_losing_locs } always = yes } trigger_else = { var:bg_current_score <= scope:bg_opponent.var:bg_current_score } } desc = { random_valid = { # Categories ## Attributes ### Diplomacy triggered_desc = { trigger = { scope:bg_opponent.diplomacy <= mediocre_skill_rating } desc = board_games.0001.desc.opponent_winning.diplomacy.low } triggered_desc = { trigger = { scope:bg_opponent.diplomacy > mediocre_skill_rating scope:bg_opponent.diplomacy < high_skill_rating } desc = board_games.0001.desc.opponent_winning.diplomacy.medium } triggered_desc = { trigger = { scope:bg_opponent.diplomacy >= high_skill_rating } desc = board_games.0001.desc.opponent_winning.diplomacy.high } ### Martial #### These generally refer to the act of leading troops, so we put an extra filter on for being able to lead an army. triggered_desc = { trigger = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:bg_opponent } } desc = { random_valid = { triggered_desc = { trigger = {scope:bg_opponent.martial <= mediocre_skill_rating } desc = board_games.0001.desc.opponent_winning.martial.low } triggered_desc = { trigger = { scope:bg_opponent.martial > mediocre_skill_rating scope:bg_opponent.martial < high_skill_rating } desc = board_games.0001.desc.opponent_winning.martial.medium } triggered_desc = { trigger = { scope:bg_opponent.martial >= high_skill_rating } desc = board_games.0001.desc.opponent_winning.martial.high } } } } ### Stewardship triggered_desc = { trigger = { scope:bg_opponent.stewardship <= mediocre_skill_rating } desc = board_games.0001.desc.opponent_winning.stewardship.low } triggered_desc = { trigger = { scope:bg_opponent.stewardship > mediocre_skill_rating scope:bg_opponent.stewardship < high_skill_rating } desc = board_games.0001.desc.opponent_winning.stewardship.medium } triggered_desc = { trigger = { scope:bg_opponent.stewardship >= high_skill_rating } desc = board_games.0001.desc.opponent_winning.stewardship.high } ### Intrigue triggered_desc = { trigger = { scope:bg_opponent.intrigue <= mediocre_skill_rating } desc = board_games.0001.desc.opponent_winning.intrigue.low } triggered_desc = { trigger = { scope:bg_opponent.intrigue > mediocre_skill_rating scope:bg_opponent.intrigue < high_skill_rating } desc = board_games.0001.desc.opponent_winning.intrigue.medium } triggered_desc = { trigger = { scope:bg_opponent.intrigue >= high_skill_rating } desc = board_games.0001.desc.opponent_winning.intrigue.high } ### Learning triggered_desc = { trigger = { scope:bg_opponent.learning <= mediocre_skill_rating } desc = board_games.0001.desc.opponent_winning.learning.low } triggered_desc = { trigger = { scope:bg_opponent.learning > mediocre_skill_rating scope:bg_opponent.learning < high_skill_rating } desc = board_games.0001.desc.opponent_winning.learning.medium } triggered_desc = { trigger = { scope:bg_opponent.learning >= high_skill_rating } desc = board_games.0001.desc.opponent_winning.learning.high } ## Trait Specifics triggered_desc = { trigger = { scope:bg_opponent = { has_trait = lustful } } desc = board_games.0001.desc.opponent_winning.trait.lustful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = chaste } } desc = board_games.0001.desc.opponent_winning.trait.chaste } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = gluttonous } } desc = board_games.0001.desc.opponent_winning.trait.gluttonous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = temperate } } desc = board_games.0001.desc.opponent_winning.trait.temperate } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = greedy } } desc = board_games.0001.desc.opponent_winning.trait.greedy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = generous } } desc = board_games.0001.desc.opponent_winning.trait.generous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = lazy } } desc = board_games.0001.desc.opponent_winning.trait.lazy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = diligent } } desc = board_games.0001.desc.opponent_winning.trait.diligent } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = wrathful } } desc = board_games.0001.desc.opponent_winning.trait.wrathful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = calm } } desc = board_games.0001.desc.opponent_winning.trait.calm } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = patient } } desc = board_games.0001.desc.opponent_winning.trait.patient } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = impatient } } desc = board_games.0001.desc.opponent_winning.trait.impatient } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = arrogant } } desc = board_games.0001.desc.opponent_winning.trait.arrogant } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = humble } } desc = board_games.0001.desc.opponent_winning.trait.humble } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = deceitful } } desc = board_games.0001.desc.opponent_winning.trait.deceitful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = honest } } desc = board_games.0001.desc.opponent_winning.trait.honest } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = craven } } desc = board_games.0001.desc.opponent_winning.trait.craven } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = brave } } desc = board_games.0001.desc.opponent_winning.trait.brave } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = shy } } desc = board_games.0001.desc.opponent_winning.trait.shy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = gregarious } } desc = board_games.0001.desc.opponent_winning.trait.gregarious } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = ambitious } } desc = board_games.0001.desc.opponent_winning.trait.ambitious } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = content } } desc = board_games.0001.desc.opponent_winning.trait.content } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = arbitrary } } desc = board_games.0001.desc.opponent_winning.trait.arbitrary } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = just } } desc = board_games.0001.desc.opponent_winning.trait.just } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = cynical } } desc = board_games.0001.desc.opponent_winning.trait.cynical } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = zealous } } desc = board_games.0001.desc.opponent_winning.trait.zealous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = paranoid } } desc = board_games.0001.desc.opponent_winning.trait.paranoid } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = trusting } } desc = board_games.0001.desc.opponent_winning.trait.trusting } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = compassionate } } desc = board_games.0001.desc.opponent_winning.trait.compassionate } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = callous } } desc = board_games.0001.desc.opponent_winning.trait.callous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = sadistic } } desc = board_games.0001.desc.opponent_winning.trait.sadistic } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = stubborn } } desc = board_games.0001.desc.opponent_winning.trait.stubborn } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = fickle } } desc = board_games.0001.desc.opponent_winning.trait.fickle } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = vengeful } } desc = board_games.0001.desc.opponent_winning.trait.vengeful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = forgiving } } desc = board_games.0001.desc.opponent_winning.trait.forgiving } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = rowdy } } desc = board_games.0001.desc.opponent_winning.trait.rowdy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = charming } } desc = board_games.0001.desc.opponent_winning.trait.charming } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = curious } } desc = board_games.0001.desc.opponent_winning.trait.curious } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = pensive } } desc = board_games.0001.desc.opponent_winning.trait.pensive } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = bossy } } desc = board_games.0001.desc.opponent_winning.trait.bossy } ## Prior Matches & Relationships triggered_desc = { trigger = { has_relation_friend = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.friend } triggered_desc = { trigger = { has_relation_best_friend = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.best_friend } triggered_desc = { trigger = { has_relation_rival = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.rival } triggered_desc = { trigger = { has_relation_nemesis = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.nemesis } triggered_desc = { trigger = { has_relation_lover = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.lover } triggered_desc = { trigger = { has_relation_soulmate = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.soulmate } triggered_desc = { trigger = { has_relation_bully = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.bully } triggered_desc = { trigger = { has_relation_victim = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.victim } triggered_desc = { trigger = { has_relation_crush = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.crush } triggered_desc = { trigger = { has_relation_guardian = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.guardian } triggered_desc = { trigger = { has_relation_ward = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.relation.ward } ## Miscs ### Hooks triggered_desc = { trigger = { has_weak_hook = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.hook_on.weak } triggered_desc = { trigger = { has_strong_hook = scope:bg_opponent } desc = board_games.0001.desc.opponent_winning.hook_on.strong } triggered_desc = { trigger = { scope:bg_opponent = { has_weak_hook = scope:bg_myself} } desc = board_games.0001.desc.opponent_winning.hooked_by.weak } triggered_desc = { trigger = { scope:bg_opponent = { has_strong_hook = scope:bg_myself} } desc = board_games.0001.desc.opponent_winning.hooked_by.strong } ### Prior Matches triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_default_loss_to var:bg_recent_default_loss_to = scope:bg_myself } } desc = board_games.0001.desc.opponent_winning.match_history.recently_won_against.default } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_land_loss_to var:bg_recent_land_loss_to = scope:bg_myself # Don't bring it up if you don't control it any more. var:bg_recent_land_loss_stake.holder = { OR = { this = scope:bg_opponent any_liege_or_above = { this = scope:bg_opponent } } } } } desc = board_games.0001.desc.opponent_winning.match_history.recently_won_against.county } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_gambling_loss_to var:bg_recent_gambling_loss_to = scope:bg_myself } } desc = board_games.0001.desc.opponent_winning.match_history.recently_won_against.gamble } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_default_loss_to var:bg_recent_default_loss_to = scope:bg_myself } } desc = board_games.0001.desc.opponent_winning.match_history.recently_lost_against.default } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_land_loss_to var:bg_recent_land_loss_to = scope:bg_myself } } desc = board_games.0001.desc.opponent_winning.match_history.recently_lost_against.county } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_gambling_loss_to var:bg_recent_gambling_loss_to = scope:bg_myself } } desc = board_games.0001.desc.opponent_winning.match_history.recently_lost_against.gamble } ### Other #### A move for only the pro-est of board gamers. triggered_desc = { trigger = { scope:bg_opponent = { has_trait = arrogant has_trait = reclusive OR = { learning <= mediocre_skill_rating # TIT-34022 } } } desc = board_games.0001.desc.opponent_winning.other.pro_gamer } #### A move for an excellent one liner. triggered_desc = { trigger = { # TIT-34022; remove always = no after implementation. always = no scope:bg_opponent = { has_trait = arrogant has_trait = sadistic has_trait = arbitrary intrigue >= very_high_skill_rating prowess >= very_high_skill_rating } } desc = board_games.0001.desc.opponent_winning.other.avlf } } } } ### Current Player Winning triggered_desc = { trigger = { # Since we're processing a whole mess o'random valids here, and they're *all* fluff, we restrict this to AI only. is_ai = no # We let the other player be haughty by making them the tie-breaker. trigger_if = { limit = { has_variable = bg_gib_only_winning_locs } always = yes } trigger_else = { var:bg_current_score > scope:bg_opponent.var:bg_current_score } } desc = { random_valid = { # Categories ## Attributes ### Diplomacy triggered_desc = { trigger = { scope:bg_opponent.diplomacy <= mediocre_skill_rating } desc = board_games.0001.desc.i_am_winning.diplomacy.low } triggered_desc = { trigger = { scope:bg_opponent.diplomacy > mediocre_skill_rating scope:bg_opponent.diplomacy < high_skill_rating } desc = board_games.0001.desc.i_am_winning.diplomacy.medium } triggered_desc = { trigger = { scope:bg_opponent.diplomacy >= high_skill_rating } desc = board_games.0001.desc.i_am_winning.diplomacy.high } ### Martial #### These generally refer to the act of leading troops, so we put an extra filter on for being able to lead an army. triggered_desc = { trigger = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:bg_opponent } } desc = { random_valid = { triggered_desc = { trigger = {scope:bg_opponent.martial <= mediocre_skill_rating } desc = board_games.0001.desc.i_am_winning.martial.low } triggered_desc = { trigger = { scope:bg_opponent.martial > mediocre_skill_rating scope:bg_opponent.martial < high_skill_rating } desc = board_games.0001.desc.i_am_winning.martial.medium } triggered_desc = { trigger = { scope:bg_opponent.martial >= high_skill_rating } desc = board_games.0001.desc.i_am_winning.martial.high } } } } ### Stewardship triggered_desc = { trigger = { scope:bg_opponent.stewardship <= mediocre_skill_rating } desc = board_games.0001.desc.i_am_winning.stewardship.low } triggered_desc = { trigger = { scope:bg_opponent.stewardship > mediocre_skill_rating scope:bg_opponent.stewardship < high_skill_rating } desc = board_games.0001.desc.i_am_winning.stewardship.medium } triggered_desc = { trigger = { scope:bg_opponent.stewardship >= high_skill_rating } desc = board_games.0001.desc.i_am_winning.stewardship.high } ### Intrigue triggered_desc = { trigger = { scope:bg_opponent.intrigue <= mediocre_skill_rating } desc = board_games.0001.desc.i_am_winning.intrigue.low } triggered_desc = { trigger = { scope:bg_opponent.intrigue > mediocre_skill_rating scope:bg_opponent.intrigue < high_skill_rating } desc = board_games.0001.desc.i_am_winning.intrigue.medium } triggered_desc = { trigger = { scope:bg_opponent.intrigue >= high_skill_rating } desc = board_games.0001.desc.i_am_winning.intrigue.high } ### Learning triggered_desc = { trigger = { scope:bg_opponent.learning <= mediocre_skill_rating } desc = board_games.0001.desc.i_am_winning.learning.low } triggered_desc = { trigger = { scope:bg_opponent.learning > mediocre_skill_rating scope:bg_opponent.learning < high_skill_rating } desc = board_games.0001.desc.i_am_winning.learning.medium } triggered_desc = { trigger = { scope:bg_opponent.learning >= high_skill_rating } desc = board_games.0001.desc.i_am_winning.learning.high } ## Trait Specifics triggered_desc = { trigger = { scope:bg_opponent = { has_trait = lustful } } desc = board_games.0001.desc.i_am_winning.trait.lustful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = chaste } } desc = board_games.0001.desc.i_am_winning.trait.chaste } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = gluttonous } } desc = board_games.0001.desc.i_am_winning.trait.gluttonous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = temperate } } desc = board_games.0001.desc.i_am_winning.trait.temperate } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = greedy } } desc = board_games.0001.desc.i_am_winning.trait.greedy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = generous } } desc = board_games.0001.desc.i_am_winning.trait.generous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = lazy } } desc = board_games.0001.desc.i_am_winning.trait.lazy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = diligent } } desc = board_games.0001.desc.i_am_winning.trait.diligent } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = wrathful } } desc = board_games.0001.desc.i_am_winning.trait.wrathful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = calm } } desc = board_games.0001.desc.i_am_winning.trait.calm } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = patient } } desc = board_games.0001.desc.i_am_winning.trait.patient } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = impatient } } desc = board_games.0001.desc.i_am_winning.trait.impatient } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = arrogant } } desc = board_games.0001.desc.i_am_winning.trait.arrogant } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = humble } } desc = board_games.0001.desc.i_am_winning.trait.humble } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = deceitful } } desc = board_games.0001.desc.i_am_winning.trait.deceitful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = honest } } desc = board_games.0001.desc.i_am_winning.trait.honest } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = craven } } desc = board_games.0001.desc.i_am_winning.trait.craven } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = brave } } desc = board_games.0001.desc.i_am_winning.trait.brave } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = shy } } desc = board_games.0001.desc.i_am_winning.trait.shy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = gregarious } } desc = board_games.0001.desc.i_am_winning.trait.gregarious } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = ambitious } } desc = board_games.0001.desc.i_am_winning.trait.ambitious } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = content } } desc = board_games.0001.desc.i_am_winning.trait.content } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = arbitrary } } desc = board_games.0001.desc.i_am_winning.trait.arbitrary } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = just } } desc = board_games.0001.desc.i_am_winning.trait.just } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = cynical } } desc = board_games.0001.desc.i_am_winning.trait.cynical } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = zealous } } desc = board_games.0001.desc.i_am_winning.trait.zealous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = paranoid } } desc = board_games.0001.desc.i_am_winning.trait.paranoid } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = trusting } } desc = board_games.0001.desc.i_am_winning.trait.trusting } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = compassionate } } desc = board_games.0001.desc.i_am_winning.trait.compassionate } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = callous } } desc = board_games.0001.desc.i_am_winning.trait.callous } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = sadistic } } desc = board_games.0001.desc.i_am_winning.trait.sadistic } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = stubborn } } desc = board_games.0001.desc.i_am_winning.trait.stubborn } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = fickle } } desc = board_games.0001.desc.i_am_winning.trait.fickle } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = vengeful } } desc = board_games.0001.desc.i_am_winning.trait.vengeful } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = forgiving } } desc = board_games.0001.desc.i_am_winning.trait.forgiving } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = rowdy } } desc = board_games.0001.desc.i_am_winning.trait.rowdy } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = charming } } desc = board_games.0001.desc.i_am_winning.trait.charming } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = curious } } desc = board_games.0001.desc.i_am_winning.trait.curious } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = pensive } } desc = board_games.0001.desc.i_am_winning.trait.pensive } triggered_desc = { trigger = { scope:bg_opponent = { has_trait = bossy } } desc = board_games.0001.desc.i_am_winning.trait.bossy } ## Prior Matches & Relationships triggered_desc = { trigger = { has_relation_friend = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.friend } triggered_desc = { trigger = { has_relation_best_friend = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.best_friend } triggered_desc = { trigger = { has_relation_rival = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.rival } triggered_desc = { trigger = { has_relation_nemesis = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.nemesis } triggered_desc = { trigger = { has_relation_lover = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.lover } triggered_desc = { trigger = { has_relation_soulmate = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.soulmate } triggered_desc = { trigger = { has_relation_bully = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.bully } triggered_desc = { trigger = { has_relation_victim = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.victim } triggered_desc = { trigger = { has_relation_crush = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.crush } triggered_desc = { trigger = { has_relation_guardian = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.guardian } triggered_desc = { trigger = { has_relation_ward = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.relation.ward } ## Miscs ### Hooks triggered_desc = { trigger = { has_weak_hook = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.hook_on.weak } triggered_desc = { trigger = { has_strong_hook = scope:bg_opponent } desc = board_games.0001.desc.i_am_winning.hook_on.strong } triggered_desc = { trigger = { scope:bg_opponent = { has_weak_hook = scope:bg_myself} } desc = board_games.0001.desc.i_am_winning.hooked_by.weak } triggered_desc = { trigger = { scope:bg_opponent = { has_strong_hook = scope:bg_myself} } desc = board_games.0001.desc.i_am_winning.hooked_by.strong } ### Prior Matches triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_default_loss_to var:bg_recent_default_loss_to = scope:bg_myself } } desc = board_games.0001.desc.i_am_winning.match_history.recently_won_against.default } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_land_loss_to var:bg_recent_land_loss_to = scope:bg_myself } } desc = board_games.0001.desc.i_am_winning.match_history.recently_won_against.county } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_gambling_loss_to var:bg_recent_gambling_loss_to = scope:bg_myself } } desc = board_games.0001.desc.i_am_winning.match_history.recently_won_against.gamble } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_default_loss_to var:bg_recent_default_loss_to = scope:bg_myself } } desc = board_games.0001.desc.i_am_winning.match_history.recently_lost_against.default } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_land_loss_to var:bg_recent_land_loss_to = scope:bg_myself } } desc = board_games.0001.desc.i_am_winning.match_history.recently_lost_against.county } triggered_desc = { trigger = { scope:bg_opponent = { exists = var:bg_recent_gambling_loss_to var:bg_recent_gambling_loss_to = scope:bg_myself } } desc = board_games.0001.desc.i_am_winning.match_history.recently_lost_against.gamble } ### Other #### [tumbleweeds] } } } } theme = martial_strategy_focus left_portrait = { character = scope:bg_myself triggered_animation = { # Winning by a large margin trigger = { scope:bg_myself = { NOT = { has_trait = humble } OR = { var:bg_current_score >= bg_relative_score_heavy_difference_threshold_value var:bg_current_score >= bg_close_to_winning_threshold_value } } } animation = chess_certain_win } triggered_animation = { # Winning by any margin trigger = { scope:bg_myself = { NOT = { has_trait = humble } var:bg_current_score >= bg_relative_score_light_difference_threshold_value } } animation = chess_cocky } animation = personality_rational } right_portrait = { character = scope:bg_opponent triggered_animation = { trigger = { scope:bg_opponent = { NOT = { has_trait = humble } } scope:bg_myself.var:bg_current_score < scope:bg_opponent.var:bg_current_score scope:bg_myself.var:bg_current_score <= bg_relative_score_heavy_difference_threshold_value } animation = chess_cocky } triggered_animation = { trigger = { scope:bg_opponent = { NOT = { has_trait = humble } } scope:bg_myself.var:bg_current_score < scope:bg_opponent.var:bg_current_score OR = { scope:bg_myself.var:bg_current_score <= bg_relative_score_light_difference_threshold_value scope:bg_opponent.var:bg_current_score >= bg_close_to_winning_threshold_value } } animation = chess_certain_win } animation = scheme } artifact = { target = scope:bg_chess_board position = lower_center_portrait } override_background = { trigger = { scope:bg_locale = flag:terrain_scope } reference = terrain_scope } override_background = { trigger = { scope:bg_locale = flag:wilderness_scope } reference = wilderness_scope } override_background = { trigger = { scope:bg_locale = flag:battlefield } reference = battlefield } override_background = { trigger = { scope:bg_locale = flag:temple } reference = temple } override_background = { trigger = { scope:bg_locale = flag:council_chamber } reference = council_chamber } override_background = { trigger = { scope:bg_locale = flag:courtyard } reference = courtyard } override_background = { trigger = { scope:bg_locale = flag:dungeon } reference = dungeon } override_background = { trigger = { scope:bg_locale = flag:docks } reference = docks } override_background = { trigger = { scope:bg_locale = flag:feast } reference = feast } override_background = { trigger = { scope:bg_locale = flag:gallows } reference = gallows } override_background = { trigger = { scope:bg_locale = flag:garden } reference = garden } override_background = { trigger = { scope:bg_locale = flag:market } reference = market } override_background = { trigger = { scope:bg_locale = flag:sitting_room } reference = sitting_room } override_background = { trigger = { scope:bg_locale = flag:bedchamber } reference = bedchamber } override_background = { trigger = { scope:bg_locale = flag:study } reference = study } override_background = { trigger = { scope:bg_locale = flag:physicians_study } reference = physicians_study } override_background = { trigger = { scope:bg_locale = flag:tavern } reference = tavern } override_background = { trigger = { scope:bg_locale = flag:throne_room } reference = throne_room } override_background = { trigger = { scope:bg_locale = flag:army_camp } reference = army_camp } trigger = { scope:bg_defender = { can_start_board_game_eligibility_checks_trigger = yes } scope:bg_attacker = { can_start_board_game_eligibility_checks_trigger = yes } # Invalidate if there's a war for the wagered county or they leave your realm for any reason. trigger_if = { limit = { exists = scope:bg_stake_land_recipient exists = scope:bg_stake_land_actor } OR = { scope:bg_stake_land_recipient.holder = scope:recipient scope:bg_stake_land_actor.holder = scope:actor scope:recipient ={ is_at_war = yes any_character_war = { casus_belli = { any_target_title = { this = scope:bg_stake_land_recipient } } } } scope:actor = { is_at_war = yes any_character_war = { casus_belli = { any_target_title = { this = scope:bg_stake_land_actor } } } } } } } on_trigger_fail = { bg_fire_clean_up_and_invalidate_effect = yes } immediate = { # Sort scopes for portraits & loc. save_scope_as = bg_myself if = { limit = { this = scope:bg_defender } scope:bg_attacker = { save_scope_as = bg_opponent } } else = { scope:bg_defender = { save_scope_as = bg_opponent } } # TIT-34135 } # Diplomacy: fall back on social acumen. option = { name = { text = { random_valid = { desc = board_games.0001.a.random.a desc = board_games.0001.a.random.b desc = board_games.0001.a.random.c desc = board_games.0001.a.random.d } } } skill = diplomacy trigger = { OR = { scope:bg_skill_a = flag:diplomacy scope:bg_skill_b = flag:diplomacy scope:bg_skill_c = flag:diplomacy } } # Notify the player of the counter type. custom_tooltip = board_games.0001.a.tt # Duel-'em-up. bg_play_move_type_effect = { SKILL = diplomacy LOC_KEY = a } # No stress impact for picking moves, but we apply stress impact in the post-game. ai_chance = { base = 0 bg_ai_weight_choices_by_skill_modifier = { SKILL = diplomacy CHARACTER = this } ai_value_modifier = { ai_sociability = 1 ai_vengefulness = -1 } } } # Martial: play strategically. option = { name = { text = { random_valid = { desc = board_games.0001.b.random.a desc = board_games.0001.b.random.b desc = board_games.0001.b.random.c desc = board_games.0001.b.random.d } } } skill = martial trigger = { OR = { scope:bg_skill_a = flag:martial scope:bg_skill_b = flag:martial scope:bg_skill_c = flag:martial } } # Notify the player of the counter type. custom_tooltip = board_games.0001.b.tt # Duel-'em-up. bg_play_move_type_effect = { SKILL = martial LOC_KEY = b } # No stress impact for picking moves, but we apply stress impact in the post-game. ai_chance = { base = 0 bg_ai_weight_choices_by_skill_modifier = { SKILL = martial CHARACTER = this } ai_value_modifier = { ai_boldness = 1 ai_energy = 1 } } } # Stewardship: play efficiently option = { name = { text = { random_valid = { desc = board_games.0001.c.random.a desc = board_games.0001.c.random.b desc = board_games.0001.c.random.c desc = board_games.0001.c.random.d } } } skill = stewardship trigger = { OR = { scope:bg_skill_a = flag:stewardship scope:bg_skill_b = flag:stewardship scope:bg_skill_c = flag:stewardship } } # Notify the player of the counter type. custom_tooltip = board_games.0001.c.tt # Duel-'em-up. bg_play_move_type_effect = { SKILL = stewardship LOC_KEY = c } # No stress impact for picking moves, but we apply stress impact in the post-game. ai_chance = { base = 100 bg_ai_weight_choices_by_skill_modifier = { SKILL = stewardship CHARACTER = this } ai_value_modifier = { ai_rationality = 1 # Greed isn't super fitting, tbh, but it's associated with higher stewardship so it makes it easier to judge someone based on their skills. ai_greed = 1 } } } # Intrigue: play with cunning. option = { name = { text = { random_valid = { desc = board_games.0001.d.random.a desc = board_games.0001.d.random.b desc = board_games.0001.d.random.c desc = board_games.0001.d.random.d } } } skill = intrigue trigger = { OR = { scope:bg_skill_a = flag:intrigue scope:bg_skill_b = flag:intrigue scope:bg_skill_c = flag:intrigue } } # Notify the player of the counter type. custom_tooltip = board_games.0001.d.tt # Duel-'em-up. bg_play_move_type_effect = { SKILL = intrigue LOC_KEY = d } # No stress impact for picking moves, but we apply stress impact in the post-game. ai_chance = { base = 100 bg_ai_weight_choices_by_skill_modifier = { SKILL = intrigue CHARACTER = this } ai_value_modifier = { ai_vengefulness = 1 ai_honor = -1 } } } # Learning: play by the (well thought-out) book. option = { name = { text = { random_valid = { desc = board_games.0001.e.random.a desc = board_games.0001.e.random.b desc = board_games.0001.e.random.c desc = board_games.0001.e.random.d } } } skill = learning trigger = { OR = { scope:bg_skill_a = flag:learning scope:bg_skill_b = flag:learning scope:bg_skill_c = flag:learning } } # Notify the player of the counter type. custom_tooltip = board_games.0001.e.tt # Duel-'em-up. bg_play_move_type_effect = { SKILL = learning LOC_KEY = e } # No stress impact for picking moves, but we apply stress impact in the post-game. ai_chance = { base = 100 bg_ai_weight_choices_by_skill_modifier = { SKILL = learning CHARACTER = this } ai_value_modifier = { ai_boldness = -1 # Sociability isn't anathema to good learning, but it does suggest a more bookish person. ai_sociability = -1 } } } # Prowess: settle arguments over rules with fisticuffs mid-game. option = { name = { text = { random_valid = { desc = board_games.0001.f.random.a desc = board_games.0001.f.random.b desc = board_games.0001.f.random.c desc = board_games.0001.f.random.d } } } skill = prowess trigger = { OR = { scope:bg_skill_a = flag:prowess scope:bg_skill_b = flag:prowess scope:bg_skill_c = flag:prowess } } # Notify the player of the counter type. custom_tooltip = board_games.0001.f.tt # Duel-'em-up. bg_play_move_type_effect = { SKILL = prowess LOC_KEY = e } # No stress impact for picking moves, but we apply stress impact in the post-game. ai_chance = { base = 100 bg_ai_weight_choices_by_skill_modifier = { SKILL = prowess CHARACTER = this } ai_value_modifier = { ai_boldness = 1 ai_vengefulness = 1 } } } after = { #If we're scope:bg_defender, send scope:bg_attacker their instance of the event. if = { limit = { this = scope:bg_defender } scope:bg_attacker = { trigger_event = board_games.0001 } } #Otherwise we're scope:bg_attacker, so end the round. else = { trigger_event = board_games.0011 } } } ################################################## # Round End Events # by Ewan Cowhig Croft # 0011 - 0020 ################################################## scripted_effect bg_calc_current_scores_effect = { $CURRENT_PLAYER$ = { set_variable = { name = bg_current_score value = { value = $CURRENT_PLAYER$.var:bg_current_score # Add results based on move score. ## First, work out if we've been countered. if = { limit = { exists = scope:bg_counterer scope:bg_counterer = $OTHER_PLAYER$ } # Lots'n'lots for crit successes. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:crit_success } add = { value = bg_crit_success_add_value multiply = bg_counter_mult_value round = yes } } # Lots for successes. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:success } add = { value = bg_success_add_value multiply = bg_counter_mult_value round = yes } } # Less for fails. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:failure } add = { value = bg_failure_add_value multiply = bg_counter_mult_value round = yes } } # Not-lots for crit fails. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:crit_failure } add = { value = bg_crit_failure_add_value multiply = bg_counter_mult_value round = yes } } } ## Otherwise, we can use the normal values. if = { limit = { exists = scope:bg_counterer scope:bg_counterer = $CURRENT_PLAYER$ } # Lots'n'lots for crit successes. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:crit_success } add = bg_crit_success_add_value } # Lots for successes. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:success } add = bg_success_add_value } # Less for fails. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:failure } add = bg_failure_add_value } # for crit fails. if = { limit = { $CURRENT_PLAYER$.var:bg_move_result = flag:crit_failure } add = bg_crit_failure_add_value } } } } } } scripted_effect bg_finalise_match_end_effect = { # Track variables. ## Is either character a player? If so, bookmark them on their opponent. if = { limit = { OR = { scope:bg_victor = { is_ai = no } scope:bg_loser = { is_ai = no } } } # Achievement tracking. if = { limit = { scope:chess_land ?= yes } add_achievement_global_variable_effect = { VARIABLE = fp2_high_stakes_chess_achievement_unlocked VALUE = yes } } # Process stakes from the interaction. scope:bg_loser = { # Mark land stakes especially. if = { limit = { scope:chess_land ?= yes } set_variable = { name = bg_recent_land_loss_to value = scope:bg_victor years = 10 } if = { limit = { scope:bg_loser = scope:recipient } set_variable = { name = bg_recent_land_loss_stake value = scope:bg_stake_land_recipient years = 10 } } if = { limit = { scope:bg_loser = scope:actor } set_variable = { name = bg_recent_land_loss_stake value = scope:bg_stake_land_actor years = 10 } } } # But also regular gambling. else_if = { limit = { OR = { scope:chess_gold ?= yes scope:chess_prestige ?= yes } } set_variable = { name = bg_recent_gambling_loss_to value = scope:bg_victor years = 10 } } # And otherwise we use the default. else = { set_variable = { name = bg_recent_default_loss_to value = scope:bg_victor years = 10 } } } } ## Is either character a player _or_ a game-master? If so, increment their tallies. scope:bg_victor = { if = { limit = { OR = { is_ai = no # TIT-34022 } } # If they don't have a score tally already, create one. if = { limit = { NOT = { has_variable = bg_win_tally } } set_variable = { name = bg_win_tally value = 0 } } # Now we make our changes. change_variable = { name = bg_win_tally add = 1 } } } scope:bg_loser = { if = { limit = { OR = { is_ai = no # TIT-34022 } } # If they don't have a score tally already, create one. if = { limit = { NOT = { has_variable = bg_loss_tally } } set_variable = { name = bg_loss_tally value = 0 } } # Now we make our changes. change_variable = { name = bg_loss_tally add = 1 } } } # Send out results events. scope:bg_victor = { trigger_event = board_games.0031 } scope:bg_loser = { trigger_event = board_games.0041 } # Clean up effects. remove_board_game_info_effect = yes ## Including removing the in-progress match flag for invalidation if this was via interaction. if = { limit = { exists = scope:actor scope:actor = { has_character_flag = taken_challenge_to_chess_interaction } } scope:actor = { remove_character_flag = taken_challenge_to_chess_interaction } } # Finally, send out the post-match event for scope:sg_initiator. scope:bg_initiator = { trigger_event = { saved_event_id = scope:follow_up_event } } } # Both players have moved, work out results. board_games.0011 = { hidden = yes immediate = { # Work out counterers. ## First, clear the prior counterer (if any). clear_saved_scope = bg_counterer ## Scope:bg_defender. ### Scope:bg_skill_a > scope:bg_skill_b. if = { limit = { scope:bg_defender_move = scope:bg_skill_a scope:bg_attacker_move = scope:bg_skill_b } scope:bg_defender = { save_scope_as = bg_counterer } } ### Scope:bg_skill_b > scope:bg_skill_c. else_if = { limit = { scope:bg_defender_move = scope:bg_skill_b scope:bg_attacker_move = scope:bg_skill_c } scope:bg_defender = { save_scope_as = bg_counterer } } ### Scope:bg_skill_c > scope:bg_skill_a. else_if = { limit = { scope:bg_defender_move = scope:bg_skill_c scope:bg_attacker_move = scope:bg_skill_a } scope:bg_defender = { save_scope_as = bg_counterer } } ## Scope:bg_attacker. ### Scope:bg_skill_a > scope:bg_skill_b. else_if = { limit = { scope:bg_attacker_move = scope:bg_skill_a scope:bg_defender_move = scope:bg_skill_b } scope:bg_attacker = { save_scope_as = bg_counterer } } ### Scope:bg_skill_b > scope:bg_skill_c. else_if = { limit = { scope:bg_attacker_move = scope:bg_skill_b scope:bg_defender_move = scope:bg_skill_c } scope:bg_attacker = { save_scope_as = bg_counterer } } ### Scope:bg_skill_c > scope:bg_skill_a. else_if = { limit = { scope:bg_attacker_move = scope:bg_skill_c scope:bg_defender_move = scope:bg_skill_a } scope:bg_attacker = { save_scope_as = bg_counterer } } # Calc new score totals. bg_calc_current_scores_effect = { CURRENT_PLAYER = scope:bg_defender OTHER_PLAYER = scope:bg_attacker } bg_calc_current_scores_effect = { CURRENT_PLAYER = scope:bg_attacker OTHER_PLAYER = scope:bg_defender } # Has anyone managed to win? ## First we check scope:bg_defender. if = { limit = { scope:bg_defender.var:bg_current_score > bg_winning_threshold_value scope:bg_defender.var:bg_current_score >= scope:bg_attacker.var:bg_current_score } scope:bg_defender = { save_scope_as = bg_victor } scope:bg_attacker = { save_scope_as = bg_loser } save_scope_value_as = { name = bg_victory_type value = flag:skill } bg_finalise_match_end_effect = yes } ## Then scope:bg_attacker. else_if = { limit = { scope:bg_attacker.var:bg_current_score > bg_winning_threshold_value scope:bg_attacker.var:bg_current_score > scope:bg_defender.var:bg_current_score } scope:bg_attacker = { save_scope_as = bg_victor } scope:bg_defender = { save_scope_as = bg_loser } save_scope_value_as = { name = bg_victory_type value = flag:skill } bg_finalise_match_end_effect = yes } ## Then see if we're above the round limit and should default. else_if = { limit = { scope:bg_defender.var:bg_current_round >= bg_round_cap_value } scope:bg_defender = { save_scope_as = bg_victor } scope:bg_attacker = { save_scope_as = bg_loser } save_scope_value_as = { name = bg_victory_type value = flag:sudden_death } bg_finalise_match_end_effect = yes } ## Finally, if none of that applies, we just want to spin on to the next event. else = { scope:bg_defender = { change_variable = { name = bg_current_round add = 1 } trigger_event = board_games.0001 } } } } ################################################## # Default Invalidation Event # by Ewan Cowhig Croft # 0021 - 0030 ################################################## # The game has invalidated, inform affected parties. board_games.0021 = { hidden = yes immediate = { # Inform scope:bg_defender that the game has invalidated. scope:bg_defender = { send_interface_toast = { type = event_toast_effect_neutral title = board_games.0021.trigger_failure.bg_defender left_icon = scope:bg_attacker } } # If they're not the same person, inform scope:bg_initiator that the game scope:bg_attacker is playing has invalidated. if = { limit = { scope:bg_attacker != scope:bg_initiator } scope:bg_initiator = { send_interface_toast = { type = event_toast_effect_neutral title = board_games.0021.trigger_failure.bg_initiator left_icon = scope:bg_attacker right_icon = scope:bg_defender } } } # Now inform scope:bg_attacker. scope:bg_attacker = { send_interface_toast = { type = event_toast_effect_neutral title = board_games.0021.trigger_failure.bg_attacker left_icon = scope:bg_defender } } # Reset cooldowns if this was the interaction. if = { limit = { exists = scope:actor scope:actor = { has_character_flag = taken_challenge_to_chess_interaction } } scope:actor = { remove_interaction_cooldown = challenge_to_2p_chess_interaction remove_interaction_cooldown_against = { interaction = challenge_to_2p_chess_interaction target = scope:recipient } } } } } ################################################## # Conclusion Events # by Ewan Cowhig Croft # 0031 - 0050 ################################################## scripted_effect bg_make_friends_after_game_effect = { duel = { skill = diplomacy target = $RECIPIENT$ # They'd love to play you again. 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } opinion_modifier = { who = $RECIPIENT$ opinion_target = $ACTOR$ multiplier = 0.5 } desc = board_games.0031.a.tt.success send_interface_toast = { type = event_toast_effect_good title = board_games.0031.a.tt.success left_icon = $RECIPIENT$ progress_towards_friend_effect = { REASON = friend_good_boardgame CHARACTER = $RECIPIENT$ OPINION = default_friend_opinion } } } # They think you suck. 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } desc = board_games.0031.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = board_games.0031.a.tt.failure left_icon = $RECIPIENT$ reverse_add_opinion = { modifier = unfriendly_opinion target = $RECIPIENT$ opinion = -30 } } } } } scripted_effect bg_victor_end_result_tooltip_effect = { #Clarify the results. if = { limit = { scope:bg_victory_type = flag:skill } custom_tooltip = board_games.0031.desc.result.skill } else_if = { limit = { scope:bg_victory_type = flag:sudden_death } custom_tooltip = board_games.0031.desc.result.sudden_death } } scripted_effect bg_loser_end_result_tooltip_effect = { #Clarify the results. if = { limit = { scope:bg_victory_type = flag:skill } custom_tooltip = board_games.0041.desc.result.skill } else_if = { limit = { scope:bg_victory_type = flag:sudden_death } custom_tooltip = board_games.0041.desc.result.sudden_death } } # Scope:bg_victor notification event. board_games.0031 = { type = character_event window = duel_event title = board_games.0031.t desc = { triggered_desc = { # This can be expanded upon with further content if desired, see MR/TIT-34157 comments for more details trigger = { always = yes } desc = { # To make it easy to modify and expand upon the dynamic description, it is divided into swappable chunks. desc = { # SECTION ONE: Descriptor of how you feel/awesome you are >Maximum Word Count: 20< random_valid = { desc = board_games.0031.desc.intro.02 desc = board_games.0031.desc.intro.01 desc = board_games.0031.desc.intro.03 } } desc = { # SECTION TWO: Descriptor of what happened in the match >Maximum Word Count: 20< random_valid = { triggered_desc = { trigger = { learning > high_skill_rating learning > scope:bg_opponent.learning } desc = board_games.0031.desc.middle.02 } triggered_desc = { trigger = { OR = { piety_level >= high_piety_level has_trait = zealous has_trait = holy_warrior } } desc = board_games.0031.desc.middle.03 } desc = board_games.0031.desc.middle.01 } } desc = { # SECTION THREE: Descriptor of how the opponent feels/reacts >Maximum Word Count: 20< random_valid = { triggered_desc = { trigger = { scope:bg_opponent = { has_trait = wrathful } } desc = board_games.0031.desc.end.03 } desc = board_games.0031.desc.end.01 desc = board_games.0031.desc.end.02 } } } } } theme = martial_strategy_focus left_portrait = { character = scope:bg_victor animation = throne_room_cheer_2 } right_portrait = { character = scope:bg_loser animation = fear } override_background = { trigger = { scope:bg_locale = flag:terrain_scope } reference = terrain_scope } override_background = { trigger = { scope:bg_locale = flag:wilderness_scope } reference = wilderness_scope } override_background = { trigger = { scope:bg_locale = flag:battlefield } reference = battlefield } override_background = { trigger = { scope:bg_locale = flag:temple } reference = temple } override_background = { trigger = { scope:bg_locale = flag:council_chamber } reference = council_chamber } override_background = { trigger = { scope:bg_locale = flag:courtyard } reference = courtyard } override_background = { trigger = { scope:bg_locale = flag:dungeon } reference = dungeon } override_background = { trigger = { scope:bg_locale = flag:docks } reference = docks } override_background = { trigger = { scope:bg_locale = flag:feast } reference = feast } override_background = { trigger = { scope:bg_locale = flag:gallows } reference = gallows } override_background = { trigger = { scope:bg_locale = flag:garden } reference = garden } override_background = { trigger = { scope:bg_locale = flag:market } reference = market } override_background = { trigger = { scope:bg_locale = flag:sitting_room } reference = sitting_room } override_background = { trigger = { scope:bg_locale = flag:bedchamber } reference = bedchamber } override_background = { trigger = { scope:bg_locale = flag:study } reference = study } override_background = { trigger = { scope:bg_locale = flag:physicians_study } reference = physicians_study } override_background = { trigger = { scope:bg_locale = flag:tavern } reference = tavern } override_background = { trigger = { scope:bg_locale = flag:throne_room } reference = throne_room } override_background = { trigger = { scope:bg_locale = flag:army_camp } reference = army_camp } immediate = { #Hand out Hastiluder reward if = { limit = { has_trait = tourney_participant } add_trait_xp = { trait = tourney_participant track = wit value = { integer_range = { min = 1 max = 5 } } } } } # Good game! option = { name = { text = { random_valid = { desc = board_games.0031.a desc = board_games.0031.a.a # Untested if this is working } } } # Display ending type. bg_victor_end_result_tooltip_effect = yes stress_impact = { gregarious = miniscule_stress_impact_loss arrogant = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 ai_vengefulness = -1 } } } # How does it feel to lose, little GetWomanMan? option = { name = { text = board_games.0031.b } name = { # I would *much* rather nest this, but due to script limitations, you cannot nest names like you can descs. It is very unfortuante. trigger = { OR = { has_trait = arrogant has_trait = wrathful } } text = board_games.0031.b.a } name = { trigger = { OR = { has_trait = arrogant has_trait = wrathful } learning > high_skill_rating learning > scope:bg_opponent.learning } text = board_games.0031.b.b } # Display ending type. bg_victor_end_result_tooltip_effect = yes # Progress towards rival. scope:bg_loser = { send_interface_toast = { type = event_toast_effect_neutral title = board_games.0031.b.progress_towards_rival left_icon = scope:bg_victor scope:bg_victor = { progress_towards_rival_effect = { REASON = rival_you_won_boardgame_challenge CHARACTER = scope:bg_loser OPINION = default_rival_opinion } } } } stress_impact = { greedy = miniscule_stress_impact_loss # Removed: Lustful } ai_chance = { # Low base chance so that only really sore losers will pick fights over simple games. base = 0 ai_value_modifier = { ai_vengefulness = 1 ai_sociability = -1 } } } # I'd love to play again some time... option = { name = board_games.0031.c # We don't let you try this against players, mostly for simplicity's sakes. trigger = { is_ai = no } # Display ending type. bg_victor_end_result_tooltip_effect = yes # Try to make friends by running a duel. bg_make_friends_after_game_effect = { ACTOR = scope:bg_victor RECIPIENT = scope:bg_loser } stress_impact = { humble = miniscule_stress_impact_loss forgiving = miniscule_stress_impact_loss gregarious = miniscule_stress_impact_loss arrogant = medium_stress_impact_gain vengeful = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 ai_vengefulness = -1 } } } # And perhaps, a lucky board... after = { # We only support chess boards at the moment. if = { limit = { scope:bg_system = flag:chess } # Hidden effect because random is a precious special snowflake that insists on telling you the percentage chance even when it has nothing to show >:(. hidden_effect = { random = { chance = { # Default odds are low. value = 5 # But if we won a county, we boost 'em. if = { limit = { scope:chess_land ?= yes } multiply = 5 } } trigger_event = { id = board_games.0051 months = 6 } } } } } } # Scope:bg_loser notification event. board_games.0041 = { type = character_event window = duel_event title = board_games.0041.t desc = { triggered_desc = { # Same comment applies above. When adding new content, I recommend adding an equal amount for both winning and losing. trigger = { always = yes } desc = { # To make it easy to modify and expand upon the dynamic description, it is divided into swappable chunks. desc = { # SECTION ONE: Descriptor of how the opponent feels/reacts >Maximum Word Count: 20< random_valid = { desc = board_games.0041.desc.intro.02 desc = board_games.0041.desc.intro.01 desc = board_games.0041.desc.intro.03 } } desc = { # SECTION TWO: Descriptor of what happened in the match >Maximum Word Count: 20< random_valid = { triggered_desc = { trigger = { scope:bg_opponent = { learning < low_skill_rating } } desc = board_games.0041.desc.middle.02 } triggered_desc = { trigger = { martial > very_high_skill_rating martial > scope:bg_opponent.martial has_trait = wrathful } desc = board_games.0041.desc.middle.03 } desc = board_games.0041.desc.middle.01 } } desc = { # SECTION THREE: Descriptor of how you feel/terrible you are >Maximum Word Count: 20< random_valid = { triggered_desc = { trigger = { has_trait = wrathful } desc = board_games.0041.desc.end.03 } desc = board_games.0041.desc.end.01 desc = board_games.0041.desc.end.02 } } } } } theme = martial_strategy_focus left_portrait = { character = scope:bg_loser animation = fear } right_portrait = { character = scope:bg_victor animation = throne_room_cheer_2 } override_background = { trigger = { scope:bg_locale = flag:terrain_scope } reference = terrain_scope } override_background = { trigger = { scope:bg_locale = flag:wilderness_scope } reference = wilderness_scope } override_background = { trigger = { scope:bg_locale = flag:battlefield } reference = battlefield } override_background = { trigger = { scope:bg_locale = flag:temple } reference = temple } override_background = { trigger = { scope:bg_locale = flag:council_chamber } reference = council_chamber } override_background = { trigger = { scope:bg_locale = flag:courtyard } reference = courtyard } override_background = { trigger = { scope:bg_locale = flag:dungeon } reference = dungeon } override_background = { trigger = { scope:bg_locale = flag:docks } reference = docks } override_background = { trigger = { scope:bg_locale = flag:feast } reference = feast } override_background = { trigger = { scope:bg_locale = flag:gallows } reference = gallows } override_background = { trigger = { scope:bg_locale = flag:garden } reference = garden } override_background = { trigger = { scope:bg_locale = flag:market } reference = market } override_background = { trigger = { scope:bg_locale = flag:sitting_room } reference = sitting_room } override_background = { trigger = { scope:bg_locale = flag:bedchamber } reference = bedchamber } override_background = { trigger = { scope:bg_locale = flag:study } reference = study } override_background = { trigger = { scope:bg_locale = flag:physicians_study } reference = physicians_study } override_background = { trigger = { scope:bg_locale = flag:tavern } reference = tavern } override_background = { trigger = { scope:bg_locale = flag:throne_room } reference = throne_room } override_background = { trigger = { scope:bg_locale = flag:army_camp } reference = army_camp } immediate = { #Hand out Hastiluder reward if = { limit = { has_trait = tourney_participant } add_trait_xp = { trait = tourney_participant track = wit value = { integer_range = { min = 1 max = 5 } } } } } # We'll see who wins next time... option = { name = board_games.0041.a # Display ending type. bg_loser_end_result_tooltip_effect = yes stress_impact = { gregarious = miniscule_stress_impact_loss arrogant = minor_stress_impact_gain vengeful = minor_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 ai_vengefulness = -1 } } } # You've made an enemy here today. option = { name = { text = board_games.0041.b } name = { trigger = { OR = { has_trait = arrogant has_trait = wrathful } OR = { has_trait = zealous has_trait = holy_warrior has_trait = heresiarch has_trait = devoted } } text = board_games.0041.b.b } # Display ending type. bg_loser_end_result_tooltip_effect = yes # Progress towards rival. scope:bg_victor = { send_interface_toast = { type = event_toast_effect_neutral title = board_games.0031.b.progress_towards_rival left_icon = scope:bg_loser scope:bg_loser = { progress_towards_rival_effect = { REASON = rival_won_boardgame_challenge CHARACTER = scope:bg_victor OPINION = default_rival_opinion } } } } stress_impact = { arrogant = miniscule_stress_impact_loss vengeful = miniscule_stress_impact_loss humble = medium_stress_impact_gain forgiving = major_stress_impact_gain } ai_chance = { # Low base chance so that only really sore losers will pick fights over simple games. base = 0 ai_value_modifier = { ai_vengefulness = 1 ai_sociability = -1 } } } # Well, the better GetWomanMan won! option = { name = board_games.0041.c # We don't let you try this against players, mostly for simplicity's sakes. trigger = { is_ai = no } # Display ending type. bg_loser_end_result_tooltip_effect = yes # Run the duel. bg_make_friends_after_game_effect = { ACTOR = scope:bg_loser RECIPIENT = scope:bg_victor } stress_impact = { humble = miniscule_stress_impact_loss forgiving = miniscule_stress_impact_loss gregarious = miniscule_stress_impact_loss arrogant = medium_stress_impact_gain vengeful = major_stress_impact_gain } ai_chance = { base = 100 ai_value_modifier = { ai_sociability = 1 ai_vengefulness = -1 } } } } ################################################## # Lucky Chess Board # by Ewan Cowhig Croft # 0051 - 0060 ################################################## # You favour a particular chess board after a lucky win. board_games.0051 = { type = character_event title = board_games.0051.t desc = board_games.0051.desc theme = martial_strategy_focus left_portrait = { character = scope:bg_victor animation = admiration } right_portrait = { character = scope:bg_loser animation = dismissal } override_background = { reference = sitting_room } #cooldown = { years = 100 } trigger = { # DLC check. OR = { has_fp2_dlc_trigger = yes has_tgp_dlc_trigger = yes } # Standard checks. is_available_at_peace_adult = yes is_landed = yes # Doesn't have a suitable board game. NOT = { any_character_artifact = { has_variable = can_be_used_for_board_games } } } # Ahhh, sure to bring good luck forever more! option = { name = board_games.0051.a # You gain a standard 2p chess board! create_artifact_fp2_2p_chess_board_effect = { OWNER = scope:bg_victor } # No stress impact here. ai_chance = { base = 10 ai_value_modifier = { ai_sociability = 1 ai_rationality = 0.5 } } } # Just a few more pieces and I could have a rare set... option = { name = board_games.0051.b trigger = { location = { bg_game_type_region_go_trigger = no } } remove_short_term_gold = medium_gold_value # You gain an exotic 4p chess board! create_artifact_fp2_4p_chess_board_effect = { OWNER = scope:bg_victor } # No stress impact here. ai_chance = { base = 10 ai_value_modifier = { ai_sociability = 1 ai_energy = 0.5 } } } # I don't need special toys. option = { name = board_games.0051.c # You're truckin' along just fine without all these newfangled games. add_stress = minor_stress_loss # No stress impact here. ai_chance = { base = 10 ai_value_modifier = { ai_rationality = -0.25 ai_sociability = -0.5 } } } } ################################################## # Debug Events # by Ewan Cowhig Croft # 0101 - 0130 ################################################## # Error suppression. board_games.0101 = { hidden = yes orphan = yes immediate = { # Hidden effect blocks used for easy collapsing. # Types of game. hidden_effect = { save_scope_value_as = { name = bg_system value = flag:chess } save_scope_value_as = { name = bg_system value = flag:pachisi } save_scope_value_as = { name = bg_system value = flag:tabula } save_scope_value_as = { name = bg_system value = flag:hnefatafl } save_scope_value_as = { name = bg_system value = flag:go } save_scope_value_as = { name = bg_system value = flag:fidchell } } # Backgrounds. hidden_effect = { save_scope_value_as = { name = bg_locale value = flag:terrain_scope } save_scope_value_as = { name = bg_locale value = flag:wilderness_scope } save_scope_value_as = { name = bg_locale value = flag:battlefield } save_scope_value_as = { name = bg_locale value = flag:temple } save_scope_value_as = { name = bg_locale value = flag:council_chamber } save_scope_value_as = { name = bg_locale value = flag:courtyard } save_scope_value_as = { name = bg_locale value = flag:dungeon } save_scope_value_as = { name = bg_locale value = flag:docks } save_scope_value_as = { name = bg_locale value = flag:feast } save_scope_value_as = { name = bg_locale value = flag:gallows } save_scope_value_as = { name = bg_locale value = flag:garden } save_scope_value_as = { name = bg_locale value = flag:market } save_scope_value_as = { name = bg_locale value = flag:sitting_room } save_scope_value_as = { name = bg_locale value = flag:bedchamber } save_scope_value_as = { name = bg_locale value = flag:study } save_scope_value_as = { name = bg_locale value = flag:physicians_study } save_scope_value_as = { name = bg_locale value = flag:tavern } save_scope_value_as = { name = bg_locale value = flag:throne_room } save_scope_value_as = { name = bg_locale value = flag:army_camp } } # Random variables. hidden_effect = { if = { limit = { exists = var:bg_recent_land_loss_stake } } } } } # Debug board games. board_games.0102 = { type = character_event title = board_games.0102.t desc = board_games.0102.desc theme = martial_strategy_focus left_portrait = { character = scope:actor animation = throne_room_applaud_1 } right_portrait = { character = scope:recipient animation = fear } override_background = { reference = sitting_room } # Ordinary game, please. option = { name = board_games.0102.a # No special anything needed. } # Foe only uses winning locs, please. option = { name = board_games.0102.b set_variable = bg_gib_only_winning_locs } # Foe only uses losing locs, please. option = { name = board_games.0102.c set_variable = bg_gib_only_losing_locs } after = { # Chess. if = { limit = { scope:board_game_chess = yes } configure_start_board_game_effect = { BG_INITIATOR = scope:actor BG_ATTACKER = scope:actor BG_DEFENDER = scope:recipient SYSTEM = chess LOCALE = random_nice_day OUTPUT_EVENT = perk_interaction.0121 INVALIDATION_EVENT = board_games.0021 } } # Pachisi. if = { limit = { scope:board_game_pachisi = yes } configure_start_board_game_effect = { BG_INITIATOR = scope:actor BG_ATTACKER = scope:actor BG_DEFENDER = scope:recipient SYSTEM = pachisi LOCALE = random_nice_day OUTPUT_EVENT = perk_interaction.0121 INVALIDATION_EVENT = board_games.0021 } } # Tabula. if = { limit = { scope:board_game_tabula = yes } configure_start_board_game_effect = { BG_INITIATOR = scope:actor BG_ATTACKER = scope:actor BG_DEFENDER = scope:recipient SYSTEM = tabula LOCALE = random_nice_day OUTPUT_EVENT = perk_interaction.0121 INVALIDATION_EVENT = board_games.0021 } } # Hnefatafl. if = { limit = { scope:board_game_hnefatafl = yes } configure_start_board_game_effect = { BG_INITIATOR = scope:actor BG_ATTACKER = scope:actor BG_DEFENDER = scope:recipient SYSTEM = hnefatafl LOCALE = random_nice_day OUTPUT_EVENT = perk_interaction.0121 INVALIDATION_EVENT = board_games.0021 } } # Go. if = { limit = { scope:board_game_go = yes } configure_start_board_game_effect = { BG_INITIATOR = scope:actor BG_ATTACKER = scope:actor BG_DEFENDER = scope:recipient SYSTEM = go LOCALE = random_nice_day OUTPUT_EVENT = perk_interaction.0121 INVALIDATION_EVENT = board_games.0021 } } # Fidchell. if = { limit = { scope:board_game_fidchell = yes } configure_start_board_game_effect = { BG_INITIATOR = scope:actor BG_ATTACKER = scope:actor BG_DEFENDER = scope:recipient SYSTEM = fidchell LOCALE = random_nice_day OUTPUT_EVENT = perk_interaction.0121 INVALIDATION_EVENT = board_games.0021 } } } }