R O M A N T A S Y
Your adventures, remembered. Your bond, earned.
A relationship framework for Skyrim SE/AE
Version 3.0.1 • Native dashboard, no UI framework required
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
What's New in 3.0Your adventures, remembered. Your bond, earned.
A relationship framework for Skyrim SE/AE
Version 3.0.1 • Native dashboard, no UI framework required
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
- A native dashboard - Romantasy now draws its own dashboard and pop-ups directly inside Skyrim. Meridian UI, Prisma UI and Media Keys Fix are no longer needed. It opens fast and keeps the familiar full-screen ledger, dossiers and settings.
- New Bond, rebuilt - give any eligible follower their own likes and dislikes from a full-screen page, with a searchable list of every deed. Their personality is saved as a small profile file, and you can edit, reset or remove the bond at any time.
- Your 2.x bonds come with you - player-created bonds from earlier versions migrate automatically, keeping their likes, dislikes and points.
- Full controller support - navigate everything with a gamepad, with on-screen button hints. Open the dashboard with the Romantasy power from your Favorites.
- Any language - names in Russian, Greek, Chinese, Japanese, Korean, Polish, Czech and other languages display correctly, and are capitalised in titles just like English names. (3.0.1)
- Clear feedback - a short message confirms when a bond is added, edited, reset or removed.
- Simple profiles for follower authors - support a follower with one small text file. No romance factions, scripts, globals or Romantasy master are needed, and dialogue can read the bond directly.
- Nothing breaks - existing follower integrations, dialogue conditions and the Papyrus API keep working as before.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Author's NoteI wanted romance in Skyrim to grow out of the way you actually play, not out of a menu. Romantasy watches the adventure you are already having and quietly turns it into a bond, one dungeon, one quest, one bad decision at a time. It does not replace your follower mods and it does not write anyone's personality. It only keeps the ledger.
Followers can arrive with a personality written by their author, or you can create one yourself for any follower who does not have one, right from the dashboard. Either way, the adventure is what moves the relationship.
If you are a mod author and you build something on top of it, please tell me. I would genuinely love to play it.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OverviewA standalone, save-safe relationship system that turns the way you play into a deepening bond with each of your followers.
Six tiers, one built-in dashboard, zero micromanagement.
Romantasy tracks your actions across 58 categories of play (combat, exploration, crafting, crime, guild work, vampire and werewolf life, and more) and converts them into relationship points for every follower it manages. Each follower has individual likes and dislikes. Doing what she loves raises the bond. Doing what she hates wounds it.
The bond climbs through six tiers: Stranger, Acquaintance, Friend, Confidant, Lover, and finally Spouse. Follower mods can hang dialogue, scenes, voiced reactions, quest beats, or marriage hooks off any of them.
Romantasy slots underneath your existing follower mods without taking them over. It does not replace the vanilla follower system, Horde, NFF, AFT, EFF, custom follower controllers, or the vanilla marriage system. It is the scoreboard; the follower's author is still the writer.
Release note: the plugin is ESL-flagged, the SKSE DLL is digitally signed, earned points save and restore with your save game, and personalities are kept in small profile files you can back up.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FeaturesThe Ledger
- 58 tracked activities - dungeons cleared, quests and questlines finished, locks picked, necks bitten, potions mixed, murders committed, and much more
- Weighted points - finishing a guild questline moves the bond far more than picking one pocket; every activity has its own weight
- Individual personalities - author-supplied and player-created followers can each like, dislike, or ignore every activity
- Shared adventure only - automatic activity points are awarded or removed only while that follower is actively following you; someone waiting at home does not react
- Independent bonds - spawned or duplicated followers that share the same base NPC share one personality but keep separate names and point totals
- Event-driven tracking - the plugin reacts to the game's own statistic events in native code; there are no Papyrus polling loops
- Save-safe persistence - earned points and recent changes are stored in each save's SKSE co-save, so every save keeps its own story
The dashboard is built into Romantasy and drawn natively inside Skyrim. There is nothing extra to install.
- Your Company - see every bond with current points, tier, role, progress, and following or away status
- Follower dossiers - open any follower to see likes, dislikes, milestones, and the five most recent point changes
- New Bond - a full-screen page for adding a follower who is travelling with you and has no author support. Choose the companion, then stamp each deed Like, Neutral or Dislike. Deeds are grouped into seven categories, a search box finds any deed as you type, and a live preview shows the personality before you seal it.
- Protected author profiles - personalities supplied by follower authors are sealed and clearly identified; players and other integrations cannot overwrite them
- Editable player profiles - Edit personality, Reset bond, or Remove bond for any bond you created yourself; reset and remove ask for confirmation first
- Confirmation messages - a short notice tells you when a bond was added, edited, reset or removed, or why it could not be
- Away-follower control - choose whether companions who are not currently following remain visible in the ledger
- Milestone tracker - always know how far the current bond is from the next tier
- Every language - names and text in non-Latin alphabets display correctly, using Windows' own fonts for letters the bundled fonts lack
- Resolution independent - the interface scales proportionally across resolutions and aspect ratios, including ultrawide
- Full navigation - the D-pad moves between every row, button, setting and deed stamp; A selects; B goes back or closes
- Scrolling - the left stick scrolls the company list, dossiers and preference lists
- Button hints - on-screen hints appear when you pick up the controller and hide when you return to keyboard and mouse
- Opening - turn on Open with Favorites Menu in Settings, then cast the Romantasy power from your Favorites
Notifications
- Tier pop-ups - a short ceremonial pop-up appears when a bond crosses into a new tier, up or down, showing how many points the moment was worth
- Two moods, two scores - deepened bonds get a warm fanfare, wounded bonds get a somber piece; each plays with a gentle fade
- Combat aware - tier notifications are held until the fight ends, so the moment is never buried mid-battle
- Unobtrusive - pop-ups do not pause the game, close themselves after 20 seconds, and close instantly with Enter, A or B; gain and loss pop-ups can each be switched off in Settings
- Hotkey mode - Left Ctrl + R toggles the dashboard (default)
- Favorites mode - enable one setting and Romantasy grants you a favorited lesser power that opens the dashboard when cast; ideal for controller players. This replaces the hotkey until you switch it off.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The Six Tiers- Stranger - 0 points
- Acquaintance - 500 points
- Friend - 1,000 points
- Confidant - 1,500 points
- Lover - 2,000 points
- Spouse - 2,500 points
Important: Spouse is a Romantasy relationship tier. It does not automatically perform Skyrim's vanilla marriage ceremony, and adding a bond does not give a follower new voiced dialogue.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Requirements- Skyrim Special Edition 1.5.97 or a supported Anniversary Edition runtime
- SKSE64 matching your Skyrim runtime
- Address Library for SKSE Plugins matching your Skyrim runtime
Installation
- Install SKSE64 and Address Library with your mod manager.
- Install Romantasy with your mod manager (MO2, Vortex, etc.). Keep the bundled fonts, scripts, sounds and licenses.
- Activate CS_Romantasy.esp in your load order.
- If a follower offers Romantasy support as a separate download, install it alongside the follower.
- Launch the game and go adventuring.
There is no MCM, no INI to edit, and no quest for the player to start.
Upgrading from 2.x
- Install 3.0.1 over your previous version. Your saves keep their points.
- Romantasy no longer needs Meridian UI. Keep Meridian only if another mod you use requires it.
- Bonds you created yourself in 2.x migrate automatically the first time each follower is loaded, keeping likes, dislikes and points.
- If you opened Romantasy with LB + X, switch on Open with Favorites Menu in Settings and use the Romantasy power instead.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How to UseControls
- Left Ctrl + R - open or close the dashboard in hotkey mode
- Romantasy power - in Favorites mode, cast the granted lesser power to open the dashboard
- Esc or B - close a confirmation, leave the New Bond page, or close the dashboard
- Mouse, keyboard or controller - all three work everywhere in the dashboard
Author-Supported Followers
Followers with author support appear automatically. Their personality card is marked Author-defined personality and is read-only. The follower author controls those likes and dislikes, along with any dialogue, reactions, scenes, or romance pacing connected to the bond.
Creating a New Bond
Bring a follower without author support along with you, open the dashboard and choose New bond. Pick the companion, stamp the deeds she likes and dislikes, and choose Begin bond.
- The personality is saved to SKSE/Plugins/Romantasy/PlayerProfiles and applies immediately. Under MO2, new profile files normally appear in Overwrite.
- Personalities are shared by every save that uses those files. Earned points stay separate in each save.
- Edit personality changes likes and dislikes at any time.
- Reset bond returns the selected follower to 0 points in the current save.
- Remove bond takes the follower out of the ledger for every save that uses your profiles. You can add her again later with New bond.
Settings
- Open with Favorites Menu (switch between hotkey and Favorites-power opening)
- "Romance Deepened" pop-ups on or off
- "Romance Wounded" pop-ups on or off
- Show or hide away companions in the company list
- Password-protected developer tools for controlled point and deed testing on actively following companions
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
How It WorksWatching the adventure - Romantasy listens to the same statistics screen the vanilla game already keeps. Clear a dungeon, finish a quest, pick a pocket, read a skill book: when the game records it, Romantasy asks each active follower whether she cares. If she likes it, she awards points. If she hates it, she takes some away. If she has no opinion, nothing happens.
Personalities and points - a follower's personality lives in a small profile file, either supplied by her author or written by you through New bond. Her earned points live in your save. Change a personality and every save that uses it follows; play a different save and its points are its own.
Profile ownership - personalities supplied by follower authors are authoritative and sealed. Player-created personalities belong to the player and can be edited or removed. Older integrations keep their own protection, so one system never silently overwrites another.
Dialogue bridge - follower dialogue can check whether a follower is managed, her current tier, and her exact points with a standard Creation Kit condition. Older faction-based conditions keep working.
Per-reference identity - dynamic followers are tracked by their actor reference, not only their base NPC. Multiple followers created from the same base keep separate point totals, and player-assigned display names appear correctly in the dashboard.
Persistence - points and recent changes are stored in the SKSE co-save using standard serialization. Removing Romantasy forgets its own relationship ledger without taking over or rewriting the follower's original systems.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
For Mod AuthorsRomantasy is a modding resource. You remain in full control of your follower's dialogue, scenes, personality, pacing, and marriage content. Romantasy supplies the centralized ledger, relationship tiers, exact point queries, notifications, dashboard, and event bridge.
New in 3.0: support a follower with a single profile file. Your follower plugin does not need Romantasy as a master, and needs no romance factions, scripts or globals. Players without Romantasy keep your follower exactly as it is.
The download includes guides for profiles, follower conversion, dialogue conditions and the Papyrus API, plus an example profile and a profile checker.
Path 1: A Profile File (recommended)
Ship one TOML file per follower in SKSE/Plugins/Romantasy/Profiles/:
schema_version = 1
[npc]
plugin = "ExampleFollower.esp"
form_id = "0x000800"
[romance]
starting_level = "Stranger"
likes = ["Quests Completed", "Dungeons Cleared"]
dislikes = ["Murders"]- plugin is the plugin that defines the follower's NPC record
- form_id is that NPC base record's plugin-local ID (for example 05000800 becomes 0x000800; an ESL's local ID is at most 0xFFF), not the placed reference
- starting_level is Stranger through Spouse and defaults to Stranger; a save's existing points always take precedence
- likes and dislikes accept the statistic labels or their ROM_* identifiers from the list below
- Profiles load when the game starts; restart Skyrim after editing one by hand
- Mistakes are reported in Romantasy.log, and tools/romantasy-profile-check.exe checks a folder of profiles without starting the game
Path 2: Dialogue Conditions
Use the standard GetGraphVariableInt condition, Run On Subject, with one of these reserved names:
- Romantasy_Registered - 1 when Romantasy manages this follower, otherwise 0
- Romantasy_Level - the current tier, 1 (Stranger) through 6 (Spouse), or 0 when unmanaged
- Romantasy_Points - exact earned points, or -1 when unmanaged
GetGraphVariableInt Romantasy_Registered == 1
GetGraphVariableInt Romantasy_Level >= 3Always include the Registered guard, especially with <, <= or != tests. Enter the names without quotation marks. When converting old ROM_RomanceLevel rank checks, add one to the value: the new levels count from 1, the old ranks from 0. Exact point thresholds are unchanged.Path 3: The Papyrus Bridge (authored beats)
To award or remove points at a specific moment (a kiss, a betrayal, a quest beat), call Romantasy from a fragment. Redistribute Source\Scripts\Romantasy.psc with your optional integration source so it compiles against the native bridge. The API is unchanged from 2.x and remains capability version 6.
Scriptname Romantasy Hidden
Int Function GetApiVersion() Native Global
Bool Function ModifyPoints(Actor akFollower, Int aiPoints, String asReason = "", Bool abShowLevelUp = True) Native Global
Bool Function ApplyPreference(Actor akFollower, String asStatName, Int aiDelta = 1, Bool abShowLevelUp = True) Native Global
Bool Function ClearPreferences(Actor akFollower) Native Global
Bool Function SetPreference(Actor akFollower, String asStatName, Int aiDirection) Native Global
Int Function GetPreference(Actor akFollower, String asStatName) Native Global
Bool Function SetPreferencesManual(Actor akFollower, Bool abManual = True) Native Global
Bool Function IsPreferencesManual(Actor akFollower) Native Global
Bool Function RegisterAuthorFollower(Actor akFollower, String[] asStatNames, Int[] aiDirections, Int aiStartingLevel = 1, GlobalVariable akRelationshipRankMirror = None) Native Global
Bool Function RegisterAuthorFollowerPointsMirror(Actor akFollower, GlobalVariable akRelationshipPointsMirror) Native Global
Int Function GetPoints(Actor akFollower) Native Global
Int Function GetLevel(Actor akFollower) Native Global
String Function GetLevelName(Actor akFollower) Native Global- ModifyPoints - apply an exact authored point change with a reason shown in the recent-changes list
- ApplyPreference - apply the follower's configured like or dislike for a statistic; returns False when she has no opinion
- GetPoints / GetLevel / GetLevelName - read the current relationship state at any time; GetLevel returns 1 through 6, or 0 when the actor is not managed
- ClearPreferences / SetPreference / GetPreference - manage player-created or externally controlled profiles; protected profiles reject writes
- SetPreferencesManual / IsPreferencesManual - coordinate ownership with an external profile editor
Romantasy.ModifyPoints(akSpeaker, 50, "Kissed under the aurora")Pass abShowLevelUp = False to apply a change without the tier pop-up or level-change event.Path 4: Voiced Reactions via ModEvents
Romantasy broadcasts two SKSE ModEvents so your follower can speak when the bond moves:
- Romantasy_OnLevelChanged - fired when a follower rises into a new tier; numArg is the new level (1 through 6) and sender is her base NPC
- Romantasy_OnPreference - fired when a tracked activity changes her points without crossing a tier; strArg is the statistic label, numArg is the point change, and sender is her base NPC
Event OnRomPreference(String eventName, String statLabel, Float delta, Form sender)
If sender != MyFollowerBaseReturn EndIf
Actor me = GetActorReference()
If meIf delta > 0me.Say(LikeTopic)Elseme.Say(DislikeTopic)EndIf EndIf
EndEventPath 5: Older IntegrationsEverything built for 2.x keeps working, and saved points and tiers are untouched:
- Optional runtime registration - a compatibility plugin that calls RegisterAuthorFollower (and, from API 6, RegisterAuthorFollowerPointsMirror) from OnInit and OnPlayerLoadGame still works, including the optional rank and points GlobalVariable mirrors
- Faction tags - followers that master Romantasy and carry ROM_RomanceLevel plus ROM_* preference factions remain supported
- Faction conditions - GetFactionRank ROM_RomanceLevel (ranks 0 through 5) and the exact-points proxy GetFactionRank ROM_RomancePoints (-1 when unmanaged) keep answering
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The Full Preference ListEvery preference below maps to one vanilla statistic, grouped as they appear on the New Bond page. The number is its point weight: each time the statistic increases by one, an active follower gains that many points if she likes it or loses that many if she hates it. Profiles accept either the label or the ROM_* identifier.
Spoiler
Exploration and Growth- Locations Discovered (ROM_LocationsDiscovered) - 2 points
- Dungeons Cleared (ROM_DungeonsCleared) - 2 points
- Days Passed (ROM_DaysPassed) - 2 points per in-game day spent together
- Standing Stones Found (ROM_StandingStonesFound) - 2 points
- Chests Looted (ROM_ChestsLooted) - 1 point
- Skill Increases (ROM_SkillIncreases) - 2 points
- Skill Books Read (ROM_SkillBooksRead) - 1 point
- Barters (ROM_Barters) - 1 point
- Persuasions (ROM_Persuasions) - 1 point
- Bribes (ROM_Bribes) - 1 point
- Intimidations (ROM_Intimidations) - 1 point
- Diseases Contracted (ROM_DiseasesContracted) - 1 point
- Days as a Vampire (ROM_DaysVampire) - 2 points
- Days as a Werewolf (ROM_DaysWerewolf) - 2 points
- Necks Bitten (ROM_NecksBitten) - 2 points
- Vampirism Cures (ROM_VampirismCures) - 2 points
- Werewolf Transformations (ROM_WerewolfTransformations) - 5 points
- Mauls (ROM_Mauls) - 2 points
- Quests Completed (ROM_QuestsCompleted) - 3 points
- Misc Objectives Completed (ROM_MiscObjectivesCompleted) - 3 points
- Main Quests Completed (ROM_MainQuestsCompleted) - 5 points
- Side Quests Completed (ROM_SideQuestsCompleted) - 5 points
- The Companions Quests Completed (ROM_CompanionsCompleted) - 10 points
- College of Winterhold Quests Completed (ROM_CollegeCompleted) - 10 points
- Thieves' Guild Quests Completed (ROM_ThievesCompleted) - 10 points
- The Dark Brotherhood Quests Completed (ROM_DarkBrotherhoodCompleted) - 10 points
- Civil War Quests Completed (ROM_CivilWarCompleted) - 10 points
- Daedric Quests Completed (ROM_DaedricCompleted) - 10 points
- Dawnguard Quests Completed (ROM_DawnguardCompleted) - 10 points
- Dragonborn Quests Completed (ROM_DragonbornCompleted) - 10 points
- Questlines Completed (ROM_QuestlinesCompleted) - 20 points per full questline finished
- People Killed (ROM_PeopleKilled) - 1 point
- Animals Killed (ROM_AnimalsKilled) - 1 point
- Creatures Killed (ROM_CreaturesKilled) - 1 point
- Undead Killed (ROM_UndeadKilled) - 1 point
- Daedra Killed (ROM_DaedraKilled) - 1 point
- Automatons Killed (ROM_AutomatonsKilled) - 1 point
- Critical Strikes (ROM_CriticalStrikes) - 1 point
- Sneak Attacks (ROM_SneakAttacks) - 1 point
- Backstabs (ROM_Backstabs) - 1 point
- Weapons Disarmed (ROM_WeaponsDisarmed) - 1 point
- Bunnies Slaughtered (ROM_BunniesSlaughtered) - 1 point (yes, really)
- Spells Learned (ROM_SpellsLearned) - 2 points
- Dragon Souls Collected (ROM_DragonSoulsCollected) - 2 points
- Shouts Learned (ROM_ShoutsLearned) - 2 points
- Souls Trapped (ROM_SoulsTrapped) - 1 point
- Magic Items Made (ROM_MagicItemsMade) - 1 point
- Weapons Made (ROM_WeaponsMade) - 1 point
- Armor Made (ROM_ArmorMade) - 1 point
- Potions Mixed (ROM_PotionsMixed) - 1 point
- Poisons Mixed (ROM_PoisonsMixed) - 1 point
- Locks Picked (ROM_LocksPicked) - 1 point
- Pockets Picked (ROM_PocketsPicked) - 1 point
- Items Stolen (ROM_ItemsStolen) - 1 point
- Assaults (ROM_Assaults) - 2 points
- Murders (ROM_Murders) - 5 points
- Horses Stolen (ROM_HorsesStolen) - 2 points
- Trespasses (ROM_Trespasses) - 2 points
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CompatibilityCompatible:
- The vanilla follower system, Horde, NFF, AFT, EFF, and custom follower frameworks
- Followers supported through a profile file, runtime registration, or the older faction tags
- Followers without author support, added by the player through New Bond
- Custom-voiced followers and follower-specific dialogue, scenes, reactions, quests, and marriage systems
- Other romance and marriage mods; Romantasy maintains its own ledger and does not alter vanilla marriage
- Existing saves; Romantasy can be installed or removed mid-playthrough
- Games and follower names in any language
Older follower integrations remain supported. Updating Romantasy does not invalidate their saved scores or relationship tiers.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
TroubleshootingMy follower does not appear in the dashboard
If the follower has official Romantasy support, make sure that support is installed and enabled. Otherwise, recruit her normally, bring her with you, open Romantasy, and use New bond. Followers generated at runtime by other mods cannot be added because they have no stable plugin record.
The dashboard does not open
Confirm that SKSE64 and Address Library match your exact Skyrim runtime and that Romantasy's bundled fonts are installed. If Open with Favorites Menu is on, Left Ctrl + R is switched off; cast the Romantasy power instead. Check Documents/My Games/Skyrim Special Edition/SKSE/Romantasy.log when reporting a problem.
Names show as question marks
Update to 3.0.1, which draws letters from other alphabets with Windows' own fonts.
My points did not change after I did something
The follower may not care about that activity, or she may not have been actively following you when the game recorded it. Tier notifications are also deliberately delayed during combat, although the underlying point change is recorded immediately.
The total changed but Recent Changes looks empty
Recent Changes belongs to the follower whose dossier is currently selected. Select the same follower whose total changed. The panel keeps the five most recent point changes for that individual bond.
A removed bond came back, or an edit did not stick
Keep the PlayerProfiles folder (under MO2, usually in Overwrite) when updating or reinstalling. Removing a bond leaves a small disabled profile file on purpose, so an older save cannot bring the bond back.
What happens to Romantasy dialogue when Romantasy is not installed?
Followers supported through a profile file need nothing from Romantasy in their own plugin. Dialogue guarded by the Registered condition simply does not play, and the follower works as she always did.
Can a follower love and hate the same thing?
No. Each activity is like, dislike, or neutral for a given follower.
Does this marry my follower in the vanilla system?
No. The Spouse tier is Romantasy's own bond level. A follower mod can use it as the trigger for a marriage scene, but Romantasy never performs or replaces vanilla marriage.
Will this slow my game down?
Romantasy's tracker is native SKSE code that reacts to the game's statistic events. The dashboard only draws while it is open, and the Papyrus side is a thin native bridge without update loops.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Created by ColdSun
Developed by an engineer with 35 years of experience in the field
Romantasy Source Code - GPL-3.0-or-later with modding exceptions; the Papyrus API declarations are MIT licensed
Third-party components retain their respective licenses.
Built with SKSE | CommonLibSSE-NG | Dear ImGui | toml++
Created by ColdSun
Developed by an engineer with 35 years of experience in the field
Romantasy Source Code - GPL-3.0-or-later with modding exceptions; the Papyrus API declarations are MIT licensed
Third-party components retain their respective licenses.
Built with SKSE | CommonLibSSE-NG | Dear ImGui | toml++



































