N3OW/common/on_action/province_on_actions.txt
GoTouchSomeGrass314 821cf5b44c Zone Rouge work part 1
Added a new flag that is special to Zone Rouge, which gives less wanderer XP and doesent give the traveler trait.
2026-06-06 23:44:20 +02:00

883 lines
22 KiB
Text

# root: The province in which the building was completed
# scope:character: The character that paid for the construction, if available
on_building_completed = {
effect = {
#save the county holder as the character in case the construction wasn't started through GUI or by the AI
if = {
limit = {
NOT = { exists = scope:character }
}
root.county.holder = {
save_scope_as = character
}
}
root = {
# Preservation tenet
if = {
limit = {
scope:character.faith = { has_doctrine_parameter = building_temples_gives_development }
OR = {
has_holding_type = church_holding
has_holding_type = temple_citadel_holding
}
NOT = { county = { has_variable = dev_gain_cooldown } }
}
scope:character = {
send_interface_toast = {
title = building_temples_gives_development_toast
left_icon = root
root.county = {
change_development_progress_with_overflow = minor_development_progress_gain
set_variable = {
name = dev_gain_cooldown
value = yes
days = 365
}
}
}
}
}
# Hard working Tradition
if = {
limit = {
culture = { has_cultural_parameter = development_gain_on_building_complete }
NOT = { county = { has_variable = dev_gain_cooldown } }
}
county = {
change_development_progress_with_overflow = 25
set_variable = {
name = dev_gain_cooldown
value = yes
days = 365
}
}
}
# Metal crafting Tradition
if = {
limit = {
culture = { has_cultural_parameter = prestige_gain_on_building_complete_in_mountains }
OR = {
terrain = mountains
terrain = desert_mountains
}
}
scope:character = {
if = {
limit = {
is_alive = yes
}
add_prestige = medium_prestige_value
}
}
}
# Yashima
if = {
limit = {
culture = { has_cultural_parameter = prestige_gain_on_building_complete_in_mountains_forest }
OR = {
terrain = mountains
terrain = forest
}
}
scope:character = {
if = {
limit = {
is_alive = yes
}
add_prestige = medium_prestige_value
}
}
}
# Sacred Mountains Tradition
if = {
limit = {
scope:character.culture = { has_cultural_parameter = piety_gain_on_building_complete_in_mountains }
OR = {
terrain = mountains
terrain = desert_mountains
}
}
scope:character = {
if = {
limit = {
is_alive = yes
}
add_piety = minor_piety_value
}
}
}
# Sacred Groves Tradition
if = {
limit = {
scope:character.culture = { has_cultural_parameter = piety_gain_on_building_complete_in_forest_taiga }
OR = {
terrain = forest
terrain = taiga
terrain = jungle
}
}
scope:character = {
if = {
limit = {
is_alive = yes
}
add_piety = minor_piety_value
}
}
}
# FP2 Dynasty perk
if = {
limit = {
has_holding_type = city_holding
exists = scope:character.dynasty
scope:character.dynasty = {
has_dynasty_perk = fp2_urbanism_legacy_4
}
}
county = {
holder = {
if = {
limit = {
is_alive = yes
}
send_interface_toast = {
type = event_toast_effect_good
title = prestige_gained_from_building_completion
left_icon = root.barony
add_prestige = medium_prestige_gain
}
}
}
#### Chance to add super guest!
# Set variables
random = {
chance = 10
modifier = {
add = county.development_level
}
set_variable = {
name = number_prestigious_new_guests
value = 1
}
if = {
limit = { county.development_level >= max_development_level }
set_variable = {
name = holding_quality
value = 3
}
}
else_if = {
limit = { county.development_level >= great_development_level }
set_variable = {
name = holding_quality
value = 3
}
}
else_if = {
limit = { county.development_level >= good_development_level }
set_variable = {
name = holding_quality
value = 2
}
}
else_if = {
limit = { county.development_level >= medium_development_level }
set_variable = {
name = holding_quality
value = 2
}
}
else_if = {
limit = { county.development_level >= bad_development_level }
set_variable = {
name = holding_quality
value = 1
}
}
else = {
set_variable = {
name = holding_quality
value = 1
}
}
}
holder = {
# Trigger the hidden event
if = {
limit = {
is_alive = yes
}
trigger_event = fp2_other_decisions.0001
}
}
}
}
# Struggle parameters
if = {
limit = {
has_holding_type = castle_holding
scope:character = {
any_character_struggle = {
involvement = involved
has_struggle_phase_parameter = completing_building_in_castle_gives_development
}
}
}
county = { change_development_progress_with_overflow = 10 }
}
if = {
limit = {
has_holding_type = church_holding
scope:character = {
any_character_struggle = {
involvement = involved
has_struggle_phase_parameter = completing_building_in_temple_gives_piety
}
}
}
scope:character = { add_piety = medium_piety_gain }
}
# Struggle catalysts
if = {
limit = {
has_holding_type = castle_holding
scope:character = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_new_building_in_castle
}
}
}
scope:character = {
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_new_building_in_castle
character = scope:character
}
}
}
}
else_if = {
limit = {
has_holding_type = city_holding
scope:character = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_new_building_in_city
}
}
}
scope:character = {
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_new_building_in_city
character = scope:character
}
}
}
}
else_if = {
limit = {
has_holding_type = church_holding
scope:character = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_new_building_in_temple
}
}
}
scope:character = {
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_new_building_in_temple
character = scope:character
}
}
}
}
if = {
limit = {
has_holding_type = church_holding
county.faith.religion = religion:islam_religion
scope:character = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_new_islamic_temple_construction
}
}
}
scope:character = {
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_new_islamic_temple_construction
character = scope:character
}
}
}
}
if = {
limit = {
scope:character = {
any_character_struggle = {
involvement = involved
phase_has_catalyst = catalyst_new_building_in_holdings
}
}
}
scope:character = {
every_character_struggle = {
involvement = involved
activate_struggle_catalyst = {
catalyst = catalyst_new_building_in_holdings
character = scope:character
}
}
}
}
# Points of Interest
# Apply them here directly so they are more promptly added than monthly via the POI update
if = {
limit = {
has_special_building = no
}
}
else_if = {
limit = {
OR = {
has_building_with_flag = { flag = travel_point_of_interest_martial }
has_building_with_flag = { flag = travel_point_of_interest_martial_minor }
}
NOT = { has_travel_point_of_interest = poi_special_buildings_martial }
}
add_travel_point_of_interest = poi_special_buildings_martial
}
else_if = {
limit = {
has_building_with_flag = { flag = travel_point_of_interest_learning }
NOT = { has_travel_point_of_interest = poi_special_buildings_learning }
}
add_travel_point_of_interest = poi_special_buildings_learning
}
else_if = {
limit = {
has_building_with_flag = { flag = travel_point_of_interest_religious }
NOT = { has_travel_point_of_interest = poi_special_buildings_religious }
}
add_travel_point_of_interest = poi_special_buildings_religious
}
else_if = {
limit = {
has_building_with_flag = { flag = travel_point_of_interest_diplomatic }
NOT = { has_travel_point_of_interest = poi_special_buildings_diplomatic }
}
add_travel_point_of_interest = poi_special_buildings_diplomatic
}
else_if = {
limit = {
has_building_with_flag = { flag = travel_point_of_interest_wonder }
NOT = { has_travel_point_of_interest = poi_special_buildings_wonder }
}
add_travel_point_of_interest = poi_special_buildings_wonder
}
else_if = {
limit = {
has_building_with_flag = { flag = travel_point_of_interest_economic }
NOT = { has_travel_point_of_interest = poi_special_buildings_economic }
}
add_travel_point_of_interest = poi_special_buildings_economic
}
else_if = {
limit = {
has_building_with_flag = { flag = travel_point_of_interest_zone_rouge }
NOT = { has_travel_point_of_interest = poi_special_buildings_zone_rouge }
}
add_travel_point_of_interest = poi_special_buildings_zone_rouge
}
# The Builder event chain
if = {
limit = {
has_variable = the_builder_holding
NOT = { has_variable = the_builder_finished }
}
var:the_builder_holding = { save_scope_as = holding_initiator }
#Did the Builder actually finish the holding, or was it cancelled?
scope:holding_initiator = {
if = {
limit = {
is_alive = yes
is_landed_or_landless_administrative = yes
is_available = yes
}
#Then remove the safeguard event that would clean up the Builder
if = {
limit = { has_variable = the_builder_holding_cancelled_safeguard }
remove_variable = the_builder_holding_cancelled_safeguard
}
#And trigger reward event
trigger_event = bp2_yearly.1071
}
}
set_variable = { name = the_builder_finished }
}
# Every time the Builder builds in their holding...
if = {
limit = {
scope:character ?= {
OR = {
has_character_modifier = the_city_builder_modifier
has_character_modifier = the_castle_builder_modifier
has_character_modifier = the_temple_builder_modifier
}
}
}
county = { change_development_progress = minor_development_progress_gain }
if = {
limit = {
scope:character ?= { has_character_modifier = the_city_builder_modifier }
}
scope:character = { add_gold = minor_gold_value }
}
if = {
limit = {
scope:character ?= { has_character_modifier = the_castle_builder_modifier }
}
scope:character = { add_prestige = minor_prestige_gain }
}
if = {
limit = {
scope:character ?= { has_character_modifier = the_temple_builder_modifier }
}
scope:character = { add_piety = minor_piety_gain }
}
}
#end any landless adventurer's construction task contract
if = {
limit = {
any_player = {
any_character_active_contract = {
task_contract_type = laamp_construction_contract
task_contract_employer = scope:character
save_temporary_scope_as = construction_contract
}
}
}
scope:construction_contract = {
if = {
limit = {
task_contract_taker.capital_province.county = root.county
}
complete_task_contract = success_critical
}
else = {
complete_task_contract = failure_standard
}
}
}
# Inspection - Has Holding Modifier
if = {
limit = {
has_province_modifier = inspection_empty_lands_domain_modifier
}
remove_province_modifier = inspection_empty_lands_domain_modifier
add_random_economic_building_effect = yes
}
else_if = {
limit = {
has_province_modifier = inspection_empty_lands_border_modifier
}
remove_province_modifier = inspection_empty_lands_border_modifier
add_random_fortification_building_effect = yes
}
# Admin - Governors get rewards for constructing buildings in governed counties
if = {
limit = {
scope:character = {
OR = {
is_governor = yes
AND = {
min_appointment_tier = tier_county
is_governor_or_admin_count = yes
}
tgp_is_any_minister = yes
}
}
}
scope:character = {
send_interface_message = {
type = msg_governor_duties
title = msg_governor_duties_t
desc = admin_construction_completed_desc
right_icon = root.barony
if = {
limit = {
government_allows = merit
}
change_merit = building_construction_merit_gain_value
if = {
limit = {
tgp_is_any_minister = yes
government_has_flag = government_has_influence
}
change_influence = estate_construction_influence_gain_value
}
}
else = {
change_influence = estate_construction_influence_gain_value
}
if = {
limit = {
building_construction_dynasty_prestige_gain_value > 0
}
dynasty = {
add_dynasty_prestige = building_construction_dynasty_prestige_gain_value
}
}
increase_governance_effect = { VALUE = 4 }
}
}
}
# # Harrying of the North - Pacification Gain
# if = {
# limit = {
# scope:character.culture = culture:norman
# has_global_variable = harrying_of_the_north
# exists = global_var:harrying_of_the_north.story_owner.var:pacification
# }
# global_var:harrying_of_the_north.story_owner = {
# change_variable = {
# name = pacification
# add = 2
# }
# }
# }
# Devaraja consecration event
if = {
limit = {
OR = {
has_building_with_flag = { flag = temple_citadel }
has_building_with_flag = { flag = temple }
has_building_with_flag = { flag = mandala_capital_building }
}
NOT = { has_variable = mandala_consecrated_walls }
scope:character = {
is_available_for_activity_trigger = yes
government_has_flag = government_is_mandala
has_mandala_aspect_trigger = yes
}
}
scope:character = {
trigger_event = devaraja.0005
}
set_variable = {
name = mandala_consecrated_walls
years = 30
}
}
# Brewery counter
brewery_counter_effect = yes
# Coronation Promise
if = {
limit = {
scope:character = root.province_owner.liege
scope:character = { has_character_modifier = coronation_vassal_building_modifier }
}
scope:character = {
send_interface_toast = {
title = coronation_vassal_building_tt
left_icon = root
add_prestige = medium_prestige_gain
}
}
}
}
#####################
# Mandala Government
#####################
scope:character = {
if = {
limit = { government_has_flag = government_is_mandala }
if = {
limit = {
exists = house
house = { has_house_aspiration_parameter = aspect_of_creation }
}
mandala_upgrade_creator_effect = yes
house = {
increment_variable_effect = {
VAR = num_buildings_built
VAL = 1
}
}
}
}
}
# Building Oath
scope:character = {
if = {
limit = {
is_alive = yes
has_variable = stewardship_oath_2_buildings
}
change_variable = {
name = stewardship_oath_2_buildings
add = 1
}
add_to_variable_list = {
name = stewardship_oath_2_building_list
target = root
}
}
}
}
}
# root: The province in which the building was started
# scope:character: The character that paid for the construction, if available
on_building_started = {
effect = {
#save the county holder as the character in case the construction wasn't started through GUI or by the AI
if = {
limit = {
NOT = { exists = scope:character }
}
root.county.holder = {
save_scope_as = character
}
}
if = {
limit = {
OR = {
has_construction_with_flag = temple
has_construction_with_flag = castle
has_construction_with_flag = city
}
any_player = {
has_government = landless_adventurer_government
in_diplomatic_range = scope:character
can_create_task_contract = {
type_name = laamp_construction_contract
employer = scope:character
}
save_temporary_scope_as = player_laamp
}
}
scope:player_laamp = {
create_task_contract = {
task_contract_employer = scope:character
task_contract_type = laamp_construction_contract
task_contract_tier = scope:character.task_contract_tier_value
location = scope:character.capital_province
save_scope_as = new_contract
}
scope:new_contract = {
set_variable = {
name = task_contract_employer
value = scope:character
}
set_variable = {
name = task_contract_destination
value = root
}
}
}
}
if = {
limit = {
has_province_modifier = travel_extra_building_resources_modifier
}
if = {
limit = {
has_variable = extra_building_resources
var:extra_building_resources > 1
}
change_variable = {
name = extra_building_resources
subtract = 1
}
remove_province_modifier = travel_extra_building_resources_modifier
add_province_modifier = travel_extra_building_resources_modifier
}
else = {
remove_province_modifier = travel_extra_building_resources_modifier
remove_variable = extra_building_resources
}
}
}
}
# root: The province in which the building was cancelled
# scope:character: The character that paid for the construction, if available
on_building_cancelled = {
effect = {}
}
# root: The holder of the province doing the razing
# province: The province in which the holding exists
on_holding_razed = {
effect = {
scope:province.county = { set_variable = was_razed }
send_interface_toast = {
title = province_razed_toast_title
left_icon = scope:province.barony
add_gold = {
value = minor_gold_value
add = scope:province.county.development_level
}
scope:province = {
if = {
limit = {
this = county.title_province
county.development_level >= 1
}
county = {
change_development_progress_with_overflow = {
value = scope:province.county.development_level
multiply = 10
multiply = -1
}
}
}
if = {
limit = {
this = county.title_province
county = {
uses_county_fertility = yes
}
}
county = {
change_county_fertility = medium_county_fertility_level_gain
}
}
if = {
limit = {
has_university_building_trigger = yes
}
if = {
limit = {
has_building_or_higher = generic_university
}
remove_building = generic_university
}
else_if = {
limit = {
has_building_or_higher = al_azhar_university
}
remove_building = al_azhar_university
}
else_if = {
limit = {
has_building_or_higher = sankore_university
}
remove_building = sankore_university
}
else_if = {
limit = {
has_building_or_higher = siena_university
}
remove_building = siena_university
}
else_if = {
limit = {
has_building_or_higher = nalanda_university
}
remove_building = nalanda_university
}
else_if = {
limit = {
has_building_or_higher = house_of_wisdom_01
}
remove_building = house_of_wisdom_01
}
else_if = {
limit = {
has_building_or_higher = al_qarawiyyin_university_01
}
remove_building = al_qarawiyyin_university_01
}
else_if = {
limit = {
has_building_or_higher = somapura_university_01
}
remove_building = somapura_university_01
}
else_if = {
limit = {
has_building_or_higher = cluny_abbey_01
}
remove_building = cluny_abbey_01
}
}
}
}
}
}
# root: The holder of the province doing the rebuilding
# province: The province in which the great building exists
on_great_building_rebuilt = {
effect = {
add_piety_experience = {
add = minor_piety_gain
multiply = piety_level
}
hidden_effect = {
if = {
limit = { has_character_modifier = mandala_rise_from_the_ashes_modifier }
remove_character_modifier = mandala_rise_from_the_ashes_modifier
}
if = {
limit = {
NOT = { has_character_flag = devaraja_flag }
has_mandala_aspect_trigger = yes
}
add_character_flag = devaraja_flag
}
}
add_character_modifier = {
modifier = mandala_rise_from_the_ashes_modifier
years = 10
}
#Memory
create_character_memory = { type = rebuilt_mandala_temple_memory }
scope:new_memory ?= {
set_variable = {
name = mandala_capital_rebuilt_location
value = scope:province
}
if = {
limit = { exists = var:mandala_capital_rebuilt_location }
#To prevent 'unused except in loc' errors :catto:
}
}
}
}