﻿# Override of vanilla story_cycle_pet_dog: shows the mod's 14 custom portraits via var:bap_dog_type.
# Generated by tools/make_pet_overrides.py - vanilla logic preserved.

story_cycle_pet_dog = {
	visible = yes

	icon = {
		trigger = { var:bap_dog_type ?= flag:hound }
		reference = "gfx/interface/icons/pets/bap_dog_hound.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:mastiff }
		reference = "gfx/interface/icons/pets/bap_dog_mastiff.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:sighthound }
		reference = "gfx/interface/icons/pets/bap_dog_sighthound.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:spaniel }
		reference = "gfx/interface/icons/pets/bap_dog_spaniel.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:wolfhound }
		reference = "gfx/interface/icons/pets/bap_dog_wolfhound.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:alaunt }
		reference = "gfx/interface/icons/pets/bap_dog_alaunt.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:terrier }
		reference = "gfx/interface/icons/pets/bap_dog_terrier.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:deerhound }
		reference = "gfx/interface/icons/pets/bap_dog_deerhound.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:boarhound }
		reference = "gfx/interface/icons/pets/bap_dog_boarhound.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:shepherd }
		reference = "gfx/interface/icons/pets/bap_dog_shepherd.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:lapdog }
		reference = "gfx/interface/icons/pets/bap_dog_lapdog.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:siberian }
		reference = "gfx/interface/icons/pets/bap_dog_siberian.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:turnspit }
		reference = "gfx/interface/icons/pets/bap_dog_turnspit.dds"
	}
	icon = {
		trigger = { var:bap_dog_type ?= flag:waterdog }
		reference = "gfx/interface/icons/pets/bap_dog_waterdog.dds"
	}
	icon = {
		trigger = { always = yes }
		reference = "gfx/interface/icons/pets/bap_dog_hound.dds"
	}
	background = {
		reference = "gfx/interface/illustrations/event_scenes/ep2_dog_kennels.dds"
	}
	
	visualization = {
		custom_string_key = "bap_story_cycle_dog_info"
		modifiers = {
			dog_story_modifier
			dog_story_walking_modifier
			feast_well_fed_dog_modifier
			feral_pet_modifier
			dog_story_scenthound_modifier
			dog_story_beasthound_modifier
			adventurous_pet_modifier
			rat_hunting_dog_modifier
		}
		decisions = {
			bap_abandon_pet_decision
			pet_dog_decision
		}
	}
	
	on_setup = {
		if = {
			limit = { NOT = { exists = var:bap_dog_type } }
			random_list = {
				10 = { set_variable = { name = bap_dog_type value = flag:hound } }
				10 = { set_variable = { name = bap_dog_type value = flag:mastiff } }
				10 = { set_variable = { name = bap_dog_type value = flag:sighthound } }
				10 = { set_variable = { name = bap_dog_type value = flag:spaniel } }
				10 = { set_variable = { name = bap_dog_type value = flag:wolfhound } }
				10 = { set_variable = { name = bap_dog_type value = flag:alaunt } }
				10 = { set_variable = { name = bap_dog_type value = flag:terrier } }
				10 = { set_variable = { name = bap_dog_type value = flag:deerhound } }
				10 = { set_variable = { name = bap_dog_type value = flag:boarhound } }
				10 = { set_variable = { name = bap_dog_type value = flag:shepherd } }
				10 = { set_variable = { name = bap_dog_type value = flag:lapdog } }
				10 = { set_variable = { name = bap_dog_type value = flag:siberian } }
				10 = { set_variable = { name = bap_dog_type value = flag:turnspit } }
				10 = { set_variable = { name = bap_dog_type value = flag:waterdog } }
			}
		}
		if = {
			limit = {
				NOT = { exists = story_owner.var:dog_gender }
			}
			assign_dog_gender_effect = { GENDER = random }
		}
		if = {
			limit = {
				NOT = { exists = story_owner.var:dog_fur_color }
			}
			assign_dog_fur_color_effect = { COLOR = random }
		}
		if = {
			limit = {
				NOT = { exists = story_owner.var:dog_eye_color }
			}
			assign_dog_eye_color_effect = { COLOR = random }
		}
		set_variable = {
			name = dog_age_variable
			value = 0
		}


		story_owner = {
			add_character_modifier = {
				modifier = dog_story_modifier
			}
			bap_add_dog_pet_upkeep_effect = yes
			add_character_flag = had_dog_story
		}
		
		# Give the dog a name!
		if = {
			limit = {
				story_owner = {
					NOT = { has_character_flag = is_naming_dog }
				}
				NOT = { exists = story_owner.var:story_cycle_dog_name }
			}
			story_owner = {
				add_character_flag = is_naming_dog
				trigger_event = {
					id = pet_animal.1001
					days = 2
				}
			}
		}
	}

	on_end = {
		story_owner = {
			if = {
				limit = {
					is_alive = yes
					has_character_flag = dog_is_dying
					NOT = { has_character_flag = bap_pet_story_abandoning }
				}
				bap_prepare_pet_memorial_effect = yes
			}
			bap_remove_dog_pet_upkeep_effect = yes
			remove_dog_story_modifiers_effect = yes
			remove_dog_name_effect = yes
		}
	}

	on_owner_death = {
		# Save info about the dog on primary heir for funeral events
		if = {
			limit = {
				exists = story_owner.player_heir
			}
			story_owner.player_heir = {
				set_variable = {
					name = dead_dog_owner
					years = 5
					value = root.story_owner
				}
				set_variable = {
					name = parent_dog_name
					years = 5
					value = root.var:story_cycle_dog_name
				}
				set_variable = {
					name = parent_dog_age
					years = 5
					value = root.var:dog_age_variable
				}
				set_variable = {
					name = parent_dog_fur_color
					years = 5
					value = root.var:dog_fur_color
				}
				set_variable = {
					name = parent_dog_eye_color
					years = 5
					value = root.var:dog_eye_color
				}
				set_variable = {
					name = parent_dog_gender
					years = 5
					value = root.var:dog_gender
				}
			}
		}
		scope:story = { end_story = yes }
	}

	#Age the dog
	effect_group = {
		days = 365

		trigger = {
			exists = var:dog_age_variable
		}

		triggered_effect = {
			trigger = { always = yes }
			effect = {
				change_variable = {
					name = dog_age_variable
					add = 1
				}
			}
		}
	}

	# Keep the visible monthly upkeep matched to the current game rule.
	effect_group = {
		days = 30
		chance = 100

		trigger = {
			story_owner = { is_alive = yes }
		}

		triggered_effect = {
			trigger = { always = yes }
			effect = {
				story_owner = { bap_add_dog_pet_upkeep_effect = yes }
			}
		}
	}

	# The dog dies :(
	effect_group = {
		days = { 5000 7000 }
		chance = 100
	
		triggered_effect = {
			trigger = {
				exists = story_owner.var:story_cycle_dog_name
			}
			effect = {
				story_owner = {
					add_character_flag = {
						flag = dog_is_dying
					}
					trigger_event = pet_animal.1199
				}
			}
		}
	}

	# Something happens - random events
	effect_group = {
		days = { 730 1200 }
		chance = 30

		trigger = {
			has_game_rule = bap_pet_events_rare
			exists = story_owner.var:story_cycle_dog_name
			story_owner = {
				NOT = {
					has_character_flag = dog_is_dying
				}
			}
		}

		first_valid = {
			triggered_effect = {
				trigger = { always = yes }
				effect = {
					story_owner = {
						trigger_event = {
							on_action = ongoing_dog_events
						}
					}
				}
			}
		}
	}

	effect_group = {
		days = { 365 600 }
		chance = 30

		trigger = {
			has_game_rule = bap_pet_events_normal
			exists = story_owner.var:story_cycle_dog_name
			story_owner = {
				NOT = {
					has_character_flag = dog_is_dying
				}
			}
		}

		first_valid = {
			triggered_effect = {
				trigger = { always = yes }
				effect = {
					story_owner = {
						trigger_event = {
							on_action = ongoing_dog_events
						}
					}
				}
			}
		}
	}

	effect_group = {
		days = { 180 300 }
		chance = 30

		trigger = {
			has_game_rule = bap_pet_events_frequent
			exists = story_owner.var:story_cycle_dog_name
			story_owner = {
				NOT = {
					has_character_flag = dog_is_dying
				}
			}
		}

		first_valid = {
			triggered_effect = {
				trigger = { always = yes }
				effect = {
					story_owner = {
						trigger_event = {
							on_action = ongoing_dog_events
						}
					}
				}
			}
		}
	}
}
