Interaction · Diplomatic actions
Join My Side
Convince the recipient to join your ranks
What you need
You
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:
is_struggle_type = persian_struggle
- If played by the AI:
One of these
- Has the Trait: Detractor of the Caliphate
or
Has the Trait: Supporter of Caliphal Authority
primary_title.tier >= tier_duchy
- The target is not you
One of these
All of these
- Has the Trait: Detractor of the Caliphate
- The character you target: Has the Trait: Supporter of Caliphal Authority
or
All of these
- Has the Trait: Supporter of Caliphal Authority
- The character you target: Has the Trait: Detractor of the Caliphate
or
All of these
One of these
- Has the Trait: Detractor of the Caliphate
or
Has the Trait: Supporter of Caliphal Authority
- The character you target:
- Does not have the Trait: Detractor of the Caliphate
- Does not have the Trait: Supporter of Caliphal Authority
The character you target
To send it
- If has the Trait: Supporter of Caliphal Authority:
NOT = { is_allied_to = title:d_sunni.holder }None of these
title:d_sunni.holder:has_strong_hook = prev
- … recently announced … public support for the …
- If has the Trait: Detractor of the Caliphate:
- … recently announced … public independence from the …
- … was recently forced to become a Detractor of the Caliphate by the actions of the …
- Is at not War
- … recently changed their position at someone else's request
- … recently refused to change their position and don't want to be bothered about it anymore
- … Head of Faith is not the …
To see it in the menu
- Any character struggle:
is_struggle_type = persian_struggle
Join My Side 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 1 more. The character you target needs: Is at not War. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include The recipient is a Detractor of the Caliphate (-25), The recipient is a Supporter of Caliphal Authority (-25), The recipient is Zealous (+25) and 5 more. It costs 150 Prestige. It needs Legacy of Persia. Patch 1.20.1.2, from game/common/character_interactions/00_fp3_interactions.txt.
Quick answers (3)
- What are the requirements for Join My Side 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 … and You are already planning another Activity. The character you target: Is at not War. (patch 1.20.1.2)
- How do I get the AI to accept Join My Side?
- Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: The recipient is a Detractor of the Caliphate -25, The recipient is a Supporter of Caliphal Authority -25, The recipient is Zealous +25, The recipient is Cynical +25, The recipient is Fickle +25, Loyal Trait +15, Disloyal Trait +15, The recipient is Stubborn +25, Your Diplomacy and Their Diplomacy.
- How much does Join My Side cost?
- 150 Prestige (patch 1.20.1.2).
Will they accept?
Accepted automatically when:
- They use their Hook on …
Otherwise 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 |
The recipient is a Detractor of the Caliphatewhen
| -25 |
The recipient is a Supporter of Caliphal Authoritywhen
| -25 |
| Their opinion of you | varies |
| Their opinion of title:d sunni.holder | varies |
The recipient is Zealouswhen
| +25 |
The recipient is Cynicalwhen
| +25 |
| The recipient is Fickle | +25 |
| Loyal Trait | +15 |
| Disloyal Trait | +15 |
| The recipient is Stubborn | +25 |
| Your Diplomacy | your diplomacy × 5 |
| Their Diplomacy | their diplomacy × -3 |
Acceptance (ai_accept) (109 lines of game script)
base = 0
modifier = {
add = -25
scope:actor = {
has_trait = fp3_struggle_supporter
}
scope:recipient = {
has_trait = fp3_struggle_detractor
}
desc = INTERACTION_DETRACTOR
}
modifier = {
add = -25
scope:actor = {
has_trait = fp3_struggle_detractor
}
scope:recipient = {
has_trait = fp3_struggle_supporter
}
desc = INTERACTION_SUPPORTER
}
opinion_modifier = {
who = scope:recipient
opinion_target = scope:actor
multiplier = {
value = 1
if = {
limit = {
scope:actor = title:d_sunni.holder
}
multiply = 0
}
}
}
opinion_modifier = {
who = scope:recipient
opinion_target = title:d_sunni.holder
multiplier = {
value = 0.5
if = {
limit = {
scope:actor = title:d_sunni.holder
}
add = 0.5
}
}
}
modifier = {
add = 25
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_ZEALOUS
scope:actor = {
has_trait = fp3_struggle_supporter
}
scope:recipient = {
has_trait = zealous
}
}
modifier = {
add = 25
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_CYNICAL
scope:actor = {
has_trait = fp3_struggle_detractor
}
scope:recipient = {
has_trait = cynical
}
}
modifier = {
add = 25
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_FICKLE
scope:recipient = {
has_trait = fickle
}
}
modifier = {
add = 15
desc = HAS_LOYAL_TRAIT
scope:recipient = {
has_trait = disloyal
}
}
modifier = {
add = 15
desc = HAS_DISLOYAL_TRAIT
scope:recipient = {
has_trait = loyal
}
}
modifier = {
add = 25
desc = ASK_FOR_CONVERSION_RECIPIENT_IS_STUBBORN
scope:recipient = {
has_trait = stubborn
}
}
modifier = {
add = {
value = scope:actor.diplomacy
multiply = 5
}
desc = INTERACTION_DIPLOMACY_ACTOR
}
modifier = {
add = {
value = scope:recipient.diplomacy
multiply = -3
}
desc = INTERACTION_DIPLOMACY_RECIPIENT
}As written in game/common/character_interactions/00_fp3_interactions.txt.
What happens
If they accept
If
Then
- Your house:
add_unity_value = { … }
- Your house:
- The character you target:
If
- You: Has the Trait: Detractor of the Caliphate
Then
- If has the Trait: Supporter of Caliphal Authority: Loses the Trait Supporter of Caliphal Authority
add_trait_force_tooltip = fp3_struggle_detractor
Otherwise
- If has the Trait: Detractor of the Caliphate: Loses the Trait Detractor of the Caliphate
add_trait_force_tooltip = fp3_struggle_supporter
If they refuse
If
Then
- Your house:
add_unity_value = { … }
- Your house:
If
- You: Has the Trait: Detractor of the Caliphate
Then
If
Then
If
- Does not have the target char as grudge
Then
Otherwise
- Opinion: Grudge Exacerbated (-20)
Else if
Then
Otherwise
If
- 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
- Does not have the target char as potential rival
Then
set_relation_potential_rival = scope:target_char
If
NOT = { scope:rival_opinion = 0 }
Then
If
- The target char: Is played by the AI
Then
- The target char gains the opinion “Hatred” of them
- Opinion: Hatred
Otherwise
If
Then
If
- Does not have the target char as grudge
Then
Otherwise
- Opinion: Grudge Exacerbated (-20)
- … (more in the script below)
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) (52 lines of game script)
is_available = any_character_struggle = {
is_struggle_type = persian_struggle
}
trigger_if = {
limit = {
is_ai = yes
}
OR = {
has_trait = fp3_struggle_detractor
has_trait = fp3_struggle_supporter
}
primary_title.tier >= tier_duchy
}
is_shown = has_fp3_dlc_trigger = yes
exists = title:d_sunni.holder
scope:recipient != scope:actor
scope:actor = {
OR = {
AND = {
has_trait = fp3_struggle_detractor
scope:recipient = {
has_trait = fp3_struggle_supporter
}
}
AND = {
has_trait = fp3_struggle_supporter
scope:recipient = {
has_trait = fp3_struggle_detractor
}
}
AND = {
OR = {
has_trait = fp3_struggle_detractor
has_trait = fp3_struggle_supporter
}
scope:recipient = {
NOR = {
has_trait = fp3_struggle_detractor
has_trait = fp3_struggle_supporter
}
}
}
}
}
scope:recipient = {
any_character_struggle = {
is_struggle_type = persian_struggle
}
NOT = {
this = title:d_sunni.holder
}
}As written in game/common/character_interactions/00_fp3_interactions.txt.
Can be sent when (is_valid…) (73 lines of game script)
scope:recipient = {
trigger_if = {
limit = {
has_trait = fp3_struggle_supporter
}
NOT = {
is_allied_to = title:d_sunni.holder
}
NOT = {
title:d_sunni.holder = {
has_strong_hook = prev
}
}
custom_tooltip = {
text = fp3_change_allegiance.tt.recently_voluntarily_became_supporter
OR = {
NOT = {
has_variable = last_explicit_friday_prayer_caliph
}
NOT = {
var:last_explicit_friday_prayer_caliph = title:d_sunni.holder
}
}
}
}
trigger_if = {
limit = {
has_trait = fp3_struggle_detractor
}
custom_tooltip = {
text = fp3_change_allegiance.tt.recently_voluntarily_became_detractor
OR = {
NOT = {
has_variable = last_explicit_friday_prayer_caliph
}
NOT = {
var:last_explicit_friday_prayer_caliph = title:d_sunni.holder
}
}
}
custom_tooltip = {
text = fp3_change_allegiance.tt.recently_forced_to_detractor
OR = {
NOT = {
has_variable = last_explicit_defied_caliph
}
NOT = {
var:last_explicit_defied_caliph = title:d_sunni.holder
}
}
}
}
is_at_war = no
custom_tooltip = {
text = fp3_change_allegiance.tt.recently_changed_mind
NOT = {
has_character_flag = fp3_change_allegiance_recipient_cooldown
}
}
custom_tooltip = {
text = fp3_change_allegiance.tt.recently_refused
NOT = {
has_character_flag = fp3_change_allegiance_refused_cooldown
}
}
custom_tooltip = {
text = fp3_change_allegiance.tt.hof_is_d_sunni
faith.religious_head ?= title:d_sunni.holder
}
}
scope:actor = {
is_available_adult = yes
}As written in game/common/character_interactions/00_fp3_interactions.txt.
Effects (on_send, on_accept, on_decline) (141 lines of game script)
on_accept = if = {
limit = {
always = scope:hook
}
scope:actor = {
use_hook = scope:recipient
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_gain
DESC = clan_unity_changed_alignment.desc
REVERSE_NON_HOUSE_TARGET = no
}
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = recipient_joined_your_side_title
left_icon = scope:recipient
scope:recipient = {
if = {
limit = {
scope:actor = {
has_trait = fp3_struggle_detractor
}
}
if = {
limit = {
has_trait = fp3_struggle_supporter
}
remove_trait = fp3_struggle_supporter
}
add_trait_force_tooltip = fp3_struggle_detractor
hidden_effect = {
if = {
limit = {
scope:actor = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_turn_supporter_into_detractor
}
}
}
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_turn_supporter_into_detractor
character = scope:actor
}
log_debug_variable_for_persian_struggle_effect = {
VAR = unrest_catalyst_turn_supporter_into_detractor
}
}
}
}
}
else = {
if = {
limit = {
has_trait = fp3_struggle_detractor
}
remove_trait = fp3_struggle_detractor
}
add_trait_force_tooltip = fp3_struggle_supporter
hidden_effect = {
if = {
limit = {
scope:actor = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_turn_detractor_into_supporter
}
}
}
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_turn_detractor_into_supporter
character = scope:actor
}
log_debug_variable_for_persian_struggle_effect = {
VAR = stabil_catalyst_turn_detractor_into_supporter
}
}
}
}
}
}
}
}
scope:recipient = {
set_variable = {
name = fp3_change_allegiance_recipient_cooldown
years = 20
}
}
on_decline = add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_loss
DESC = clan_unity_refused_alignment.desc
REVERSE_NON_HOUSE_TARGET = no
}
scope:actor = {
if = {
limit = {
scope:actor = {
has_trait = fp3_struggle_detractor
}
}
send_interface_toast = {
type = event_toast_effect_bad
title = recipient_refused_to_join_your_side_title
left_icon = scope:recipient
progress_towards_rival_effect = {
REASON = rival_rejected_switching_to_struggle_detractor
CHARACTER = scope:recipient
OPINION = default_rival_opinion
}
}
}
else = {
send_interface_toast = {
type = event_toast_effect_bad
title = recipient_refused_to_join_your_side_title
left_icon = scope:recipient
progress_towards_rival_effect = {
REASON = rival_rejected_switching_to_struggle_supporter
CHARACTER = scope:recipient
OPINION = default_rival_opinion
}
}
}
}
scope:recipient = {
set_variable = {
name = fp3_change_allegiance_refused_cooldown
years = 20
}
}As written in game/common/character_interactions/00_fp3_interactions.txt.
- Category
- Diplomatic actions
- Cost: Prestige
- 150
- DLC
- Legacy of Persia
- In the menu
- main list
- ID
fp3_change_allegiance
Source: game/common/character_interactions/00_fp3_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.