CK3 DatabaseCrusader Kings III · 1.20.1.2 “Crozier” · unofficial
Silk & Silverout Tue, Nov 17What's free, what needs the DLC, price →

Interaction · Hostile actions

Trial-by-Combat

No costThe Northern LordsThe AI weighs it

Challenge the recipient to a Trial-by-Combat

What you need

You

To send it

  • You:
  • You:
    • NOT = { has_truce = scope:recipient }
  • You: Is not at war with the target
  • You:
    • has_imprisonment_reason = scope:recipient
  • You: Is not imprisoned
  • The character you target: Is not imprisoned

To see it in the menu

  • If played by the AI:
  • You › Their culture: The Culture has the Crimes by Characters that you cannot Imprison and who aren't your Liege may be settled via Single Combat Tradition
  • The character you target › Their culture: The Culture has the Crimes by Characters that you cannot Imprison and who aren't your Liege may be settled via Single Combat Tradition
  • None of these

    • Is a vassal (or below) of the target
    • The character you target: Is a vassal (or below) of you
  • The character you target:
    • One of these

      • Is landed
      • or

        All of these

        • they has administrative government mechanic
        • Is not landed
        • If

          a check the game hides

          Then

          • Their house: Has the house check as house head
        • Has a domicile
      • or

        All of these

        • Their liege:
          • All of these

            • Holds China
            • Government is Celestial
            • Their government has the government uses ministry budget flag
        • One of these

      • or

        All of these

        • Is a ruler
        • Government is a Theocratic-type Government
    • Not all of these

      • Their court owner:
        • One of these

          • Is you
          • or

            Any liege or above: Is you

Trial-by-Combat is a hostile character interaction in Crusader Kings III. The AI weighs it. Reasons the AI weighs include Craven hates Duels to the Death (-10), Forgiving hates Duels to the Death (-10), Compassionate disapproves of Duels to the Death (-10) and 26 more. It needs The Northern Lords. Patch 1.20.1.2, from game/common/character_interactions/01_fp1_interactions.txt.

for a guide, post or blog
Quick answers (1)
How do I get the AI to accept Trial-by-Combat?
The AI weighs it. Its reasons: Your Prowess, The recipient's Prowess, … Opinion of …, Craven hates Duels to the Death -10, Forgiving hates Duels to the Death -10, Compassionate disapproves of Duels to the Death -10, Brave loves Duels to the Death +20, Vengeful loves Duels to the Death +20, Callous approves of Duels to the Death +10, Sadistic loves Duels to the Death +20, Greedy disapproves of Duels for Gold -10, Generous approves of Duels for Gold +10, Arrogant disapproves of Duels for a Weak Hook -10, Paranoid disapproves of Duels for a Weak Hook -10, Arbitrary disapproves of Duels for a Weak Hook -10, Humble approves of Duels for a Weak Hook +10, Trusting approves of Duels for a Weak Hook +10, Just approves of Duels for a Weak Hook +10, Arrogant hates Duels for public humiliation -20, Vengeful hates Duels for public humiliation -20, Stubborn hates Duels for public humiliation -20, Humble approves of Duels for public humiliation +10, Forgiving approves of Duels for public humiliation +10, Fickle approves of Duels for public humiliation +10, Rank Difference +15, Rank Difference +10, Rank Difference +5, Rank Difference -10, Rank Difference -20, Rank Difference -30, They is your Rival +50 and They is your Nemesis +100.

Will they accept?

The AI adds these up and accepts above zero. Reasons in italics are the script's, with no label in the game.

ReasonAmount
Base0
Your Prowessyour prowess × -0.5
The recipient's Prowesstheir prowess × 0.5
… Opinion of …varies
Their personality (AI values: boldness (scripted), honor (scripted))varies
Craven hates Duels to the Death
when
  • Has the Trait: Craven
  • The option “tbc death” is chosen
-10
Forgiving hates Duels to the Death
when
-10
Compassionate disapproves of Duels to the Death
when
-10
Brave loves Duels to the Death
when
  • Has the Trait: Brave
  • The option “tbc death” is chosen
+20
Vengeful loves Duels to the Death
when
  • Has the Trait: Vengeful
  • The option “tbc death” is chosen
+20
Callous approves of Duels to the Death
when
  • Has the Trait: Callous
  • The option “tbc death” is chosen
+10
Sadistic loves Duels to the Death
when
  • Has the Trait: Sadistic
  • The option “tbc death” is chosen
+20
Greedy disapproves of Duels for Gold
when
  • Has the Trait: Greedy
  • The option “tbc gold” is chosen
-10
Generous approves of Duels for Gold
when
+10
Arrogant disapproves of Duels for a Weak Hook
when
  • Has the Trait: Arrogant
  • The option “tbc weak hook” is chosen
-10
Paranoid disapproves of Duels for a Weak Hook
when
  • Has the Trait: Paranoid
  • The option “tbc weak hook” is chosen
-10
Arbitrary disapproves of Duels for a Weak Hook
when
  • Has the Trait: Arbitrary
  • The option “tbc weak hook” is chosen
-10
Humble approves of Duels for a Weak Hook
when
  • Has the Trait: Humble
  • The option “tbc weak hook” is chosen
+10
Trusting approves of Duels for a Weak Hook
when
  • Has the Trait: Trusting
  • The option “tbc weak hook” is chosen
+10
Just approves of Duels for a Weak Hook
when
  • Has the Trait: Just
  • The option “tbc weak hook” is chosen
+10
Arrogant hates Duels for public humiliation
when
  • Has the Trait: Arrogant
  • The option “tbc humiliation” is chosen
-20
Vengeful hates Duels for public humiliation
when
  • Has the Trait: Vengeful
  • The option “tbc humiliation” is chosen
-20
Stubborn hates Duels for public humiliation
when
  • Has the Trait: Stubborn
  • The option “tbc humiliation” is chosen
-20
Humble approves of Duels for public humiliation
when
  • Has the Trait: Humble
  • The option “tbc humiliation” is chosen
+10
Forgiving approves of Duels for public humiliation
when
  • Has the Trait: Forgiving
  • The option “tbc humiliation” is chosen
+10
Fickle approves of Duels for public humiliation
when
  • Has the Trait: Fickle
  • The option “tbc humiliation” is chosen
+10
Rank Difference
when
  • tier_difference = { target = scope:recipient value >= 4 }
+15
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 3 }
+10
Rank Difference
when
  • tier_difference = { target = scope:recipient value = 2 }
+5
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -2 }
-10
Rank Difference
when
  • tier_difference = { target = scope:recipient value = -3 }
-20
Rank Difference
when
  • tier_difference = { target = scope:recipient value <= -4 }
-30
They is your Rival
when
  • The character you target:
    • Has you as rival
    • Does not have you as nemesis
+50
They is your Nemesis
when
  • The character you target: Has you as nemesis
+100
Acceptance (ai_accept) (255 lines of game script)
base = 0
modifier = {
	add = {
		value = scope:puppet_or_actor.prowess
		multiply = -0.5
	}
	desc = TBC_PROWESS_ACTOR
}
modifier = {
	add = {
		value = scope:recipient.prowess
		multiply = 0.5
	}
	desc = TBC_PROWESS_RECIPIENT
}
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:puppet_or_actor
	multiplier = -1
	desc = AI_OPINION_REASON
}
ai_value_modifier = {
	who = scope:recipient
	ai_boldness = {
		if = {
			limit = {
				scope:recipient = {
					NOT = {
						ai_boldness = 0
					}
				}
			}
			value = 0.5
		}
	}
	ai_honor = {
		if = {
			limit = {
				scope:recipient = {
					NOT = {
						ai_honor = 0
					}
				}
			}
			value = 0.5
		}
	}
}
modifier = {
	add = -10
	has_trait = craven
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_CRAVEN
}
modifier = {
	add = -10
	has_trait = forgiving
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_FORGIVING
}
modifier = {
	add = -10
	has_trait = compassionate
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_COMPASSIONATE
}
modifier = {
	add = 20
	has_trait = brave
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_BRAVE
}
modifier = {
	add = 20
	has_trait = vengeful
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_VENGEFUL
}
modifier = {
	add = 10
	has_trait = callous
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_CALLOUS
}
modifier = {
	add = 20
	has_trait = sadistic
	scope:tbc_death = yes
	desc = TBC_OPINION_DEATH_TRAIT_SADISTIC
}
modifier = {
	add = -10
	has_trait = greedy
	scope:tbc_gold = yes
	desc = TBC_OPINION_GOLD_TRAIT_GREEDY
}
modifier = {
	add = 10
	has_trait = generous
	scope:tbc_gold = yes
	desc = TBC_OPINION_GOLD_TRAIT_GENEROUS
}
modifier = {
	add = -10
	has_trait = arrogant
	scope:tbc_weak_hook = yes
	desc = TBC_OPINION_WEAK_HOOK_TRAIT_ARROGANT
}
modifier = {
	add = -10
	has_trait = paranoid
	scope:tbc_weak_hook = yes
	desc = TBC_OPINION_WEAK_HOOK_TRAIT_PARANOID
}
modifier = {
	add = -10
	has_trait = arbitrary
	scope:tbc_weak_hook = yes
	desc = TBC_OPINION_WEAK_HOOK_TRAIT_ARBITRARY
}
modifier = {
	add = 10
	has_trait = humble
	scope:tbc_weak_hook = yes
	desc = TBC_OPINION_WEAK_HOOK_TRAIT_HUMBLE
}
modifier = {
	add = 10
	has_trait = trusting
	scope:tbc_weak_hook = yes
	desc = TBC_OPINION_WEAK_HOOK_TRAIT_TRUSTING
}
modifier = {
	add = 10
	has_trait = just
	scope:tbc_weak_hook = yes
	desc = TBC_OPINION_WEAK_HOOK_TRAIT_JUST
}
modifier = {
	add = -20
	has_trait = arrogant
	scope:tbc_humiliation = yes
	desc = TBC_OPINION_HUMILIATION_TRAIT_ARROGANT
}
modifier = {
	add = -20
	has_trait = vengeful
	scope:tbc_humiliation = yes
	desc = TBC_OPINION_HUMILIATION_TRAIT_VENGEFUL
}
modifier = {
	add = -20
	has_trait = stubborn
	scope:tbc_humiliation = yes
	desc = TBC_OPINION_HUMILIATION_TRAIT_STUBBORN
}
modifier = {
	add = 10
	has_trait = humble
	scope:tbc_humiliation = yes
	desc = TBC_OPINION_HUMILIATION_TRAIT_HUMBLE
}
modifier = {
	add = 10
	has_trait = forgiving
	scope:tbc_humiliation = yes
	desc = TBC_OPINION_HUMILIATION_TRAIT_FORGIVING
}
modifier = {
	add = 10
	has_trait = fickle
	scope:tbc_humiliation = yes
	desc = TBC_OPINION_HUMILIATION_TRAIT_FICKLE
}
modifier = {
	desc = AI_REFUSAL_RANK_DIFFERENCE
	scope:puppet_or_actor = {
		tier_difference = {
			target = scope:recipient
			value >= 4
		}
	}
	add = 15
}
modifier = {
	desc = AI_REFUSAL_RANK_DIFFERENCE
	scope:puppet_or_actor = {
		tier_difference = {
			target = scope:recipient
			value = 3
		}
	}
	add = 10
}
modifier = {
	desc = AI_REFUSAL_RANK_DIFFERENCE
	scope:puppet_or_actor = {
		tier_difference = {
			target = scope:recipient
			value = 2
		}
	}
	add = 5
}
modifier = {
	desc = AI_REFUSAL_RANK_DIFFERENCE
	scope:puppet_or_actor = {
		tier_difference = {
			target = scope:recipient
			value = -2
		}
	}
	add = -10
}
modifier = {
	desc = AI_REFUSAL_RANK_DIFFERENCE
	scope:puppet_or_actor = {
		tier_difference = {
			target = scope:recipient
			value = -3
		}
	}
	add = -20
}
modifier = {
	desc = AI_REFUSAL_RANK_DIFFERENCE
	scope:puppet_or_actor = {
		tier_difference = {
			target = scope:recipient
			value <= -4
		}
	}
	add = -30
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_rival_tt
	trigger = {
		scope:recipient = {
			has_relation_rival = scope:puppet_or_actor
			NOT = {
				has_relation_nemesis = scope:puppet_or_actor
			}
		}
	}
	add = 50
}
modifier = {
	desc = offer_vassalization_interaction_aibehavior_nemesis_tt
	trigger = {
		scope:recipient = {
			has_relation_nemesis = scope:puppet_or_actor
		}
	}
	add = 100
}

As written in game/common/character_interactions/01_fp1_interactions.txt.

What happens

If they accept

  • If

    • The character you target:
      • One of these

        • Not all of these

        • or

          None of these

          • All of these

            • The … Culture allows … to be combatants
            • If a member of the Clergy: Members of the Clergy are allowed to be combatants in ⟨faith⟩

    Then

    • The character you target: Event fp1_tbc.0101
    • … is not a suitable fighter and will designate a skill knight as … champion instead

    Otherwise

  • If

    • The option “tbc death” is chosen

    Then

    • 1 of 2 things will happen:
      • 50% – If … … victorious:
        • If

          • scope:puppet_or_actor.primary_title.tier = scope:recipient.primary_title.tier

          Then

          Else if

          • scope:puppet_or_actor.primary_title.tier < scope:recipient.primary_title.tier

          Then

        • The character you target:
          • death = { killer = scope:puppet_or_actor death_reason = death_duel }
        • You:
          • If

            • One of these

              • murdering_character_is_kinslaying_in_rite_trigger = { CHARACTER = scope:recipient RITE = scope:check_rite }
              • or

                All of these

                • Your liege: Is of the same dynasty as the kinslayer me
                • murdering_character_is_kinslaying_in_rite_trigger = { CHARACTER = scope:recipient RITE = scope:check_rite_liege }

            Then

            • If

              • Is available
              • NOT = { knows_doctrine = doctrine_kinslaying_accepted }

              Then

              • add_known_doctrine = doctrine_kinslaying_accepted
            • If

              • Is close family of the target

              Then

              • If

                a check the game hides

                Then

                • set_trait_rank = { trait = kinslayer rank = 3 }
                • remove_piety_level_for_shunned_or_criminal_trait_effect = { TRAIT = trait:kinslayer_3 }

                Otherwise

                • add_trait_force_tooltip = kinslayer_3
              • shunned_or_criminal_sf_impact_effect = { TRAIT = trait:kinslayer_3 }

              Else if

              • Is extended family of the target

              Then

              • If

                a check the game hides

                Then

                • set_trait_rank = { trait = kinslayer rank = 2 }
                • remove_piety_level_for_shunned_or_criminal_trait_effect = { TRAIT = trait:kinslayer_2 }

                Otherwise

                • add_trait_force_tooltip = kinslayer_2
              • shunned_or_criminal_sf_impact_effect = { TRAIT = trait:kinslayer_2 }

              Else if

              • Is of the same dynasty as the target

              Then

              • If

                a check the game hides

                Then

                • set_trait_rank = { trait = kinslayer rank = 1 }
                • remove_piety_level_for_shunned_or_criminal_trait_effect = { TRAIT = trait:kinslayer_1 }

                Otherwise

                • add_trait_force_tooltip = kinslayer_1
              • shunned_or_criminal_sf_impact_effect = { TRAIT = trait:kinslayer_1 }
      • 50% – If … … victorious:
        • If

          • scope:recipient.primary_title.tier = scope:puppet_or_actor.primary_title.tier

          Then

          • The character you target: Gain +150 Prestige

          Else if

          • scope:recipient.primary_title.tier < scope:puppet_or_actor.primary_title.tier

          Then

          • The character you target: Gain +75 Prestige
        • You:
          • death = { killer = scope:recipient death_reason = death_duel }
        • The character you target:
          • If

            • One of these

              • murdering_character_is_kinslaying_in_rite_trigger = { CHARACTER = scope:puppet_or_actor RITE = scope:check_rite }
              • or

                All of these

                • Their liege: Is of the same dynasty as the kinslayer me
                • murdering_character_is_kinslaying_in_rite_trigger = { CHARACTER = scope:puppet_or_actor RITE = scope:check_rite_liege }

            Then

            • If

              • Is available
              • NOT = { knows_doctrine = doctrine_kinslaying_accepted }

              Then

              • add_known_doctrine = doctrine_kinslaying_accepted
            • If all of these hold:
              • Conditions: Is close family of you
              • Then:
                • If

                  a check the game hides

                  Then

                  • set_trait_rank = { trait = kinslayer rank = 3 }
                  • remove_piety_level_for_shunned_or_criminal_trait_effect = { TRAIT = trait:kinslayer_3 }

                  Otherwise

                  • add_trait_force_tooltip = kinslayer_3
                • shunned_or_criminal_sf_impact_effect = { TRAIT = trait:kinslayer_3 }
            • Else, if all of these hold:
              • Conditions: Is extended family of you
              • Then:
                • If

                  a check the game hides

                  Then

                  • set_trait_rank = { trait = kinslayer rank = 2 }
                  • remove_piety_level_for_shunned_or_criminal_trait_effect = { TRAIT = trait:kinslayer_2 }

                  Otherwise

                  • add_trait_force_tooltip = kinslayer_2
                • shunned_or_criminal_sf_impact_effect = { TRAIT = trait:kinslayer_2 }
            • Else, if all of these hold: … (more in the script below)
  • … (more in the script below)

If they refuse

Options when sending

  • Death
  • Gold
  • Weak Hook
  • Humiliation

Events it fires: fp1_tbc.0101, fp1_tbc.0001, fp1_tbc.0031

• the game's own tooltip text · ◦ our reading of the script line · code the script where neither exists

Who can use it and sees it (is_available, is_shown) (35 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	basic_can_have_trial_by_combat_trigger = yes
	NOT = {
		has_trait = craven
	}
	is_imprisoned = no
	can_start_single_combat_trigger = yes
}
is_shown = can_have_trial_by_combat_trigger = yes
has_fp1_dlc_trigger = yes
scope:puppet_or_actor ?= {
	this != scope:recipient
	NOR = {
		target_is_liege_or_above = scope:recipient
		scope:recipient = {
			target_is_liege_or_above = scope:puppet_or_actor
		}
	}
	scope:recipient = {
		is_landed_or_landless_administrative_or_theocratic = yes
		NAND = {
			court_owner ?= {
				OR = {
					this = scope:puppet_or_actor
					any_liege_or_above = {
						this = scope:puppet_or_actor
					}
				}
			}
		}
	}
}

As written in game/common/character_interactions/01_fp1_interactions.txt.

Can be sent when (is_valid…) (9 lines of game script)
trial_by_combat_is_valid_trigger = yes
scope:puppet_or_actor = {
	custom_description = {
		text = character_interactions_hostile_actions_disabled_delay
		NOT = {
			has_character_flag = flag_hostile_actions_disabled_delay
		}
	}
}

As written in game/common/character_interactions/01_fp1_interactions.txt.

Effects (on_send, on_accept, on_decline) (174 lines of game script)
on_send = scope:puppet_or_actor = {
	add_character_flag = {
		flag = flag_hostile_actions_disabled_delay
		days = 10
	}
}
on_accept = if = {
	limit = {
		scope:recipient = {
			OR = {
				can_start_single_combat_eligibility_checks_trigger = no
				NOT = {
					can_be_combatant_based_on_gender_trigger = {
						ARMY_OWNER = scope:recipient
					}
				}
			}
		}
	}
	scope:recipient = {
		trigger_event = fp1_tbc.0101
	}
	custom_tooltip = fp1_tbc_recipient_will_designate_champion
}
else = {
	scope:recipient = {
		save_scope_as = champion
	}
	scope:puppet_or_actor = {
		trigger_event = fp1_tbc.0001
	}
}
if = {
	limit = {
		always = scope:tbc_death
	}
	show_as_tooltip = {
		random_list = {
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_actor
				fp1_tbc_death_effect = {
					TBC_VICTOR = scope:puppet_or_actor
					TBC_LOSER = scope:recipient
				}
				scope:puppet_or_actor = {
					add_kinslayer_trait_or_nothing_effect = {
						VICTIM = scope:recipient
					}
				}
			}
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_recipient
				fp1_tbc_death_effect = {
					TBC_VICTOR = scope:recipient
					TBC_LOSER = scope:puppet_or_actor
				}
				scope:recipient = {
					add_kinslayer_trait_or_nothing_effect = {
						VICTIM = scope:puppet_or_actor
					}
				}
			}
		}
	}
}
if = {
	limit = {
		always = scope:tbc_gold
	}
	show_as_tooltip = {
		random_list = {
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_actor
				fp1_tbc_gold_effect = {
					TBC_VICTOR = scope:puppet_or_actor
					TBC_LOSER = scope:recipient
				}
			}
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_recipient
				fp1_tbc_actor_defeated_effect = {
					TBC_LOSER = scope:puppet_or_actor
					TBC_VICTOR = scope:recipient
				}
			}
		}
	}
}
if = {
	limit = {
		always = scope:tbc_weak_hook
	}
	show_as_tooltip = {
		random_list = {
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_actor
				fp1_tbc_hook_effect = {
					TBC_VICTOR = scope:puppet_or_actor
					TBC_LOSER = scope:recipient
				}
			}
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_recipient
				fp1_tbc_actor_defeated_effect = {
					TBC_LOSER = scope:puppet_or_actor
					TBC_VICTOR = scope:recipient
				}
			}
		}
	}
}
if = {
	limit = {
		always = scope:tbc_humiliation
	}
	show_as_tooltip = {
		random_list = {
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_actor
				fp1_tbc_humiliation_effect = {
					TBC_LOSER = scope:recipient
					TBC_VICTOR = scope:puppet_or_actor
				}
			}
			50 = {
				show_chance = no
				desc = fp1_tbc_winner_recipient
				fp1_tbc_actor_defeated_effect = {
					TBC_LOSER = scope:puppet_or_actor
					TBC_VICTOR = scope:recipient
				}
			}
		}
	}
}
if = {
	limit = {
		scope:puppet_or_actor = {
			has_character_flag = flag_hostile_actions_disabled_delay
		}
	}
	scope:puppet_or_actor = {
		remove_character_flag = flag_hostile_actions_disabled_delay
	}
}
add_clan_unity_interaction_effect = {
	CHARACTER = scope:puppet_or_actor
	TARGET = scope:recipient
	VALUE = medium_unity_loss
	DESC = clan_unity_trial_by_combat.desc
	REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:recipient = {
	add_prestige = medium_prestige_loss
}
scope:puppet_or_actor = {
	trigger_event = fp1_tbc.0031
	hidden_effect = {
		remove_interaction_cooldown = challenge_to_trial_by_combat_interaction
	}
	if = {
		limit = {
			has_character_flag = flag_hostile_actions_disabled_delay
		}
		remove_character_flag = flag_hostile_actions_disabled_delay
	}
}

As written in game/common/character_interactions/01_fp1_interactions.txt.

Category
Hostile actions
Cooldown
5 years
Again on the same character
after 10 years
DLC
The Northern Lords
In the menu
main list
ID
challenge_to_trial_by_combat_interaction

Source: game/common/character_interactions/01_fp1_interactions.txt and the English localisation, Crusader Kings III 1.20.1.2. “You” is the character who sends it (scope:actor, or a puppet acting for you); “the character you target” is the recipient.

Spotted a mistake on this page?