﻿ep_clear_transfer = {
    remove_global_variable = ep_text_source
    remove_global_variable = ep_text_target
    remove_global_variable = ep_text_stored
    remove_global_variable = ep_text_is_name
}
ep_prepare_reply_transfer = {
    ep_ensure_archivist = yes
    global_var:votc_latest_letter = { ep_bind_archive_title = yes }
    set_global_variable = { name = ep_text_target value = global_var:ep_active_person }
    set_global_variable = { name = ep_text_source value = global_var:votc_latest_letter }
    if = {
        limit = { global_var:ep_active_record = { var:ep_stage = 1 } }
        set_global_variable = ep_text_is_name
    }
    else = { remove_global_variable = ep_text_is_name }
    ep_save_transfer_scopes = yes
}
ep_save_transfer_scopes = {
    clear_saved_scope = ep_transfer_name_source
    clear_saved_scope = ep_transfer_summary_source
    if = {
        limit = { exists = global_var:ep_text_is_name }
        global_var:ep_text_source = { save_scope_as = ep_transfer_name_source }
    }
    else = { global_var:ep_text_source = { save_scope_as = ep_transfer_summary_source } }
}
# Flags are native serialized string scopes. GUI MakeScopeFlag transports
# the exact artifact description; no text input or living storage character.
ep_store_transfer_slot = {
    if = {
        limit = { exists = global_var:ep_text_is_name }
        set_global_variable = { name = ep_text_name_$SLOT$ value = scope:ep_text_value }
        set_global_variable = { name = ep_text_stored value = global_var:ep_text_name_$SLOT$ }
    }
    else = {
        set_global_variable = { name = ep_text_summary_$SLOT$ value = scope:ep_text_value }
        set_global_variable = { name = ep_text_stored value = global_var:ep_text_summary_$SLOT$ }
    }
}
ep_upgrade_begin_slot = {
    ep_ensure_archivist = yes
    if = { limit = { exists = global_var:ep_name_$SLOT$ } global_var:ep_name_$SLOT$ = { ep_bind_archive_title = yes } }
    global_var:ep_summary_$SLOT$ = { ep_bind_archive_title = yes }
    set_global_variable = { name = ep_migration_slot value = $SLOT$ }
    set_global_variable = { name = ep_text_target value = global_var:ep_person_$SLOT$ }
    set_global_variable = ep_migrating
    set_global_variable = ep_transfer_open
    if = {
        limit = { exists = global_var:ep_name_$SLOT$ }
        set_global_variable = { name = ep_text_source value = global_var:ep_name_$SLOT$ }
        set_global_variable = ep_text_is_name
    }
    else = {
        set_global_variable = { name = ep_text_source value = global_var:ep_summary_$SLOT$ }
        remove_global_variable = ep_text_is_name
    }
    trigger_event = ep_legacy.3
}
ep_upgrade_finish_slot = {
    if = {
        limit = { exists = global_var:ep_text_is_name }
        set_global_variable = ep_native_name_ready_$SLOT$
        destroy_artifact = global_var:ep_name_$SLOT$
        remove_global_variable = ep_name_$SLOT$
        set_global_variable = { name = ep_text_source value = global_var:ep_summary_$SLOT$ }
        remove_global_variable = ep_text_is_name
        trigger_event = ep_legacy.3
    }
    else = {
        set_global_variable = ep_native_summary_ready_$SLOT$
        global_var:ep_text_target = {
            # A dead character caches nickname text. Refresh only our own key;
            # historical and other-mod nickname keys remain untouched.
            if = { limit = { has_nickname = ep_legacy_$SLOT$_prefix } remove_nickname = yes give_nickname = ep_legacy_$SLOT$_prefix }
            else_if = { limit = { has_nickname = ep_legacy_$SLOT$_suffix } remove_nickname = yes give_nickname = ep_legacy_$SLOT$_suffix }
            else_if = { limit = { has_nickname = ep_legacy_$SLOT$_prefix_bad } remove_nickname = yes give_nickname = ep_legacy_$SLOT$_prefix_bad }
            else_if = { limit = { has_nickname = ep_legacy_$SLOT$_suffix_bad } remove_nickname = yes give_nickname = ep_legacy_$SLOT$_suffix_bad }
        }
        destroy_artifact = global_var:ep_summary_$SLOT$
        remove_global_variable = ep_summary_$SLOT$
        debug_log = "EP:MIGRATED_NATIVE/;/[GetGlobalVariable('ep_migration_slot').GetValue]/;/[GetGlobalVariable('ep_text_target').Char.GetID]"
        remove_global_variable = ep_migrating
        remove_global_variable = ep_migration_slot
        ep_clear_transfer = yes
    }
}
