﻿# 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:
			}
		}
	}
}
