Hello Friends!
Today I'm releasing Romantasy free to the public. I've made some changes to it, mostly under the covers as far as functionality goes, but I've also given it a new look and feel. To be honest, it looks a lot like Tailor and I've decided to theme all my applications and SKSE Mods like this.
I hereby give other mod authors permission to use Romantasy for their own mods (see below for instructions). I hope you enjoy it.
Romantasy: A Ledger of Hearts
A standalone, save-safe romance system for Skyrim Special Edition.It watches what you do in the world and quietly turns your choices into a deepening bond with each of your followers: Stranger, Acquaintance, Friend, Confidant, Lover, and finally Spouse.
Thank you for supporting Romantasy. Your backing is what lets me keep building, testing, and polishing it. This page has everything you need to get it running, and (further down) everything a fellow mod author needs to build on top of it. If you make something with it, please tell me; I'd love to play it.
For players:
What Romantasy does
Tracks your actions across 58 categories of play (combat, exploration, crafting, crime, guild work, vampire and werewolf life, and more) and converts them into romance points for each follower.
Each follower can like or dislike any of those categories (set by the follower's author). Doing what she loves raises your bond; doing what she hates lowers it.
Gives you a beautiful in-game dashboard at the press of a hotkey: every romance-capable follower in your game, their points, their tier, and what they've been reacting to lately.
Shows a discreet pop-up when a bond deepens (or is wounded), so you know your choices are landing.
Saves and restores cleanly with your save game.
An very lightweight SKSE mod with an ESL plugin to hold the factions and 1 script to manage the papyrus bridge to communicate with the SKSE plugin - very fast! No script lag - period.
It is built to slot underneath your existing follower mods without taking them over. Romantasy does not replace the vanilla follower system, does not add its own quests, and does not force a personality on anyone. **It only keeps the ledger.
The six tiers
A follower mod can hang dialogue, scenes, or marriage hooks off any of these tiers.
Requirements
Address Library for SKSE PluginsPrismaUI
You do not need SkyUI, MCM, or any specific follower framework. If no romance-ready followers are installed, Romantasy quietly does nothing.
Installation
Install all of the requirements above with your mod manager (MO2 or Vortex).
Install the Romantasy archive you downloaded here, the same way you install any other SKSE plugin mod.
Enable CS_Romantasy.esp in your load order.
Launch the game.
Make sure any mods that use Romantasy load after the Romantasy plugin.
That's the whole setup. There is no MCM, no INI to edit, and no quest to start.
If you already have romance-ready followers installed when you add Romantasy, their bond starts at 0. Existing relationships are not retroactively imported. Romantasy has no way to know what you did together before it was watching.
Using it in-game
Press Left Ctrl + R to open the dashboard at any time.
The dashboard lists every romance-capable follower currently in your game, with their points, tier, role (race · class), and recent reactions.
When a bond crosses into a new tier (up or down), a short pop-up appears. It auto-dismisses on its own, or you can close it with the ×.
Press Esc (or the hotkey again) to close the dashboard.
How it works
Every few seconds, Romantasy notices what changed in your game's vanilla statistics. Cleared a dungeon, finished a quest, picked a pocket, read a skill book. It sees that. It then asks each of your active followers, "Do you care about this?" If she likes it, she awards points. If she hates it, she takes some away. If she has no opinion, nothing happens.
Only followers currently following you earn or lose points from your actions. A follower waiting at home or dismissed will not react. The bond grows because you're sharing the adventure.
A few stats (Days Passed, Days as a Vampire, Days as a Werewolf) tick for everyone, since they're about the kind of life you're living rather than a single moment.
Some triggers are held until combat ends, so the bond isn't spammed mid-fight.
Compatibility
Custom-voiced followers: fully supported. Romantasy reads faction tags the author placed on the NPC. No tags → she simply isn't romance-ready and won't appear in the dashboard.
NFF, AFT, EFF, Horde, vanilla follower system: all fine. Romantasy only listens to vanilla statistics and only writes to its own factions. It never touches your follower framework.
Other romance / marriage mods: fine. Romantasy keeps its own ledger and does not interfere with vanilla marriage, AYC, or similar.
Save game safe: yes. It uses standard SKSE serialization, so you can install or remove it cleanly mid-playthrough. (Uninstalling forgets the romance points, but nothing breaks.)
Frequently asked questions
Why is my follower not appearing in the dashboard?She isn't set up to use Romantasy. Her author needs to opt her in (see the mod-author section). Followers without Romantasy preference factions are invisible to the system.
Why didn't my points go up after I killed something?Three possibilities: she may not care about that kill type; she may not be actively following you at that moment; or you may have been in combat (some triggers are held until the fight ends).
Can a follower love and hate the same thing?No. Each stat is one or the other for that follower. Authors choose.
Does this work with marriage mods?Yes. It sits on top of them. Romantasy's Spouse tier is its own bond level; it does not by itself marry the follower in the vanilla system. A follower mod can choose to use the Spouse tier as the trigger for a marriage scene.
Will this slow my game down?No. The dashboard only works while it's open, and the background tracker runs about once every ten seconds with very little to do. No script-heavy effects.
For mod authors
Romantasy is built to be used as a modding resource. If you're making a follower mod, a quest mod, or your own romance content, you're very welcome to require Romantasy and build on top of it. There is no permission gate. Everything you need is below.
Why build on Romantasy
Players get one centralized dashboard for all their romances, instead of one MCM per follower.
Points come from vanilla statistics the player is already generating, so you don't ship your own combat sinks, quest listeners, or stat trackers.
You get a save-safe ledger, a tiered relationship state, and a level-up notification UI for free.
You stay in full control of dialogue, scenes, personality, and pacing. Romantasy is the scoreboard; you're still the writer.
There are three ways to hook in. Use as many as you like. They compose.
Path 1: Faction tags (no scripting)
The recommended path for follower mods. Add a few factions to your NPC record in the Creation Kit (or xEdit) and Romantasy does the rest. No fragments, no quest scripts, no plugin code.
Add CS_Romantasy.esp as a master, then add factions to your follower's NPC record:
Required for romance-readiness
ROM_RomanceLevel, rank 0: the marker faction. Romantasy updates its rank as the bond grows (0 = Stranger … 5 = Spouse). Without this, she won't appear in the dashboard.
Optional preference tagsFor each vanilla activity your follower has an opinion about, add the matching ROM_* faction at rank 1 (she likes it) or rank 0 (she hates it). Omitting the faction means she doesn't care.
A kindhearted forest druid might have:
ROM_LocationsDiscovered at rank 1
ROM_PotionsMixed at rank 1
ROM_AnimalsKilled at rank 0
A vampire lover might have:
ROM_NecksBitten at rank 1
ROM_DaysVampire at rank 1
ROM_VampirismCures at rank 0
The full list of ROM_* preference factions lives in CS_Romantasy.esp. Each corresponds to a tracked vanilla statistic with a clear in-game name (Locations Discovered, Dungeons Cleared, Skill Books Read, Necks Bitten, Murders, and so on).
Once those factions are on the NPC and the player is adventuring with her, points accumulate automatically and the dashboard starts showing her.
Path 2: The Papyrus bridge (authored beats)
To award or remove points at a specific moment (a kiss, a betrayal, a quest beat), call into Romantasy from a TopicInfo fragment or scene fragment.
Redistribute Source\Scripts\Romantasy.psc with your project so it compiles against the bridge:
Scriptname Romantasy Hidden
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 Int Function GetPoints(Actor akFollower) Native Global Int Function GetLevel(Actor akFollower) Native Global String Function GetLevelName(Actor akFollower) Native Global
abShowLevelUp = False applies the change silently (no pop-up, no bark) and is handy for bookkeeping adjustments you don't want to announce.
Example TopicInfo fragment
Romantasy.ModifyPoints(akSpeaker, 50, "Kissed under the aurora")
Path 3: Voiced reactions via ModEvents
Want your follower to say a voice line when the bond deepens or when the player does something she likes/dislikes? Romantasy broadcasts two SKSE ModEvents you can subscribe to from a Papyrus alias-script. No native functions needed; these are dynamic events.
Handler signature for both: (string eventName, string strArg, float numArg, Form sender).
Deterministic dedup: a single action fires either OnLevelChanged (if it crossed a tier) or OnPreference (if it didn't), never both. You won't get a double-bark.
Example reaction script (attach to a ReferenceAlias pointing at your follower):
Notes:
Always check sender == yourFollowerBase: the events fire for every Romantasy follower in the load order, so filter to yours.
Gate your dialogue topics on GetFactionRank ROM_RomanceLevel so Say() pulls a line matching her current tier (see below).
Preference events can fire often. Consider a cooldown / random-chance throttle so she doesn't bark on every tick.
Gating dialogue on the tier
The cleanest way to gate dialogue on bond level is a Creation Kit dialogue condition reading the follower's ROM_RomanceLevel faction rank:
Rank Tier 0 Stranger 1 Acquaintance 2 Friend 3 Confidant 4 Lover 5 Spouse
A "Lover-only" line uses the condition GetFactionRank ROM_RomanceLevel >= 4 on the speaker. No script required; the Creation Kit handles it. (From Papyrus, Romantasy.GetLevel(akSpeaker) >= 5 is the equivalent, since GetLevel returns 1–6.)
Credits
Romantasy is by ColdSun. The UI is built on PrismaUI by dropkicker, on the CommonLibSSE-NG plugin framework, and none of it would exist without the SKSE project. Thank you to the friends and testers who told me when the pop-up fired too often, when a follower's likes felt wrong, and when the dashboard needed to be prettier.
Found a bug, or built something on top of Romantasy? Let me know right here on Patreon. I read everything, and I'd genuinely love to play what you make.
Download
There is no virus. The file has been scanned by 4 different virus detection tools and all said no virus. It's a Windows false positive. Doesn't matter what browser you are using. I've uploaded a different file to see if that helps.