unfucking the mod
This commit is contained in:
parent
cbe3fbcda2
commit
d887392b56
1167 changed files with 26982 additions and 13 deletions
952
common/scripted_triggers/00_laamp_triggers.txt
Normal file
952
common/scripted_triggers/00_laamp_triggers.txt
Normal file
|
|
@ -0,0 +1,952 @@
|
|||
##################################################
|
||||
# Landless Adventurer Camp Scripted Triggers
|
||||
##################################################
|
||||
|
||||
##################################################
|
||||
# Interaction Triggers
|
||||
|
||||
maa_regiments_valid_for_cheap_reinforcement_trigger = {
|
||||
maa_current_troops_count < maa_max_troops_count
|
||||
NOR = {
|
||||
is_unit_type = heavy_cavalry
|
||||
is_unit_type = camel_cavalry
|
||||
maa_regiments_cost_more_to_reinforce_per_soldier_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
maa_regiments_cost_more_to_reinforce_per_soldier_trigger = {
|
||||
regiment_owner = { government_has_flag = government_is_landless_adventurer }
|
||||
OR = {
|
||||
is_unit_type = elephant_cavalry
|
||||
is_unit_type = siege_weapon
|
||||
}
|
||||
}
|
||||
|
||||
maa_regiments_valid_to_refill_trigger = {
|
||||
maa_current_troops_count < maa_max_troops_count
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:actor = { government_has_flag = government_is_landless_adventurer }
|
||||
is_unit_type = elephant_cavalry
|
||||
}
|
||||
scope:actor.domicile ?= { has_domicile_parameter = camp_reinforce_elephant_regiments_anywhere }
|
||||
}
|
||||
}
|
||||
|
||||
any_laamp_portion_at_sea_trigger = {
|
||||
OR = {
|
||||
current_travel_plan ?= {
|
||||
is_travel_with_domicile = yes
|
||||
current_location = {
|
||||
OR = {
|
||||
is_sea_province = yes
|
||||
is_river_province = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
any_army = {
|
||||
location = {
|
||||
OR = {
|
||||
is_sea_province = yes
|
||||
is_river_province = yes
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
character_is_valid_for_harrying_of_the_north_trigger = {
|
||||
title:k_england.holder ?= { owns_story_of_type = story_cycle_harrying_of_the_north }
|
||||
trigger_if = {
|
||||
limit = { is_ruler = yes }
|
||||
OR = {
|
||||
this = title:k_england.holder
|
||||
any_liege_or_above = { this = title:k_england.holder }
|
||||
}
|
||||
}
|
||||
trigger_else = {
|
||||
domicile ?= {
|
||||
domicile_location = {
|
||||
county ?= {
|
||||
holder = {
|
||||
OR = {
|
||||
this = title:k_england.holder
|
||||
any_liege_or_above = { this = title:k_england.holder }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OR = {
|
||||
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = yes
|
||||
character_is_valid_norman_for_harrying_of_the_north_trigger = yes
|
||||
}
|
||||
}
|
||||
|
||||
character_is_valid_anglo_saxon_for_harrying_of_the_north_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
this = culture:anglo_saxon
|
||||
any_parent_culture_or_above = { this = culture:anglo_saxon }
|
||||
}
|
||||
NOR = {
|
||||
this = culture:norman
|
||||
any_parent_culture_or_above = { this = culture:norman }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
character_is_valid_norman_for_harrying_of_the_north_trigger = {
|
||||
culture = {
|
||||
OR = {
|
||||
this = culture:norman
|
||||
any_parent_culture_or_above = { this = culture:norman }
|
||||
}
|
||||
NOR = {
|
||||
this = culture:anglo_saxon
|
||||
any_parent_culture_or_above = { this = culture:anglo_saxon }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
disable_interaction_for_hereward_trigger = {
|
||||
trigger_if = {
|
||||
limit = { scope:recipient = character:90028 }
|
||||
custom_tooltip = {
|
||||
text = owns_a_story_trigger
|
||||
scope:actor = {
|
||||
NOR = {
|
||||
owns_story_of_type = story_cycle_harrying_of_the_north
|
||||
any_liege_or_above = { owns_story_of_type = story_cycle_harrying_of_the_north }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
disable_interaction_for_hasan_trigger = {
|
||||
trigger_if = {
|
||||
limit = { scope:recipient = character:41702 }
|
||||
custom_tooltip = {
|
||||
text = owns_a_story_trigger
|
||||
scope:recipient = { owns_story_of_type = story_hasan }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
laamp_request_likely_marriable_woman_trigger = {
|
||||
is_available_quick = {
|
||||
female = yes
|
||||
adult = yes
|
||||
}
|
||||
can_marry_trigger = yes
|
||||
}
|
||||
|
||||
laamp_request_likely_marriable_man_trigger = {
|
||||
is_available_quick = {
|
||||
female = no
|
||||
adult = yes
|
||||
}
|
||||
can_marry_trigger = yes
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Transition Triggers
|
||||
|
||||
is_valid_for_laampdom = {
|
||||
save_temporary_scope_as = potential_laamp_temp
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NAND = {
|
||||
is_ai = no
|
||||
government_allows = administrative
|
||||
top_liege = this
|
||||
is_landed = no
|
||||
}
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = adventurer_not_nf_head_trigger_tt
|
||||
NOT = {
|
||||
any_held_title = { is_noble_family_title = yes }
|
||||
}
|
||||
}
|
||||
is_landless_ruler = no # Admin gov vassals should not become laamps
|
||||
}
|
||||
trigger_if = {
|
||||
limit = { is_ai = yes }
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:allow_imprisoned_landless }
|
||||
}
|
||||
is_imprisoned = no # Must be free
|
||||
}
|
||||
is_adult = yes # Old enough to venture forth
|
||||
age < 60 # Young enough to venture forth
|
||||
health >= fine_health # Healthy enough to venture forth
|
||||
OR = {
|
||||
highest_skill_value >= decent_skill_rating
|
||||
prowess >= decent_skill_rating
|
||||
}
|
||||
# Can't be completely unwilling to go outside.
|
||||
OR = {
|
||||
ai_boldness >= low_negative_ai_value
|
||||
ai_energy >= low_negative_ai_value
|
||||
}
|
||||
NOR = {
|
||||
has_trait = content # Too chill to adventure
|
||||
has_trait = craven # Too scared to adventure
|
||||
has_trait = lazy # Too lazy to adventure
|
||||
}
|
||||
# Block admin members of noble families
|
||||
NOT = {
|
||||
house ?= {
|
||||
any_house_member = {
|
||||
any_held_title = { is_noble_family_title = yes }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ep3_laamp_interesting_enough_to_be_a_laamp_trigger = {
|
||||
OR = {
|
||||
has_trait_rank = { # Prettier
|
||||
trait = beauty_good
|
||||
character > $COMPARISON$
|
||||
}
|
||||
has_trait_rank = { # Cleverer
|
||||
trait = intellect_good
|
||||
character > $COMPARISON$
|
||||
}
|
||||
has_trait_rank = { # Dencher
|
||||
trait = physique_good
|
||||
character > $COMPARISON$
|
||||
}
|
||||
AND = { # Strong people are just more interesting
|
||||
has_trait = strong
|
||||
NOT = {
|
||||
$COMPARISON$ = { has_trait = strong }
|
||||
}
|
||||
}
|
||||
sum_of_all_skills_value > $COMPARISON$.sum_of_all_skills_value # Skillful people are interesting
|
||||
prowess >= high_skill_rating # Good fighters are interesting
|
||||
prestige_level > $COMPARISON$.prestige_level # Famous people are interesting
|
||||
piety_level > $COMPARISON$.piety_level # Religious people are interesting
|
||||
AND = { # People with nicknames are just more interesting
|
||||
has_any_nickname = yes
|
||||
$COMPARISON$ = { has_any_nickname = no }
|
||||
}
|
||||
has_character_modifier = bp2_tool_of_fate_modifier # Destiny's child is interesting
|
||||
has_trait = reincarnation # Reincarnies are interesting
|
||||
has_trait = immortal
|
||||
is_twin_of = $COMPARISON$ # Twins are interesting
|
||||
}
|
||||
}
|
||||
|
||||
playable_relative_trigger = {
|
||||
is_available_quick = {
|
||||
ai = yes
|
||||
advanced_ruler = yes
|
||||
}
|
||||
house = root.house
|
||||
}
|
||||
|
||||
ep3_laamp_interesting_sibling_trigger = {
|
||||
is_available_quick = {
|
||||
ai = yes
|
||||
landed = no
|
||||
advanced_ruler = no
|
||||
}
|
||||
NOT = {
|
||||
any_consort = {
|
||||
is_ruler = yes
|
||||
}
|
||||
}
|
||||
is_valid_for_laampdom = yes # Age, health, personality
|
||||
ep3_laamp_interesting_enough_to_be_a_laamp_trigger = { COMPARISON = $COMPARISON$ }
|
||||
}
|
||||
|
||||
ep3_purchase_land_valid_county_trigger = {
|
||||
holder.top_liege = scope:recipient
|
||||
NOR = {
|
||||
scope:recipient.capital_county ?= this
|
||||
scope:recipient.primary_title ?= this
|
||||
}
|
||||
}
|
||||
|
||||
ep3_negotiate_settlement_valid_county_trigger = {
|
||||
OR = {
|
||||
holder = scope:actor
|
||||
trigger_if = {
|
||||
limit = {
|
||||
scope:actor = { government_has_flag = government_is_special_administrative }
|
||||
}
|
||||
holder = { target_is_liege_or_above = scope:actor }
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
holder.capital_county ?= this
|
||||
holder.primary_title ?= this
|
||||
}
|
||||
}
|
||||
|
||||
ep3_adventurer_invasion_allowed_for_character_trigger = {
|
||||
has_ep3_dlc_trigger = yes
|
||||
government_has_flag = government_is_landless_adventurer
|
||||
is_landed = no
|
||||
}
|
||||
|
||||
ep3_adventurer_invasion_allowed_for_character_display_regardless_trigger = {
|
||||
has_ep3_dlc_trigger = yes
|
||||
is_at_war = no
|
||||
}
|
||||
|
||||
ep3_adventurer_landless_allowed_against_character_trigger = {
|
||||
is_landed = yes
|
||||
# Players vs. AI filtering.
|
||||
OR = {
|
||||
# Can always target the AI.
|
||||
is_ai = yes
|
||||
# Cannot target a player unless they completely control at least two duchies.
|
||||
any_sub_realm_duchy = {
|
||||
count >= 2
|
||||
save_temporary_scope_as = player_controlled_duchy
|
||||
# Custom description to suppress errors.
|
||||
custom_description = {
|
||||
text = SUPPRESS
|
||||
scope:defender = { completely_controls = scope:player_controlled_duchy }
|
||||
}
|
||||
}
|
||||
}
|
||||
# Scope:defender cannot be liege of attacker.
|
||||
scope:defender = {
|
||||
this != scope:attacker.liege
|
||||
}
|
||||
}
|
||||
|
||||
ep3_adventurer_invasion_sponsorship_applies_trigger = {
|
||||
var:adventurer_invasion_supporter ?= { ep3_adventurer_sponsorship_valid_trigger = yes }
|
||||
var:adventurer_invasion_target ?= scope:defender
|
||||
}
|
||||
|
||||
ep3_adventurer_landless_should_invalidate_trigger = {
|
||||
OR = {
|
||||
NOT = {
|
||||
any_in_list = {
|
||||
list = target_titles
|
||||
any_in_de_jure_hierarchy = {
|
||||
tier = tier_county
|
||||
is_landless_type_title = no
|
||||
holder = { target_is_same_character_or_above = scope:defender }
|
||||
}
|
||||
}
|
||||
}
|
||||
scope:attacker = { is_landed = yes }
|
||||
}
|
||||
}
|
||||
|
||||
ep3_adventurer_sponsorship_valid_trigger = {
|
||||
scope:attacker.var:adventurer_invasion_supporter ?= {
|
||||
var:adventurer_invasion_target ?= scope:defender
|
||||
NOR = {
|
||||
this = scope:defender
|
||||
top_liege = scope:defender.top_liege
|
||||
is_allied_to = scope:defender
|
||||
is_spouse_of = scope:defender
|
||||
AND = {
|
||||
is_close_family_of = scope:defender
|
||||
opinion = {
|
||||
target = scope:defender
|
||||
value >= -25
|
||||
}
|
||||
}
|
||||
has_relation_friend = scope:defender
|
||||
has_relation_lover = scope:defender
|
||||
any_character_war = {
|
||||
primary_attacker = scope:attacker.var:adventurer_invasion_supporter
|
||||
primary_defender = scope:defender
|
||||
}
|
||||
}
|
||||
in_diplomatic_range = scope:defender
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Contract Triggers
|
||||
|
||||
# Can this employer ever offer this contract?
|
||||
## This is basically an is_valid_showing_failures_only, so we deliberately break out into lots of unnecessarily small sections for nicer tooltipping.
|
||||
valid_laamp_basic_trigger = {
|
||||
custom_description = {
|
||||
text = adventurer_not_famous_or_patron_trigger_tt
|
||||
object = $EMPLOYER$
|
||||
value = $EMPLOYER$.highest_held_title_tier
|
||||
OR = {
|
||||
$EMPLOYER$.highest_held_title_tier <= tier_county
|
||||
AND = {
|
||||
$EMPLOYER$.highest_held_title_tier <= tier_duchy
|
||||
$EMPLOYER$ = { government_has_flag = government_is_nomadic }
|
||||
}
|
||||
$EMPLOYER$.highest_held_title_tier <= $LAAMP$.prestige_level
|
||||
$EMPLOYER$ = { is_contact_of = $LAAMP$ }
|
||||
}
|
||||
}
|
||||
$EMPLOYER$ = {
|
||||
# Players shouldn't get tangled up in contracts, ever.
|
||||
is_ai = yes
|
||||
# Plus some standard stuff.
|
||||
is_alive = yes
|
||||
is_adult = yes
|
||||
NOT = { government_has_flag = government_is_herder }
|
||||
}
|
||||
$EMPLOYER$ = { is_incapable = no }
|
||||
# Laamps shouldn't offer contracts in their local area, ever.
|
||||
$EMPLOYER$ = {
|
||||
OR = {
|
||||
employer = $LAAMP$
|
||||
NOT = { government_has_flag = government_is_landless_adventurer }
|
||||
}
|
||||
}
|
||||
# Don't offer to work with those who've wronged us.
|
||||
## No one we're at war with.
|
||||
$EMPLOYER$ = {
|
||||
NOT = { is_at_war_with = $LAAMP$ }
|
||||
}
|
||||
## Rivals are cheap to avoid.
|
||||
$EMPLOYER$ = {
|
||||
NOT = { has_relation_rival = $LAAMP$ }
|
||||
}
|
||||
## Expulsion
|
||||
$EMPLOYER$ = {
|
||||
custom_tooltip = {
|
||||
text = adventurer_expelled_trigger_tt
|
||||
NOR = {
|
||||
reverse_has_opinion_modifier = {
|
||||
target = $LAAMP$
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
any_liege_or_above = {
|
||||
reverse_has_opinion_modifier = {
|
||||
target = $LAAMP$
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$LAAMP$ = { government_has_flag = government_is_landless_adventurer }
|
||||
$LAAMP$ = {
|
||||
trigger_if = {
|
||||
limit = { is_at_war = no }
|
||||
is_commanding_army = no
|
||||
}
|
||||
}
|
||||
# If we're looking at the player, make sure there's no uhh... weird legacies between us.
|
||||
$LAAMP$ = {
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
NOR = {
|
||||
has_any_major_negative_opinion_against_character_trigger = { CHARACTER = $EMPLOYER$ }
|
||||
$EMPLOYER$ = {
|
||||
has_any_major_negative_opinion_against_character_trigger = { CHARACTER = $LAAMP$ }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# triggers that prevent you from only accepting the contract
|
||||
valid_laamp_basic_accept_only_trigger = {
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
# Should this employer be putting this out for tender?
|
||||
## Naturally, if they're being becrimed, we don't care about this.
|
||||
employer_has_treasury_to_offer_job_trigger = {
|
||||
trigger_if = {
|
||||
limit = { is_ai = no }
|
||||
scope:employer.treasury_or_gold >= 50
|
||||
}
|
||||
}
|
||||
|
||||
# Does it make sense that this employer offers this contract to start with?
|
||||
## So we don't penalise you if their circumstances change beyond your control, but _also_ so that there aren't local job listings going up in Middlesex for someone currently pilgrimaging in Jerusalem.
|
||||
valid_laamp_sensible_start_trigger = {
|
||||
scope:employer = {
|
||||
is_available_quick = {
|
||||
travel = no
|
||||
in_army = no
|
||||
imprisoned = no
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
any_character_task_contract = {
|
||||
count >= 1
|
||||
task_contract_employer = scope:employer
|
||||
}
|
||||
}
|
||||
always = no
|
||||
}
|
||||
}
|
||||
|
||||
# Prevent inappropriate characters, like the Byzantine Emperor or the Sunni Caliph, from giving contracts that'd seem beneath them.
|
||||
## This isn't a comment on whether they _would_ (or even did) put out such things, more just trying to preserve verisimilitude.
|
||||
rule_out_dramatic_laamp_employers_trigger = {
|
||||
scope:employer = {
|
||||
NOR = {
|
||||
faith.religious_head ?= this
|
||||
highest_held_title_tier >= tier_empire
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# We do not spawn contracts in the Sahara without the right CulTrad.
|
||||
lock_contracts_from_spawning_in_sahara_trigger = {
|
||||
OR = {
|
||||
NOT = {
|
||||
location = { geographical_region = custom_sahara_proper }
|
||||
}
|
||||
culture = { has_cultural_tradition = tradition_saharan_nomads }
|
||||
}
|
||||
}
|
||||
|
||||
# How far do we have to travel (or to where) before we start spawning more contracts to play with?
|
||||
player_adventurer_sufficient_distance_for_contract_spawn_trigger = {
|
||||
is_ai = no
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
# Either we've moved to a neighbouring kingdom that we've not been to recently.
|
||||
AND = {
|
||||
location.kingdom = { save_temporary_scope_as = kingdom_temp }
|
||||
NOT = {
|
||||
is_target_in_variable_list = {
|
||||
name = laamp_recently_visited_kingdoms
|
||||
target = scope:kingdom_temp
|
||||
}
|
||||
}
|
||||
}
|
||||
# Or we've travelled some distance.
|
||||
trigger_if = {
|
||||
limit = { exists = scope:char_temp.current_travel_plan }
|
||||
"location.squared_distance(scope:char_temp.current_travel_plan.departure_location)" >= squared_distance_medium
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer have some trait that means they don't want to see/don't trust strangers?
|
||||
laamp_task_contract_employer_not_antisocial_trigger = {
|
||||
scope:employer = {
|
||||
NOR = {
|
||||
has_trait = shy
|
||||
has_trait = paranoid
|
||||
has_trait = cynical
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer have someone executed or hurt without (what passes for in-period as) a fair trial?
|
||||
laamp_task_contract_employer_would_resort_to_violence_trigger = {
|
||||
scope:employer = {
|
||||
NOT = { has_trait = compassionate }
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer happily tell a lie or manipulate someone if they at least had a good reason?
|
||||
laamp_task_contract_employer_would_resort_to_deceit_trigger = {
|
||||
scope:employer = {
|
||||
NOT = { has_trait = honest }
|
||||
}
|
||||
}
|
||||
|
||||
# Would this employer go grubbing for money they're owed?
|
||||
laamp_task_contract_employer_would_chase_money_trigger = {
|
||||
scope:employer = {
|
||||
NOR = {
|
||||
has_trait = generous
|
||||
has_trait = improvident
|
||||
# Compassionates avoid this unless they're also greedy.
|
||||
AND = {
|
||||
has_trait = compassionate
|
||||
NOT = { has_trait = greedy }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Check to see if it's appropriate to apply a county modifier — basically, don't let barons putting out contracts apply modifiers to players.
|
||||
contract_employer_can_apply_county_modifier_trigger = {
|
||||
OR = {
|
||||
highest_held_title_tier >= tier_county
|
||||
liege = { is_ai = yes }
|
||||
}
|
||||
}
|
||||
|
||||
# Could this potential rival be removed without unexpectedly affecting a player?
|
||||
laamp_base_0011_valid_potential_rival_trigger = {
|
||||
# Exempt players.
|
||||
NOT = {
|
||||
this = { is_ai = no }
|
||||
}
|
||||
}
|
||||
|
||||
# Search for counties that could be affected by the modifiers we apply at the conclusion of the contract.
|
||||
laamp_base_1001_valid_neighbouring_county_trigger = {
|
||||
holder = root.task_contract_employer
|
||||
county_control < full_county_control
|
||||
}
|
||||
|
||||
laamp_base_2001_valid_mayor_trigger = {
|
||||
highest_held_title_tier = tier_barony
|
||||
government_has_flag = government_is_republic
|
||||
NOT = { is_close_or_extended_family_of = scope:employer }
|
||||
}
|
||||
|
||||
laamp_base_3001_valid_neighbours_trigger = {
|
||||
NOR = {
|
||||
# Don't collect intelligence on people we trust.
|
||||
has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = $EMPLOYER$ }
|
||||
is_allied_to = $EMPLOYER$
|
||||
# Or on people we're currently at war with — it's a little late for court whispers.
|
||||
is_at_war_with = $EMPLOYER$
|
||||
}
|
||||
is_adult = yes
|
||||
is_incapable = no
|
||||
is_imprisoned = no
|
||||
}
|
||||
|
||||
# used in task contracts triggered from council tasks to check if employer and their liege or councillor are valid to issue a contract for you
|
||||
# COUNCILLOR_TYPE = councillor type name
|
||||
# COUNCIL_TASK_TYPE = council task type name
|
||||
council_task_contract_valid_employer_trigger = {
|
||||
trigger_if = {
|
||||
limit = {
|
||||
NOT = { exists = scope:laamp }
|
||||
}
|
||||
save_temporary_scope_as = laamp
|
||||
}
|
||||
valid_laamp_basic_trigger = {
|
||||
EMPLOYER = scope:employer
|
||||
LAAMP = scope:laamp
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = councillor_leaving_court_message_title
|
||||
scope:employer = {
|
||||
OR = {
|
||||
AND = {
|
||||
cp:$COUNCILLOR_TYPE$ ?= {
|
||||
is_performing_council_task = $COUNCIL_TASK_TYPE$
|
||||
}
|
||||
valid_laamp_basic_trigger = {
|
||||
EMPLOYER = scope:employer.cp:$COUNCILLOR_TYPE$
|
||||
LAAMP = scope:laamp
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
is_performing_council_task = $COUNCIL_TASK_TYPE$
|
||||
valid_laamp_basic_trigger = {
|
||||
EMPLOYER = scope:employer.liege
|
||||
LAAMP = scope:laamp
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Travel Triggers
|
||||
|
||||
is_laamp_exiled_from_province_trigger = {
|
||||
$PROVINCE$.county.holder = {
|
||||
is_laamp_exiled_from_holder_or_liege_trigger = { LAAMP = $LAAMP$ }
|
||||
}
|
||||
}
|
||||
|
||||
is_laamp_exiled_from_holder_or_liege_trigger = {
|
||||
OR = {
|
||||
AND = {
|
||||
save_temporary_scope_as = char_temp
|
||||
$LAAMP$ = {
|
||||
has_opinion_modifier = {
|
||||
target = scope:char_temp
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
AND = {
|
||||
any_liege_or_above = {
|
||||
save_temporary_scope_as = char_temp
|
||||
$LAAMP$ = {
|
||||
has_opinion_modifier = {
|
||||
target = scope:char_temp
|
||||
modifier = demanded_eviction_opinion
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Event Triggers
|
||||
|
||||
# Do we want this character to occur in events around camp more frequently?
|
||||
is_valid_active_event_recurrer_trigger = {
|
||||
is_ai = yes
|
||||
is_courtier_of = $LIEGE$
|
||||
is_healthy = yes
|
||||
OR = {
|
||||
has_any_court_position = yes
|
||||
is_close_or_extended_family_of = $LIEGE$
|
||||
is_consort_of = $LIEGE$
|
||||
has_important_relationship_with_character_trigger = { CHARACTER = $LIEGE$ }
|
||||
}
|
||||
}
|
||||
|
||||
valid_laamp_contract_foe_trigger = {
|
||||
# Make sure they're at home if possible.
|
||||
NOR = {
|
||||
is_travelling = yes
|
||||
is_commanding_army = yes
|
||||
is_imprisoned = no
|
||||
}
|
||||
# Good sensible restrictions on mutual relationships.
|
||||
OR = {
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:employer_ref }
|
||||
# Ensure a bit of mild dislike.
|
||||
reverse_opinion = {
|
||||
target = scope:employer_ref
|
||||
value <= -25
|
||||
}
|
||||
opinion = {
|
||||
target = scope:employer_ref
|
||||
value <= -25
|
||||
}
|
||||
}
|
||||
NOR = {
|
||||
# Filter out anything that might look odd.
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:employer_ref }
|
||||
# Plus don't include anything connected to a player.
|
||||
save_temporary_scope_as = char_temp
|
||||
any_player = {
|
||||
OR = {
|
||||
this = scope:char_temp
|
||||
is_close_or_extended_family_of = scope:char_temp
|
||||
is_consort_of = scope:char_temp
|
||||
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:char_temp }
|
||||
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:char_temp }
|
||||
}
|
||||
}
|
||||
}
|
||||
# And check their location is valid.
|
||||
location = {
|
||||
# Which means making sure that they're not located too far away from our contractor.
|
||||
"squared_distance(root.task_contract_taker.location)" <= squared_distance_large
|
||||
# And that they're not located in the exact same province, else travel logic'll break.
|
||||
this != scope:employer_ref.location
|
||||
}
|
||||
}
|
||||
|
||||
has_any_landed_title_trigger = {
|
||||
any_held_title = {
|
||||
NOR = {
|
||||
is_noble_family_title = yes
|
||||
is_landless_type_title = yes
|
||||
has_variable = adventurer_creation_reason
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Toggle on tally logging for laamp events, so we can see how often they're firing for a single run test.
|
||||
enable_debug_laamp_event_logging_toggle_trigger = { always = no }
|
||||
|
||||
# Can the AI create a new laamp without threatening performance?
|
||||
## Beware of expanding this past the soft-cap figure of around ~200: code estimations were made with this number in mind, so the more we let slip the net, the more they'll start to degrade performance.
|
||||
### YOU HAVE BEEN WARNED.
|
||||
ai_can_valid_to_create_laamp_trigger = {
|
||||
save_temporary_scope_as = char_temp
|
||||
OR = {
|
||||
# General checking.
|
||||
NOT = { has_global_variable_list = laamps_tally }
|
||||
global_variable_list_size = {
|
||||
name = laamps_tally
|
||||
value < max_desired_laamps_value
|
||||
}
|
||||
# Player-relevant.
|
||||
any_player = {
|
||||
OR = {
|
||||
is_close_or_extended_family_of = scope:char_temp
|
||||
is_consort_of = scope:char_temp
|
||||
has_important_relationship_with_character_trigger = { CHARACTER = scope:char_temp }
|
||||
is_allied_in_war = scope:char_temp
|
||||
is_allied_to = scope:char_temp
|
||||
is_at_war_with = scope:char_temp
|
||||
}
|
||||
}
|
||||
# Encourage legitimists.
|
||||
AND = {
|
||||
any_claim = { tier >= tier_kingdom }
|
||||
global_variable_list_size = {
|
||||
name = laamps_tally
|
||||
value < {
|
||||
value = max_desired_laamps_value
|
||||
multiply = 1.25
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
##################################################
|
||||
# Decisions Triggers
|
||||
|
||||
# We want to refer to this in two places, is_shown and is_valid, within its decision so that we can explain where it's come from.
|
||||
can_access_reject_inheritance_decision_trigger = {
|
||||
OR = {
|
||||
has_trait = content
|
||||
has_perk = carefree_perk
|
||||
has_government = landless_adventurer_government
|
||||
}
|
||||
}
|
||||
|
||||
# Would this character lose opinion with you if you declared "screw that" to your family's titular duties?
|
||||
would_judge_new_gallivanters_trigger = {
|
||||
NOR = {
|
||||
# Traits that innately get it.
|
||||
has_trait = gallivanter
|
||||
has_trait = content
|
||||
# Traits that probably get it if the situation merits it.
|
||||
calc_true_if = {
|
||||
amount >= 2
|
||||
has_trait = compassionate
|
||||
has_trait = lazy
|
||||
has_trait = humble
|
||||
has_trait = eccentric
|
||||
}
|
||||
}
|
||||
is_adult = yes
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_dogs_trigger = {
|
||||
OR = {
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.dog.you
|
||||
has_character_modifier = dog_story_modifier
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.dog.courtier
|
||||
any_courtier = { has_character_modifier = dog_story_modifier }
|
||||
}
|
||||
domicile = { has_domicile_building = baggage_train_kennel }
|
||||
}
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_dogs }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_dogs
|
||||
NOT = { has_character_flag = recently_ate_dogs }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_cats_trigger = {
|
||||
OR = {
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.cat.you
|
||||
has_character_modifier = cat_story_modifier
|
||||
}
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.cat.courtier
|
||||
any_courtier = { has_character_modifier = cat_story_modifier }
|
||||
}
|
||||
}
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_cats }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_cats
|
||||
NOT = { has_character_flag = recently_ate_cats }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_horses_trigger = {
|
||||
OR = {
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.horse.you
|
||||
has_character_modifier = horse_story_modifier
|
||||
}
|
||||
domicile = { has_domicile_building = baggage_train_ample_steeds }
|
||||
}
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_horses }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_horses
|
||||
NOT = { has_character_flag = recently_ate_horses }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
butcher_animals_decision_available_elephants_trigger = {
|
||||
domicile = { has_domicile_building = proving_grounds_elephantry_reserve }
|
||||
# Only show the cooldown flag if we already have it, so make our tooltips neater.
|
||||
trigger_if = {
|
||||
limit = { has_character_flag = recently_ate_elephants }
|
||||
custom_tooltip = {
|
||||
text = butcher_animals_decision.tt.recently_ate_elephants
|
||||
NOT = { has_character_flag = recently_ate_elephants }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
laamp_youth_cultural_tradition_trigger = {
|
||||
has_global_variable_list = laamps_tally
|
||||
global_variable_list_size = {
|
||||
name = laamps_tally
|
||||
value < {
|
||||
value = max_desired_laamps_value
|
||||
add = 10
|
||||
}
|
||||
}
|
||||
culture = {
|
||||
OR = {
|
||||
has_cultural_parameter = much_more_likely_to_be_laamps
|
||||
has_cultural_parameter = more_likely_to_be_laamps
|
||||
}
|
||||
}
|
||||
any_close_or_extended_family_member = {
|
||||
is_ruler = yes
|
||||
}
|
||||
is_lowborn = no
|
||||
is_ruler = no
|
||||
is_ai = yes
|
||||
OR = {
|
||||
AND = {
|
||||
exists = liege
|
||||
can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = liege }
|
||||
}
|
||||
AND = {
|
||||
is_male = yes
|
||||
faith_dominant_gender_male_or_equal = yes
|
||||
}
|
||||
AND = {
|
||||
is_female = yes
|
||||
faith_dominant_gender_female_or_equal = yes
|
||||
}
|
||||
}
|
||||
trigger_if = {
|
||||
limit = {
|
||||
exists = liege
|
||||
}
|
||||
liege = {
|
||||
is_landless_adventurer = no
|
||||
is_ai = yes
|
||||
}
|
||||
}
|
||||
NOT = {
|
||||
any_heir_title = { }
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue