Jump to content

Recommended Posts

Posted
6 hours ago, throwaway182838 said:

I can use the catmenu GUI to apply and remove tattoos but these changes only take effect when I open up the MCM. Any Ideas?

You must press "Synchronize visuals", this applies the RaceMenu overlays, isn't done automatically. If I think about it, I don't see a reason why I don't do this automatically there, will change this. A different thing is the field editor, there one might want to change a couple of fields first (e.g. diffuse, bump and glow texture) before applying the change as a bulk.   

Posted
On 9/17/2025 at 2:51 AM, seethe04 said:

So with the new Overlay Framework allowing one to pre-configure NPCs to have specific overlays without needing to edit them on the fly, is there a way to something similar but with SlavetatsNG?

 

Where I can pre-apply certain slavetats onto NPCs so I don't have to apply them everytime I start a new game?

 

I just saw "SlaveTats SPID Distributor" https://www.nexusmods.com/skyrimspecialedition/mods/157498 on Nexus. Guess that's exactly what you want. Quite straightforward, you have 20 different spells with which you can apply 20 different tattoo collections to actors. I don't know the details, but would be nice, if it had some randomness, with which the tattoos within those collections are chosen (like the "Levelled Lists" in the Skyrim .esp files). 

Posted
12 hours ago, nopse0 said:

 

I just saw "SlaveTats SPID Distributor" https://www.nexusmods.com/skyrimspecialedition/mods/157498 on Nexus. Guess that's exactly what you want. Quite straightforward, you have 20 different spells with which you can apply 20 different tattoo collections to actors. I don't know the details, but would be nice, if it had some randomness, with which the tattoos within those collections are chosen (like the "Levelled Lists" in the Skyrim .esp files). 

awesome, ty for letting me know

Posted
22 hours ago, nopse0 said:

 

I just saw "SlaveTats SPID Distributor" https://www.nexusmods.com/skyrimspecialedition/mods/157498 on Nexus. Guess that's exactly what you want. Quite straightforward, you have 20 different spells with which you can apply 20 different tattoo collections to actors. I don't know the details, but would be nice, if it had some randomness, with which the tattoos within those collections are chosen (like the "Levelled Lists" in the Skyrim .esp files). 

 

I took a look at this, and it overwrites the slavetats script. I'm really interested in it, but would need @nopse0 to do a patch for NG. It's either that or go back to the old gen slavetats.

Posted (edited)
3 hours ago, foreveraloneguy said:

 

I took a look at this, and it overwrites the slavetats script. I'm really interested in it, but would need @nopse0 to do a patch for NG. It's either that or go back to the old gen slavetats.

Oh, I was surprised he did this, so I downloaded it, and compared his SlaveTats.psc with the original one (WinMerge). He only did three tiny changes:

image.png.5e96461e398e09ae0f96b5c72d533b9e.png

 

(and the same change also at another location). And:

 

image.png.a695942befaaa3dda877d6692b94235d.png

 

(he changed the hardcoded "EmissiveMultiple" value from 1.0 to 2.5)

 

I think you can overwrite this with the SlaveTatsNG SlaveTats.pex, should have no impact.

 

Edit #1: The C++ RE::Actor class has only a GetActorBase() function, not a GetLeveledActorBase() function, so I don't know, if this is an issue in SlaveTatsNG (if the sex detection may be wrong for actors created from Levelled Lists containing both female and male actors).

 

Edit #2: I don't understand the description from the Creation Kit Wiki, what does "editor" mean ?

 

GetActorBase:

image.png.59a623cefc5bbc40a17893adda0bf715.png

 

 

image.png.44631269519997b94ad70391a07ec365.png

  

Does that mean GetLeveledActorBase returns the base actor from the game, while GetActorBase returns the base actor as shown within the Creation Kit (a certain item of the Levelled List, not a randomly selected one) ? If so, this would be indeed a problem. Wonder what of both the c++ function returns.

 

But anyway, since nobody ever reported problems of this kind, I assume the c++ function does the right thing. You can forget the SlaveTats.pex from this mod, and use SlaveTatsNG.

Edited by nopse0
Posted
8 hours ago, nopse0 said:

Oh, I was surprised he did this, so I downloaded it, and compared his SlaveTats.psc with the original one (WinMerge). He only did three tiny changes:

image.png.5e96461e398e09ae0f96b5c72d533b9e.png

 

(and the same change also at another location). And:

 

image.png.a695942befaaa3dda877d6692b94235d.png

 

(he changed the hardcoded "EmissiveMultiple" value from 1.0 to 2.5)

 

I think you can overwrite this with the SlaveTatsNG SlaveTats.pex, should have no impact.

 

Edit #1: The C++ RE::Actor class has only a GetActorBase() function, not a GetLeveledActorBase() function, so I don't know, if this is an issue in SlaveTatsNG (if the sex detection may be wrong for actors created from Levelled Lists containing both female and male actors).

 

Edit #2: I don't understand the description from the Creation Kit Wiki, what does "editor" mean ?

 

GetActorBase:

image.png.59a623cefc5bbc40a17893adda0bf715.png

 

 

image.png.44631269519997b94ad70391a07ec365.png

  

Does that mean GetLeveledActorBase returns the base actor from the game, while GetActorBase returns the base actor as shown within the Creation Kit (a certain item of the Levelled List, not a randomly selected one) ? If so, this would be indeed a problem. Wonder what of both the c++ function returns.

 

But anyway, since nobody ever reported problems of this kind, I assume the c++ function does the right thing. You can forget the SlaveTats.pex from this mod, and use SlaveTatsNG.

 

If you compare that script with the one from this mod, the changes are huge. So no, you can't just use the script from this mod.

Posted (edited)
3 hours ago, foreveraloneguy said:

 

If you compare that script with the one from this mod, the changes are huge. So no, you can't just use the script from this mod.

No, you misunderstand, the things which Papyrus SlaveTats does in SlaveTats.pex, I do in the SlaveTatsNG.dll (as far as possible). So, if you want to know, what he has changed, you have to compare his SlaveTats.psc with the original one from SlaveTatsSE-1.3.9, not with my one (I am just calling the native functions from the dll in my script), and these changes are tiny, just the three lines. You can overwrite his SlaveTats.pex with mine, because he didn't change any SlaveTats functionality.

Edited by nopse0
Posted
2 hours ago, nopse0 said:

So, if you want to know, what he has changed, you have to compare his SlaveTats.psc with the original one from SlaveTatsSE-1.3.9, not with my one


Yes, I understood what you meant, and I appreciate that you provided that analysis for us.

Posted (edited)

I played around a bit with glow textures, and added a field "glowtexture" to SlaveTats tattoos. With this new feature, Lewd Marks can be defined with a single SlaveTats tattoo, which looks e.g. like this:

 

    {
        "name": "048",
        "section": "LewdMarks",
        "texture": "LewdMarks\\048.dds",
        "glowtexture": "actors\\character\\slavetats\\LewdMarks-glow\\048.dds",
        "emissivemult": 5.0,
        "area": "Body",
        "in_bsa": 1
    },

 

But not sure if the effect is ok. The result looks very different than the LM screenshots. The glow texture is very sharp, and only modifies the diffuse texture, and the glow effect is only visible when it is dark. The result looks like in the screenshots below (minimal Skyrim 1.5.97 installation, just 3BA, , with ENB results may look different). Comments are welcome.

 

 

489830_20250927212425_1.png

489830_20250927212603_1.png

Edited by nopse0
Posted

I am having a problem that no tattoos are appearing in the list when I try to apply them, but they are visible in SlaveTats MCM menu and I can apply them. Then they are visible inside the GUI but I can only remove them
image.png.05578ef0b525e877ab9807271444d7bf.png

Posted
2 hours ago, Leuy said:

I am having a problem that no tattoos are appearing in the list when I try to apply them, but they are visible in SlaveTats MCM menu and I can apply them. Then they are visible inside the GUI but I can only remove them

 

Have you installed SlaveTatsNG, and does it's SlaveTats.pex override all other SlaveTats.pexs ? (be cautious that the SlaveTas.pex from LewdMarks don't overwrite it). Because what appears in the section and area dropdown lists is read like so:

   void read_slavetats_cache(area_sections_t& area_sections) {
       int cache = JDB::solveObj(".SlaveTatsNG.cache");
       if (cache) {
           ...
       }
   }

So, if SlaveTatsNG isn't active, you have no ".SlaveTatsNG.cache", and the dropdown lists are empty. That's the only explanation I have. You can also try to click "Refresh installed tattoo cache", but I don't think this is it, I never had to do this.

Posted

0.8.0 seemed to be a bit broken on my mod list. At least when using Bimbo's of Skyrim, it seemed some tats would be applied strangely or not at all. Lipstick, for example, was enlarged and placed on the chest.

Sorry, I didn't look too much into it before reverting back to 0.7.6, and it's possible it's just user error. I can look more into it if needed, I just thought I should quickly report it.

Posted
 

0.8.0 seemed to be a bit broken on my mod list. At least when using Bimbo's of Skyrim, it seemed some tats would be applied strangely or not at all. Lipstick, for example, was enlarged and placed on the chest.

Sorry, I didn't look too much into it before reverting back to 0.7.6, and it's possible it's just user error. I can look more into it if needed, I just thought I should quickly report it.

 

I got the same thing: tattoos that are in the "face" section are being applied to the body.

Posted
 

 

Have you installed SlaveTatsNG, and does it's SlaveTats.pex override all other SlaveTats.pexs ? (be cautious that the SlaveTas.pex from LewdMarks don't overwrite it). Because what appears in the section and area dropdown lists is read like so:

   void read_slavetats_cache(area_sections_t& area_sections) {
       int cache = JDB::solveObj(".SlaveTatsNG.cache");
       if (cache) {
           ...
       }
   }

So, if SlaveTatsNG isn't active, you have no ".SlaveTatsNG.cache", and the dropdown lists are empty. That's the only explanation I have. You can also try to click "Refresh installed tattoo cache", but I don't think this is it, I never had to do this.

It started to work after saving and reloading game. I can live with that. I had all in one pack installed so maybe large number made it take a while to update? Anyways thanks for clarity!

Posted
 

 

I got the same thing: tattoos that are in the "face" section are being applied to the body.

 

Yes, I can reproduce this, guess it's debugging time. But, btw., the lipstick tattoo doesn't look that bad on the upper chest, doesn't it ? :)

 

489830_20250929182144_1.png

Posted (edited)
1 hour ago, nopse0 said:

 

Yes, I can reproduce this, guess it's debugging time. But, btw., the lipstick tattoo doesn't look that bad on the upper chest, doesn't it ? :)

 

Ah, yes, the usual copy & paste errors, used in all 4 areas "apply_overlay_ex(..., "Body", ...)

 

image.png.3e23bc3be326901b5ecca8f4c83cb3c3.png

 

Edit: Is fixed now.

 

And, I wanted to say, in the GUI you have to press "Synchronize visuals" (calls the "synchronize_tattoos" function), so the changes become visible, and you have to press "Update NiOverride data", so that the current NiOverride data is re-read and displayed right in all windows. This is especially important for the Add/Remove Tattoo  window, because after tattoo removal, the SlaveTats tattoo is gone, but since the NiOverride data isn't re-read automatically, the window now thinks there's an external tattoo in this slot, so this slot isn't displayed in the list of available slots. Summary: press the update buttons a lot after changing anything :) . 

 

Edited by nopse0
Posted

Absolutely love the GUI, particularly the ability to fine-tune colors. Here's what I have in mind, you tell me if it's feasible: I'd like to assign certain colors to certain tattoo groups, and have them automatically use that color when applied via rapetats. For example, I want Alpia riekling and orc tattoos to be a dark red to resemble cuts, but all other tats to be black. You reckon it's possible?

Posted

for the gui version would that allow applying slave tats without having that bug where the opening slavetags mcm causes overlay crashes?

Posted (edited)
7 hours ago, sidfu1 said:

for the gui version would that allow applying slave tats without having that bug where the opening slavetags mcm causes overlay crashes?

Can you explain this more?, I don't understand. When you open the Papyrus SlaveTats MCM, your Skyrim immediately crashes ? If so, this sounds like the RaceMenu skee64.dll addresses are wrong, because then the program crashes when the first NiOverride call is made. In this case, the same thing will happen with the new ImGui GUI. What Skyrim version and RaceMenu version are you using? Can you post the crash dump, and SlaveTatsNG.log? (a bit tricky to find, because of a bug in commonlibsse-ng, the log folder name sometimes is wrong, and the log file is in "MyGames\Skyrim.INI" instead of "MyGames\Skyrim Special Edition").

Edit: I added a few new entries to the skee_addresses.json file some users posted here (for Skyrim 1.6.353, for UBE-2.0, and for the new VR RaceMenu dll which supports face tattoos), so maybe your RaceMenu version is supported now.

Edited by nopse0
Posted

Which mods work with this, concerning the no-mod events thing?

Does rape tats/fade tats work?

How can an average user check that every thing is working and integrating properly? Is it the sort of thing that you need to dig into the scripts of every mod you use?

Posted
7 hours ago, nopse0 said:

Can you explain this more?, I don't understand. When you open the Papyrus SlaveTats MCM, your Skyrim immediately crashes ? If so, this sounds like the RaceMenu skee64.dll addresses are wrong, because then the program crashes when the first NiOverride call is made. In this case, the same thing will happen with the new ImGui GUI. What Skyrim version and RaceMenu version are you using? Can you post the crash dump, and SlaveTatsNG.log? (a bit tricky to find, because of a bug in commonlibsse-ng, the log folder name sometimes is wrong, and the log file is in "MyGames\Skyrim.INI" instead of "MyGames\Skyrim Special Edition").

Edit: I added a few new entries to the skee_addresses.json file some users posted here (for Skyrim 1.6.353, for UBE-2.0, and for the new VR RaceMenu dll which supports face tattoos), so maybe your RaceMenu version is supported now.

ahh id you forget that before we trouble shooted how for slavetats over version .17(not ng but it seemed to had inherited it) some users had once the mcm was opened it would for for small ammount some users randomly cause a overlay crash. it was so random to point it could  happen once every hour or 6. beyond finding that openng the mcm enabled some debug we never found why so guessed it as a mod interaction.

Posted (edited)
On 10/1/2025 at 7:51 PM, sidfu1 said:

ahh id you forget that before we trouble shooted how for slavetats over version .17(not ng but it seemed to had inherited it) some users had once the mcm was opened it would for for small ammount some users randomly cause a overlay crash. it was so random to point it could  happen once every hour or 6. beyond finding that openng the mcm enabled some debug we never found why so guessed it as a mod interaction.

Ah, ok, long ago. Did you try after that another SlaveTatsNG version? Because there was a big stabilty improvement since version 0.7.0. Since this version I execute the code from the 'synchronize_tattoos' function as a SKSE task instead of by the Papyrus threads. This SKSE tasks are synchronized with the Skyrim main thread, no rendering happens when they are executed. Since then I never had an overlay related crash again. I think this was the source of all evil, this  concurrency between rendering and the Papyrus threads (or to be more precise, the threads which execute the native calls of Papyrus threads, because the Papyrus threads itself can do no harm, they only run in the VM and have no effect on the outside world, except when they are calling native functions). Edit: This all are only wild guesses from me, but I think the Skyrim Papyrus VM stuff was never concepted for doing things like NiOverride does, the Skyrim threading model is wrong for that.

Edited by nopse0
Posted

I think I understand now, what effect it has, when an overlay has a diffuse texture and a glow texture. The glow texture is like an alpha channel, you can sort of "see" the diffuse texture through it (how much depends on the alpha value), only that "seeing" means glowing with the glow color. E.g. the glow texture could simply be a white rectangle with texture coordinates ((0,0)(1,1) ), then the whole diffuse texture would glow white. This effect is very different from what Lewd Marks is doing. In LM the glow texture is a separate texture, some sort of aura, which can also be seen on the skin which is not covered by the diffuse texture. This effect cannot be achieved by setting a glow texture in an overlay (at least not without redesigning the diffuse and the glow texture).

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...