Jump to content

SlaveTats SE (2020-03-15)

35 Screenshots

About This File



The tattoo toolkit for Skyrim

Latest update (2020-03-15): Uploaded SlaveTats SE This version is much faster, but there's a button that you need to click after installing or uninstalling tattoo packs. Also refrains from disabling player controls when in silent mode (i.e. when other mods add or remove tattoos through SlaveTats). Also also fixes a bug with the query API which was introduced in 1.3.5

SlaveTats lets you:

  • Select tattoos for the player character
  • Select tattoos for NPCs (works best if they have a name)
  • Select the color of the tattoos
  • Make the tattoos glow in the dark
  • Choose between matte and glossy tattoos
  • Apply magical tattoos (for example, the Dibellan Defender tattoo pack)
  • Add and remove tattoo packs without messing around in the SlaveTats source code. No need to compile.
  • If you're a mod author, you can lock tattoos onto characters, so that they can only be removed by a mod.
  • If you change the number of overlays in nioverride.ini, SlaveTats will change how many tattoo slots it provides.

For users:
Getting started is easy.

  1. Make sure you have the requirements:
    1. Legendary Edition: JContainers, RaceMenu (or NetImmerse Override), SkyUI, and SKSE.
    2. Special Edition: JContainers, RaceMenu, SkyUI, and SKSE SE
  2. Just download SlaveTats and uncompress it into the Skyrim data folder. I recommend using Mod Organizer or Nexus Mod Manager to simplify that process, but you can just open the file in 7-Zip if you prefer.
  3. Start Skyrim. You'll have a SlaveTats menu under the SkyUI's Mod Configuration Menu
  4. On the Setup tab, select the character you want to tattoo
  5. Choose a tattoo section, then a specific tattoo.
    1. Pick color, glow and gloss if you like, or leave them with their defaults
  6. With version 1.3.5 or higher, after adding or removing tattoo packs, you need to click the add/remove button in the setup section of the SlaveTats MCM menu. This allows SlaveTats to re-compile its index of installed tattoos.

[*]Exit the SlaveTats menu. Your tattoos will appear in a moment.

The included selection of tattoos is very limited, but never fear! SlaveTats supports tattoo packs, and there are a bunch of them on the download page. Pick the ones that interest you, and install them the same way you installed SlaveTats itself. Now, your selection of tattoos is much wider.

The tattoo packs in the download section are:

  • Rutah-art: A set of 49 artistic tattoos by Rutah. Non-sexual. Original at http://www.nexusmods.com/skyrim/mods/49979/?
  • Rutah-nordic: Nice set of Nordic-themed tattoos by Rutah. Non-sexual. Original at http://www.nexusmods.com/skyrim/mods/49853/?
  • Joomla-Slutty tats: As advertised, tattoos celebrating sexual availability, by Joomla
  • ElfMeetOrc: A collection of elf and orc related tattoos by Androol
  • AndroolSub: Some additional submissive tattoos by Androol
  • AndroolSlut: Some additional slut marks by Androol
  • AndroolPetPlay: Additional pet play tattoos by Androol, including special cow spots for various races
  • DocClox-civilwar: Imperial and Stormcloak logo cheek tattoos.
  • Tattoo Pack_CN: Chinese language tattoos (prepared by silentdark)
  • Slavetats-preg: A set of pregnancy-related tattoos by Trojice
  • Doomsman-Denial: A pack of tattoos that go nicely with a chastity belt
  • B3lisario-stockings: pantyhose and body stockings
  • NYINEGY-makeup: lipstick, eye shadow, nail paint, and beauty marks. Mostly for CBBE.
  • SlaveTats-anal: tattoos relating to anal sex
  • SlaveTats-brat: tattoos that a brat might earn, or appreciate. Currently a small pack; looking for contributions
  • SlaveTats-criminal: tattoos that brand the wearer as a criminal
  • SlaveTats-dominant: tattoos for a dom
  • SlaveTats-draconic: tattoos in the dragon language
  • SlaveTats-makeup: makeup, such as nail paint and running mascara
  • SlaveTats-petplay: tattoos for cats, cows, and such. Another small pack, needing contributions
  • SlaveTats-property: tattoos for marking the wearer as owned
  • SlaveTats-scrawl: tattoos for humiliating the wearer
  • SlaveTats-slut: tattoos that celebrate or advertise sluttishness (updated 2015-02-11)
  • SlaveTats-sm: tattoos relating to S&M
  • SlaveTats-submissive: tattoos that celebrate or advertise submissiveness
  • SlaveTats-symbols: non-textual tattoos
  • SlaveTats-whore: tattoos that offer sex with the wearer, at a price
  • SlaveTats-zoo: tattoos relating to animals
  • vampy_tats: Vampire-themed tats by DocClox


Some tattoo packs are hosted externally:




Chinese translation is in the files ending with _CN. If you don't speak Chinese, you should not install those.

For Artists:
Making your own tattoo packs is easy.


(Thanks to oli3d, we have a nice guide for how to avoid UV distortion when you make tattoos)

  1. Pick a UV map to work from. Basically, that means finding the skin texture from your favorite body mod. Personally, I use the UNP UV map.
  2. Copy the skin texture into an image editor that supports layers (such as Photoshop or GIMP)
  3. Select the color #444544. That color will be replaced by the user's chosen color when the tattoo is applied. All other colors will be displayed normally.
  4. On a layer above the skin texture, draw your tattoo. Leave the layer background transparent.
  5. Save just the tattoo layer (NOT the skin texture) as a DDS file with a transparent background.
  6. Create a folder called Textures\Actors\Character\slavetats\yourthing somewhere (not actually inside Skyrim's Data folder, yet. Just on the desktop is fine)
  7. Place your DDS file into Textures\Actors\Character\slavetats\yourthing
  8. Create a text file called Textures\Actors\Character\slavetats\yourthing.json containing a tattoo registry for that DDS file (we'll cover that shortly)
  9. Add the Textures folder to a .zip or .7z file

That's it! You've made a texture pack, which you can install yourself or share with others. You can of course add more than one tattoo to your pack; just add the files to the yourthing folder, and add entries for them in yourthing.json.

So, what's a tattoo registry? It's just a short description for SlaveTats of what a tattoo's name is, where it should appear in the menus, and broadly what part of the body it appears on. This is best described by example, so here is the anal.json file from the SlaveTats-anal tattoo pack:

[    {"name": "Fist Hole (ass)", "section":"Anal", "texture":"anal\\ass_fist_hole.dds", "area":"Body"},    {"name": "Anal Slut", "section":"Anal", "texture":"anal\\butt_anal_slut_raz.dds", "area":"Body", "credit":"Raziel_br"},    {"name": "Butt Slut", "section":"Anal", "texture":"anal\\butt_butt_slut_zqzqz.dds", "area":"Body", "credit":"zqzqz"},    {"name": "This Anus Open...", "section":"Anal", "texture":"anal\\this_anus_open.dds", "area":"Body"}]

Every tattoo description has to have "name", "section", "texture" and "area" entries, and the area has to be one of "Body", "Face", "Hands", or "Feet". Other than that, you can include as many entries as you like in a tattoo description, and as many tattoo descriptions as you like in a tattoo registry.


If you've made a tattoo pack and would like to have it hosted in the SlaveTats download section, just drop me a private message.

For modders:
SlaveTats now provides an API for modders to use. You can add, remove and search for tattoos through SlaveTats, which saves you the hassle of dealing with overlays on your own, and gets you things like tattoo packs and enchanted tattoos for free. This API is documented (and implemented) in SlaveTats.psc and you can feel free to PM murfk if you want to discuss it.

For a lot of uses, the high-level API will be all you need. It's easy!


To add a single tattoo to the player character:

SlaveTats.simple_add_tattoo(Game.GetPlayer(), "Slave Marks", "Slave (pubic)")

To remove the tattoo:

SlaveTats.simple_remove_tattoo(Game.GetPlayer(), "Slave Marks", "Slave (pubic)")

You can control the color of the added tatto by passing a number representing that color as the fourth parameter of simple_add_tattoo. It defaults to 0, which means black.


Here's an example of how to use the low-level SlaveTats API, if you need more control:


Actor target = Game.GetPlayer()int matches = 0int template = 0int tattoo = 0matches = JValue.addToPool(JArray.object(), "SlaveTatsDemo")template = JValue.addToPool(JValue.objectFromPrototype("{\"name\": \"Slave (pubic)\", \"section\":\"Slave Marks\"}"), "SlaveTatsDemo")if SlaveTats.query_available_tattoos(template, matches)	Debug.Notification("Query 1 Failed")	JValue.cleanPool("SlaveTatsDemo")	returnendiftattoo = JArray.getObj(matches, 0)    if SlaveTats.add_tattoo(target, tattoo)	Debug.Notification("Add 1 failed")	JValue.cleanPool("SlaveTatsDemo")	returnendifmatches = JValue.addToPool(JArray.object(), "SlaveTatsDemo")template = JValue.addToPool(JValue.objectFromPrototype("{\"name\": \"Slave (left breast)\", \"section\":\"Slave Marks\"}"), "SlaveTatsDemo")if SlaveTats.query_available_tattoos(template, matches)	Debug.Notification("Query 2 Failed")	JValue.cleanPool("SlaveTatsDemo")	returnendiftattoo = JArray.getObj(matches, 0)JMap.setInt(tattoo, "color", 11536724)if SlaveTats.add_tattoo(target, tattoo)	Debug.Notification("Add 2 failed")	JValue.cleanPool("SlaveTatsDemo")	returnendif    if SlaveTats.synchronize_tattoos(target)	Debug.Notification("Synchronization failed")	JValue.cleanPool("SlaveTatsDemo")	returnendif    JValue.cleanPool("SlaveTatsDemo")



What's New in Version SE (2020-03-15)


  • SE
  • Fix a bug in the query API used by other mods, which was introduced in 1.3.5
  • SE
  • Don't disable player controls while applying tattoos in silent mode
  • SE 1.3.5
  • Much faster, but it's now necessary to manually tell it when tattoo packs have been added or removed
  • Disabled the "Extra" tab, as those features were never going to work well
  • SE 1.3.0
  • Skyrim Special Edition support
  • 1.3.0-beta-2:
  • Hopefully fixes the custom NPC bug
  • 1.3.0-beta:
  • Added an extra tab which allows editing of the target's name, hair color, and weight.
  • 1.2.3:
  • Removed the code to disable and then re-enable NPCs after tattooing them. It was an attempt to make the tattoos always appear immediately, but it messes with mods that use SlaveTats. Not a good idea.
  • 1.2.2:
  • Updated glow code for better NPC support (thanks GenioMaestro)
  • Added optional in_bsa value to JSON files, allowing the tattoo texture to be loaded from an archive
  • 1.2.1:
  • Fixed a glitch that was preventing magical tattoos (e.g. Dibellan Defender) from taking effect.
  • 1.2:
  • Updated to use newer features of SKSE and JContainers instead of ugly workarounds
  • Send SlaveTats-added and SlaveTats-removed ModEvents
  • Whole-tattoo alpha blending support (patch from xj47)
  • 1.1.1:
  • Debug and slightly improve simple API
  • 1.1:
  • New feature: adjust the number of tattoo slots
  • New feature: a simplified high-level API for adding and removing tattoos
  • Upgrade process is more robust
  • Some user interface improvements
  • 1.0.6:
  • Fixed a bug that could cause hangs during upgrades
  • 1.0.5:
  • Fixed a bug with automatic slot assignment
  • 1.0.4:
  • Updated to JContainers 3.0.0
  • 1.0.3:
  • Fixed a bug with picking colors from the menu, when the stars are improperly aligned.



  • Create New...