N3OW/common/character_interactions/00_artifact_interactions.txt

4387 lines
96 KiB
Text

# Give away an artifact to improve relations
gift_artifact_interaction = {
category = interaction_category_friendly
common_interaction = no
interface_priority = 30
desc = gift_artifact_interaction_desc
icon = artisan_inspiration
target_type = artifact
target_filter = actor_artifacts
greeting = positive
notification_text = GIFT_ARTIFACT_PROPOSAL
answer_accept_key = GIFT_ARTIFACT_ACCEPT
answer_reject_key = GIFT_ARTIFACT_REJECT
ai_targets = {
ai_recipients = scripted_relations
ai_recipients = liege
ai_recipients = spouses
ai_recipients = vassals
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
max = 10
}
ai_targets = {
ai_recipients = family
ai_recipients = children
ai_recipients = dynasty
max = 20
}
ai_target_quick_trigger = {
adult = yes
}
ai_frequency = 84
can_be_picked_artifact = {
trigger_if = {
limit = {
scope:actor = {
is_ai = no
}
}
scope:target = {
is_equipped = no
}
}
scope:actor = {
any_character_artifact = {
this = scope:target
}
}
#Artifacts locked from being giftable by a variable
scope:target = {
NOR = {
has_variable = 1025_treasure_map
has_variable = ungiftable
}
}
}
#You can't give yourself a gift, even if it should count as self-care
is_shown = {
NOT = {
scope:recipient = scope:actor
}
scope:actor = {
has_any_artifact = yes
}
}
is_valid_showing_failures_only = {
# needs to have an artifact to give away
scope:recipient = { is_busy_in_events_localised = yes }
scope:actor = {
NOT = {
is_at_war_with = scope:recipient
}
is_imprisoned = no
trigger_if = {
limit = {
is_ai = no
}
custom_description = {
text = "any_unequipped_artifact_tt"
any_character_artifact = {
is_equipped = no
}
}
}
}
trigger_if = {
limit = {
exists = scope:target.var:banner_dynasty
exists = scope:recipient.dynasty
}
custom_description = {
text = "gift_artifact_dynasty_banner_head_tt"
scope:recipient = scope:target.var:banner_dynasty.dynast
}
}
}
on_accept = {
# Warning for multiple gifts
if = {
limit = {
scope:recipient = {
has_opinion_modifier = {
target = scope:actor
modifier = gift_artifact_opinion
}
}
}
custom_tooltip = ALREADY_SENT_GIFT_WARNING
}
# Struggle Catalyst
if = { # Struggle Catalyst
limit = {
scope:actor = {
any_character_struggle = {
involvement = involved
activate_struggle_catalyst_secondary_character_involvement_involved_trigger = {
CATALYST = catalyst_gift_independent_ruler
CHAR = scope:recipient
}
}
}
}
hidden_effect = {
scope:actor = {
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_gift_independent_ruler
character = scope:actor
}
}
}
}
}
else_if = {
limit = {
fp3_struggle_involves_one_supporter_and_one_detractor = {
FIRST = scope:actor
SECOND = scope:recipient
}
scope:actor = {
any_character_struggle = {
#involvement = involved
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_gift_supporter_detractor_ruler
CHAR = scope:recipient
}
}
}
}
hidden_effect = {
scope:actor = {
every_character_struggle = {
#involvement = involved
limit = {
activate_struggle_catalyst_secondary_character_involvement_either_trigger = {
CATALYST = catalyst_gift_supporter_detractor_ruler
CHAR = scope:recipient
}
}
activate_struggle_catalyst = {
catalyst = catalyst_gift_supporter_detractor_ruler
character = scope:actor
}
log_debug_variable_for_persian_struggle_effect = { VAR = concession_catalyst_gift_supporter_detractor_ruler }
}
}
}
}
scope:target = {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 1
}
set_variable = { name = gifted_artifact value = yes days = 9125 }
}
scope:recipient = {
# Verify that they could become friend
if = {
limit = {
NAND = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
has_relation_soulmate = scope:actor
has_relation_best_friend = scope:actor
}
}
gifting_leads_towards_friendship_effect = yes
}
}
scope:actor = {
send_interface_toast = {
type = event_toast_effect_neutral
title = gift_artifact_interaction_notification
left_icon = scope:recipient
right_icon = scope:target
scope:recipient = {
if = {
limit = { scope:target = { can_be_claimed_by = scope:recipient } }
if = {
limit = { any_personal_claimed_artifact = { this = scope:target } }
show_as_tooltip = { remove_personal_artifact_claim = scope:target }
}
else = { show_as_tooltip = { house = { remove_house_artifact_claim = scope:target } } }
}
}
scope:target = { set_owner = scope:recipient }
if = {
limit = {
scope:target = { is_unique = yes }
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
greedy = major_stress_impact_gain
generous = major_stress_impact_loss
}
}
else_if = {# Unity goes here, too!
limit = { scope:target = { rarity = masterwork } }
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
greedy = minor_stress_impact_gain
generous = minor_stress_impact_loss
}
}
else_if = {
limit = { scope:target = { rarity = famed } }
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
greedy = medium_stress_impact_gain
generous = medium_stress_impact_loss
}
}
else_if = {
limit = { scope:target = { rarity = illustrious } }
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
stress_impact = {
greedy = major_stress_impact_gain
generous = major_stress_impact_loss
}
}
if = {
limit = { scope:recipient = { is_ai = yes } }
reverse_add_opinion = {
target = scope:recipient
modifier = gift_artifact_opinion
opinion = gift_artifact_opinion
}
}
#FP3 Tenet Communal Possessions Perk - piety gain for gift giving.
if = {
limit = {
scope:actor = {
faith = {
has_doctrine_parameter = piety_from_gifts_active
}
}
}
scope:actor = {
if = {
limit = { #the better the artifact, the more piety you gain
scope:target = { rarity = illustrious }
}
add_piety = massive_piety_gain
}
else_if = {
limit = {
scope:target = { rarity = famed }
}
add_piety = major_piety_gain
}
else_if = {
limit = {
scope:target = { rarity = masterwork }
}
add_piety = medium_piety_gain
}
else = {
add_piety = minor_piety_gain
}
}
}
}
# Warning for low opinion gain
if = {
limit = {
scope:target = { artifact_durability <= define:NInventory|ARTIFACT_LOW_DURABILITY }
}
custom_tooltip = artifact_gift_low_durability_tt
}
if = {
limit = {
scope:target = { artifact_durability <= define:NInventory|ARTIFACT_VERY_LOW_DURABILITY }
}
custom_tooltip = artifact_gift_very_low_durability_tt
}
if = {
limit = {
scope:target = {
OR = {
AND = {
has_variable = banner_house
NOT = { var:banner_house = scope:recipient.house }
}
AND = {
has_variable = banner_dynasty
NOT = { var:banner_dynasty = scope:recipient.dynasty }
}
}
}
}
custom_tooltip = artifact_gift_useless_banner_tt
}
else_if = {
limit = {
scope:recipient = {
NOR = {
can_equip_artifact = scope:target
can_benefit_from_artifact = scope:target
}
}
}
custom_tooltip = artifact_gift_useless_tt
}
else_if = {
limit = {
scope:recipient = {
NOT = { can_equip_artifact = scope:target }
}
}
custom_tooltip = artifact_gift_equip_tt
}
else_if = {
limit = {
scope:recipient = {
NOT = { can_benefit_from_artifact = scope:target }
}
}
custom_tooltip = artifact_gift_benefit_tt
}
if = {
limit = { scope:recipient.liege = scope:actor }
custom_tooltip = artifact_gift_vassal_tt
}
if = {
limit = { scope:recipient = scope:actor.faith.religious_head }
custom_tooltip = artifact_gift_religious_head_tt
}
}
scope:recipient = {
hidden_effect = {
send_interface_toast = {
type = event_toast_effect_neutral
title = gift_artifact_interaction_notification
left_icon = scope:actor
right_icon = scope:target
show_as_tooltip = {
scope:target = { set_owner = scope:recipient }
if = {
limit = { is_ai = yes }
add_opinion = {
target = scope:actor
modifier = gift_artifact_opinion
opinion = gift_artifact_opinion
}
}
# Unity stuff, scales with tier # If we're a clan this interaction affects unity
if = { # In a better world, this would be a switch
limit = { scope:target = { rarity = Masterwork } } # todo_cd_polish, make the UI show this before you gift
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else_if = {
limit = { scope:target = { rarity = Famed } }
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = medium_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
else_if = {
limit = { scope:target = { rarity = Illustrious } }
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_gain
DESC = clan_unity_given_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
}
}
if = {
limit = {
is_ruler = no
trigger_if = {
limit = {
scope:target = {
artifact_slot_type = primary_armament
}
}
OR = {
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
}
}
AND = {
scope:target = {
rarity = illustrious
}
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
NOT = {
rarity = illustrious
}
}
}
AND = {
scope:target = {
rarity = famed
}
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
NOR = {
rarity = illustrious
rarity = famed
}
}
}
AND = {
scope:target = {
rarity = masterwork
}
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
}
}
}
AND = {
scope:target = {
rarity = common
}
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
rarity = common
}
}
}
}
}
trigger_if = {
limit = {
scope:target = {
artifact_slot_type = armor
}
}
OR = {
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = armor
}
}
AND = {
scope:target = {
rarity = illustrious
}
any_equipped_character_artifact = {
artifact_slot_type = armor
NOT = {
rarity = illustrious
}
}
}
AND = {
scope:target = {
rarity = famed
}
any_equipped_character_artifact = {
artifact_slot_type = armor
NOR = {
rarity = illustrious
rarity = famed
}
}
}
AND = {
scope:target = {
rarity = masterwork
}
any_equipped_character_artifact = {
artifact_slot_type = armor
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
}
}
}
AND = {
scope:target = {
rarity = common
}
any_equipped_character_artifact = {
artifact_slot_type = armor
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
rarity = common
}
}
}
}
}
trigger_if = {
limit = {
scope:target = {
artifact_slot_type = regalia
}
}
OR = {
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
}
}
AND = {
scope:target = {
rarity = illustrious
}
any_equipped_character_artifact = {
artifact_slot_type = regalia
NOT = {
rarity = illustrious
}
}
}
AND = {
scope:target = {
rarity = famed
}
any_equipped_character_artifact = {
artifact_slot_type = regalia
NOR = {
rarity = illustrious
rarity = famed
}
}
}
AND = {
scope:target = {
rarity = masterwork
}
any_equipped_character_artifact = {
artifact_slot_type = regalia
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
}
}
}
AND = {
scope:target = {
rarity = common
}
any_equipped_character_artifact = {
artifact_slot_type = regalia
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
rarity = common
}
}
}
}
}
trigger_if = {
limit = {
scope:target = {
artifact_slot_type = helmet
}
}
OR = {
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
}
}
AND = {
scope:target = {
rarity = illustrious
}
any_equipped_character_artifact = {
artifact_slot_type = helmet
NOT = {
rarity = illustrious
}
}
}
AND = {
scope:target = {
rarity = famed
}
any_equipped_character_artifact = {
artifact_slot_type = helmet
NOR = {
rarity = illustrious
rarity = famed
}
}
}
AND = {
scope:target = {
rarity = masterwork
}
any_equipped_character_artifact = {
artifact_slot_type = helmet
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
}
}
}
AND = {
scope:target = {
rarity = common
}
any_equipped_character_artifact = {
artifact_slot_type = helmet
NOR = {
rarity = illustrious
rarity = famed
rarity = masterwork
rarity = common
}
}
}
}
}
}
scope:target = {
equip_artifact_to_owner_replace = yes
}
}
}
}
}
auto_accept = no
ai_accept = {
base = 0
modifier = {
add = 100
desc = ARTIFACT_REASON
}
modifier = {
add = -80
NOT = {
can_equip_artifact = scope:target
}
desc = ARTIFACT_NOT_EQUIPPABLE_REASON
}
modifier = {
add = -40
NOT = {
can_benefit_from_artifact = scope:target
}
desc = ARTIFACT_NOT_BENEFIT_REASON
}
modifier = {
add = -500
scope:target = {
has_variable = unwanted_artifact
}
#No harm in reusing the wording
desc = ARTIFACT_CURSED_REASON
}
modifier = {
add = -1000
scope:target = {
has_variable = cursed_artifact
}
desc = ARTIFACT_CURSED_REASON
}
modifier = {
add = 100
exists = scope:target.var:banner_dynasty
exists = scope:recipient.dynasty
scope:recipient = scope:target.var:banner_dynasty.dynast
desc = ARTIFACT_DYNASTY_BANNER_REASON
}
modifier = {
add = -200
OR = {
exists = scope:target.var:banner_dynasty
exists = scope:target.var:banner_house
}
exists = scope:recipient.house
trigger_if = {
limit = { exists = scope:target.var:banner_dynasty }
NOT = { scope:target.var:banner_dynasty = scope:recipient.dynasty }
}
trigger_else = {
NOT = { scope:target.var:banner_house = scope:recipient.house }
}
desc = ARTIFACT_USELESS_BANNER_REASON
}
# Struggle motive
modifier = {
desc = AI_STRUGGLE_INTENT
scope:recipient = {
is_independent_ruler = yes
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:recipient = {
any_character_struggle = {
phase_has_catalyst = catalyst_gift_independent_ruler
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:recipient = {
any_character_struggle = {
phase_has_catalyst = catalyst_gift_independent_ruler
}
}
}
add = 200
}
}
}
# Unity modifiers
evaluate_action_increasing_house_unity = {
VALUE = 100
}
}
ai_potential = {
has_any_artifact = yes
trigger_if = {
limit = {
exists = scope:target.var:banner_dynasty
exists = scope:recipient.dynasty
scope:recipient = scope:target.var:banner_dynasty.dynast
}
NOT = {
scope:actor = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient }
}
}
}
trigger_else = {
is_adult = yes
ai_greed <= high_positive_ai_value
# the AI shouldn't give away equipped artifacts
has_any_unequipped_artifact = yes
NOT = {
has_trait = greedy
}
}
}
ai_min_reply_days = 0
ai_max_reply_days = 0
ai_will_do = {
base = 0
modifier = {
add = 100
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
is_close_or_extended_family_of = scope:actor
AND = {
exists = dynasty
exists = scope:actor.dynasty
dynasty = scope:actor.dynasty
}
AND = {
ai_greed <= low_negative_ai_value
OR = { # Lieges/vassals, within realm
is_vassal_of = scope:actor
target_is_vassal_or_below = scope:actor
}
opinion = {
target = scope:recipient
value >= medium_positive_opinion
}
}
}
}
scope:target = {
is_equipped = no
}
scope:recipient = {
OR = {
AND = { # Players like nice gifts
scope:target = {
OR = {
rarity = famed
rarity = illustrious
}
}
is_ai = no
}
AND = { # Might as well give Court Artifacts to their liege if they cant use them themselves
has_royal_court = yes
has_dlc_feature = court_artifacts
target_is_vassal_or_below = scope:actor
scope:actor = {
has_royal_court = no
}
scope:target = {
OR = {
artifact_slot_type = throne
artifact_slot_type = wall_big
artifact_slot_type = wall_small
artifact_slot_type = sculpture
artifact_slot_type = book
artifact_slot_type = pedestal
}
}
}
AND = {
scope:target = {
artifact_slot_type = primary_armament
}
scope:actor = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
}
}
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
}
}
}
AND = {
scope:target = {
artifact_slot_type = regalia
}
scope:actor = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
}
}
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
}
}
}
AND = {
scope:target = {
artifact_slot_type = helmet
}
scope:actor = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
}
}
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
}
}
}
AND = {
scope:target = {
artifact_slot_type = armor
}
scope:actor = {
any_equipped_character_artifact = {
artifact_slot_type = armor
}
}
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = armor
}
}
}
AND = {
can_equip_artifact = scope:target # To avoid gifting old children's toys to adults...
can_benefit_from_artifact = scope:target
scope:target = {
artifact_slot_type = miscellaneous
}
scope:actor = {
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = miscellaneous
}
}
any_equipped_character_artifact = {
count < 4
artifact_slot_type = miscellaneous
}
}
AND = {
has_royal_court = yes
scope:target = {
artifact_slot_type = throne
}
scope:actor = {
OR = {
has_royal_court = no
any_equipped_character_artifact = {
artifact_slot_type = throne
}
}
}
NOT = {
any_equipped_character_artifact = {
artifact_slot_type = throne
}
}
}
AND = {
has_royal_court = yes
scope:target = {
artifact_slot_type = wall_big
}
scope:actor = {
OR = {
has_royal_court = no
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_big
}
}
}
any_equipped_character_artifact = {
count < 3
artifact_slot_type = wall_big
}
}
AND = {
has_royal_court = yes
scope:target = {
artifact_slot_type = wall_small
}
scope:actor = {
OR = {
has_royal_court = no
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_small
}
}
}
any_equipped_character_artifact = {
count < 3
artifact_slot_type = wall_small
}
}
AND = {
has_royal_court = yes
scope:target = {
artifact_slot_type = sculpture
}
scope:actor = {
OR = {
has_royal_court = no
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = sculpture
}
}
}
any_equipped_character_artifact = {
count < 2
artifact_slot_type = sculpture
}
}
AND = {
has_royal_court = yes
scope:target = {
artifact_slot_type = book
}
scope:actor = {
OR = {
has_royal_court = no
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = book
}
}
}
any_equipped_character_artifact = {
count < 2
artifact_slot_type = book
}
}
AND = {
has_royal_court = yes
scope:target = {
artifact_slot_type = pedestal
}
scope:actor = {
OR = {
has_royal_court = no
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = pedestal
}
}
}
any_equipped_character_artifact = {
count < 4
artifact_slot_type = pedestal
}
}
}
}
}
# Struggle
modifier = {
scope:recipient = {
is_independent_ruler = yes
}
scope:actor = {
any_character_struggle = {
involvement = involved
}
}
add = {
value = 0
if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_gift_independent_ruler
}
has_character_flag = agenda_towards_escalation
}
}
add = -100
}
else_if = {
limit = {
scope:actor = {
any_character_struggle = {
phase_has_catalyst = catalyst_gift_independent_ruler
}
}
}
add = 200
}
}
}
# Unity modifiers
evaluate_action_increasing_house_unity = {
VALUE = 100
}
modifier = {
factor = 2
scope:recipient = {
is_ai = no
}
}
modifier = {
factor = 0.25
scope:recipient = {
highest_held_title_tier = tier_barony
}
}
modifier = { # Unlanded characters do not equip artifacts, no point in giving them artifacts
factor = 0
scope:recipient = {
is_ruler = no
}
}
modifier = {
factor = 0
scope:recipient = {
has_relation_rival = scope:actor
}
}
modifier = {
factor = 0
scope:target = {
has_variable = cursed_artifact
}
}
modifier = {
factor = 0
scope:target = {
is_equipped = yes
}
}
modifier = {
factor = 0
scope:target = {
has_variable = gifted_artifact
}
}
modifier = { # So that the AI doesn't give player toys
factor = 0
scope:recipient = {
is_ai = no
NOT = {
can_equip_artifact = scope:target
}
}
}
modifier = {
factor = 0
scope:target = { exists = var:relic_religion}
scope:actor = {
has_religion = scope:target.var:relic_religion
}
}
modifier = {
factor = 0
OR = {
exists = scope:target.var:banner_house
exists = scope:target.var:banner_dynasty
}
scope:recipient = {
NOT = {
can_benefit_from_artifact = scope:target
}
}
}
modifier = {
add = 100
exists = scope:target.var:banner_dynasty
exists = scope:recipient.dynasty
scope:recipient = scope:target.var:banner_dynasty.dynast
NOT = {
scope:actor = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient }
}
}
}
}
}
# Demand an artifact you have a claim on
demand_artifact_interaction = {
category = interaction_category_diplomacy
common_interaction = yes
interface_priority = 60
use_diplomatic_range = yes
desc = demand_artifact_interaction_desc
icon = artisan_inspiration
target_type = artifact
target_filter = recipient_artifacts_claimable
greeting = negative
notification_text = DEMAND_ARTIFACT_PROPOSAL
answer_accept_key = DEMAND_ARTIFACT_ACCEPT
answer_reject_key = DEMAND_ARTIFACT_REJECT
ai_targets = {
ai_recipients = scripted_relations
}
ai_targets = {
ai_recipients = liege
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
ai_recipients = nearby_domicile_owners
max = 10
}
ai_targets = {
ai_recipients = vassals
max = 10
}
ai_targets = {
ai_recipients = family
max = 10
}
ai_target_quick_trigger = {
adult = yes
}
ai_frequency = 60
is_shown = {
NOT = {
scope:recipient = scope:actor
}
custom_description = {
text = "demand_artifact_interaction_valid_tt_1"
scope:recipient = {
# needs to have an artifact we can claim
any_character_artifact = {
can_be_claimed_by = scope:actor
}
}
}
scope:actor = {
OR = {
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
}
}
}
is_highlighted = {
always = yes
}
is_valid_showing_failures_only = {
scope:recipient = { is_busy_in_events_localised = yes }
scope:actor = {
NOT = {
is_at_war_with = scope:recipient
}
}
trigger_if = {
limit = {
scope:actor = {
has_variable = demanded_this_artifact_interaction_recently
}
}
custom_description = {
text = "demand_artifact_interaction_is_valid_tt_2"
exists = scope:demanded_artifact
scope:actor = {
has_variable = demanded_this_artifact_interaction_recently
var:demanded_this_artifact_interaction_recently = scope:demanded_artifact
}
}
}
scope:actor = { is_imprisoned = no }
}
on_accept = {
scope:target = {
save_scope_as = demanded_artifact
}
if = {
limit = {
exists = scope:demanded_artifact
}
scope:actor = {
set_variable = {
name = demanded_this_artifact_interaction_recently
value = scope:demanded_artifact
years = 5
}
}
}
scope: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:actor
}
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = insult_opinion
opinion = -10
}
}
if = {
limit = {
scope:recipient = {
can_set_relation_potential_rival_trigger = { CHARACTER = scope:actor }
}
}
scope:recipient = {
set_relation_potential_rival = scope:actor
}
}
}
}
if = {
limit = {
scope:actor = {
is_ai = yes
}
}
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = pleased_opinion
opinion = 30
}
}
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_demanded_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
auto_accept = {
custom_description = {
text = "spending_hook"
subject = scope:actor
object = scope:recipient
scope:hook = yes
scope:actor = { has_strong_hook = scope:recipient }
}
}
send_option = {
is_shown = {
NOT = { scope:actor = scope:recipient }
}
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
ai_accept = {
base = 0
modifier = {
add = -50
desc = ARTIFACT_REASON
}
modifier = {
add = 70
scope:actor.max_military_strength > scope:recipient.max_military_strength
desc = ARTIFACT_MILITARY_STRONGER_REASON
}
modifier = {
add = -70
scope: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:actor = {
has_relation_rival = scope:recipient
}
desc = ARTIFACT_RIVAL_REASON
}
modifier = {
add = -80
scope:actor = {
has_relation_nemesis = scope:recipient
}
desc = ARTIFACT_NEMESIS_REASON
}
modifier = {
add = 50
scope:recipient = {
target_is_liege_or_above = scope:actor
}
desc = ARTIFACT_LIEGE_REASON
}
modifier = {
scope:hook = yes
add = 100
desc = SCHEME_WEAK_HOOK_USED
}
# Unity modifiers
evaluate_action_decreasing_house_unity = { VALUE = 100 }
}
ai_potential = {
is_adult = yes
is_at_war = no
ai_greed >= low_negative_ai_value
has_outstanding_artifact_claims = yes
}
on_decline = {
scope:target = {
save_scope_as = demanded_artifact
}
if = {
limit = {
exists = scope:demanded_artifact
}
scope:actor = {
set_variable = {
name = demanded_this_artifact_interaction_recently
value = scope:demanded_artifact
years = 5
}
}
}
scope: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:actor
modifier = insult_opinion
opinion = -10
}
}
}
}
if = {
limit = {
scope:actor = {
is_ai = yes
}
}
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = refusal_opinion
opinion = -10
}
}
}
}
ai_min_reply_days = 7
ai_max_reply_days = 14
ai_will_do = {
base = 100
modifier = { # The AI will only use a Hook if they couldn't otherwise do this
scope:hook = yes
add = -1
}
modifier = {
add = 50
has_relation_rival = scope:recipient
}
modifier = {
add = 80
has_relation_nemesis = scope:recipient
}
modifier = {
add = -50
target_is_liege_or_above = scope:recipient
}
# Recipient is flaunting their artifacts and needs to be taken down a peg - from hold_court.3080
modifier = {
scope:recipient = {
OR = {
has_character_modifier = petition_event_artifact_exhibition_for_prestige
has_character_modifier = petition_event_artifact_exhibition_for_gold
}
}
add = 35
}
modifier = { # An Intimidated character is very unlikely to raise their hand
add = -25
scope:actor = {
has_dread_level_towards = {
target = scope:recipient
level = 1
}
}
}
# Unity modifiers
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
modifier = { # A Cowed character will never take this interaction
factor = 0
scope:actor = {
has_dread_level_towards = {
target = scope:recipient
level = 2
}
}
}
modifier = { # The AI doesn't demand from players they like
factor = 0
scope:recipient = {
is_ai = no
}
scope:actor = {
OR = {
has_relation_friend = scope:recipient
has_relation_lover = scope:recipient
opinion = {
target = scope:recipient
value >= high_positive_opinion
}
}
}
}
modifier = { # The AI doesn't demand from players that have refused already
factor = 0
scope:recipient = {
is_ai = no
}
scope:actor = {
has_opinion_modifier = {
target = scope:recipient
modifier = refusal_opinion
}
}
}
modifier = { # Only the House Head will demand house claimed artifacts from existing House members
factor = 0
exists = scope:actor.house.house_head
exists = scope:recipient.house
scope:actor.house.house_head = scope:actor
scope:actor.house = scope:recipient.house
NOT = {
any_personal_claimed_artifact = {
this = scope:target
}
}
}
modifier = {
scope:actor = {
opinion = {
target = scope:recipient
value >= medium_positive_opinion
}
ai_greed <= high_positive_ai_value
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
}
}
factor = 0
}
modifier = {
scope:actor = {
has_royal_court = no
}
scope:target = {
OR = {
artifact_slot_type = throne
artifact_slot_type = wall_big
artifact_slot_type = wall_small
artifact_slot_type = sculpture
artifact_slot_type = book
artifact_slot_type = pedestal
}
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
AND = {
scope:target = {
artifact_slot_type = primary_armament
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = regalia
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = helmet
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = armor
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = miscellaneous
rarity = common
}
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = miscellaneous
}
}
AND = {
scope:target = {
artifact_slot_type = throne
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = wall_big
rarity = common
}
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_big
}
}
AND = {
scope:target = {
artifact_slot_type = wall_small
rarity = common
}
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_small
}
}
AND = {
scope:target = {
artifact_slot_type = sculpture
rarity = common
}
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = sculpture
}
}
AND = {
scope:target = {
artifact_slot_type = book
rarity = common
}
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = book
}
}
AND = {
scope:target = {
artifact_slot_type = pedestal
rarity = common
}
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = pedestal
}
}
}
}
factor = 0
}
}
}
# Challenge someone to a non-lethal duel for an artifact you have a claim on
challenge_for_artifact_interaction = {
icon = icon_combat
interface_priority = 30
common_interaction = yes
category = interaction_category_hostile
ai_maybe = yes
ai_max_reply_days = 0
popup_on_receive = yes
pause_on_receive = yes
use_diplomatic_range = yes
can_send_despite_rejection = yes
desc = challenge_for_artifact_interaction_desc
target_type = artifact
target_filter = recipient_artifacts_claimable
greeting = negative
notification_text = REQUEST_ARTIFACT_COMBAT_TEXT
answer_accept_key = REQUEST_ARTIFACT_COMBAT_ACCEPT
answer_reject_key = REQUEST_ARTIFACT_COMBAT_REJECT
is_shown = {
# Can't duel yourself.
NOT = { scope:actor = scope:recipient }
custom_description = {
text = "challenge_for_artifact_interaction_valid_tt_1"
scope:recipient = {
# needs to have an artifact we can claim
any_character_artifact = {
can_be_claimed_by = scope:actor
}
}
}
}
is_valid_showing_failures_only = {
rival_single_combat_shown_and_not_invalid_trigger = yes
scope:recipient = { can_start_single_combat_trigger = yes }
scope:recipient = {
custom_description = {
text = fp1_tbc_recipient_banned_from_combat
can_start_single_combat_banned_checks_trigger = no
}
}
scope:recipient = { is_imprisoned = no }
scope:actor = { is_imprisoned = no }
}
can_send = {
scope:actor = {
custom_description = {
text = "character_interactions_hostile_actions_disabled_delay"
NOT = { has_character_flag = flag_hostile_actions_disabled_delay }
}
}
}
is_highlighted = {
rival_single_combat_shown_and_not_invalid_trigger = yes
# Scope:recipient must be able to fight personally.
scope:recipient = { can_start_single_combat_trigger = yes }
# Scope:recipient must not be banned from single combat.
scope:recipient = { can_start_single_combat_banned_checks_trigger = no }
scope:recipient = { is_imprisoned = no }
scope:actor = { is_imprisoned = no }
}
cost = { prestige = challenge_for_artifact_prestige_cost_value }
cooldown = { years = 2 }
cooldown_against_recipient = { years = 5 }
on_send = {
scope:actor = {
add_character_flag = {
flag = flag_hostile_actions_disabled_delay
days = 10
}
}
}
on_accept = {
scope:actor = {
remove_character_flag = flag_hostile_actions_disabled_delay
}
# Set up the bout immediately.
## First inform.
scope:actor = {
custom_tooltip = challenge_to_single_combat_interaction.enter_non_lethal_bout.tt
custom_tooltip = challenge_to_artifact_combat_interaction_victor_gets.tt
custom_tooltip = challenge_to_artifact_combat_interaction_loser_gets.tt
}
## Finally, begin.
configure_start_single_combat_effect = {
SC_INITIATOR = scope:actor
SC_ATTACKER = scope:actor
SC_DEFENDER = scope:recipient
FATALITY = no
FIXED = no
LOCALE = terrain_scope
OUTPUT_EVENT = artifact.2001
INVALIDATION_EVENT = fp1_tbc.0021
}
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = major_unity_loss
DESC = clan_unity_challenge_artifact.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
on_decline = {
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_challenge_artifact_refusal.desc
REVERSE_NON_HOUSE_TARGET = no
}
# Scope:recipient declines processing.
scope:actor = {
# Inform them of the decline & scope:recipient loses some prestige.
send_interface_toast = {
type = event_toast_effect_neutral
title = challenge_to_single_combat_interaction.challenge_rejected.t
left_icon = scope:recipient
right_icon = scope:actor
scope:recipient = {
add_prestige = {
value = 0
subtract = challenge_for_artifact_prestige_cost_value
}
}
show_as_tooltip = {
add_prestige = challenge_for_artifact_prestige_cost_value
}
}
hidden_effect = {
add_prestige_no_experience = challenge_for_artifact_prestige_cost_value
# Cooldown is removed.
remove_interaction_cooldown = challenge_for_artifact_interaction
}
# Clear up hostile actions flag.
if = {
limit = {
has_character_flag = flag_hostile_actions_disabled_delay
}
remove_character_flag = flag_hostile_actions_disabled_delay
}
}
}
auto_accept = no
ai_accept = {
base = 50 # Try to make it 0 for most interactions
# Relative fighting ability.
modifier = {
desc = CTSC_RELATIVE_PROWESS
scope:actor.prowess < scope:recipient.prowess
add = {
value = scope:recipient.prowess
subtract = scope:actor.prowess
multiply = 2
}
}
modifier = {
desc = CTSC_RELATIVE_PROWESS
scope:recipient.prowess < scope:actor.prowess
add = {
value = scope:actor.prowess
subtract = scope:recipient.prowess
multiply = -2
}
}
# Weight up for personality values.
ai_value_modifier = {
who = scope:recipient
ai_boldness = 1
ai_vengefulness = 0.75
ai_honor = 0.5
ai_rationality = -0.25
ai_greed = -0.5
}
# Apply tier differences.
## King -> Baron.
modifier = {
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:actor = {
tier_difference = {
target = scope:recipient
value >= 4
}
}
add = 15
}
## Duke -> Baron.
modifier = {
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:actor = {
tier_difference = {
target = scope:recipient
value = 3
}
}
add = 10
}
## Count -> Baron.
modifier = {
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:actor = {
tier_difference = {
target = scope:recipient
value = 2
}
}
add = 5
}
## King <- Baron.
modifier = {
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:actor = {
tier_difference = {
target = scope:recipient
value = -2
}
}
add = -20
}
## Duke <- Baron.
modifier = {
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:actor = {
tier_difference = {
target = scope:recipient
value = -3
}
}
add = -30
}
## Count <- Baron.
modifier = {
desc = AI_REFUSAL_RANK_DIFFERENCE
scope:actor = {
tier_difference = {
target = scope:recipient
value <= -4
}
}
add = -40
}
# Rival modifier
modifier = {
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:recipient = {
has_relation_rival = scope:actor
}
}
add = 30
}
# Nemesis modifier
modifier = {
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:recipient = {
has_relation_nemesis = scope:actor
}
}
add = 50
}
# Prestige too low to decline
modifier = {
desc = cannot_afford_prestige_loss_tt
trigger = { scope:recipient.prestige < challenge_for_artifact_prestige_limit_value } # 1/3rd of potential loss
add = 30
}
# Unity modifiers
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
}
# AI
ai_potential = {
NOT = { has_trait = craven }
is_imprisoned = no
can_start_single_combat_trigger = yes
ai_greed >= low_negative_ai_value
has_outstanding_artifact_claims = yes
}
ai_target_quick_trigger = {
adult = yes
}
ai_targets = {
ai_recipients = scripted_relations
}
ai_targets = {
ai_recipients = liege
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
ai_recipients = nearby_domicile_owners
max = 10
}
ai_targets = {
ai_recipients = family
max = 10
}
ai_targets = {
ai_recipients = vassals
max = 10
}
ai_frequency = 60
ai_will_do = {
base = -50
# Factor for personality (excluding realism).
modifier = {
add = ai_boldness
}
modifier = {
ai_vengefulness > 0
add = ai_vengefulness
}
modifier = {
add = {
value = ai_compassion
multiply = -0.25
}
}
# Don't challenge your spouse, unless they're your nemesis.
modifier = {
scope:recipient = {
is_spouse_of = scope:actor
NOT = { has_relation_nemesis = scope:actor }
}
add = -1000
}
# Don't challenge people hopelessly out of your league unless you're really, really not seeing things clearly.
modifier = {
scope:actor = {
prowess_diff = {
target = scope:recipient
value <= -15
}
ai_rationality >= high_negative_ai_value
}
add = -1000
}
# Don't challenge your liege - it's really bad form - unless you are REALLY motivated
modifier = {
scope:actor = {
is_vassal_of = scope:recipient
}
add = -100
}
# Challenge them if they are your rival
modifier = {
scope:actor = {
has_relation_rival = scope:recipient
}
add = 30
}
# Totally challenge them if they are your nemesis!
modifier = {
scope:actor = {
has_relation_nemesis = scope:recipient
}
add = 50
}
# Recipient is flaunting their artifacts and needs to be taken down a peg - from hold_court.3080
modifier = {
scope:recipient = {
OR = {
has_character_modifier = petition_event_artifact_exhibition_for_prestige
has_character_modifier = petition_event_artifact_exhibition_for_gold
}
}
add = 35
}
modifier = { # An Intimidated character is very unlikely to raise their hand
add = -25
scope:actor = {
has_dread_level_towards = {
target = scope:recipient
level = 1
}
}
}
# Unity modifiers
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
modifier = { # A Cowed character will never take this interaction
factor = 0
scope:actor = {
has_dread_level_towards = {
target = scope:recipient
level = 2
}
}
}
modifier = {
scope:actor = {
opinion = {
target = scope:recipient
value >= medium_positive_opinion
}
ai_greed <= high_positive_ai_value
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
}
}
factor = 0
}
modifier = {
scope:actor = {
has_royal_court = no
}
scope:target = {
OR = {
artifact_slot_type = throne
artifact_slot_type = wall_big
artifact_slot_type = wall_small
artifact_slot_type = sculpture
artifact_slot_type = book
artifact_slot_type = pedestal
}
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
AND = {
scope:target = {
artifact_slot_type = primary_armament
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = regalia
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = helmet
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = armor
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = miscellaneous
rarity = common
}
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = miscellaneous
}
}
AND = {
scope:target = {
artifact_slot_type = throne
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = wall_big
rarity = common
}
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_big
}
}
AND = {
scope:target = {
artifact_slot_type = wall_small
rarity = common
}
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_small
}
}
AND = {
scope:target = {
artifact_slot_type = sculpture
rarity = common
}
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = sculpture
}
}
AND = {
scope:target = {
artifact_slot_type = book
rarity = common
}
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = book
}
}
AND = {
scope:target = {
artifact_slot_type = pedestal
rarity = common
}
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = pedestal
}
}
}
}
factor = 0
}
}
}
#Steal an artifact that you have a claim on
start_stealing_back_artifact = {
icon = icon_scheme_steal_back_artifact
interface_priority = 70
category = interaction_category_hostile
common_interaction = yes
send_name = START_SCHEME
scheme = steal_back_artifact
ignores_pending_interaction_block = yes
target_type = artifact
target_filter = recipient_artifacts
is_shown = {
NOR = {
scope:recipient = scope:actor
scope:recipient = { is_imprisoned_by = scope:actor }
}
OR = {
scope:recipient = {
# needs to have an artifact we can claim
any_character_artifact = {
can_be_claimed_by = scope:actor
}
}
scope:actor = {
OR = {
employs_court_position = master_thief_camp_officer
any_character_active_contract = {
has_task_contract_type = laamp_steal_artifact_contract
var:task_contract_target ?= scope:recipient
}
}
}
}
}
is_highlighted = {
always = yes
}
is_valid_showing_failures_only = {
trigger_if = {
limit = {
scope:actor = {
any_character_artifact = {
scope:actor = { has_artifact_claim = prev }
}
}
}
custom_description = {
text = steal_back_artifact_can_start_scheme
subject = scope:actor
object = scope:recipient
scope:actor = {
can_start_scheme = {
type = steal_back_artifact
target_character = scope:recipient
}
}
}
}
trigger_if = {
limit = {
scope:actor = {
NOR = {
employs_court_position = master_thief_camp_officer
any_character_task_contract = {
has_task_contract_type = laamp_steal_artifact_contract
var:task_contract_target ?= scope:recipient
}
}
}
}
custom_description = {
text = steal_back_artifact_must_have_claim_blocker
subject = scope:actor
object = scope:recipient
scope:recipient = {
any_character_artifact = {
scope:actor = {
has_artifact_claim = prev
}
}
}
}
}
custom_description = {
object = scope:recipient
text = you_have_been_caught_trying_to_steal_artifact_from_target
scope:recipient = {
NOT = {
has_opinion_modifier = {
target = scope:actor
modifier = attempted_to_steal_artifact_from_me
}
}
}
}
custom_description = {
object = scope:recipient
text = you_have_recently_stolen_artifact_from_target
scope:recipient = {
NOT = {
has_opinion_modifier = {
target = scope:actor
modifier = stole_artifact_from_me
}
}
}
}
}
desc = {
triggered_desc = {
trigger = {
scope:actor = {
can_start_scheme = {
type = steal_back_artifact
target_character = scope:recipient
}
}
}
desc = scheme_interaction_tt_steal_back_artifact_approved
}
}
can_be_picked_artifact = {
trigger_if = {
limit = {
scope:actor = {
NOR = {
employs_court_position = master_thief_camp_officer
any_character_active_contract = {
has_task_contract_type = laamp_steal_artifact_contract
var:task_contract_object ?= scope:target
}
}
}
}
scope:actor = {
has_artifact_claim = scope:target
}
}
}
# Scheme Starter Packages
options_heading = schemes.t.agent_packages
send_options_exclusive = yes
## Balanced agents.
send_option = {
flag = agent_focus_balance
current_description = start_stealing_back_artifact.tt.agent_focus_balance
}
## Focused on Success Chance.
send_option = {
flag = agent_focus_success
current_description = start_stealing_back_artifact.tt.agent_focus_success
}
## Focused on Speed.
send_option = {
flag = agent_focus_speed
current_description = start_stealing_back_artifact.tt.agent_focus_speed
}
## Focused on Secrecy.
send_option = {
flag = agent_focus_secrecy
current_description = start_stealing_back_artifact.tt.agent_focus_secrecy
}
on_accept = {
scope:actor = {
stress_impact = {
vengeful = medium_stress_impact_loss
honest = minor_stress_impact_gain
just = minor_stress_impact_loss
}
}
hidden_effect = {
scope:actor = {
send_interface_toast = {
type = event_toast_effect_neutral
title = start_stealing_back_artifact_notification
left_icon = scope:actor
right_icon = scope:recipient
if = {
limit = {
any_character_active_contract = {
has_task_contract_type = laamp_steal_artifact_contract
var:task_contract_target ?= scope:recipient
}
}
random_character_active_contract = {
limit = {
has_task_contract_type = laamp_steal_artifact_contract
var:task_contract_target ?= scope:recipient
}
save_scope_as = scheme_contract
}
# Success.
if = {
limit = { scope:agent_focus_success ?= yes }
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
TASK_CONTRACT = scope:scheme_contract
# Success.
AGENT_1 = agent_thief
AGENT_2 = agent_thief
AGENT_3 = agent_thug
# Speed.
AGENT_4 = agent_infiltrator
# Secrecy.
AGENT_5 = agent_lookout
}
}
# Speed.
else_if = {
limit = { scope:agent_focus_speed ?= yes }
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
TASK_CONTRACT = scope:scheme_contract
# Speed.
AGENT_1 = agent_infiltrator
AGENT_2 = agent_infiltrator
AGENT_3 = agent_footpad
# Success.
AGENT_4 = agent_thief
# Secrecy.
AGENT_5 = agent_lookout
}
}
# Secrecy.
else_if = {
limit = { scope:agent_focus_secrecy ?= yes }
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
TASK_CONTRACT = scope:scheme_contract
# Secrecy.
AGENT_1 = agent_lookout
AGENT_2 = agent_alibi
AGENT_3 = agent_decoy
# Success.
AGENT_4 = agent_thief
# Speed.
AGENT_5 = agent_infiltrator
}
}
# Balanced.
else = {
begin_contract_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
TASK_CONTRACT = scope:scheme_contract
# Success.
AGENT_1 = agent_thief
AGENT_2 = agent_thief
# Speed.
AGENT_3 = agent_infiltrator
AGENT_4 = agent_infiltrator
# Secrecy.
AGENT_5 = agent_lookout
}
}
}
else = {
# Success.
if = {
limit = { scope:agent_focus_success ?= yes }
begin_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
# Success.
AGENT_1 = agent_thief
AGENT_2 = agent_thief
AGENT_3 = agent_thug
# Speed.
AGENT_4 = agent_infiltrator
# Secrecy.
AGENT_5 = agent_lookout
}
}
# Speed.
else_if = {
limit = { scope:agent_focus_speed ?= yes }
begin_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
# Speed.
AGENT_1 = agent_infiltrator
AGENT_2 = agent_infiltrator
AGENT_3 = agent_footpad
# Success.
AGENT_4 = agent_thief
# Secrecy.
AGENT_5 = agent_lookout
}
}
# Secrecy.
else_if = {
limit = { scope:agent_focus_secrecy ?= yes }
begin_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
# Secrecy.
AGENT_1 = agent_lookout
AGENT_2 = agent_alibi
AGENT_3 = agent_decoy
# Success.
AGENT_4 = agent_thief
# Speed.
AGENT_5 = agent_infiltrator
}
}
# Balanced.
else = {
begin_scheme_with_agents_effect = {
SCHEME_TYPE = steal_back_artifact
TARGET_TYPE = target_character
TARGET_SCOPE = scope:recipient
# Success.
AGENT_1 = agent_thief
AGENT_2 = agent_thief
# Speed.
AGENT_3 = agent_infiltrator
AGENT_4 = agent_infiltrator
# Secrecy.
AGENT_5 = agent_lookout
}
}
}
scope:new_scheme ?= {
set_variable = {
name = target_artifact
value = scope:target
}
}
show_as_tooltip = {
stress_impact = {
vengeful = medium_stress_impact_loss
honest = minor_stress_impact_gain
just = minor_stress_impact_loss
}
}
}
}
}
}
# AI
ai_potential = {
is_imprisoned = no
ai_greed >= low_negative_ai_value
intrigue >= low_skill_rating
has_outstanding_artifact_claims = yes
NOT = {
any_scheme = {
OR = {
scheme_type = murder
scheme_type = abduct
scheme_type = claim_throne
scheme_type = fabricate_hook
scheme_type = steal_back_artifact
}
}
}
}
ai_target_quick_trigger = {
adult = yes
}
ai_targets = {
ai_recipients = scripted_relations
}
ai_targets = {
ai_recipients = liege
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
ai_recipients = nearby_domicile_owners
max = 10
}
ai_targets = {
ai_recipients = family
max = 10
}
ai_targets = {
ai_recipients = vassals
max = 10
}
ai_frequency = 60
ai_will_do = {
base = -30
# Factor for personality (excluding realism).
modifier = {
add = {
value = ai_boldness
multiply = -1
}
}
modifier = {
ai_vengefulness > 0
add = ai_vengefulness
}
modifier = {
add = {
value = ai_compassion
multiply = -0.25
}
}
modifier = {
scope:actor = {
has_relation_rival = scope:recipient
}
add = 60
}
modifier = {
scope:actor = {
has_relation_nemesis = scope:recipient
}
add = 150
}
# Recipient is flaunting their artifacts and needs to be taken down a peg - from hold_court.3080
modifier = {
scope:recipient = {
OR = {
has_character_modifier = petition_event_artifact_exhibition_for_prestige
has_character_modifier = petition_event_artifact_exhibition_for_gold
}
}
add = 35
}
modifier = {
scope:actor = {
opinion = {
target = scope:recipient
value >= medium_positive_opinion
}
ai_greed <= high_positive_ai_value
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
}
}
factor = 0
}
modifier = {
scope:actor = {
has_royal_court = no
}
scope:target = {
OR = {
artifact_slot_type = throne
artifact_slot_type = wall_big
artifact_slot_type = wall_small
artifact_slot_type = sculpture
artifact_slot_type = book
artifact_slot_type = pedestal
}
}
factor = 0
}
modifier = {
scope:recipient = {
OR = {
AND = {
scope:target = {
artifact_slot_type = primary_armament
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = primary_armament
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = regalia
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = regalia
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = helmet
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = helmet
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = armor
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = armor
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = miscellaneous
rarity = common
}
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = miscellaneous
}
}
AND = {
scope:target = {
artifact_slot_type = throne
}
OR = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = illustrious
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = famed
}
scope:target = {
OR = {
rarity = famed
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = masterwork
}
scope:target = {
OR = {
rarity = masterwork
rarity = common
}
}
}
AND = {
any_equipped_character_artifact = {
artifact_slot_type = throne
rarity = common
}
scope:target = {
rarity = common
}
}
}
}
AND = {
scope:target = {
artifact_slot_type = wall_big
rarity = common
}
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_big
}
}
AND = {
scope:target = {
artifact_slot_type = wall_small
rarity = common
}
any_equipped_character_artifact = {
count >= 3
artifact_slot_type = wall_small
}
}
AND = {
scope:target = {
artifact_slot_type = sculpture
rarity = common
}
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = sculpture
}
}
AND = {
scope:target = {
artifact_slot_type = book
rarity = common
}
any_equipped_character_artifact = {
count >= 2
artifact_slot_type = book
}
}
AND = {
scope:target = {
artifact_slot_type = pedestal
rarity = common
}
any_equipped_character_artifact = {
count >= 4
artifact_slot_type = pedestal
}
}
}
}
factor = 0
}
start_hostile_scheme_ai_base_modifiers = yes # At the end so Cowed can block it completely
}
auto_accept = yes
}
buy_artifact_claim = {
category = interaction_category_diplomacy
common_interaction = yes
ignores_pending_interaction_block = yes
icon = artisan_inspiration
target_type = artifact
target_filter = recipient_artifacts
is_shown = {
# interaction locked behind Accomplished Forger perk from the Diplomacy lifestyle
scope:actor = {
has_perk = accomplished_forger_perk
is_landless_adventurer = no
}
NOR = {
# Can't buy from yourself
scope:recipient = scope:actor
# Can't buy from one of your prisoners
scope:recipient = { is_imprisoned_by = scope:actor }
}
scope:recipient = {
in_diplomatic_range = scope:actor
any_character_artifact = {
exists = this
scope:actor = {
NOT = { has_personal_artifact_claim = prev }
}
NOR = {
# maybe? nah. we can't.
has_variable = pope_hat
# This is the only way I have found to exclude dynastic banners
artifact_type = wall_big
}
}
}
}
can_be_picked = {
scope:target = {
NOR = {
# can't already have a claim on the artifact
scope:actor = { has_personal_artifact_claim = prev }
# no pope hats or dynastic banners
has_variable = pope_hat
artifact_type = wall_big
}
}
}
is_valid_showing_failures_only = {
# Can't buy an artifact claim against yourself or one of your prisoners
NOR = {
scope:recipient = scope:actor
scope:recipient = { is_imprisoned_by = scope:actor }
}
scope:recipient = {
# needs to have an artifact
any_character_artifact = {
exists = this
# actor can't already have a claim on said artifact
scope:actor = {
NOT = { has_personal_artifact_claim = prev }
}
}
is_busy_in_events_localised = yes
}
# Claim costs are calculated with scripted values located 00_lifestyle_values. The piety interaction costs copy those used for the regular Buy Claim interaciton and the prestige costs are calculated according to the same method.
# Checks to determine piety cost for Religious Artifacts
trigger_if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = common }
}
scope:actor = { piety >= minor_buy_claim_piety_value }
}
trigger_else_if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = masterwork }
}
scope:actor = { piety >= medium_buy_claim_piety_value }
}
trigger_else_if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = famed }
}
scope:actor = { piety >= major_buy_claim_piety_value }
}
trigger_else = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = illustrious }
}
scope:actor = { piety >= massive_buy_claim_piety_value }
}
# Checks to determine prestige cost for regular artifacts
trigger_if = {
limit = {
exists = scope:target
NOT = { exists = scope:target.var:relic }
scope:target = { rarity = common }
}
scope:actor = { prestige >= minor_buy_claim_prestige_value }
}
trigger_else_if = {
limit = {
exists = scope:target
NOT = { exists = scope:target.var:relic }
scope:target = { rarity = masterwork }
}
scope:actor = { prestige >= medium_buy_claim_prestige_value }
}
trigger_else_if = {
limit = {
exists = scope:target
NOT = { exists = scope:target.var:relic }
scope:target = { rarity = famed }
}
scope:actor = { prestige >= major_buy_claim_prestige_value }
}
trigger_else = {
limit = {
exists = scope:target
NOT = { exists = scope:target.var:relic }
scope:target = { rarity = illustrious }
}
scope:actor = { prestige >= massive_buy_claim_prestige_value }
}
}
desc = buy_artifact_claim_desc
auto_accept = yes
on_accept = {
# If it's a religous artifact...
if = {
limit = {
exists = scope:target.var:relic
}
# Toast to the actor
scope:actor = {
send_interface_toast = {
type = event_artifact_good
title = bought_artifact_claim.t
left_icon = scope:recipient
right_icon = scope:target
# Determine piety cost
if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = common }
}
scope:actor = { add_piety = minor_buy_claim_piety_loss }
}
else_if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = masterwork }
}
scope:actor = { add_piety = medium_buy_claim_piety_loss }
}
else_if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = famed }
}
scope:actor = { add_piety = major_buy_claim_piety_loss }
}
else_if = {
limit = {
exists = scope:target.var:relic
scope:target = { rarity = illustrious }
}
scope:actor = { add_piety = massive_buy_claim_piety_loss }
}
add_personal_artifact_claim = scope:target
}
}
# Toast to the recipient
scope:recipient = {
send_interface_message = {
type = event_artifact_bad_text
title = sold_artifact_claim.t
desc = sold_artifact_claim.desc
left_icon = scope:actor
right_icon = scope:target
}
}
}
# If it's not a religous artifact...
else = {
scope:actor = {
send_interface_toast = {
type = event_artifact_bad
title = bought_artifact_claim.t
left_icon = scope:recipient
right_icon = scope:target
# Determine prestige cost
if = {
limit = {
exists = scope:target
scope:target = { rarity = common }
}
scope:actor = { add_prestige = minor_buy_claim_prestige_loss }
}
else_if = {
limit = {
exists = scope:target
scope:target = { rarity = masterwork }
}
scope:actor = { add_prestige = medium_buy_claim_prestige_loss }
}
else_if = {
limit = {
exists = scope:target
scope:target = { rarity = famed }
}
scope:actor = { add_prestige = major_buy_claim_prestige_loss }
}
else_if = {
limit = {
exists = scope:target
scope:target = { rarity = illustrious }
}
scope:actor = { add_prestige = massive_buy_claim_prestige_loss}
}
add_personal_artifact_claim = scope:target
}
}
scope:recipient = {
send_interface_message = {
type = event_artifact_bad_text
title = sold_artifact_claim.t
desc = sold_artifact_claim.desc
left_icon = scope:actor
right_icon = scope:target
}
}
}
scope:actor = {
stress_impact = {
just = medium_stress_impact_gain
honest = medium_stress_impact_gain
}
}
scope:recipient = {
add_opinion = {
target = scope:actor
modifier = claimed_my_artifact_opinion
opinion = -40
}
# Recipient grows closer to forming a rivalry with the actor
if = {
limit = {
can_set_relation_potential_rival_trigger = {
CHARACTER = scope:actor
}
}
set_relation_potential_rival = scope:actor
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_bought_artifact_claim.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
# AI STUFF
ai_target_quick_trigger = {
adult = yes
}
ai_targets = {
# Only want AI to target neighbors
ai_recipients = neighboring_rulers
ai_recipients = nearby_domicile_owners
}
ai_frequency = 30
ai_potential = {
# The basic requirements
is_imprisoned = no
is_playable_character = yes
is_available_ai_adult = yes
# They must be well supplied
prestige > major_prestige_value
piety > major_piety_value
# Only really greedy AI characters get to use this
ai_greed >= high_positive_ai_value
}
ai_will_do = {
base = 30
# Unity modifiers
evaluate_action_decreasing_house_unity = {
VALUE = 100
}
# Make it more likely for AI characters to buy claims if they have a royal court
modifier = {
scope:actor = {
has_royal_court = yes
has_dlc_feature = court_artifacts
}
factor = 2
}
# Prevent AI from buying artifact claims for court artifacts if they don't have a royal court
modifier = {
scope:actor = {
has_royal_court = no
}
scope:target = {
OR = {
artifact_slot_type = throne
artifact_slot_type = wall_big
artifact_slot_type = wall_small
artifact_slot_type = sculpture
artifact_slot_type = book
artifact_slot_type = pedestal
}
}
factor = 0
}
# AI won't buy claims on artifacts owned by their lovers or friends
modifier = {
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
# is_close_or_extended_family_of = scope:actor
}
}
factor = 0
}
}
}
# Demand an artifact you have a claim on
demand_dynasty_banner_interaction = {
icon = icon_dynasty
category = interaction_category_diplomacy
common_interaction = yes
interface_priority = 60
use_diplomatic_range = yes
desc = demand_dynasty_banner_interaction_desc
target_type = artifact
target_filter = recipient_artifacts
greeting = negative
notification_text = DEMAND_ARTIFACT_PROPOSAL
answer_accept_key = DEMAND_ARTIFACT_ACCEPT
answer_reject_key = DEMAND_ARTIFACT_REJECT
ai_targets = {
ai_recipients = scripted_relations
}
ai_targets = {
ai_recipients = liege
}
ai_targets = {
ai_recipients = neighboring_rulers
ai_recipients = peer_vassals
ai_recipients = nearby_domicile_owners
max = 10
}
ai_targets = {
ai_recipients = vassals
max = 10
}
ai_targets = {
ai_recipients = family
max = 10
}
ai_target_quick_trigger = {
adult = yes
}
ai_frequency = 60
is_shown = {
NOT = {
scope:recipient = scope:actor
}
NOT = { #Landless have no court in which to display such a banner, and no real authority over a landed relative
scope:actor = { government_has_flag = government_is_landless_adventurer }
}
exists = scope:actor.dynasty
exists = scope:recipient.dynasty
scope:recipient.dynasty = scope:actor.dynasty
scope:recipient = {
# needs to have a banner of our dynasty
any_character_artifact = {
AND = {
exists = var:banner_dynasty
var:banner_dynasty = scope:recipient.dynasty
var:banner_dynasty.dynast = scope:actor
}
}
}
}
is_highlighted = {
always = yes
}
is_valid_showing_failures_only = {
scope:recipient = { is_busy_in_events_localised = yes }
scope:actor = {
NOT = {
is_at_war_with = scope:recipient
}
is_imprisoned = no
}
trigger_if = {
limit = { exists = scope:target }
custom_description = {
text = "demand_dynasty_banner_artifact_tt"
exists = scope:target.var:banner_dynasty
scope:target.var:banner_dynasty = scope:recipient.dynasty
scope:actor = scope:target.var:banner_dynasty.dynast
}
}
}
on_accept = {
scope:target = {
save_scope_as = demanded_artifact
}
if = {
limit = {
exists = scope:demanded_artifact
}
scope:actor = {
set_variable = {
name = demanded_this_artifact_interaction_recently
value = scope:demanded_artifact
years = 5
}
}
}
scope:actor = {
send_interface_toast = {
type = event_toast_effect_good
title = demand_artifact_interaction_notification
left_icon = scope:recipient
right_icon = scope:target
scope:target = {
set_owner = scope:actor
}
}
}
if = {
limit = {
scope:actor = {
is_ai = yes
}
}
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = pleased_opinion
opinion = 30
}
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_gain
DESC = clan_unity_received_banner.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
on_decline = {
scope:target = {
save_scope_as = demanded_artifact
}
if = {
limit = {
exists = scope:demanded_artifact
}
scope:actor = {
set_variable = {
name = demanded_this_artifact_interaction_recently
value = scope:demanded_artifact
years = 5
}
}
}
scope: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:actor
modifier = insult_opinion
opinion = -10
}
}
}
}
if = {
limit = {
scope:actor = {
is_ai = yes
}
}
scope:actor = {
add_opinion = {
target = scope:recipient
modifier = refusal_opinion
opinion = -10
}
}
}
# If we're a clan this interaction affects unity
add_clan_unity_interaction_effect = {
CHARACTER = scope:actor
TARGET = scope:recipient
VALUE = minor_unity_loss
DESC = clan_unity_refused_banner.desc
REVERSE_NON_HOUSE_TARGET = no
}
}
auto_accept = {
custom_description = {
text = "spending_hook"
subject = scope:actor
object = scope:recipient
scope:hook = yes
scope:actor = { has_strong_hook = scope:recipient }
}
}
send_option = {
is_shown = {
NOT = { scope:actor = scope:recipient }
}
is_valid = {
scope:actor = {
has_usable_hook = scope:recipient
}
}
flag = hook
localization = GENERIC_SPEND_A_HOOK
}
should_use_extra_icon = {
scope:actor = { has_usable_hook = scope:recipient }
}
extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds"
send_options_exclusive = no
ai_accept = {
base = 100
modifier = {
add = 70
scope:actor.max_military_strength > scope:recipient.max_military_strength
desc = ARTIFACT_MILITARY_STRONGER_REASON
}
modifier = {
add = -70
scope:actor.max_military_strength < scope:recipient.max_military_strength
desc = ARTIFACT_MILITARY_WEAKER_REASON
}
modifier = {
add = {
value = ai_boldness
multiply = -1
divide = 2
}
NOT = { ai_boldness = 0 }
desc = ARTIFACT_BOLDNESS_REASON
}
modifier = {
add = -50
scope:actor = {
has_relation_rival = scope:recipient
}
desc = ARTIFACT_RIVAL_REASON
}
modifier = {
add = -80
scope:actor = {
has_relation_nemesis = scope:recipient
}
desc = ARTIFACT_NEMESIS_REASON
}
modifier = {
add = 50
scope:recipient = {
target_is_liege_or_above = scope:actor
}
desc = ARTIFACT_LIEGE_REASON
}
modifier = {
scope:hook = yes
add = 100
desc = SCHEME_WEAK_HOOK_USED
}
# Unity modifiers
evaluate_action_increasing_house_unity = {
VALUE = 100
}
}
ai_potential = {
is_adult = yes
is_at_war = no
ai_greed >= low_negative_ai_value
has_outstanding_artifact_claims = yes
}
ai_min_reply_days = 7
ai_max_reply_days = 14
ai_will_do = {
base = 100
modifier = { # The AI will only use a Hook if they couldn't otherwise do this
scope:hook = yes
add = -1
}
modifier = {
add = 50
has_relation_rival = scope:recipient
}
modifier = {
add = 80
has_relation_nemesis = scope:recipient
}
modifier = {
add = 50
target_is_liege_or_above = scope:recipient
}
modifier = { # An Intimidated character is very unlikely to raise their hand
add = -25
scope:actor = {
has_dread_level_towards = {
target = scope:recipient
level = 1
}
}
}
# Unity modifiers
evaluate_action_increasing_house_unity = {
VALUE = 100
}
modifier = { # A Cowed character will never take this interaction
factor = 0
scope:actor = {
has_dread_level_towards = {
target = scope:recipient
level = 2
}
}
}
modifier = {
scope:recipient = {
OR = {
has_relation_friend = scope:actor
has_relation_lover = scope:actor
}
}
factor = 0
}
}
}
# Destroy Artifact
destroy_artifact_interaction = {
interface_priority = 30
common_interaction = yes
icon = artifact
category = interaction_category_friendly
desc = destroy_artifact_interaction_desc
icon = artifact
target_type = artifact
target_filter = actor_artifacts
ai_targets = {
ai_recipients = self
}
# You can only destroy your own artifacts
is_shown = {
scope:recipient = scope:actor
scope:actor = {
has_any_artifact = yes
}
}
can_be_picked_artifact = {
custom_tooltip = {
text = artifact_is_related_to_contract_tt
NOT = {
scope:target = { has_variable = 1025_treasure_map }
}
}
}
has_valid_target_showing_failures_only = {
trigger_if = {
limit = {
NOT = {
scope:recipient.faith = { has_doctrine_parameter = destroying_artifacts_is_pious }
}
}
custom_tooltip = {
text = artifact_is_rarer_than_masterwork_tt
OR = {
scope:target = { rarity = common }
scope:target = { rarity = masterwork }
}
}
}
trigger_if = {
limit = {
NOR = {
scope:target = { rarity = common }
scope:target = { rarity = masterwork }
}
}
custom_tooltip = {
text = destroying_artifacts_is_not_pious_tt
scope:recipient.faith = { has_doctrine_parameter = destroying_artifacts_is_pious }
}
}
scope:actor = {
trigger_if = {
limit = { is_landless_adventurer = yes }
employs_court_position = armorer_camp_officer
}
}
}
on_accept = {
destroy_artifact_aniconist_effect = {
ARTIFACT = scope:target
DESTROYER = scope:actor
GIVE_GOLD = yes
PIETY_BY_DEFAULT = no
}
}
ai_frequency = 24
ai_potential = {
OR = {
faith = { # Aniconists will always want to destroy artifacts
has_doctrine_parameter = destroying_artifacts_is_pious
}
gold <= minor_gold_value # Poor rulers will consider getting rid of their trash for gold
AND = { # Economic boom personalities will bolster their treasury by getting rid of trash more often
gold <= medium_gold_value
ai_has_economical_boom_personality = yes
}
any_character_artifact = { # All rulers want to get rid of actively detrimental trash
has_variable = unwanted_artifact
}
}
}
ai_will_do = {
base = 0
modifier = { # Rulers will always destroy unwanted artifacts
add = 100
scope:target = {
has_variable = unwanted_artifact
}
}
modifier = { # Rulers will consider destroying trash artifacts if they're poor
add = 100
scope:target = {
has_variable = ai_to_ai_destroy_in_sieges
}
}
modifier = { # AI rulers will destroy common unequipped artifacts if money is low
add = 100
OR = {
gold <= minor_gold_value # Poor rulers will consider getting rid of their trash for gold
AND = { # Economic boom personalities will bolster their treasury by getting rid of trash more often
gold <= medium_gold_value
ai_has_economical_boom_personality = yes
}
}
scope:target = {
rarity = common
is_equipped = no
}
}
modifier = { # AI rulers will destroy all unequipped artifacts to get out of debt
add = 100
gold <= 0
scope:target = {
is_equipped = no
}
}
modifier = { # Common artifact trinkets on their last legs can be considered for destruction if money is low
add = 100
OR = {
gold <= minor_gold_value # Poor rulers will consider getting rid of their trash for gold
AND = { # Economic boom personalities will bolster their treasury by getting rid of trash more often
gold <= medium_gold_value
ai_has_economical_boom_personality = yes
}
}
scope:target = {
rarity = common
artifact_slot_type = miscellaneous
artifact_durability <= define:NInventory|ARTIFACT_LOW_DURABILITY
}
}
modifier = { # Aniconists destroy most things
add = 100
faith = {
has_doctrine_parameter = destroying_artifacts_is_pious
}
OR = { # This errors in the ai_potential so it's been moved here
has_trait = zealous
scope:target = { is_equipped = no }
scope:target = { exists = var:relic }
}
# The logic below relies on the idea that they have the destroying_artifacts_is_pious doctrine parameter. If the restrictions are loosened, these triggers should be updated
NOR = {
has_trait = cynical
AND = {
has_trait = greedy
NOT = { has_trait = zealous }
}
}
OR = {
has_trait = zealous # Destroy all the artifacts
any_character_artifact = {
is_equipped = no
}
any_character_artifact = {
exists = var:relic
}
}
}
}
}