﻿# Rota Fortunae — hooks. Vanilla on_actions are only extended (on_actions = { ... }), never replaced.

on_game_start_after_lobby = {
	on_actions = { rf_on_game_start }
}
rf_on_game_start = {
	effect = { rf_game_start_effect = yes }
}

yearly_global_pulse = {
	on_actions = { rf_yearly_global }
}
rf_yearly_global = {
	effect = {
		# Mod added to a game already in progress: initialise every realm once.
		if = {
			limit = { NOT = { exists = global_var:rf_initialized } }
			rf_game_start_effect = yes
		}
		else = {
			rf_refresh_great_powers_effect = yes
			rf_refresh_threat_lists_effect = yes
		}
	}
}

yearly_playable_pulse = {
	on_actions = { rf_yearly_ruler }
}
rf_yearly_ruler = {
	effect = {
		if = {
			limit = {
				rf_is_realm_trigger = yes
				exists = global_var:rf_initialized
			}
			rf_yearly_realm_effect = yes
		}
		else_if = {
			limit = { rf_has_phase_modifier_trigger = yes }
			rf_remove_phase_modifiers_effect = yes
		}
	}
}

on_title_gain = {
	on_actions = { rf_title_gain }
}
rf_title_gain = {
	effect = {
		rf_on_conquest_effect = yes
		# A new holder of a followed realm: shock of succession, phase modifiers move on.
		if = {
			limit = {
				exists = scope:title.var:rf_phase
				scope:title = { tier >= tier_duchy }
			}
			if = {
				limit = { scope:transfer_type = flag:inheritance }
				scope:title = { rf_fortune_event_effect = { AMOUNT = -3 } }
				if = {
					limit = { is_adult = no }
					scope:title = { rf_fortune_event_effect = { AMOUNT = -3 } }
				}
			}
			else_if = {
				limit = {
					OR = {
						scope:transfer_type = flag:usurped
						scope:transfer_type = flag:faction_demand
					}
				}
				scope:title = { rf_fortune_event_effect = { AMOUNT = -6 } }
			}
			trigger_event = { id = rf_wheel.100 days = 1 }
		}
	}
}

on_primary_title_change = {
	on_actions = { rf_primary_title_change }
}
rf_primary_title_change = {
	effect = {
		if = {
			limit = {
				exists = scope:previous_title.var:rf_fortune
				NOT = { exists = primary_title.var:rf_fortune }
				scope:previous_title = { holder ?= root }
			}
			scope:previous_title = { save_scope_as = rf_old_title }
			primary_title = { save_scope_as = rf_new_title }
			rf_move_state_effect = yes
		}
	}
}

on_war_started = {
	on_actions = { rf_war_started }
}
rf_war_started = {
	effect = {
		if = {
			limit = { rf_coalitions_enabled_trigger = yes }
			rf_coalition_mutual_defense_effect = yes
		}
	}
}

on_war_won_attacker = {
	on_actions = { rf_war_won_attacker }
}
rf_war_won_attacker = {
	effect = {
		scope:attacker.primary_title ?= { rf_fortune_event_effect = { AMOUNT = 3 } }
		scope:defender.primary_title ?= { rf_fortune_event_effect = { AMOUNT = -4 } }
	}
}

on_war_won_defender = {
	on_actions = { rf_war_won_defender }
}
rf_war_won_defender = {
	effect = {
		scope:defender.primary_title ?= { rf_fortune_event_effect = { AMOUNT = 3 } }
		scope:attacker.primary_title ?= { rf_fortune_event_effect = { AMOUNT = -4 } }
	}
}
