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

Invite House to Bloc

variesInfluencevariesPrestigeAccepted automatically in some cases; otherwise the AI weighs it

Found a new Bloc with House …

What you need

You

To send it

To see it in the menu

  • Your Government uses Blocs
  • One of these

  • house.house_head ?= this
  • If played by the AI:
    • One of these

    • If

      • NOT = { house.house_confederation.leading_house.house_head ?= this }

      Then

      • None of these

        • Any confederation:
          • leading_house.house_head.top_liege ?= root.top_liege
          • leading_house ?= { has_same_house_aspiration_as = root.house }
          • has_leading_house = yes
    • If a check the game hides passes: the same again (2 lines)
      • Confederation (less than 5):
        • has_leading_house = yes
        • leading_house.house_head.top_liege ?= root.top_liege
  • Is a ruler
  • Your top liege: Government uses Blocs
  • Highest held Title is at least County Rank
  • Your top liege:
    • Government uses Blocs
    • Their top liege: Government uses Blocs
  • top_liege ?= scope:recipient.top_liege
  • If

    a check the game hides

    Then

    • NOT = { scope:recipient.house.house_confederation ?= house.house_confederation }

The character you target

To send it

  • Is at not War
  • … must be House Head of a Noble Family Challenge your House Head for leadership, or use the Create Cadet Branch Decision
  • Vassal Houses cannot join a Bloc without their Liege in it
  • … House has left or been removed from the … within the last 5 years (…)
  • You cannot invite a Bloc Leader to your Bloc
  • Houses cannot join another Bloc within 5 years of joining (… remaining)
  • If

    • You: Is played by the AI

    Then

    • Is landed

To see it in the menu

  • Is a ruler
  • Government uses Blocs
  • Their top liege: Government uses Blocs
  • Highest held Title is at least County Rank
  • Their top liege:
    • Government uses Blocs
    • Their top liege: Government uses Blocs

Invite House to Bloc is a diplomatic character interaction in Crusader Kings III. You need: Is at not War. The character you target needs: Is at not War, Vassal Houses cannot join a Bloc without their Liege in it, You cannot invite a Bloc Leader to your Bloc and 1 more. Accepted automatically in some cases; otherwise the AI weighs it. Reasons the AI weighs include Gold sent (+25), Spending Prestige (+25), Spending Influence (+25) and 15 more. It costs Influence (varies), Prestige (varies). Patch 1.20.1.2, from game/common/character_interactions/10_tgp_japan_interactions.txt.

for a guide, post or blog
Quick answers (3)
What are the requirements for Invite House to Bloc in CK3?
You: Is at not War. The character you target: Is at not War, Vassal Houses cannot join a Bloc without their Liege in it, You cannot invite a Bloc Leader to your Bloc and Houses cannot join another Bloc within 5 years of joining (… remaining). (patch 1.20.1.2)
How do I get the AI to accept Invite House to Bloc?
Accepted automatically in some cases; otherwise the AI weighs it. Its reasons: Gold sent +25, Spending Prestige +25, Spending Influence +25, I get a Hook +20, I get a Strong Hook +50, Tier (Emperor) +50, Relative Level of Fame, Relative Level of Influence, Relative House Military Power, Different Government -200, Vulnerable Government +50, Same Dynasty +10, Same House +1,000, Relative Level of Splendor, Relative Family Rating +50, Relative Family Rating -25, Ten'nō Distrusts Sōryō -100, Same House Aspiration as Bloc Leading House +25, Higher House Aspiration level, Different House Aspiration to Bloc Leading House -40, Bloc Size, Bloc Size, Relative Bloc Military Power, Low Bloc Cohesion, Distant Manor -20, Bloc Cohesion, Relative Bloc Cohesion, Threatened by Sōryō Rulers, Dynastic Duty +25, Forced Vassalage +15 and House Relation Level.
How much does Invite House to Bloc cost?
Influence (varies), Prestige (varies) (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. Reasons in italics are the script's, with no label in the game.

ReasonAmount
Base-50
Gold sent
when
  • The option “gold” is chosen
+25
Spending Prestige
when
  • The option “prestige” is chosen
+25
Spending Influence
when
  • The option “influence” is chosen
+25
I get a Hook
when
  • The option “offer hook” is chosen
+20
I get a Strong Hook
when
  • The option “offer hook strong” is chosen
+50
Tier (Emperor)
when
  • Holds Japan
+50
The joiner temp’s opinion of the inviter temp × 0.5
when
  • step = 5
  • max = 25
varies
The joiner temp’s opinion of the inviter temp’s confederation’s leading house’s house head × 0.5
when
  • scope:inviter_temp.confederation.leading_house.house_head != scope:inviter_temp
  • step = 5
  • max = 25
varies
The joiner temp’s opinion of the joiner temp’s confederation’s leading house’s house head × -0.5
when
  • scope:joiner_temp.confederation.leading_house != scope:joiner_temp.house
  • step = 5
  • min = -25
varies
Relative Level of Fame
when
  • The joiner temp’s prestige level is not the inviter temp’s
varies
Relative Level of Influence
when
  • The joiner temp: Government uses Influence
  • The inviter temp: Government uses Influence
  • The joiner temp’s influence level is not the inviter temp’s
varies
Relative House Military Power
when
  • The joiner temp: Government is Sōryō
  • The inviter temp: Government is Sōryō
varies
A scripted reason
when
-25
Different Government
when
  • The joiner temp:
    • NOT = { has_same_government = scope:inviter_temp }
-200
Vulnerable Government
when
  • The joiner temp:
    • NOT = { has_same_government = top_liege }
+50
A scripted reason
when
  • scope:joiner_temp.dynasty ?= scope:inviter_temp.dynasty
  • One of these

    • The joiner temp › Any ancestor:
      • One of these

        • Is a parent of the joiner temp
        • or

          is_grandparent_of = scope:joiner_temp
      • One of these

        • Is a parent of the inviter temp
        • or

          is_grandparent_of = scope:inviter_temp
+25
Same Dynasty
when
  • scope:joiner_temp.dynasty ?= scope:inviter_temp.dynasty
  • The joiner temp’s house is not the inviter temp’s
+10
Same House
when
  • scope:joiner_temp.house ?= scope:inviter_temp.house
+1,000
Relative Level of Splendorvaries
Relative Family Rating
when
  • The inviter temp’s house:
    • is_powerful_family = yes
  • The joiner temp’s house:
    • is_powerful_family = no
+50
Relative Family Rating
when
  • The inviter temp’s house:
    • is_powerful_family = no
  • The joiner temp’s house:
    • is_powerful_family = yes
-25
Ten'nō Distrusts Sōryō
when
  • The joiner temp: … is a member of the Ceremonial House (…)
  • None of these

    • The inviter temp: they has administrative government mechanic
  • The joiner temp: they has administrative government mechanic
-100
Same House Aspiration as Bloc Leading House
when
  • The joiner temp’s house:
    • has_same_house_aspiration_as = scope:inviter_temp.confederation.leading_house
+25
Higher House Aspiration level
when
  • The joiner temp’s house:
    • has_same_house_aspiration_as = scope:inviter_temp.house.house_confederation.leading_house
    • If

      • has_house_aspiration_parameter = aspiration_level_1

      Then

      • The inviter temp’s house’s house confederation’s leading house:
        • One of these

          • has_house_aspiration_parameter = aspiration_level_2
          • or

            has_house_aspiration_parameter = aspiration_level_3

      Else if

      • has_house_aspiration_parameter = aspiration_level_2

      Then

      • The inviter temp’s house’s house confederation’s leading house:
        • has_house_aspiration_parameter = aspiration_level_3

      Otherwise

      • Never
varies
Different House Aspiration to Bloc Leading House
when
  • None of these

    • The joiner temp’s house:
      • has_same_house_aspiration_as = scope:inviter_temp.confederation.leading_house
-40
Bloc Size
when
  • scope:inviter_temp.house.house_confederation.member_count < 5
varies
Bloc Size
when
  • scope:inviter_temp.house.house_confederation.member_count >= 10
varies
Relative Bloc Military Power
when
  • The inviter temp: Government is Sōryō
  • The joiner temp: Government is Sōryō
varies
Low Bloc Cohesion
when
  • The joiner temp’s house’s house confederation: Cohesion at most 50
varies
Distant Manor
when
  • The inviter temp’s domicile’s domicile location:
    • None of these

      • kingdom = scope:joiner_temp.domicile.domicile_location.kingdom
      • Their county › Any neighboring county:
        • this = scope:joiner_temp.domicile.domicile_location.county
-20
Bloc Cohesion
when
  • scope:inviter_temp.house.house_confederation.cohesion != 50
varies
Relative Bloc Cohesion
when
  • scope:joiner_temp.house.house_confederation.cohesion != scope:inviter_temp.house.house_confederation.cohesion
varies
A scripted reason
when
  • DESC = AI_ALREADY_IN_BLOC_REASON
-25
A scripted reason
when
  • The joiner temp:
    • Is landed
    • Their government does not have the administrative mechanic
    • None of these

      • Any held county:
        • is_landless_type_title = no
        • One of these

          • Any neighboring county:
            • holder.house.house_confederation ?= scope:inviter_temp.house.house_confederation
          • or

            Their duchy › Any de jure county:
            • holder.house.house_confederation ?= scope:inviter_temp.house.house_confederation
  • DESC = AI_DISTANT_SORYO_BLOC_REASON
-75
Threatened by Sōryō Rulers
when
  • The inviter temp: they has administrative government mechanic
  • The joiner temp:
    • they has administrative government mechanic
    • Their capital county › Any title to title neighboring county:
      • None of these

        • Their holder: they has administrative government mechanic
varies
Dynastic Duty
when
  • The inviter temp’s dynasty: The Dynasty has the Dynastic Duty Legacy
  • The inviter temp’s dynasty is the joiner temp’s
+25
Forced Vassalage
when
+15
House Relation Level
when
  • Your house is not the target’s
  • Your house › Any house relation: Any relation house:
varies
Acceptance (ai_accept) (45 lines of game script)
base = -50
modifier = {
	scope:gold = yes
	add = 25
	desc = TRADE_GOLD_FOR_BETTER_AI_ACCEPTANCE_TT
}
modifier = {
	scope:prestige = yes
	add = 25
	desc = PRESTIGE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
modifier = {
	scope:influence = yes
	add = 25
	desc = INFLUENCE_INTERACTION_ACCEPTANCE_SEND_OPTION
}
modifier = {
	add = 20
	scope:offer_hook = yes
	exists = scope:recipient
	desc = SCHEME_WITH_OFFER_HOOK
}
modifier = {
	add = 50
	scope:offer_hook_strong = yes
	exists = scope:recipient
	desc = SCHEME_WITH_OFFER_HOOK_STRONG
}
modifier = {
	add = 50
	scope:actor = {
		has_title = title:e_japan
	}
	desc = TIER_REASON_EMPEROR
}
house_bloc_desire_to_join_modifiers = {
	JOINER = scope:recipient
	INVITER = scope:actor
	MULTIPLIER = 1
}
house_relation_ai_accept_modifiers = {
	HOUSE_1_MEMBER = scope:actor
	HOUSE_2_MEMBER = scope:recipient
	MULTIPLIER = 1
}

As written in game/common/character_interactions/10_tgp_japan_interactions.txt.

What happens

If they accept

  • The character you target › Their house:
    • house_confederation ?= { … }
    • If

      • scope:leaver.house_head.house.house_confederation ?= scope:bloc

      Then

      • If

        • The bloc: Confederation member house (at most 2):

        Then

        • House … will leave the …
        • The … will disband

        Else if

        • The leader is not the leaver

        Then

        • House … will leave the … and may not rejoin for 5 years
      • If

        • The leader is the leaver

        Then

        • The bloc:
          • tgp_find_new_house_bloc_leader_effect = { }

        Otherwise

        • If

          • flag:yes = flag:yes

          Then

          • The leader:
            • Their house head:
              • If

                Then

                • remove_opinion = { target = scope:leaver.house_head modifier = joined_house_bloc_opinion }
              • Opinion: Left House Bloc (-15)
            • change_house_relation_effect = { … }
        • If

          • flag:no = flag:yes

          Then

          • The leaver’s house head: All … House members gain a one-way Truce with all other Bloc members for 5 years
  • If

    Then

    • Use a Hook on the target

    Otherwise

    • If

      • The option “gold” is chosen

      Then

      • Pay gold to the target
    • If

      • The option “prestige” is chosen

      Then

    • If

      • The option “influence” is chosen

      Then

      • Influence changes
      • The character you target: Influence +60
    • If

      • The option “offer hook” is chosen

      Then

      • The character you target: Gain a Favor on you
    • If

      • The option “offer hook strong” is chosen

      Then

      • The character you target: Gain a Oath Debt on you
  • Your house:
    • If

      a check the game hides

      Then

      • House … will form the … Bloc
  • The character you target:
    • Their house:
      • If

        a check the game hides

        Then

        • The joiner’s house head: House … will join the … Bloc

        Else if

        • If

          a check the game hides

          Then

          • The old bloc is not the bloc

        Then

        • House … will join the …
        • If

          • flag:yes = flag:yes
          • The inviter is not the joiner

          Then

          • The inviter:
            • Their house head › If played by the AI:
              • If

                Then

                • remove_opinion = { modifier = left_house_bloc_opinion target = scope:joiner.house_head }
              • Opinion: Joined House Bloc (+15)
            • If

              a check the game hides

              Then

              • impact_house_relation = { target = scope:other_house steps = scope:steps description = house_relation_reason_joined_bloc_desc }
    • … will not be able to leave the Bloc for 10 years

Options when sending

  • Send Gold
  • Impress with Prestige
  • Offer Influence
  • Offer a Hook on yourself
  • Offer a Strong Hook on yourself
  • 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) (60 lines of game script)
is_available = government_has_flag = government_has_house_blocs
OR = {
	is_landed = yes
	tgp_is_ceremonial_liege_trigger = yes
}
house.house_head ?= this
trigger_if = {
	limit = {
		is_ai = yes
	}
	OR = {
		is_landed = yes
		tgp_is_ceremonial_liege_trigger = yes
	}
	trigger_if = {
		limit = {
			NOT = {
				house.house_confederation.leading_house.house_head ?= this
			}
		}
		NOT = {
			any_confederation = {
				leading_house.house_head.top_liege ?= root.top_liege
				leading_house ?= {
					has_same_house_aspiration_as = root.house
				}
				has_leading_house = yes
			}
		}
	}
	trigger_if = {
		limit = {
			this != top_liege
			NOT = {
				exists = house.house_confederation
			}
		}
		any_confederation = {
			count < 5
			has_leading_house = yes
			leading_house.house_head.top_liege ?= root.top_liege
		}
	}
}
tgp_house_bloc_interaction_valid_trigger = yes
is_shown = scope:actor = {
	this != scope:recipient
	top_liege ?= scope:recipient.top_liege
	trigger_if = {
		limit = {
			exists = house.house_confederation
		}
		NOT = {
			scope:recipient.house.house_confederation ?= house.house_confederation
		}
	}
}
scope:recipient = {
	tgp_house_bloc_interaction_valid_trigger = yes
}

As written in game/common/character_interactions/10_tgp_japan_interactions.txt.

Can be sent when (is_valid…) (95 lines of game script)
scope:actor = {
	is_at_war = no
	tgp_house_bloc_interaction_valid_showing_failures_trigger = yes
	trigger_if = {
		limit = {
			exists = confederation
		}
		custom_tooltip = {
			text = invite_to_house_bloc_leader_tt
			confederation.leading_house = house
		}
	}
	trigger_else = {
		custom_tooltip = {
			text = invite_to_house_bloc_tt
			is_house_head = yes
			is_ruler = yes
		}
	}
}
scope:recipient = {
	is_at_war = no
	tgp_house_bloc_interaction_valid_showing_failures_trigger = yes
	custom_tooltip = {
		text = join_bloc_vassal_house_tt
		trigger_if = {
			limit = {
				is_independent_ruler = no
				trigger_if = {
					limit = {
						exists = scope:secondary_recipient
					}
					NOT = {
						scope:secondary_recipient = scope:recipient.liege
					}
				}
			}
			OR = {
				liege = scope:actor.liege
				liege = scope:actor
				AND = {
					liege.liege = scope:actor
					scope:actor = {
						highest_held_title_tier < tier_empire
					}
				}
				liege = {
					house.house_confederation = scope:actor.house.house_confederation
				}
			}
		}
	}
	custom_tooltip = {
		text = join_bloc_left_cooldown_recipient_tt
		NOT = {
			house = {
				any_in_list = {
					variable = left_bloc_cooldown
					scope:actor.house.house_confederation ?= this
					save_temporary_scope_as = bloc_cooldown_temp
				}
			}
		}
	}
	custom_tooltip = {
		text = join_bloc_bloc_leader_tt
		trigger_if = {
			limit = {
				exists = scope:recipient.house.house_confederation
			}
			NOT = {
				scope:recipient.house.house_confederation.leading_house.house_head ?= scope:recipient
			}
		}
	}
	custom_tooltip = {
		text = join_bloc_recent_house_join_tt
		NOT = {
			scope:recipient.house = {
				has_variable = recently_joined_bloc
			}
		}
	}
	trigger_if = {
		limit = {
			scope:actor = {
				is_ai = yes
				NOT = {
					exists = house.house_confederation
				}
			}
		}
		is_landed = yes
	}
}

As written in game/common/character_interactions/10_tgp_japan_interactions.txt.

Effects (on_send, on_accept, on_decline) (151 lines of game script)
on_accept = scope:recipient = {
	house = {
		if = {
			limit = {
				exists = house_confederation
			}
			switch = {
				trigger = yes
				scope:hook = {
					set_variable = {
						name = bloc_leaving_reason
						value = flag:reason_bribe_hook
						days = 4
					}
				}
				scope:gold = {
					set_variable = {
						name = bloc_leaving_reason
						value = flag:reason_bribe_gold
						days = 4
					}
				}
				scope:prestige = {
					set_variable = {
						name = bloc_leaving_reason
						value = flag:reason_bribe_prestige
						days = 4
					}
				}
				scope:influence = {
					set_variable = {
						name = bloc_leaving_reason
						value = flag:reason_bribe_influence
						days = 4
					}
				}
				scope:influence = {
					set_variable = {
						name = bloc_leaving_reason
						value = flag:reason_bribe_influence
						days = 4
					}
				}
				fallback = {
					tgp_save_bloc_leaving_reason_effect = {
						LEAVING_HOUSE = scope:recipient.house
						INVITING_HOUSE = scope:actor.house
					}
				}
			}
		}
		tgp_leave_house_bloc_effect = {
			OPINION = flag:yes
			TRUCE = flag:no
		}
	}
	add_character_flag = {
		flag = invited_to_bloc_recently
		years = 2
	}
}
scope:actor = {
	if = {
		limit = {
			scope:hook = yes
		}
		use_hook = scope:recipient
	}
	else = {
		if = {
			limit = {
				scope:gold = yes
			}
			pay_short_term_gold = {
				target = scope:recipient
				gold = scope:recipient.medium_gold_value
			}
		}
		if = {
			limit = {
				scope:prestige = yes
			}
			add_prestige = scope:recipient.medium_prestige_loss
			scope:recipient = {
				add_prestige = medium_prestige_value
			}
		}
		if = {
			limit = {
				scope:influence = yes
			}
			change_influence = scope:recipient.medium_influence_loss
			scope:recipient = {
				change_influence = medium_influence_gain
			}
		}
		if = {
			limit = {
				scope:offer_hook = yes
			}
			scope:recipient = {
				add_hook = {
					type = favor_hook
					target = scope:actor
				}
			}
		}
		if = {
			limit = {
				scope:offer_hook_strong = yes
			}
			scope:recipient = {
				add_hook = {
					type = strong_favor_hook
					target = scope:actor
				}
			}
		}
	}
	house = {
		if = {
			limit = {
				NOT = {
					exists = house_confederation
				}
			}
			tgp_create_house_bloc_effect = {
				TYPE = none
			}
		}
	}
}
scope:recipient = {
	house ?= {
		tgp_join_house_bloc_effect = {
			INVITER = scope:actor.house
			OPINION = flag:yes
		}
	}
	custom_tooltip = forced_bloc_membership_tt
	add_character_flag = {
		flag = forced_bloc_membership
		years = 10
	}
}
on_decline = scope:recipient = {
	add_character_flag = {
		flag = invited_to_bloc_recently
		years = 4
	}
}

As written in game/common/character_interactions/10_tgp_japan_interactions.txt.

Category
Diplomatic actions
Cost: Influence
varies
Cost: Prestige
varies
Again on the same character
after 5 years
In the menu
main list
ID
invite_to_house_bloc_interaction

Source: game/common/character_interactions/10_tgp_japan_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. “…” marks words the game fills in at play time (a name, a title).

Spotted a mistake on this page?