﻿################################################################
# Ruler Reign Marker - scripted effects
################################################################

# Stamps current_date on the title as var:rrm_holder_gain_date.
# Called from on_title_gain (any tier, any transfer type). The
# variable is read in COA_TOOLTIP_HOLDER and the character realm
# tooltip via the rrm_reign_began_block customizable_localization.
# Per-title reign-start timeline, run in TITLE scope. Three PARALLEL slot
# arrays hold the YEAR / MONTH / DAY of each reign start (rrm_gy_/rrm_gm_/
# rrm_gd_, slot 0 = newest). The title-history window renders a row's START
# from slot row_index and its END from slot row_index-1 (= the next-newer
# holder's start) as numeric "D.M.Y", so start and end share one format.
#
# Why three int slots, not the date: CK3 cannot format a date held in a scope
# variable - `.GetValue` on a date var yields a raw day-count, there is no
# date-from-value / Var.GetDate accessor, and no GUI month-name lookup (all
# verified against vanilla). current_year/current_month/current_day ARE storable
# ints, and the GUI can join three Var reads with '.' literals (the same pattern
# as the start-end text), so we translate to numbers ourselves. Exact, no math.
#
# Stored on the TITLE so nomad churn can't overwrite it. Each transfer: refresh
# rrm_holder_gain_date (COA tooltip keeps the full date), shift all three arrays
# up by one, write the new Y/M/D to slot 0, and bump rrm_gain_count (filled
# slots, capped 100). The window only shows an end when row_index <= count.
# Called from on_title_gain AND the migration on_actions.
rrm_stamp_title_timeline_effect = {
	set_variable = {
		name = rrm_holder_gain_date
		value = current_date
	}
	# --- YEAR array (slot 0 = newest; depth 100) ---
	if = { limit = { exists = var:rrm_gy_98 } set_variable = { name = rrm_gy_99 value = var:rrm_gy_98 } }
	if = { limit = { exists = var:rrm_gy_97 } set_variable = { name = rrm_gy_98 value = var:rrm_gy_97 } }
	if = { limit = { exists = var:rrm_gy_96 } set_variable = { name = rrm_gy_97 value = var:rrm_gy_96 } }
	if = { limit = { exists = var:rrm_gy_95 } set_variable = { name = rrm_gy_96 value = var:rrm_gy_95 } }
	if = { limit = { exists = var:rrm_gy_94 } set_variable = { name = rrm_gy_95 value = var:rrm_gy_94 } }
	if = { limit = { exists = var:rrm_gy_93 } set_variable = { name = rrm_gy_94 value = var:rrm_gy_93 } }
	if = { limit = { exists = var:rrm_gy_92 } set_variable = { name = rrm_gy_93 value = var:rrm_gy_92 } }
	if = { limit = { exists = var:rrm_gy_91 } set_variable = { name = rrm_gy_92 value = var:rrm_gy_91 } }
	if = { limit = { exists = var:rrm_gy_90 } set_variable = { name = rrm_gy_91 value = var:rrm_gy_90 } }
	if = { limit = { exists = var:rrm_gy_89 } set_variable = { name = rrm_gy_90 value = var:rrm_gy_89 } }
	if = { limit = { exists = var:rrm_gy_88 } set_variable = { name = rrm_gy_89 value = var:rrm_gy_88 } }
	if = { limit = { exists = var:rrm_gy_87 } set_variable = { name = rrm_gy_88 value = var:rrm_gy_87 } }
	if = { limit = { exists = var:rrm_gy_86 } set_variable = { name = rrm_gy_87 value = var:rrm_gy_86 } }
	if = { limit = { exists = var:rrm_gy_85 } set_variable = { name = rrm_gy_86 value = var:rrm_gy_85 } }
	if = { limit = { exists = var:rrm_gy_84 } set_variable = { name = rrm_gy_85 value = var:rrm_gy_84 } }
	if = { limit = { exists = var:rrm_gy_83 } set_variable = { name = rrm_gy_84 value = var:rrm_gy_83 } }
	if = { limit = { exists = var:rrm_gy_82 } set_variable = { name = rrm_gy_83 value = var:rrm_gy_82 } }
	if = { limit = { exists = var:rrm_gy_81 } set_variable = { name = rrm_gy_82 value = var:rrm_gy_81 } }
	if = { limit = { exists = var:rrm_gy_80 } set_variable = { name = rrm_gy_81 value = var:rrm_gy_80 } }
	if = { limit = { exists = var:rrm_gy_79 } set_variable = { name = rrm_gy_80 value = var:rrm_gy_79 } }
	if = { limit = { exists = var:rrm_gy_78 } set_variable = { name = rrm_gy_79 value = var:rrm_gy_78 } }
	if = { limit = { exists = var:rrm_gy_77 } set_variable = { name = rrm_gy_78 value = var:rrm_gy_77 } }
	if = { limit = { exists = var:rrm_gy_76 } set_variable = { name = rrm_gy_77 value = var:rrm_gy_76 } }
	if = { limit = { exists = var:rrm_gy_75 } set_variable = { name = rrm_gy_76 value = var:rrm_gy_75 } }
	if = { limit = { exists = var:rrm_gy_74 } set_variable = { name = rrm_gy_75 value = var:rrm_gy_74 } }
	if = { limit = { exists = var:rrm_gy_73 } set_variable = { name = rrm_gy_74 value = var:rrm_gy_73 } }
	if = { limit = { exists = var:rrm_gy_72 } set_variable = { name = rrm_gy_73 value = var:rrm_gy_72 } }
	if = { limit = { exists = var:rrm_gy_71 } set_variable = { name = rrm_gy_72 value = var:rrm_gy_71 } }
	if = { limit = { exists = var:rrm_gy_70 } set_variable = { name = rrm_gy_71 value = var:rrm_gy_70 } }
	if = { limit = { exists = var:rrm_gy_69 } set_variable = { name = rrm_gy_70 value = var:rrm_gy_69 } }
	if = { limit = { exists = var:rrm_gy_68 } set_variable = { name = rrm_gy_69 value = var:rrm_gy_68 } }
	if = { limit = { exists = var:rrm_gy_67 } set_variable = { name = rrm_gy_68 value = var:rrm_gy_67 } }
	if = { limit = { exists = var:rrm_gy_66 } set_variable = { name = rrm_gy_67 value = var:rrm_gy_66 } }
	if = { limit = { exists = var:rrm_gy_65 } set_variable = { name = rrm_gy_66 value = var:rrm_gy_65 } }
	if = { limit = { exists = var:rrm_gy_64 } set_variable = { name = rrm_gy_65 value = var:rrm_gy_64 } }
	if = { limit = { exists = var:rrm_gy_63 } set_variable = { name = rrm_gy_64 value = var:rrm_gy_63 } }
	if = { limit = { exists = var:rrm_gy_62 } set_variable = { name = rrm_gy_63 value = var:rrm_gy_62 } }
	if = { limit = { exists = var:rrm_gy_61 } set_variable = { name = rrm_gy_62 value = var:rrm_gy_61 } }
	if = { limit = { exists = var:rrm_gy_60 } set_variable = { name = rrm_gy_61 value = var:rrm_gy_60 } }
	if = { limit = { exists = var:rrm_gy_59 } set_variable = { name = rrm_gy_60 value = var:rrm_gy_59 } }
	if = { limit = { exists = var:rrm_gy_58 } set_variable = { name = rrm_gy_59 value = var:rrm_gy_58 } }
	if = { limit = { exists = var:rrm_gy_57 } set_variable = { name = rrm_gy_58 value = var:rrm_gy_57 } }
	if = { limit = { exists = var:rrm_gy_56 } set_variable = { name = rrm_gy_57 value = var:rrm_gy_56 } }
	if = { limit = { exists = var:rrm_gy_55 } set_variable = { name = rrm_gy_56 value = var:rrm_gy_55 } }
	if = { limit = { exists = var:rrm_gy_54 } set_variable = { name = rrm_gy_55 value = var:rrm_gy_54 } }
	if = { limit = { exists = var:rrm_gy_53 } set_variable = { name = rrm_gy_54 value = var:rrm_gy_53 } }
	if = { limit = { exists = var:rrm_gy_52 } set_variable = { name = rrm_gy_53 value = var:rrm_gy_52 } }
	if = { limit = { exists = var:rrm_gy_51 } set_variable = { name = rrm_gy_52 value = var:rrm_gy_51 } }
	if = { limit = { exists = var:rrm_gy_50 } set_variable = { name = rrm_gy_51 value = var:rrm_gy_50 } }
	if = { limit = { exists = var:rrm_gy_49 } set_variable = { name = rrm_gy_50 value = var:rrm_gy_49 } }
	if = { limit = { exists = var:rrm_gy_48 } set_variable = { name = rrm_gy_49 value = var:rrm_gy_48 } }
	if = { limit = { exists = var:rrm_gy_47 } set_variable = { name = rrm_gy_48 value = var:rrm_gy_47 } }
	if = { limit = { exists = var:rrm_gy_46 } set_variable = { name = rrm_gy_47 value = var:rrm_gy_46 } }
	if = { limit = { exists = var:rrm_gy_45 } set_variable = { name = rrm_gy_46 value = var:rrm_gy_45 } }
	if = { limit = { exists = var:rrm_gy_44 } set_variable = { name = rrm_gy_45 value = var:rrm_gy_44 } }
	if = { limit = { exists = var:rrm_gy_43 } set_variable = { name = rrm_gy_44 value = var:rrm_gy_43 } }
	if = { limit = { exists = var:rrm_gy_42 } set_variable = { name = rrm_gy_43 value = var:rrm_gy_42 } }
	if = { limit = { exists = var:rrm_gy_41 } set_variable = { name = rrm_gy_42 value = var:rrm_gy_41 } }
	if = { limit = { exists = var:rrm_gy_40 } set_variable = { name = rrm_gy_41 value = var:rrm_gy_40 } }
	if = { limit = { exists = var:rrm_gy_39 } set_variable = { name = rrm_gy_40 value = var:rrm_gy_39 } }
	if = { limit = { exists = var:rrm_gy_38 } set_variable = { name = rrm_gy_39 value = var:rrm_gy_38 } }
	if = { limit = { exists = var:rrm_gy_37 } set_variable = { name = rrm_gy_38 value = var:rrm_gy_37 } }
	if = { limit = { exists = var:rrm_gy_36 } set_variable = { name = rrm_gy_37 value = var:rrm_gy_36 } }
	if = { limit = { exists = var:rrm_gy_35 } set_variable = { name = rrm_gy_36 value = var:rrm_gy_35 } }
	if = { limit = { exists = var:rrm_gy_34 } set_variable = { name = rrm_gy_35 value = var:rrm_gy_34 } }
	if = { limit = { exists = var:rrm_gy_33 } set_variable = { name = rrm_gy_34 value = var:rrm_gy_33 } }
	if = { limit = { exists = var:rrm_gy_32 } set_variable = { name = rrm_gy_33 value = var:rrm_gy_32 } }
	if = { limit = { exists = var:rrm_gy_31 } set_variable = { name = rrm_gy_32 value = var:rrm_gy_31 } }
	if = { limit = { exists = var:rrm_gy_30 } set_variable = { name = rrm_gy_31 value = var:rrm_gy_30 } }
	if = { limit = { exists = var:rrm_gy_29 } set_variable = { name = rrm_gy_30 value = var:rrm_gy_29 } }
	if = { limit = { exists = var:rrm_gy_28 } set_variable = { name = rrm_gy_29 value = var:rrm_gy_28 } }
	if = { limit = { exists = var:rrm_gy_27 } set_variable = { name = rrm_gy_28 value = var:rrm_gy_27 } }
	if = { limit = { exists = var:rrm_gy_26 } set_variable = { name = rrm_gy_27 value = var:rrm_gy_26 } }
	if = { limit = { exists = var:rrm_gy_25 } set_variable = { name = rrm_gy_26 value = var:rrm_gy_25 } }
	if = { limit = { exists = var:rrm_gy_24 } set_variable = { name = rrm_gy_25 value = var:rrm_gy_24 } }
	if = { limit = { exists = var:rrm_gy_23 } set_variable = { name = rrm_gy_24 value = var:rrm_gy_23 } }
	if = { limit = { exists = var:rrm_gy_22 } set_variable = { name = rrm_gy_23 value = var:rrm_gy_22 } }
	if = { limit = { exists = var:rrm_gy_21 } set_variable = { name = rrm_gy_22 value = var:rrm_gy_21 } }
	if = { limit = { exists = var:rrm_gy_20 } set_variable = { name = rrm_gy_21 value = var:rrm_gy_20 } }
	if = { limit = { exists = var:rrm_gy_19 } set_variable = { name = rrm_gy_20 value = var:rrm_gy_19 } }
	if = { limit = { exists = var:rrm_gy_18 } set_variable = { name = rrm_gy_19 value = var:rrm_gy_18 } }
	if = { limit = { exists = var:rrm_gy_17 } set_variable = { name = rrm_gy_18 value = var:rrm_gy_17 } }
	if = { limit = { exists = var:rrm_gy_16 } set_variable = { name = rrm_gy_17 value = var:rrm_gy_16 } }
	if = { limit = { exists = var:rrm_gy_15 } set_variable = { name = rrm_gy_16 value = var:rrm_gy_15 } }
	if = { limit = { exists = var:rrm_gy_14 } set_variable = { name = rrm_gy_15 value = var:rrm_gy_14 } }
	if = { limit = { exists = var:rrm_gy_13 } set_variable = { name = rrm_gy_14 value = var:rrm_gy_13 } }
	if = { limit = { exists = var:rrm_gy_12 } set_variable = { name = rrm_gy_13 value = var:rrm_gy_12 } }
	if = { limit = { exists = var:rrm_gy_11 } set_variable = { name = rrm_gy_12 value = var:rrm_gy_11 } }
	if = { limit = { exists = var:rrm_gy_10 } set_variable = { name = rrm_gy_11 value = var:rrm_gy_10 } }
	if = { limit = { exists = var:rrm_gy_9 } set_variable = { name = rrm_gy_10 value = var:rrm_gy_9 } }
	if = { limit = { exists = var:rrm_gy_8 } set_variable = { name = rrm_gy_9 value = var:rrm_gy_8 } }
	if = { limit = { exists = var:rrm_gy_7 } set_variable = { name = rrm_gy_8 value = var:rrm_gy_7 } }
	if = { limit = { exists = var:rrm_gy_6 } set_variable = { name = rrm_gy_7 value = var:rrm_gy_6 } }
	if = { limit = { exists = var:rrm_gy_5 } set_variable = { name = rrm_gy_6 value = var:rrm_gy_5 } }
	if = { limit = { exists = var:rrm_gy_4 } set_variable = { name = rrm_gy_5 value = var:rrm_gy_4 } }
	if = { limit = { exists = var:rrm_gy_3 } set_variable = { name = rrm_gy_4 value = var:rrm_gy_3 } }
	if = { limit = { exists = var:rrm_gy_2 } set_variable = { name = rrm_gy_3 value = var:rrm_gy_2 } }
	if = { limit = { exists = var:rrm_gy_1 } set_variable = { name = rrm_gy_2 value = var:rrm_gy_1 } }
	if = { limit = { exists = var:rrm_gy_0 } set_variable = { name = rrm_gy_1 value = var:rrm_gy_0 } }
	set_variable = { name = rrm_gy_0 value = current_year }
	# --- MONTH array (slot 0 = newest; depth 100) ---
	if = { limit = { exists = var:rrm_gm_98 } set_variable = { name = rrm_gm_99 value = var:rrm_gm_98 } }
	if = { limit = { exists = var:rrm_gm_97 } set_variable = { name = rrm_gm_98 value = var:rrm_gm_97 } }
	if = { limit = { exists = var:rrm_gm_96 } set_variable = { name = rrm_gm_97 value = var:rrm_gm_96 } }
	if = { limit = { exists = var:rrm_gm_95 } set_variable = { name = rrm_gm_96 value = var:rrm_gm_95 } }
	if = { limit = { exists = var:rrm_gm_94 } set_variable = { name = rrm_gm_95 value = var:rrm_gm_94 } }
	if = { limit = { exists = var:rrm_gm_93 } set_variable = { name = rrm_gm_94 value = var:rrm_gm_93 } }
	if = { limit = { exists = var:rrm_gm_92 } set_variable = { name = rrm_gm_93 value = var:rrm_gm_92 } }
	if = { limit = { exists = var:rrm_gm_91 } set_variable = { name = rrm_gm_92 value = var:rrm_gm_91 } }
	if = { limit = { exists = var:rrm_gm_90 } set_variable = { name = rrm_gm_91 value = var:rrm_gm_90 } }
	if = { limit = { exists = var:rrm_gm_89 } set_variable = { name = rrm_gm_90 value = var:rrm_gm_89 } }
	if = { limit = { exists = var:rrm_gm_88 } set_variable = { name = rrm_gm_89 value = var:rrm_gm_88 } }
	if = { limit = { exists = var:rrm_gm_87 } set_variable = { name = rrm_gm_88 value = var:rrm_gm_87 } }
	if = { limit = { exists = var:rrm_gm_86 } set_variable = { name = rrm_gm_87 value = var:rrm_gm_86 } }
	if = { limit = { exists = var:rrm_gm_85 } set_variable = { name = rrm_gm_86 value = var:rrm_gm_85 } }
	if = { limit = { exists = var:rrm_gm_84 } set_variable = { name = rrm_gm_85 value = var:rrm_gm_84 } }
	if = { limit = { exists = var:rrm_gm_83 } set_variable = { name = rrm_gm_84 value = var:rrm_gm_83 } }
	if = { limit = { exists = var:rrm_gm_82 } set_variable = { name = rrm_gm_83 value = var:rrm_gm_82 } }
	if = { limit = { exists = var:rrm_gm_81 } set_variable = { name = rrm_gm_82 value = var:rrm_gm_81 } }
	if = { limit = { exists = var:rrm_gm_80 } set_variable = { name = rrm_gm_81 value = var:rrm_gm_80 } }
	if = { limit = { exists = var:rrm_gm_79 } set_variable = { name = rrm_gm_80 value = var:rrm_gm_79 } }
	if = { limit = { exists = var:rrm_gm_78 } set_variable = { name = rrm_gm_79 value = var:rrm_gm_78 } }
	if = { limit = { exists = var:rrm_gm_77 } set_variable = { name = rrm_gm_78 value = var:rrm_gm_77 } }
	if = { limit = { exists = var:rrm_gm_76 } set_variable = { name = rrm_gm_77 value = var:rrm_gm_76 } }
	if = { limit = { exists = var:rrm_gm_75 } set_variable = { name = rrm_gm_76 value = var:rrm_gm_75 } }
	if = { limit = { exists = var:rrm_gm_74 } set_variable = { name = rrm_gm_75 value = var:rrm_gm_74 } }
	if = { limit = { exists = var:rrm_gm_73 } set_variable = { name = rrm_gm_74 value = var:rrm_gm_73 } }
	if = { limit = { exists = var:rrm_gm_72 } set_variable = { name = rrm_gm_73 value = var:rrm_gm_72 } }
	if = { limit = { exists = var:rrm_gm_71 } set_variable = { name = rrm_gm_72 value = var:rrm_gm_71 } }
	if = { limit = { exists = var:rrm_gm_70 } set_variable = { name = rrm_gm_71 value = var:rrm_gm_70 } }
	if = { limit = { exists = var:rrm_gm_69 } set_variable = { name = rrm_gm_70 value = var:rrm_gm_69 } }
	if = { limit = { exists = var:rrm_gm_68 } set_variable = { name = rrm_gm_69 value = var:rrm_gm_68 } }
	if = { limit = { exists = var:rrm_gm_67 } set_variable = { name = rrm_gm_68 value = var:rrm_gm_67 } }
	if = { limit = { exists = var:rrm_gm_66 } set_variable = { name = rrm_gm_67 value = var:rrm_gm_66 } }
	if = { limit = { exists = var:rrm_gm_65 } set_variable = { name = rrm_gm_66 value = var:rrm_gm_65 } }
	if = { limit = { exists = var:rrm_gm_64 } set_variable = { name = rrm_gm_65 value = var:rrm_gm_64 } }
	if = { limit = { exists = var:rrm_gm_63 } set_variable = { name = rrm_gm_64 value = var:rrm_gm_63 } }
	if = { limit = { exists = var:rrm_gm_62 } set_variable = { name = rrm_gm_63 value = var:rrm_gm_62 } }
	if = { limit = { exists = var:rrm_gm_61 } set_variable = { name = rrm_gm_62 value = var:rrm_gm_61 } }
	if = { limit = { exists = var:rrm_gm_60 } set_variable = { name = rrm_gm_61 value = var:rrm_gm_60 } }
	if = { limit = { exists = var:rrm_gm_59 } set_variable = { name = rrm_gm_60 value = var:rrm_gm_59 } }
	if = { limit = { exists = var:rrm_gm_58 } set_variable = { name = rrm_gm_59 value = var:rrm_gm_58 } }
	if = { limit = { exists = var:rrm_gm_57 } set_variable = { name = rrm_gm_58 value = var:rrm_gm_57 } }
	if = { limit = { exists = var:rrm_gm_56 } set_variable = { name = rrm_gm_57 value = var:rrm_gm_56 } }
	if = { limit = { exists = var:rrm_gm_55 } set_variable = { name = rrm_gm_56 value = var:rrm_gm_55 } }
	if = { limit = { exists = var:rrm_gm_54 } set_variable = { name = rrm_gm_55 value = var:rrm_gm_54 } }
	if = { limit = { exists = var:rrm_gm_53 } set_variable = { name = rrm_gm_54 value = var:rrm_gm_53 } }
	if = { limit = { exists = var:rrm_gm_52 } set_variable = { name = rrm_gm_53 value = var:rrm_gm_52 } }
	if = { limit = { exists = var:rrm_gm_51 } set_variable = { name = rrm_gm_52 value = var:rrm_gm_51 } }
	if = { limit = { exists = var:rrm_gm_50 } set_variable = { name = rrm_gm_51 value = var:rrm_gm_50 } }
	if = { limit = { exists = var:rrm_gm_49 } set_variable = { name = rrm_gm_50 value = var:rrm_gm_49 } }
	if = { limit = { exists = var:rrm_gm_48 } set_variable = { name = rrm_gm_49 value = var:rrm_gm_48 } }
	if = { limit = { exists = var:rrm_gm_47 } set_variable = { name = rrm_gm_48 value = var:rrm_gm_47 } }
	if = { limit = { exists = var:rrm_gm_46 } set_variable = { name = rrm_gm_47 value = var:rrm_gm_46 } }
	if = { limit = { exists = var:rrm_gm_45 } set_variable = { name = rrm_gm_46 value = var:rrm_gm_45 } }
	if = { limit = { exists = var:rrm_gm_44 } set_variable = { name = rrm_gm_45 value = var:rrm_gm_44 } }
	if = { limit = { exists = var:rrm_gm_43 } set_variable = { name = rrm_gm_44 value = var:rrm_gm_43 } }
	if = { limit = { exists = var:rrm_gm_42 } set_variable = { name = rrm_gm_43 value = var:rrm_gm_42 } }
	if = { limit = { exists = var:rrm_gm_41 } set_variable = { name = rrm_gm_42 value = var:rrm_gm_41 } }
	if = { limit = { exists = var:rrm_gm_40 } set_variable = { name = rrm_gm_41 value = var:rrm_gm_40 } }
	if = { limit = { exists = var:rrm_gm_39 } set_variable = { name = rrm_gm_40 value = var:rrm_gm_39 } }
	if = { limit = { exists = var:rrm_gm_38 } set_variable = { name = rrm_gm_39 value = var:rrm_gm_38 } }
	if = { limit = { exists = var:rrm_gm_37 } set_variable = { name = rrm_gm_38 value = var:rrm_gm_37 } }
	if = { limit = { exists = var:rrm_gm_36 } set_variable = { name = rrm_gm_37 value = var:rrm_gm_36 } }
	if = { limit = { exists = var:rrm_gm_35 } set_variable = { name = rrm_gm_36 value = var:rrm_gm_35 } }
	if = { limit = { exists = var:rrm_gm_34 } set_variable = { name = rrm_gm_35 value = var:rrm_gm_34 } }
	if = { limit = { exists = var:rrm_gm_33 } set_variable = { name = rrm_gm_34 value = var:rrm_gm_33 } }
	if = { limit = { exists = var:rrm_gm_32 } set_variable = { name = rrm_gm_33 value = var:rrm_gm_32 } }
	if = { limit = { exists = var:rrm_gm_31 } set_variable = { name = rrm_gm_32 value = var:rrm_gm_31 } }
	if = { limit = { exists = var:rrm_gm_30 } set_variable = { name = rrm_gm_31 value = var:rrm_gm_30 } }
	if = { limit = { exists = var:rrm_gm_29 } set_variable = { name = rrm_gm_30 value = var:rrm_gm_29 } }
	if = { limit = { exists = var:rrm_gm_28 } set_variable = { name = rrm_gm_29 value = var:rrm_gm_28 } }
	if = { limit = { exists = var:rrm_gm_27 } set_variable = { name = rrm_gm_28 value = var:rrm_gm_27 } }
	if = { limit = { exists = var:rrm_gm_26 } set_variable = { name = rrm_gm_27 value = var:rrm_gm_26 } }
	if = { limit = { exists = var:rrm_gm_25 } set_variable = { name = rrm_gm_26 value = var:rrm_gm_25 } }
	if = { limit = { exists = var:rrm_gm_24 } set_variable = { name = rrm_gm_25 value = var:rrm_gm_24 } }
	if = { limit = { exists = var:rrm_gm_23 } set_variable = { name = rrm_gm_24 value = var:rrm_gm_23 } }
	if = { limit = { exists = var:rrm_gm_22 } set_variable = { name = rrm_gm_23 value = var:rrm_gm_22 } }
	if = { limit = { exists = var:rrm_gm_21 } set_variable = { name = rrm_gm_22 value = var:rrm_gm_21 } }
	if = { limit = { exists = var:rrm_gm_20 } set_variable = { name = rrm_gm_21 value = var:rrm_gm_20 } }
	if = { limit = { exists = var:rrm_gm_19 } set_variable = { name = rrm_gm_20 value = var:rrm_gm_19 } }
	if = { limit = { exists = var:rrm_gm_18 } set_variable = { name = rrm_gm_19 value = var:rrm_gm_18 } }
	if = { limit = { exists = var:rrm_gm_17 } set_variable = { name = rrm_gm_18 value = var:rrm_gm_17 } }
	if = { limit = { exists = var:rrm_gm_16 } set_variable = { name = rrm_gm_17 value = var:rrm_gm_16 } }
	if = { limit = { exists = var:rrm_gm_15 } set_variable = { name = rrm_gm_16 value = var:rrm_gm_15 } }
	if = { limit = { exists = var:rrm_gm_14 } set_variable = { name = rrm_gm_15 value = var:rrm_gm_14 } }
	if = { limit = { exists = var:rrm_gm_13 } set_variable = { name = rrm_gm_14 value = var:rrm_gm_13 } }
	if = { limit = { exists = var:rrm_gm_12 } set_variable = { name = rrm_gm_13 value = var:rrm_gm_12 } }
	if = { limit = { exists = var:rrm_gm_11 } set_variable = { name = rrm_gm_12 value = var:rrm_gm_11 } }
	if = { limit = { exists = var:rrm_gm_10 } set_variable = { name = rrm_gm_11 value = var:rrm_gm_10 } }
	if = { limit = { exists = var:rrm_gm_9 } set_variable = { name = rrm_gm_10 value = var:rrm_gm_9 } }
	if = { limit = { exists = var:rrm_gm_8 } set_variable = { name = rrm_gm_9 value = var:rrm_gm_8 } }
	if = { limit = { exists = var:rrm_gm_7 } set_variable = { name = rrm_gm_8 value = var:rrm_gm_7 } }
	if = { limit = { exists = var:rrm_gm_6 } set_variable = { name = rrm_gm_7 value = var:rrm_gm_6 } }
	if = { limit = { exists = var:rrm_gm_5 } set_variable = { name = rrm_gm_6 value = var:rrm_gm_5 } }
	if = { limit = { exists = var:rrm_gm_4 } set_variable = { name = rrm_gm_5 value = var:rrm_gm_4 } }
	if = { limit = { exists = var:rrm_gm_3 } set_variable = { name = rrm_gm_4 value = var:rrm_gm_3 } }
	if = { limit = { exists = var:rrm_gm_2 } set_variable = { name = rrm_gm_3 value = var:rrm_gm_2 } }
	if = { limit = { exists = var:rrm_gm_1 } set_variable = { name = rrm_gm_2 value = var:rrm_gm_1 } }
	if = { limit = { exists = var:rrm_gm_0 } set_variable = { name = rrm_gm_1 value = var:rrm_gm_0 } }
	set_variable = { name = rrm_gm_0 value = current_month }
	# --- DAY array (slot 0 = newest; depth 100) ---
	if = { limit = { exists = var:rrm_gd_98 } set_variable = { name = rrm_gd_99 value = var:rrm_gd_98 } }
	if = { limit = { exists = var:rrm_gd_97 } set_variable = { name = rrm_gd_98 value = var:rrm_gd_97 } }
	if = { limit = { exists = var:rrm_gd_96 } set_variable = { name = rrm_gd_97 value = var:rrm_gd_96 } }
	if = { limit = { exists = var:rrm_gd_95 } set_variable = { name = rrm_gd_96 value = var:rrm_gd_95 } }
	if = { limit = { exists = var:rrm_gd_94 } set_variable = { name = rrm_gd_95 value = var:rrm_gd_94 } }
	if = { limit = { exists = var:rrm_gd_93 } set_variable = { name = rrm_gd_94 value = var:rrm_gd_93 } }
	if = { limit = { exists = var:rrm_gd_92 } set_variable = { name = rrm_gd_93 value = var:rrm_gd_92 } }
	if = { limit = { exists = var:rrm_gd_91 } set_variable = { name = rrm_gd_92 value = var:rrm_gd_91 } }
	if = { limit = { exists = var:rrm_gd_90 } set_variable = { name = rrm_gd_91 value = var:rrm_gd_90 } }
	if = { limit = { exists = var:rrm_gd_89 } set_variable = { name = rrm_gd_90 value = var:rrm_gd_89 } }
	if = { limit = { exists = var:rrm_gd_88 } set_variable = { name = rrm_gd_89 value = var:rrm_gd_88 } }
	if = { limit = { exists = var:rrm_gd_87 } set_variable = { name = rrm_gd_88 value = var:rrm_gd_87 } }
	if = { limit = { exists = var:rrm_gd_86 } set_variable = { name = rrm_gd_87 value = var:rrm_gd_86 } }
	if = { limit = { exists = var:rrm_gd_85 } set_variable = { name = rrm_gd_86 value = var:rrm_gd_85 } }
	if = { limit = { exists = var:rrm_gd_84 } set_variable = { name = rrm_gd_85 value = var:rrm_gd_84 } }
	if = { limit = { exists = var:rrm_gd_83 } set_variable = { name = rrm_gd_84 value = var:rrm_gd_83 } }
	if = { limit = { exists = var:rrm_gd_82 } set_variable = { name = rrm_gd_83 value = var:rrm_gd_82 } }
	if = { limit = { exists = var:rrm_gd_81 } set_variable = { name = rrm_gd_82 value = var:rrm_gd_81 } }
	if = { limit = { exists = var:rrm_gd_80 } set_variable = { name = rrm_gd_81 value = var:rrm_gd_80 } }
	if = { limit = { exists = var:rrm_gd_79 } set_variable = { name = rrm_gd_80 value = var:rrm_gd_79 } }
	if = { limit = { exists = var:rrm_gd_78 } set_variable = { name = rrm_gd_79 value = var:rrm_gd_78 } }
	if = { limit = { exists = var:rrm_gd_77 } set_variable = { name = rrm_gd_78 value = var:rrm_gd_77 } }
	if = { limit = { exists = var:rrm_gd_76 } set_variable = { name = rrm_gd_77 value = var:rrm_gd_76 } }
	if = { limit = { exists = var:rrm_gd_75 } set_variable = { name = rrm_gd_76 value = var:rrm_gd_75 } }
	if = { limit = { exists = var:rrm_gd_74 } set_variable = { name = rrm_gd_75 value = var:rrm_gd_74 } }
	if = { limit = { exists = var:rrm_gd_73 } set_variable = { name = rrm_gd_74 value = var:rrm_gd_73 } }
	if = { limit = { exists = var:rrm_gd_72 } set_variable = { name = rrm_gd_73 value = var:rrm_gd_72 } }
	if = { limit = { exists = var:rrm_gd_71 } set_variable = { name = rrm_gd_72 value = var:rrm_gd_71 } }
	if = { limit = { exists = var:rrm_gd_70 } set_variable = { name = rrm_gd_71 value = var:rrm_gd_70 } }
	if = { limit = { exists = var:rrm_gd_69 } set_variable = { name = rrm_gd_70 value = var:rrm_gd_69 } }
	if = { limit = { exists = var:rrm_gd_68 } set_variable = { name = rrm_gd_69 value = var:rrm_gd_68 } }
	if = { limit = { exists = var:rrm_gd_67 } set_variable = { name = rrm_gd_68 value = var:rrm_gd_67 } }
	if = { limit = { exists = var:rrm_gd_66 } set_variable = { name = rrm_gd_67 value = var:rrm_gd_66 } }
	if = { limit = { exists = var:rrm_gd_65 } set_variable = { name = rrm_gd_66 value = var:rrm_gd_65 } }
	if = { limit = { exists = var:rrm_gd_64 } set_variable = { name = rrm_gd_65 value = var:rrm_gd_64 } }
	if = { limit = { exists = var:rrm_gd_63 } set_variable = { name = rrm_gd_64 value = var:rrm_gd_63 } }
	if = { limit = { exists = var:rrm_gd_62 } set_variable = { name = rrm_gd_63 value = var:rrm_gd_62 } }
	if = { limit = { exists = var:rrm_gd_61 } set_variable = { name = rrm_gd_62 value = var:rrm_gd_61 } }
	if = { limit = { exists = var:rrm_gd_60 } set_variable = { name = rrm_gd_61 value = var:rrm_gd_60 } }
	if = { limit = { exists = var:rrm_gd_59 } set_variable = { name = rrm_gd_60 value = var:rrm_gd_59 } }
	if = { limit = { exists = var:rrm_gd_58 } set_variable = { name = rrm_gd_59 value = var:rrm_gd_58 } }
	if = { limit = { exists = var:rrm_gd_57 } set_variable = { name = rrm_gd_58 value = var:rrm_gd_57 } }
	if = { limit = { exists = var:rrm_gd_56 } set_variable = { name = rrm_gd_57 value = var:rrm_gd_56 } }
	if = { limit = { exists = var:rrm_gd_55 } set_variable = { name = rrm_gd_56 value = var:rrm_gd_55 } }
	if = { limit = { exists = var:rrm_gd_54 } set_variable = { name = rrm_gd_55 value = var:rrm_gd_54 } }
	if = { limit = { exists = var:rrm_gd_53 } set_variable = { name = rrm_gd_54 value = var:rrm_gd_53 } }
	if = { limit = { exists = var:rrm_gd_52 } set_variable = { name = rrm_gd_53 value = var:rrm_gd_52 } }
	if = { limit = { exists = var:rrm_gd_51 } set_variable = { name = rrm_gd_52 value = var:rrm_gd_51 } }
	if = { limit = { exists = var:rrm_gd_50 } set_variable = { name = rrm_gd_51 value = var:rrm_gd_50 } }
	if = { limit = { exists = var:rrm_gd_49 } set_variable = { name = rrm_gd_50 value = var:rrm_gd_49 } }
	if = { limit = { exists = var:rrm_gd_48 } set_variable = { name = rrm_gd_49 value = var:rrm_gd_48 } }
	if = { limit = { exists = var:rrm_gd_47 } set_variable = { name = rrm_gd_48 value = var:rrm_gd_47 } }
	if = { limit = { exists = var:rrm_gd_46 } set_variable = { name = rrm_gd_47 value = var:rrm_gd_46 } }
	if = { limit = { exists = var:rrm_gd_45 } set_variable = { name = rrm_gd_46 value = var:rrm_gd_45 } }
	if = { limit = { exists = var:rrm_gd_44 } set_variable = { name = rrm_gd_45 value = var:rrm_gd_44 } }
	if = { limit = { exists = var:rrm_gd_43 } set_variable = { name = rrm_gd_44 value = var:rrm_gd_43 } }
	if = { limit = { exists = var:rrm_gd_42 } set_variable = { name = rrm_gd_43 value = var:rrm_gd_42 } }
	if = { limit = { exists = var:rrm_gd_41 } set_variable = { name = rrm_gd_42 value = var:rrm_gd_41 } }
	if = { limit = { exists = var:rrm_gd_40 } set_variable = { name = rrm_gd_41 value = var:rrm_gd_40 } }
	if = { limit = { exists = var:rrm_gd_39 } set_variable = { name = rrm_gd_40 value = var:rrm_gd_39 } }
	if = { limit = { exists = var:rrm_gd_38 } set_variable = { name = rrm_gd_39 value = var:rrm_gd_38 } }
	if = { limit = { exists = var:rrm_gd_37 } set_variable = { name = rrm_gd_38 value = var:rrm_gd_37 } }
	if = { limit = { exists = var:rrm_gd_36 } set_variable = { name = rrm_gd_37 value = var:rrm_gd_36 } }
	if = { limit = { exists = var:rrm_gd_35 } set_variable = { name = rrm_gd_36 value = var:rrm_gd_35 } }
	if = { limit = { exists = var:rrm_gd_34 } set_variable = { name = rrm_gd_35 value = var:rrm_gd_34 } }
	if = { limit = { exists = var:rrm_gd_33 } set_variable = { name = rrm_gd_34 value = var:rrm_gd_33 } }
	if = { limit = { exists = var:rrm_gd_32 } set_variable = { name = rrm_gd_33 value = var:rrm_gd_32 } }
	if = { limit = { exists = var:rrm_gd_31 } set_variable = { name = rrm_gd_32 value = var:rrm_gd_31 } }
	if = { limit = { exists = var:rrm_gd_30 } set_variable = { name = rrm_gd_31 value = var:rrm_gd_30 } }
	if = { limit = { exists = var:rrm_gd_29 } set_variable = { name = rrm_gd_30 value = var:rrm_gd_29 } }
	if = { limit = { exists = var:rrm_gd_28 } set_variable = { name = rrm_gd_29 value = var:rrm_gd_28 } }
	if = { limit = { exists = var:rrm_gd_27 } set_variable = { name = rrm_gd_28 value = var:rrm_gd_27 } }
	if = { limit = { exists = var:rrm_gd_26 } set_variable = { name = rrm_gd_27 value = var:rrm_gd_26 } }
	if = { limit = { exists = var:rrm_gd_25 } set_variable = { name = rrm_gd_26 value = var:rrm_gd_25 } }
	if = { limit = { exists = var:rrm_gd_24 } set_variable = { name = rrm_gd_25 value = var:rrm_gd_24 } }
	if = { limit = { exists = var:rrm_gd_23 } set_variable = { name = rrm_gd_24 value = var:rrm_gd_23 } }
	if = { limit = { exists = var:rrm_gd_22 } set_variable = { name = rrm_gd_23 value = var:rrm_gd_22 } }
	if = { limit = { exists = var:rrm_gd_21 } set_variable = { name = rrm_gd_22 value = var:rrm_gd_21 } }
	if = { limit = { exists = var:rrm_gd_20 } set_variable = { name = rrm_gd_21 value = var:rrm_gd_20 } }
	if = { limit = { exists = var:rrm_gd_19 } set_variable = { name = rrm_gd_20 value = var:rrm_gd_19 } }
	if = { limit = { exists = var:rrm_gd_18 } set_variable = { name = rrm_gd_19 value = var:rrm_gd_18 } }
	if = { limit = { exists = var:rrm_gd_17 } set_variable = { name = rrm_gd_18 value = var:rrm_gd_17 } }
	if = { limit = { exists = var:rrm_gd_16 } set_variable = { name = rrm_gd_17 value = var:rrm_gd_16 } }
	if = { limit = { exists = var:rrm_gd_15 } set_variable = { name = rrm_gd_16 value = var:rrm_gd_15 } }
	if = { limit = { exists = var:rrm_gd_14 } set_variable = { name = rrm_gd_15 value = var:rrm_gd_14 } }
	if = { limit = { exists = var:rrm_gd_13 } set_variable = { name = rrm_gd_14 value = var:rrm_gd_13 } }
	if = { limit = { exists = var:rrm_gd_12 } set_variable = { name = rrm_gd_13 value = var:rrm_gd_12 } }
	if = { limit = { exists = var:rrm_gd_11 } set_variable = { name = rrm_gd_12 value = var:rrm_gd_11 } }
	if = { limit = { exists = var:rrm_gd_10 } set_variable = { name = rrm_gd_11 value = var:rrm_gd_10 } }
	if = { limit = { exists = var:rrm_gd_9 } set_variable = { name = rrm_gd_10 value = var:rrm_gd_9 } }
	if = { limit = { exists = var:rrm_gd_8 } set_variable = { name = rrm_gd_9 value = var:rrm_gd_8 } }
	if = { limit = { exists = var:rrm_gd_7 } set_variable = { name = rrm_gd_8 value = var:rrm_gd_7 } }
	if = { limit = { exists = var:rrm_gd_6 } set_variable = { name = rrm_gd_7 value = var:rrm_gd_6 } }
	if = { limit = { exists = var:rrm_gd_5 } set_variable = { name = rrm_gd_6 value = var:rrm_gd_5 } }
	if = { limit = { exists = var:rrm_gd_4 } set_variable = { name = rrm_gd_5 value = var:rrm_gd_4 } }
	if = { limit = { exists = var:rrm_gd_3 } set_variable = { name = rrm_gd_4 value = var:rrm_gd_3 } }
	if = { limit = { exists = var:rrm_gd_2 } set_variable = { name = rrm_gd_3 value = var:rrm_gd_2 } }
	if = { limit = { exists = var:rrm_gd_1 } set_variable = { name = rrm_gd_2 value = var:rrm_gd_1 } }
	if = { limit = { exists = var:rrm_gd_0 } set_variable = { name = rrm_gd_1 value = var:rrm_gd_0 } }
	set_variable = { name = rrm_gd_0 value = current_day }
	# --- filled-slot count (shared by all three arrays, capped 100) ---
	if = {
		limit = { NOT = { exists = var:rrm_gain_count } }
		set_variable = { name = rrm_gain_count value = 0 }
	}
	if = {
		limit = { var:rrm_gain_count < 100 }
		change_variable = { name = rrm_gain_count add = 1 }
	}
}

# on_title_gain entry point. root = new holder, scope:title = the title.
# Covers all NORMAL transfers (inheritance, election, normal conquest, grant).
rrm_stamp_holder_gain_date_effect = {
	scope:title = {
		rrm_stamp_title_timeline_effect = yes
	}
}

# Title-destroyed entry point. on_title_destroyed gives root = last holder and
# scope:landed_title = the title being destroyed (note: landed_title, NOT title).
# Stamping the destruction date as the newest slot makes the timeline include the
# destruction boundary, so the otherwise-slotless "Destroyed" history row stops
# offsetting every older row's end onto its own start. Title variables persist
# after destruction (the history window still reads the gain slots on a destroyed
# title), so this slot survives to be displayed. No double-stamp risk: destruction
# is not a gain, so on_title_gain does not also fire for it.
rrm_stamp_destruction_effect = {
	scope:landed_title = {
		rrm_stamp_title_timeline_effect = yes
	}
}

# Nomad-migration entry point. Migrations move titles via
# create_title_and_vassal_change, which does NOT fire on_title_gain - so the
# normal hook never sees them and nomadic titles otherwise record no timeline.
# The migration on_actions give: root = migrating ruler, scope:target_title =
# the (higher-tier) migration target, scope:domain = the county/duchy that
# becomes the migrant's personal domain (plus its de jure counties when it is a
# duchy). Stamp each DISTINCT title the migrant now holds. Hooked from ONLY
# on_migration_travel_end (NOT war_end too) so a war migration - which fires
# both - stamps once, not twice (see rrm_on_actions.txt).
rrm_stamp_migration_effect = {
	if = {
		limit = { exists = scope:target_title }
		scope:target_title = {
			rrm_stamp_title_timeline_effect = yes
		}
	}
	if = {
		limit = {
			exists = scope:domain
			OR = {
				NOT = { exists = scope:target_title }
				NOT = { scope:domain = scope:target_title }
			}
		}
		scope:domain = {
			rrm_stamp_title_timeline_effect = yes
			if = {
				limit = { tier = tier_duchy }
				every_de_jure_county = {
					rrm_stamp_title_timeline_effect = yes
				}
			}
		}
	}
}

# Fresh-game bootstrap. Runs once at game start (after lobby) to
# stamp current_date on every landed title that has a holder but
# no gain-date variable yet. New games at bookmark date = correct
# "beginning on" for everyone alive at the start.
rrm_bootstrap_holder_gain_dates_effect = {
	every_living_character = {
		limit = { is_landed = yes }
		every_held_title = {
			if = {
				limit = { NOT = { exists = var:rrm_holder_gain_date } }
				set_variable = {
					name = rrm_holder_gain_date
					value = current_date
				}
			}
		}
	}
}

# Mid-game install catch-up. Per-character variant called from
# on_yearly_playable on each character's birthday. Walks only the
# calling character's held titles, so the work is distributed
# across the year. Skips titles already stamped.
rrm_bootstrap_held_titles_effect = {
	every_held_title = {
		if = {
			limit = { NOT = { exists = var:rrm_holder_gain_date } }
			set_variable = {
				name = rrm_holder_gain_date
				value = current_date
			}
		}
	}
}
