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

Punish Criminal

No costAccepted automatically

Challenge a Criminal to a Duel to enforce their punishment if you win.

What you need

You

To send it

  • You:
    • Is an Adult
    • Does not have the Trait: Pregnant
    • Does not have the Trait: Incapable
    • Does not have the Trait: Blind
    • Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux
    • NOT = { has_truce = scope:recipient }
    • Is not at war with the target
  • Also needed: not imprisoned

To see it in the menu

  • If played by the AI:
  • Has the Trait: Wrathful
  • One of these

    • has_imprisonment_reason = scope:recipient
    • or

      has_banish_reason = scope:recipient
    • or

      has_execute_reason = scope:recipient
  • The character you target:
    • One of these

      • All of these

        • Is a vassal (or below) of the allowed imprisoner
        • If

          • is_foreign_court_guest = yes

          Then

          • Their host: Is a vassal (or below) of the allowed imprisoner
      • or

        Is a guest at the allowed imprisoner’s court
      • or

        All of these

        • Has a Adventurer Government
        • reverse_has_opinion_modifier = { target = scope:allowed_imprisoner modifier = eviction_ignored_opinion }
    • Is not imprisoned by the allowed imprisoner

The character you target

  • Is an Adult
  • Does not have the Trait: Pregnant
  • Does not have the Trait: Incapable
  • Does not have the Trait: Blind
  • Also needed: none of the traits Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux · not imprisoned

Punish Criminal is a hostile character interaction in Crusader Kings III. You need: Is not imprisoned. The character you target needs: Is an Adult, Does not have the Trait: Pregnant, Does not have the Trait: Incapable and 3 more. Accepted automatically. Patch 1.20.1.2, from game/common/character_interactions/00_trait_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Punish Criminal in CK3?
You: Is not imprisoned. The character you target: Is an Adult, Does not have the Trait: Pregnant, Does not have the Trait: Incapable, Does not have the Trait: Blind, Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux and Is not imprisoned. (patch 1.20.1.2)
Will the AI accept Punish Criminal?
Yes: it is accepted automatically.

Will they accept?

The other character has no choice: the game accepts it automatically.

What happens

Effects

  • If

    • You:
      • has_execute_reason = scope:recipient

    Then

    • You: You will execute … if you win.
    • If

      a check the game hides

      Then

      • clear_saved_scope = sc_finished
    • If

      • The sc attacker is not the sc defender

      Then

      • The sc attacker:
        • If

          • Does not have “temporary signature weapon” (a variable the game's script sets)
          • Any equipped character artifact:
            • artifact_slot_type = primary_armament
            • One of these

              • artifact_type = axe
              • or

                artifact_type = hammer
              • or

                artifact_type = spear
              • or

                artifact_type = mace
              • or

                artifact_type = dagger
              • or

                artifact_type = sword

          Then

          • One random equipped character artifact:
            • Where:
              • artifact_slot_type = primary_armament
              • One of these

                • artifact_type = axe
                • or

                  artifact_type = hammer
                • or

                  artifact_type = spear
                • or

                  artifact_type = mace
                • or

                  artifact_type = dagger
                • or

                  artifact_type = sword
            • clear_saved_scope = equipped_signature_weapon
      • The sc defender:
        • If

          • Does not have “temporary signature weapon” (a variable the game's script sets)
          • Any equipped character artifact:
            • artifact_slot_type = primary_armament
            • One of these

              • artifact_type = axe
              • or

                artifact_type = hammer
              • or

                artifact_type = spear
              • or

                artifact_type = mace
              • or

                artifact_type = dagger
              • or

                artifact_type = sword

          Then

          • One random equipped character artifact:
            • Where:
              • artifact_slot_type = primary_armament
              • One of these

                • artifact_type = axe
                • or

                  artifact_type = hammer
                • or

                  artifact_type = spear
                • or

                  artifact_type = mace
                • or

                  artifact_type = dagger
                • or

                  artifact_type = sword
            • clear_saved_scope = equipped_signature_weapon
      • The sc defender: Event single_combat.0001

      Otherwise

      • error_log = debug_log.single_combat_setup.attacker_and_defender_same_person

    Else if

    • You:
      • has_banish_reason = scope:recipient

    Then

    • You: You will banish … if you win.
    • If

      a check the game hides

      Then

      • clear_saved_scope = sc_finished
    • If

      • The sc attacker is not the sc defender

      Then

      • The sc attacker:
        • If

          • Does not have “temporary signature weapon” (a variable the game's script sets)
          • Any equipped character artifact:
            • artifact_slot_type = primary_armament
            • One of these

              • artifact_type = axe
              • or

                artifact_type = hammer
              • or

                artifact_type = spear
              • or

                artifact_type = mace
              • or

                artifact_type = dagger
              • or

                artifact_type = sword

          Then

          • One random equipped character artifact:
            • Where:
              • artifact_slot_type = primary_armament
              • One of these

                • artifact_type = axe
                • or

                  artifact_type = hammer
                • or

                  artifact_type = spear
                • or

                  artifact_type = mace
                • or

                  artifact_type = dagger
                • or

                  artifact_type = sword
            • clear_saved_scope = equipped_signature_weapon

Events it fires: single_combat.0001

• 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) (22 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	has_trait = wrathful
	can_start_single_combat_trigger = yes
	is_imprisoned = no
}
is_shown = scope:actor = {
	has_trait = wrathful
}
scope:actor = {
	OR = {
		has_imprisonment_reason = scope:recipient
		has_banish_reason = scope:recipient
		has_execute_reason = scope:recipient
	}
	basic_allowed_to_imprison_character_trigger = {
		CHARACTER = scope:recipient
	}
}
scope:actor != scope:recipient

As written in game/common/character_interactions/00_trait_interactions.txt.

Can be sent when (is_valid…) (24 lines of game script)
rival_single_combat_shown_and_not_invalid_trigger = yes
scope:recipient = {
	can_start_single_combat_trigger = yes
}
scope:recipient = {
	custom_description = {
		text = fp1_tbc_recipient_banned_from_combat
		can_start_single_combat_banned_checks_trigger = no
	}
}
scope:actor = {
	is_imprisoned = no
}
scope:recipient = {
	is_imprisoned = no
}
scope: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/00_trait_interactions.txt.

Effects (on_send, on_accept, on_decline) (66 lines of game script)
on_send = scope:actor = {
	add_character_flag = {
		flag = flag_hostile_actions_disabled_delay
		days = 10
	}
}
on_accept = if = {
	limit = {
		scope:actor = {
			has_execute_reason = scope:recipient
		}
	}
	scope:actor = {
		custom_tooltip = force_duel_criminals_interaction.execute_punishment.tt
	}
	configure_start_single_combat_effect = {
		SC_INITIATOR = scope:actor
		SC_ATTACKER = scope:actor
		SC_DEFENDER = scope:recipient
		FATALITY = no
		FIXED = no
		LOCALE = terrain_scope
		OUTPUT_EVENT = trait_specific_interactions.0155
		INVALIDATION_EVENT = fp1_tbc.0102
	}
}
else_if = {
	limit = {
		scope:actor = {
			has_banish_reason = scope:recipient
		}
	}
	scope:actor = {
		custom_tooltip = force_duel_criminals_interaction.banish_punishment.tt
	}
	configure_start_single_combat_effect = {
		SC_INITIATOR = scope:actor
		SC_ATTACKER = scope:actor
		SC_DEFENDER = scope:recipient
		FATALITY = no
		FIXED = no
		LOCALE = terrain_scope
		OUTPUT_EVENT = trait_specific_interactions.0153
		INVALIDATION_EVENT = fp1_tbc.0102
	}
}
else_if = {
	limit = {
		scope:actor = {
			has_imprisonment_reason = scope:recipient
		}
	}
	scope:actor = {
		custom_tooltip = force_duel_criminals_interaction.imprison_punishment.tt
	}
	configure_start_single_combat_effect = {
		SC_INITIATOR = scope:actor
		SC_ATTACKER = scope:actor
		SC_DEFENDER = scope:recipient
		FATALITY = no
		FIXED = no
		LOCALE = terrain_scope
		OUTPUT_EVENT = trait_specific_interactions.0151
		INVALIDATION_EVENT = fp1_tbc.0102
	}
}

As written in game/common/character_interactions/00_trait_interactions.txt.

Category
Hostile actions
Again on the same character
after 10 years
In the menu
main list
ID
force_duel_criminals_interaction

Source: game/common/character_interactions/00_trait_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?