Persistent Variables Reference
This page summarizes high-impact persistent variables used by the mod.
It is not a full dump of every variable in the project, but a practical reference for contributors and submodders.
Core profile and progression
Primary source: game/core/definitions.rpy
persistent.playername: Player name.persistent._fae_sayori_nickname: Current Sayori nickname.persistent.fae_intro_complete: Intro completion gate.persistent.fae_disclaimer_seen: Disclaimer acceptance state.persistent.fae_first_visit_date: First visit timestamp.persistent.fae_last_visit_date: Last visit timestamp.persistent.fae_visit_counter: Visit count.persistent.first_run: First-run flow flag (game/core/script-ch30.rpy).
Dialogue databases
Sources: game/dialogs/*.rpy
Each system keeps a dictionary/list in persistent:
persistent._chat_dbpersistent._greet_dbpersistent._farewell_dbpersistent._event_dbpersistent._mood_dbpersistent._flatter_dbpersistent._regret_dbpersistent._fae_fun_facts_dbpersistent._event_list(queued events/topics)
Affection system
Primary source: game/dialogs/script-affection.rpy
persistent.affectionpersistent.affection_day_gainpersistent.affection_reset_datepersistent._affection_daily_bypasses
Related runtime/flow variables used by affection-dependent logic:
persistent._fae_absence_time(computed from last visit)persistent._fae_player_confession_accepted(checked by affection cap logic)
Gifting
Primary source: game/core/new_gifting_core.rpy
persistent.js_gift_log: Gift receive counters by filename.
Common unlock flags from registrations (game/dialogs/gifting-implementation.rpy):
persistent.js_gift_cookies_unlockedpersistent.js_gift_otter_unlocked
Other gift-related state currently used:
persistent.js_gifts_otter
Rooms / backgrounds
Primary source: game/additional/bgs.rpy
persistent._present_room: Current room id.persistent.fae_sunuppersistent.fae_sundownpersistent.fae_moonuppersistent.js_bgs_change_seen(tutorial flag in topic flow, set ingame/dialogs/script-topics.rpy)
Outfits and wearables
Primary source: game/core/new_outfits.rpy
Registry and save-state:
persistent.fae_outfit_listpersistent.fae_wearable_listpersistent.fae_outfit_quitpersistent.fae_custom_outfitspersistent.fae_sayori_auto_outfit_change_enabled
Current selected pieces:
persistent.sayo_hairstylepersistent.sayo_clothespersistent.sayo_accessorypersistent.sayo_eyewearpersistent.sayo_headgearpersistent.sayo_necklace
Minigames
Sources:
game/core/mg_core.rpy(new hub)game/additional/game-handler.rpy(legacy structures)
Main variables:
persistent.mg_registry(new minigame registry metadata)persistent.games_reset_redo(legacy list still present)persistent._fae_game_dbpersistent._fae_mg_list
UI and player preferences
Sources: game/core/screens.rpy, game/core/styles.rpy, game/core/gui.rpy, game/core/preferences.rpy, game/additional/*
persistent.animate_roompersistent._fae_dark_mode_enabledpersistent.use_alt_fontpersistent._fae_weather_settingpersistent._fae_notifs_enabledpersistent._fae_notif_soundspersistent.fae_player_music_allowedpersistent.fae_player_music_explained
Random-chat settings (game/core/utilities.rpy):
persistent._fae_random_chat_freqpersistent.fae_random_chat_ratepersistent.fae_repeat_chat
Music player state
Primary source: game/core/custom_music_player.rpy
persistent.js_music_player_tutorial_seenpersistent.music_playlistpersistent.current_song_indexpersistent.music_is_playing
Contributor note
When adding new persistent fields:
- prefer clear, namespaced names (for example
js_or_fae_conventions used in this codebase), - initialize with
default persistent.<name> = ...when possible, - avoid silently changing semantics of existing keys (migration-safe changes only).