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

Interaction · Diplomatic actions

Demand Artifact

No costAccepted automatically in some cases; otherwise the AI weighs it

Demand an Artifact from the recipient that you have an Artifact Claim on

What you need

You

To send it

  • Is not at war with the target
  • Also needed: not imprisoned

To see it in the menu

  • If played by the AI:
    • has_outstanding_artifact_claims = yes
    • Is at not War
    • Ai greed at least -20
    • Is an Adult
  • The target is not you
  • One of these

    • You: Is played by a person
    • or

      max_military_strength >= { … }
    • or

      Highest held Title is more than scope:recipient.highest held title tier Rank

The character you target

  • If

    a check the game hides

    Then

    • None of these

      • Their activity:
        • has_activity_type = activity_coronation
        • activity_host ?= scope:recipient

Demand Artifact is a diplomatic character interaction in Crusader Kings III. You need: Is not at war with the target and Is not imprisoned. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Artifacts are rare and precious (-50), The recipient's military is weaker than yours (+70), The recipient's military is stronger than yours (-70) and 5 more. Patch 1.20.1.2, from game/common/character_interactions/00_artifact_interactions.txt.

for a guide, post or blog
Quick answers (2)
What are the requirements for Demand Artifact in CK3?
You: Is not at war with the target and Is not imprisoned. (patch 1.20.1.2)
How do I get the AI to accept Demand Artifact?
Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Artifacts are rare and precious -50, The recipient's military is weaker than yours +70, The recipient's military is stronger than yours -70, The recipient could claim the artifact -50, The recipient's Boldness, The recipient is your Rival -50, The recipient is your Nemesis -80, You are the recipient's Liege +50, Weak Hook used +100 and Wants to decrease House Unity.

Will they accept?

Accepted automatically when:

  • They use their Hook on …

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

ReasonAmount
Base0
Artifacts are rare and precious-50
The recipient's military is weaker than yours
when
  • root.max_military_strength > scope:recipient.max_military_strength
+70
The recipient's military is stronger than yours
when
  • root.max_military_strength < scope:recipient.max_military_strength
-70
The recipient could claim the artifact
when
  • The target:
    • can_be_claimed_by = scope:recipient
-50
The recipient's Boldness
when
  • NOT = { ai_boldness = 0 }
varies
The recipient is your Rival
when
  • Has the target as rival
-50
The recipient is your Nemesis
when
  • Has the target as nemesis
-80
You are the recipient's Liege
when
  • The character you target: Is a vassal (or below) of you
+50
Weak Hook used
when
+100
Wants to decrease House Unity
when
varies
Acceptance (ai_accept) (62 lines of game script)
base = 0
modifier = {
	add = -50
	desc = ARTIFACT_REASON
}
modifier = {
	add = 70
	scope:puppet_or_actor.max_military_strength > scope:recipient.max_military_strength
	desc = ARTIFACT_MILITARY_STRONGER_REASON
}
modifier = {
	add = -70
	scope:puppet_or_actor.max_military_strength < scope:recipient.max_military_strength
	desc = ARTIFACT_MILITARY_WEAKER_REASON
}
modifier = {
	add = -50
	scope:target = {
		can_be_claimed_by = scope:recipient
	}
	desc = ARTIFACT_CLAIM_REASON
}
modifier = {
	add = {
		value = ai_boldness
		multiply = -1
		divide = 2
	}
	NOT = {
		ai_boldness = 0
	}
	desc = ARTIFACT_BOLDNESS_REASON
}
modifier = {
	add = -50
	scope:puppet_or_actor = {
		has_relation_rival = scope:recipient
	}
	desc = ARTIFACT_RIVAL_REASON
}
modifier = {
	add = -80
	scope:puppet_or_actor = {
		has_relation_nemesis = scope:recipient
	}
	desc = ARTIFACT_NEMESIS_REASON
}
modifier = {
	add = 50
	scope:recipient = {
		target_is_liege_or_above = scope:puppet_or_actor
	}
	desc = ARTIFACT_LIEGE_REASON
}
modifier = {
	scope:hook = yes
	add = 100
	desc = SCHEME_WEAK_HOOK_USED
}
evaluate_action_decreasing_house_unity = {
	VALUE = 100
}

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

What happens

If they accept

  • The target:
    • set_owner = scope:puppet_or_actor
  • The character you target: Opinion: Insulted (-10)
  • If

    • The character you target:
      • Does not have you as friend
      • Does not have you as best friend
      • Does not have you as rival
      • Does not have you as nemesis
      • Does not have you as potential rival

    Then

    • The character you target:
      • set_relation_potential_rival = scope:puppet_or_actor
  • If

    • You: Is played by the AI

    Then

    • You: Opinion: Pleased (+30)
  • If

    • You: Government is Clan
    • The character you target: Government is Clan
    • Your house is the target’s
    • If

      • You are not the target

      Then

      • You are not the target

    Then

    • Your house:
      • add_unity_value = { … }

    Else if

    • No
    • You: Government is Clan
    • Your house: Has you as house head
    • One of these

      • All of these

        • exists = scope:recipient.house
        • Your house is not the target’s
      • or

        The character you target: Is Lowborn

    Then

    • Your house:
      • add_unity_value = { … }

If they refuse

  • … has refused to give you the Artifact!
  • The character you target: Opinion: Insulted (-10)
  • If

    • You are not the target

    Then

    • You: … refused to hand the Artifact over to …!
  • If

    • You: Is played by the AI

    Then

    • You: Opinion: Refusal (-10)

Options when sending

  • Use a Hook

• 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) (48 lines of game script)
is_available = trigger_if = {
	limit = {
		is_ai = yes
	}
	has_outstanding_artifact_claims = yes
	is_at_war = no
	ai_greed >= low_negative_ai_value
	is_adult = yes
}
is_shown = scope:recipient != scope:puppet_or_actor
custom_description = {
	text = demand_artifact_interaction_valid_tt_1
	scope:recipient = {
		any_character_artifact = {
			can_be_claimed_by = scope:puppet_or_actor
			NOT = {
				has_variable = is_tribute_mission_artifact
			}
		}
	}
}
scope:recipient = {
	trigger_if = {
		limit = {
			exists = involved_activity
		}
		NOT = {
			involved_activity ?= {
				has_activity_type = activity_coronation
				activity_host ?= scope:recipient
			}
		}
	}
}
scope:puppet_or_actor ?= {
	OR = {
		scope:actor = {
			is_ai = no
		}
		max_military_strength >= {
			value = {
				value = scope:recipient.max_military_strength
				multiply = 1.3
			}
		}
		highest_held_title_tier > scope:recipient.highest_held_title_tier
	}
}

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

Can be sent when (is_valid…) (23 lines of game script)
scope:puppet_or_actor = {
	NOT = {
		is_at_war_with = scope:recipient
	}
}
trigger_if = {
	limit = {
		scope:puppet_or_actor = {
			has_variable = demanded_this_artifact_interaction_recently
		}
	}
	custom_description = {
		text = demand_artifact_interaction_is_valid_tt_2
		exists = scope:demanded_artifact
		scope:puppet_or_actor = {
			has_variable = demanded_this_artifact_interaction_recently
			var:demanded_this_artifact_interaction_recently = scope:demanded_artifact
		}
	}
}
scope:puppet_or_actor = {
	is_imprisoned = no
}

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

Effects (on_send, on_accept, on_decline) (140 lines of game script)
on_accept = scope:target = {
	save_scope_as = demanded_artifact
}
if = {
	limit = {
		exists = scope:demanded_artifact
	}
	scope:puppet_or_actor = {
		set_variable = {
			name = demanded_this_artifact_interaction_recently
			value = scope:demanded_artifact
			years = 5
		}
	}
}
scope:puppet_or_actor = {
	send_interface_toast = {
		type = event_toast_effect_neutral
		title = demand_artifact_interaction_notification
		left_icon = scope:recipient
		right_icon = scope:target
		scope:target = {
			set_owner = scope:puppet_or_actor
		}
		scope:recipient = {
			add_opinion = {
				target = scope:puppet_or_actor
				modifier = insult_opinion
				opinion = -10
			}
		}
		if = {
			limit = {
				scope:recipient = {
					can_set_relation_potential_rival_trigger = {
						CHARACTER = scope:puppet_or_actor
					}
				}
			}
			scope:recipient = {
				set_relation_potential_rival = scope:puppet_or_actor
			}
		}
	}
}
if = {
	limit = {
		scope:is_puppet_action ?= yes
		scope:actor != scope:recipient
	}
	scope:actor = {
		send_interface_toast = {
			type = event_toast_effect_neutral
			title = demand_artifact_interaction_notification_puppeteer
			left_icon = scope:puppet_or_actor
			right_icon = scope:recipient
		}
	}
}
if = {
	limit = {
		scope:actor = {
			is_ai = yes
		}
	}
	scope:puppet_or_actor = {
		add_opinion = {
			target = scope:recipient
			modifier = pleased_opinion
			opinion = 30
		}
	}
}
add_clan_unity_interaction_effect = {
	CHARACTER = scope:puppet_or_actor
	TARGET = scope:recipient
	VALUE = minor_unity_loss
	DESC = clan_unity_demanded_artifact.desc
	REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:target = {
	save_scope_as = demanded_artifact
}
if = {
	limit = {
		exists = scope:demanded_artifact
	}
	scope:puppet_or_actor = {
		set_variable = {
			name = demanded_this_artifact_interaction_recently
			value = scope:demanded_artifact
			years = 5
		}
	}
}
scope:puppet_or_actor = {
	send_interface_toast = {
		type = event_toast_effect_bad
		title = demand_artifact_interaction_notification
		left_icon = scope:recipient
		right_icon = scope:target
		custom_tooltip = demand_artifact_interaction_notification_refused
		scope:recipient = {
			add_opinion = {
				target = scope:puppet_or_actor
				modifier = insult_opinion
				opinion = -10
			}
		}
	}
}
if = {
	limit = {
		scope:is_puppet_action ?= yes
		scope:actor != scope:recipient
	}
	scope:actor = {
		send_interface_toast = {
			type = event_toast_effect_bad
			title = demand_artifact_interaction_notification_puppeteer
			left_icon = scope:puppet_or_actor
			right_icon = scope:recipient
			custom_tooltip = demand_artifact_interaction_notification_refused_puppeteer
		}
	}
}
if = {
	limit = {
		scope:actor = {
			is_ai = yes
		}
	}
	scope:puppet_or_actor = {
		add_opinion = {
			target = scope:recipient
			modifier = refusal_opinion
			opinion = -10
		}
	}
}

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

Category
Diplomatic actions
In the menu
main list
ID
demand_artifact_interaction

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