﻿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
			}
		}
	}
}
