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

Interaction · Landless adventurer actions

Purchase Land

variesGoldRoads to PowerThe AI weighs it

Bargain your Gold for a Title to establish yourself as a Landed Ruler

What you need

You

To send it

To see it in the menu

The character you target

To send it

  • is_contact_of = scope:actor
  • Is at not War
  • Does not have a Strong Hook on you

To see it in the menu

  • Is landed
  • Government does not allow: noble families

Which title you can pick

Purchase Land is a landless adventurer character interaction in Crusader Kings III. You need: Is an Independent Ruler, Prestige level at least 2, Does not have the Trait: Gallowsbait and 2 more. The character you target needs: Is at not War and Does not have a Strong Hook on you. The AI weighs it. Reasons the AI weighs include The target is within De Jure Duchy of my Capital (-50), The target is not my Culture (…) (+10), You are married to a … noble (+40) and 8 more. It costs Gold (varies). It needs Roads to Power. Patch 1.20.1.2, from game/common/character_interactions/06_ep3_laamp_interactions.txt.

for a guide, post or blog
Quick answers (3)
What are the requirements for Purchase Land in CK3?
You: Is an Independent Ruler, Prestige level at least 2, Does not have the Trait: Gallowsbait, Does not have the Trait: Gallivanter and Exiled. The character you target: Is at not War and Does not have a Strong Hook on you. (patch 1.20.1.2)
How do I get the AI to accept Purchase Land?
The AI weighs it. Its reasons: … Opinion of …, Number and Tier of purchased Titles, The target is within De Jure Duchy of my Capital -50, Development and Buildings of the target, The target is not my Culture (…) +10, The target is not my Faith (…), Giving land of my Culture (…) to foreigner, Giving land of my Faith (…) to …, Distance of … from my Capital, … Opinion of …, High Level of Fame, You are married to a … noble +40, You are married to a member of … House +80, You speak the recipient's Language (…) +20, You do not speak the recipient's Language (…) -40, The recipient is in Debt, You have a positive Special Relation with the target +60, You have offered twice as much gold +80, You have a hook on the recipient's +160, You have offered a Hook on yourself +60 and You have offered increased Subject Obligations +80.
How much does Purchase Land cost?
Gold (varies) (patch 1.20.1.2).

Will they accept?

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

ReasonAmount
Base0
… Opinion of …varies
Number and Tier of purchased Titlesvaries
The target is within De Jure Duchy of my Capital
when
  • scope:target.duchy = scope:recipient.capital_county.duchy
-50
Development and Buildings of the targetvaries
The target is not my Culture (…)
when
  • If

    • scope:target.tier = tier_county

    Then

    • The target’s culture is not the target’s

    Otherwise

    • The target › Any de jure county:
      • holder.top_liege = scope:recipient
      • NOT = { scope:recipient.capital_county ?= this }
      • NOT = { scope:recipient.primary_title ?= this }
      • Their culture is the same as that of recipient
+10
The target is not my Faith (…)
when
  • If

    • scope:target.tier = tier_county

    Then

    • The target’s faith is not the target’s

    Otherwise

    • The target › Any de jure county:
      • holder.top_liege = scope:recipient
      • NOT = { scope:recipient.capital_county ?= this }
      • NOT = { scope:recipient.primary_title ?= this }
      • Their faith is the same as that of recipient
varies
Giving land of my Culture (…) to foreigner
when
  • Your culture is not the target’s
  • If

    • scope:target.tier = tier_county

    Then

    • The target’s culture is the target’s

    Otherwise

    • The target › Any de jure county:
      • holder.top_liege = scope:recipient
      • NOT = { scope:recipient.capital_county ?= this }
      • NOT = { scope:recipient.primary_title ?= this }
      • Their culture is the same as that of recipient
  • The target’s culture:
    • save_temporary_scope_value_as = { … }
varies
Giving land of my Faith (…) to …
when
  • Your faith is not the target’s
  • If

    • scope:target.tier = tier_county

    Then

    • The target’s faith is the target’s

    Otherwise

    • The target › Any de jure county:
      • holder.top_liege = scope:recipient
      • NOT = { scope:recipient.capital_county ?= this }
      • NOT = { scope:recipient.primary_title ?= this }
      • Their faith is the same as that of recipient
  • The target’s faith:
    • save_temporary_scope_value_as = { name = hostility value = faith_hostility_level(scope:actor.faith) }
varies
Distance of … from my Capital
when
  • The target’s capital county:
    • save_temporary_scope_value_as = { name = distance value = squared_distance(scope:distance_target) }
varies
… Opinion of …
when
  • NOT = { scope:target.holder ?= scope:recipient }
varies
High Level of Fame
when
  • root.prestige_level >= 4
your prestige level × 20
You are married to a … noble
when
  • Your culture is not the target’s
  • One of these

    • All of these

      • scope:target.tier = tier_county
      • The target’s culture is the target’s
    • or

      The target › Any de jure county:
      • All of these

        • holder.top_liege = scope:recipient
        • NOT = { scope:recipient.capital_county ?= this }
        • NOT = { scope:recipient.primary_title ?= this }
      • Their culture is the same as that of recipient
  • Your spouse:
    • Their culture is the same as that of recipient
    • Their dynasty: Level of Splendor at least 2
+40
A scripted reason
when
  • Your faith is not the target’s
  • Your spouse:
    • Their faith is the same as that of recipient
    • Their dynasty: Level of Splendor at least 2
+40
You are married to a member of … House
when
  • Your spouse: Is of the same house as the target
+80
You speak the recipient's Language (…)
when
  • One of these

    • All of these

      • scope:target.tier = tier_county
      • The target’s culture is the target’s
    • or

      The target › Any de jure county:
      • All of these

        • holder.top_liege = scope:recipient
        • NOT = { scope:recipient.capital_county ?= this }
        • NOT = { scope:recipient.primary_title ?= this }
      • Their culture is the same as that of recipient
  • knows_language_of_culture = scope:recipient.culture
  • Your culture is the same as that of recipient
+20
You do not speak the recipient's Language (…)
when
  • NOT = { knows_language_of_culture = scope:recipient.culture }
  • Your culture is not the same as that of recipient
-40
The recipient is in Debt
when
  • The character you target:
    • One of these

      • Debt level more than 0
      • or

        Treasury debt level more than 0
varies
You have a positive Special Relation with the target
when
  • One of these

    • Has the target as lover
    • or

      Has the target as friend
+60
You have offered twice as much gold
when
  • The option “offer gold” is chosen
+80
You have a hook on the recipient's
when
+160
You have offered a Hook on yourself
when
  • The option “offer hook” is chosen
+60
You have offered increased Subject Obligations
when
  • The option “vassal obligation” is chosen
+80
Acceptance (ai_accept) (286 lines of game script)
base = 0
opinion_modifier = {
	who = scope:recipient
	opinion_target = scope:actor
	multiplier = 1
	desc = AI_OPINION_REASON
}
modifier = {
	add = {
		value = 0
		scope:target = {
			if = {
				limit = {
					tier = tier_county
				}
				add = -30
			}
			else = {
				add = -60
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
					}
					add = -30
				}
			}
		}
	}
	desc = PURCHASE_LAND_NUM_TITLES_REASON
}
modifier = {
	add = -50
	desc = PURCHASE_LAND_DE_JURE_DUCHY_REASON
	scope:target.duchy = scope:recipient.capital_county.duchy
}
modifier = {
	add = {
		value = 0
		if = {
			limit = {
				scope:target.tier = tier_county
			}
			add = scope:target.development_level
			scope:target = {
				every_county_province = {
					add = num_buildings
				}
			}
		}
		else = {
			scope:target = {
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
					}
					add = development_level
					every_county_province = {
						add = num_buildings
					}
				}
			}
		}
		multiply = -2
	}
	desc = PURCHASE_LAND_VALUE_REASON
}
modifier = {
	add = 10
	add = {
		value = 0
		if = {
			limit = {
				scope:target.tier = tier_county
			}
			add = 10
		}
		else = {
			scope:target = {
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
						culture != scope:recipient.culture
					}
					add = 10
				}
			}
		}
		max = 30
	}
	desc = PURCHASE_LAND_FOREIGN_CULTURE_REASON
	trigger_if = {
		limit = {
			scope:target.tier = tier_county
		}
		scope:target.culture != scope:recipient.culture
	}
	trigger_else = {
		scope:target = {
			any_de_jure_county = {
				ep3_purchase_land_valid_county_trigger = yes
				culture != scope:recipient.culture
			}
		}
	}
}
modifier = {
	add = {
		value = 0
		if = {
			limit = {
				scope:target.tier = tier_county
			}
			add = 10
		}
		else = {
			scope:target = {
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
						faith != scope:recipient.faith
					}
					add = 10
				}
			}
		}
		max = 30
	}
	desc = PURCHASE_LAND_DIFFERENT_FAITH_REASON
	trigger_if = {
		limit = {
			scope:target.tier = tier_county
		}
		scope:target.faith != scope:recipient.faith
	}
	trigger_else = {
		scope:target = {
			any_de_jure_county = {
				ep3_purchase_land_valid_county_trigger = yes
				faith != scope:recipient.faith
			}
		}
	}
}
modifier = {
	add = {
		value = 0
		if = {
			limit = {
				scope:target.tier = tier_county
			}
			add = -40
		}
		else = {
			scope:target = {
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
						culture != scope:recipient.culture
					}
					add = -40
				}
			}
		}
		if = {
			limit = {
				scope:acceptance != 0
			}
			divide = scope:acceptance
		}
		multiply = 2
		min = -200
	}
	desc = PURCHASE_LAND_MY_CULTURE_REASON
	scope:actor.culture != scope:recipient.culture
	trigger_if = {
		limit = {
			scope:target.tier = tier_county
		}
		scope:target.culture = scope:recipient.culture
	}
	trigger_else = {
		scope:target = {
			any_de_jure_county = {
				ep3_purchase_land_valid_county_trigger = yes
				culture = scope:recipient.culture
			}
		}
	}
	scope:recipient.culture = {
		save_temporary_scope_value_as = {
			name = acceptance
			value = {
				value = cultural_acceptance(scope:actor.culture)
				divide = 25
				ceiling = yes
			}
		}
	}
}
modifier = {
	add = {
		value = 0
		if = {
			limit = {
				scope:target.tier = tier_county
			}
			add = -40
		}
		else = {
			scope:target = {
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
						faith != scope:recipient.faith
					}
					add = -40
				}
			}
		}
		if = {
			limit = {
				scope:hostility != 0
			}
			multiply = scope:hostility
		}
		multiply = 2
		min = -200
	}
	desc = PURCHASE_LAND_MY_FAITH_REASON
	scope:actor.faith != scope:recipient.faith
	trigger_if = {
		limit = {
			scope:target.tier = tier_county
		}
		scope:target.faith = scope:recipient.faith
	}
	trigger_else = {
		scope:target = {
			any_de_jure_county = {
				ep3_purchase_land_valid_county_trigger = yes
				faith = scope:recipient.faith
			}
		}
	}
	scope:recipient.faith = {
		save_temporary_scope_value_as = {
			name = hostility
			value = faith_hostility_level(scope:actor.faith)
		}
	}
}
modifier = {
	add = {
		value = 0
		add = scope:distance
		divide = scope:recipient.highest_held_title_tier
		if = {
			limit = {
				scope:distance <= squared_distance_medium
			}
			multiply = -0.01
		}
		else = {
			multiply = 0.0005
		}
		min = -25
		max = 50
	}
	desc = PURCHASE_LAND_DISTANCE_REASON
	trigger_if = {
		limit = {
			scope:target.tier = tier_county
		}
		scope:target = {
			save_temporary_scope_as = distance_target
		}
	}
	trigger_else = {
		scope:target.title_capital_county = {
			save_temporary_scope_as = distance_target
		}
	}
	scope:recipient.capital_county = {
		save_temporary_scope_value_as = {
			name = dista
# … (cut here; the rest is in the file)

As written in game/common/character_interactions/06_ep3_laamp_interactions.txt.

What happens

If they accept

  • You:
    • You: Pay gold to the target
    • You:
      • If

        • character:90028 ?= this

        Then

    • You › Otherwise › The new primary title:
      • change_title_holder_include_vassals = { holder = scope:actor change = scope:title_change take_baronies = no }
    • If

      • NOT = { scope:ascended_throne_value = flag:purchased }

      Then

      • The new primary title › Every de jure county:
        • Where:
          • If

            a check the game hides

            Then

            • holder.top_liege ?= scope:defender.top_liege
          • If

            a check the game hides

            Then

            • holder.top_liege ?= scope:new_liege.top_liege
        • change_title_holder_include_vassals = { holder = scope:actor change = scope:title_change take_baronies = no }
    • Every in list:
      • Where:
        • is_leased_out = no
      • change_title_holder_include_vassals = { holder = scope:actor change = scope:title_change take_baronies = no }

If they refuse

Options when sending

  • Pay DoubleOffer the recipient twice as much for the target
  • Use a Hook
  • Offer a Hook on yourselfThe recipient will have a hook on you to use as they pleases.
  • Offer increased Subject ObligationsYour Vassal Contract will gain Extortionate Taxes and Massive Levy Contribution

Events it fires: ep3_laamps.0102

• 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) (9 lines of game script)
is_available = government_has_flag = government_is_landless_adventurer
is_shown = has_ep3_dlc_trigger = yes
scope:recipient = {
	is_landed = yes
	NOT = {
		government_allows = noble_families
	}
}
scope:recipient != scope:actor

As written in game/common/character_interactions/06_ep3_laamp_interactions.txt.

Can be sent when (is_valid…) (97 lines of game script)
scope:actor = {
	top_liege = this
	prestige_level >= 2
	NOR = {
		has_trait = gallowsbait
		has_trait = gallivanter
	}
}
scope:recipient = {
	is_contact_of = scope:actor
	is_at_war = no
	NOT = {
		has_strong_hook = scope:actor
	}
}
trigger_if = {
	limit = {
		scope:target ?= {
			tier = tier_barony
		}
	}
	custom_description = {
		text = purchase_land_barony_tt
		always = no
	}
}
trigger_if = {
	limit = {
		scope:target ?= {
			tier >= tier_kingdom
		}
	}
	custom_description = {
		text = purchase_land_kingdom_tt
		always = no
	}
}
trigger_if = {
	limit = {
		scope:target ?= {
			is_head_of_faith = yes
		}
	}
	custom_description = {
		text = purchase_land_religious_tt
		always = no
	}
}
trigger_if = {
	limit = {
		scope:target ?= {
			is_noble_family_title = yes
		}
	}
	custom_description = {
		text = purchase_land_noble_family_tt
		always = no
	}
}
trigger_if = {
	limit = {
		scope:target ?= {
			has_variable = adventurer_creation_reason
		}
	}
	custom_description = {
		text = purchase_land_landless_adventurer_tt
		always = no
	}
}
trigger_if = {
	limit = {
		scope:recipient = {
			any_held_county = {
				count < 2
			}
		}
	}
	custom_description = {
		text = purchase_land_minimum_county_tt
		object = scope:recipient
		always = no
	}
}
ep3_laamp_diplo_range_trigger = {
	TARGET = scope:recipient
	LAAMP = scope:actor
}
custom_tooltip = {
	text = the_wake_1
	NOT = {
		is_laamp_exiled_from_province_trigger = {
			PROVINCE = scope:recipient.capital_province
			LAAMP = scope:actor
		}
	}
}

As written in game/common/character_interactions/06_ep3_laamp_interactions.txt.

Effects (on_send, on_accept, on_decline) (141 lines of game script)
on_accept = scope:actor = {
	save_scope_as = adventurer
}
scope:target = {
	save_scope_as = purchase_land_target
	add_to_list = purchased_titles
	if = {
		limit = {
			tier = tier_duchy
		}
		every_de_jure_county = {
			limit = {
				holder ?= {
					OR = {
						this = scope:recipient
						target_is_liege_or_above = scope:recipient
					}
				}
			}
			if = {
				limit = {
					holder = scope:recipient
				}
				add_to_list = purchased_titles
			}
			else_if = {
				limit = {
					holder ?= {
						highest_held_title_tier < scope:purchase_land_target.tier
						NOT = {
							government_has_flag = government_is_administrative
						}
						target_is_liege_or_above = scope:recipient
					}
				}
				holder = {
					if = {
						limit = {
							NOT = {
								is_in_list = purchase_land_vassals_taken
							}
						}
						add_to_list = purchase_land_vassals_taken
					}
				}
			}
			else = {
				add_to_list = purchased_titles
			}
		}
	}
}
ordered_in_list = {
	list = purchased_titles
	order_by = tier
	save_scope_as = new_primary_title
}
save_scope_value_as = {
	name = purchase_land_cost
	value = {
		if = {
			limit = {
				scope:target.tier = tier_county
			}
			add = purchase_land_county_cost_value
		}
		else = {
			add = purchase_land_duchy_cost_value
			scope:target = {
				every_de_jure_county = {
					limit = {
						ep3_purchase_land_valid_county_trigger = yes
					}
					add = purchase_land_county_cost_value
				}
			}
		}
		if = {
			limit = {
				scope:actor = {
					has_variable = ep3_grace_to_the_family_var
				}
			}
			multiply = 0.5
		}
		if = {
			limit = {
				scope:offer_gold = yes
			}
			multiply = 2
		}
	}
}
save_scope_value_as = {
	name = purchase_land_legitimacy_cost
	value = {
		value = 0
		if = {
			limit = {
				scope:target.holder != scope:recipient
			}
			every_in_list = {
				list = purchased_titles
				if = {
					limit = {
						tier = tier_county
					}
					add = minor_legitimacy_loss
				}
				else = {
					add = medium_legitimacy_loss
				}
			}
		}
	}
}
show_as_tooltip = {
	scope:actor = {
		purchase_land_interaction_effect = yes
	}
}
if = {
	limit = {
		always = scope:hook
	}
	scope:actor = {
		use_hook = scope:recipient
	}
}
hidden_effect = {
	scope:actor = {
		add_gold = scope:purchase_land_cost
	}
}
scope:actor = {
	trigger_event = ep3_laamps.0100
}
on_decline = scope:actor = {
	save_scope_as = adventurer
	trigger_event = ep3_laamps.0102
}

As written in game/common/character_interactions/06_ep3_laamp_interactions.txt.

Category
Landless adventurer actions
Cost: Gold
varies
Again on the same character
after 10 years
DLC
Roads to Power
In the menu
under More…
ID
purchase_land_interaction

Source: game/common/character_interactions/06_ep3_laamp_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?