Interaction · Diplomatic actions
Invite To Activity
Invite a Ruler from another Realm to join you in a feast or a hunt
What you need
You
To send it
- Is not at war with the target
Also needed: available (an adult, not in an army, not imprisoned, not incapable) · none of the traits Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux · not busy in an Activity · not planning another Activity
To see it in the menu
- Any character struggle:
involvement = involvedis_struggle_type = iberian_struggle
- Never
The character you target
To send it
Also needed: available (an adult, not in an army, not imprisoned, not incapable) · none of the traits Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux · not busy in an Activity · not planning another Activity
To see it in the menu
- Any character struggle:
involvement = involvedis_struggle_type = iberian_struggle
- Is a ruler
One of these
- No liege or above:
- No vassal or below:
Invite To Activity is a diplomatic character interaction in Crusader Kings III. You need: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, You are currently busy … and 2 more. The character you target needs: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, Busy participating in an Activity and 1 more. The AI weighs it (the answer is partly random). Reasons the AI weighs include Difference in Rank (+20), Difference in Rank (-20), You … the recipient's rival (-50) and 6 more. Patch 1.20.1.2, from game/common/character_interactions/03_fp2_interactions.txt.
Quick answers (2)
- What are the requirements for Invite To Activity in CK3?
- You: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, You are currently busy …, You are already planning another Activity and Is not at war with the target. The character you target: Is available (an adult, not in an army, not imprisoned, not incapable), Has none of the traits: Consumption, Typhus, Bubonic Plague, Smallpox, Measles, Bloody Flux, Busy participating in an Activity and You are already planning another Activity. (patch 1.20.1.2)
- How do I get the AI to accept Invite To Activity?
- The AI weighs it (the answer is partly random). Its reasons: Difference in Rank +20, Difference in Rank -20, … Opinion of …, You … the recipient's rival -50, You … the recipient's nemesis -100, You … the recipient's friend +25, You … the recipient's best friend +50, You … the recipient's lover +100, Relevant Traits +25, Relevant Traits +25 and Struggle agenda.
Will they accept?
The AI adds these up and accepts above zero; near zero the answer is partly random (ai_maybe). Reasons in italics are the script's, with no label in the game.
| Reason | Amount |
|---|---|
| Base | 0 |
Difference in Rankwhen
| +20 |
Difference in Rankwhen
| -20 |
| … Opinion of … | varies |
| Their personality (AI values: sociability 1) | varies |
You … the recipient's rivalwhen
| -50 |
You … the recipient's nemesiswhen
| -100 |
You … the recipient's friendwhen
| +25 |
You … the recipient's best friendwhen
| +50 |
You … the recipient's loverwhen
| +100 |
| Relevant Traits | +25 |
Relevant Traitswhen
| +25 |
Struggle agendawhen
| varies |
Acceptance (ai_accept) (99 lines of game script)
base = 0
modifier = {
add = 20
scope:actor.primary_title.tier > primary_title.tier
desc = RANK_DIFFERENCE_REASON
}
modifier = {
add = -20
scope:actor.primary_title.tier < primary_title.tier
desc = RANK_DIFFERENCE_REASON
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:actor
multiplier = 1
desc = AI_OPINION_REASON
}
ai_value_modifier = {
ai_sociability = 1
}
modifier = {
add = -50
has_relation_rival = scope:actor
desc = WE_ARE_RIVALS
}
modifier = {
add = -100
has_relation_nemesis = scope:actor
desc = WE_ARE_NEMESES
}
modifier = {
add = 25
has_relation_friend = scope:actor
desc = WE_ARE_FRIENDS
}
modifier = {
add = 50
has_relation_best_friend = scope:actor
desc = WE_ARE_BEST_FRIENDS
}
modifier = {
add = 100
OR = {
has_relation_lover = scope:actor
has_relation_soulmate = scope:actor
}
desc = WE_ARE_LOVERS
}
modifier = {
add = 25
scope:invite_to_hunt = yes
has_trait = lifestyle_hunter
desc = AI_RELEVANT_TRAITS
}
modifier = {
add = 25
scope:invite_to_feast = yes
has_trait = lifestyle_reveler
desc = AI_RELEVANT_TRAITS
}
modifier = {
desc = AI_STRUGGLE_INTENT
scope:invite_to_feast = yes
scope:recipient = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_invite_diff_faith_culture_to_feast
}
}
scope:actor = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_invite_diff_faith_culture_to_feast
}
}
NAND = {
scope:actor.faith = scope:recipient.faith
scope:actor.culture = scope:recipient.culture
}
add = {
value = 0
if = {
limit = {
scope:actor = {
has_character_flag = agenda_towards_deescalation
}
}
add = 100
}
else_if = {
limit = {
scope:actor = {
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
}
}As written in game/common/character_interactions/03_fp2_interactions.txt.
What happens
If they accept
If
- The option “invite to hunt” is chosen
Then
- You:
remove_short_term_gold = hunt_activity_base_costIf
- Has the target char as potential friend
- Does not have the target char as friend
- Does not have the target char as best friend
- Does not have the target char as rival
- Does not have the target char as nemesis
Then
If
has_activity_intent = befriend_attendee_intentintent_target ?= scope:target_charintent_target.involved_activity ?= this.involved_activity
Then
complete_activity_intent = yes
Otherwise
If
- Does not have the target char as potential friend
can_set_relation_friend_trigger = { CHARACTER = scope:target_char }If
- Is played by the AI
- The target char: Is played by the AI
Then
- The target char: Opinion of prev at least -25
Otherwise
always = yes
Then
set_relation_potential_friend = scope:target_char
If
scope:friend_opinion != 0
Then
If
- The target char: Is played by the AI
Then
- The target char gains the opinion “Friendly” of them
- Opinion: Friendly
- You call a Hunt with … as a special guest
Else if
- The option “invite to feast” is chosen
Then
- You:
remove_short_term_gold = feast_activity_costIf
- Has the target char as potential friend
- Does not have the target char as friend
- Does not have the target char as best friend
- Does not have the target char as rival
- Does not have the target char as nemesis
Then
If
has_activity_intent = befriend_attendee_intentintent_target ?= scope:target_charintent_target.involved_activity ?= this.involved_activity
Then
complete_activity_intent = yes
Otherwise
If
- Does not have the target char as potential friend
can_set_relation_friend_trigger = { CHARACTER = scope:target_char }If
- Is played by the AI
- The target char: Is played by the AI
Then
- The target char: Opinion of prev at least -25
Otherwise
always = yes
Then
set_relation_potential_friend = scope:target_char
If
scope:friend_opinion != 0
Then
If
- The target char: Is played by the AI
Then
- The target char gains the opinion “Friendly” of them
- Opinion: Friendly
- You start a Feast with … as a special guest
If
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
- … (more in the script below)
or
… (more in the script below)
- Your house:
If they refuse
Options when sending
- Call Hunt
- Host Feast
• 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) (21 lines of game script)
is_available = any_character_struggle = {
involvement = involved
is_struggle_type = iberian_struggle
}
is_shown = always = no
scope:actor != scope:recipient
scope:recipient = {
any_character_struggle = {
involvement = involved
is_struggle_type = iberian_struggle
}
is_playable_character = yes
NOR = {
any_liege_or_above = {
this = scope:actor
}
any_vassal_or_below = {
this = scope:actor
}
}
}As written in game/common/character_interactions/03_fp2_interactions.txt.
Can be sent when (is_valid…) (11 lines of game script)
scope:actor = {
is_available_adult = yes
}
scope:recipient = {
is_available_adult = yes
}
scope:actor = {
NOT = {
is_at_war_with = scope:recipient
}
}As written in game/common/character_interactions/03_fp2_interactions.txt.
Effects (on_send, on_accept, on_decline) (96 lines of game script)
on_accept = if = {
limit = {
scope:invite_to_hunt = yes
}
scope:actor = {
set_variable = {
name = special_guest
value = scope:recipient
}
show_as_tooltip = {
remove_short_term_gold = hunt_activity_base_cost
}
send_interface_toast = {
type = event_toast_effect_good
title = invited_to_hunt.accept.actor.tt
left_icon = scope:recipient
progress_towards_friend_effect = {
REASON = friend_invited_to_hunt
CHARACTER = scope:recipient
OPINION = 0
}
custom_tooltip = invite_foreign_ruler_to.hunt.tooltip
}
}
scope:recipient = {
send_interface_toast = {
title = invited_to_hunt.accept.recipient.tt
left_icon = scope:actor
}
}
}
else_if = {
limit = {
scope:invite_to_feast = yes
}
scope:actor = {
set_variable = {
name = special_guest
value = scope:recipient
}
show_as_tooltip = {
remove_short_term_gold = feast_activity_cost
}
send_interface_toast = {
type = event_toast_effect_good
title = invited_to_feast.accept.actor.tt
left_icon = scope:recipient
progress_towards_friend_effect = {
REASON = friend_invited_to_feast
CHARACTER = scope:recipient
OPINION = 0
}
custom_tooltip = invite_foreign_ruler_to.feast.tooltip
}
}
scope:recipient = {
send_interface_toast = {
title = invited_to_feast.accept.recipient.tt
left_icon = scope:actor
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_gain
DESC = clan_unity_feast_invite.desc
REVERSE_NON_HOUSE_TARGET = no
}
on_decline = scope:actor = {
send_interface_toast = {
type = event_toast_effect_bad
title = invite_foreign_ruler_to.decline.actor.tt
left_icon = scope:recipient
add_prestige = medium_prestige_loss
}
}
scope:recipient = {
send_interface_toast = {
type = event_toast_effect_neutral
title = invite_foreign_ruler_to.decline.recipient.tt
left_icon = scope:actor
reverse_add_opinion = {
target = scope:actor
modifier = refusal_opinion
opinion = -50
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:recipient
TARGET = scope:actor
VALUE = minor_unity_loss
DESC = clan_unity_feast_invite_decline.desc
REVERSE_NON_HOUSE_TARGET = no
}As written in game/common/character_interactions/03_fp2_interactions.txt.
- Category
- Diplomatic actions
- Cooldown
- 1 year
- Again on the same character
- after 5 years
- In the menu
- main list
- ID
invite_foreign_ruler_to
Source: game/common/character_interactions/03_fp2_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.