nopse0 Posted November 29, 2025 Author Posted November 29, 2025 10 hours ago, arbiter said: In SlaveTats SPID Distributor: https://www.nexusmods.com/skyrimspecialedition/mods/157498?tab=description The author highlights a problem applying tats via SPID to non-unique actors such as bandits that was fixed. I believe it fixes this by adjusting SlaveTats.psc, from GetActorBase() to GetLeveledActorBase() like so: ActorBase target_base = target.GetLeveledActorBase() It does this in the external_slots and synchronize_tattoos functions. It also makes some other change in that script that I don't understand. It's possible the changes in this file are unrelated to that specific fix and it does this for some other reason. Obviously this change isn't compatible with SlaveTatsNG due to overwriting the script, but for all I know you already fixed this problem, or it isn't a problem in your mod, or etc. Just FYI! Enjoying the mod, much faster and doesn't glitch out for some tats. Great job. Thanks, I had a look at his changes when he brought out his mod, and saw this GetLeveledActorBase thing. But I think this is only a Papyrus problem, RE::Actor in commonlibsse-ng has no such function. 1
emiliamajitenshi Posted December 1, 2025 Posted December 1, 2025 (edited) Would be cool if the tattoo changes immediately as soon as we select it in the dropdown menu, without needing to click apply tattoo, then click sync visuals again in the GUI. Just way too many clicks for my lazy ass. Anyway, kudos for making a GUI thats easier to use than the old MCM. Edited December 1, 2025 by emiliamajitenshi
nopse0 Posted December 1, 2025 Author Posted December 1, 2025 (edited) About these GetActorBase()/GetLeveledActorBase() again, I had a look at Actor.psc from SKSE. GetActorBase() is the same as the native GetBaseObject() in ObjectReference.psc ; In Actor.psc: ;returns the ActorBase ActorBase function GetActorBase() return GetBaseObject() as ActorBase endFunction ; In ObjectReference.psc: ; Returns the base object this reference represents Form Function GetBaseObject() native While GetLeveledActorBase() is a native function in Actor.psc: ; Obtains a leveled actor's "fake" base (the one generated by the game when the ; actor is leveled. This differs from GetActorBase which will return the editor base ; object) ActorBase Function GetLeveledActorBase() native So, I think the function GetActorBase() in the RE::Actor class is the same as GetLeveledActorBase, because in Actor.h: and in TESObjectREFR.h (a RE::Actor is also TESObjectREFR (inherits)): So the return types are different, GetBaseObject() returns a TESBoundObject, while GetActorBase() returns a TESNPC, and I am using a TESNPC* in my code: Edited December 1, 2025 by nopse0
MEyahMegusta Posted December 18, 2025 Posted December 18, 2025 (edited) Based on the description I am just a little confused: When you say no mod sends events do you mean all mods need to be updated to support SlaveTatsNG? That's how I interpret, but I'm mostly a bit confused because I haven't seen any explicit patches for SlaveTatsNG from other users which seems a bit surprising. Edited December 18, 2025 by MEyahMegusta
nopse0 Posted December 18, 2025 Author Posted December 18, 2025 (edited) 23 hours ago, MEyahMegusta said: Based on the description I am just a little confused: When you say no mod sends events do you mean all mods need to be updated to support SlaveTatsNG? That's how I interpret, but I'm mostly a bit confused because I haven't seen any explicit patches for SlaveTatsNG from other users which seems a bit surprising. I know no mods which use the SlaveTats mod events, so I think this isn't really a problem. And, the way the mod events are implemented in SlaveTatsSE, far more events are triggered than one would expect, I have the fear this would choke the VM. Edited December 19, 2025 by nopse0
angrykiwi Posted December 20, 2025 Posted December 20, 2025 Wonder how does "gloss" works. Never got it to look properly as it makes tattoos to look matted. I do know that it supposed to go off the alpha channel, but it just makes them look muted, so I was wondering if i have a patch missing or maybe ENB settings making it look odd?
asdt123123 Posted December 22, 2025 Posted December 22, 2025 (edited) On 12/1/2025 at 9:32 AM, nopse0 said: About these GetActorBase()/GetLeveledActorBase() again, I had a look at Actor.psc from SKSE. GetActorBase() is the same as the native GetBaseObject() in ObjectReference.psc ; In Actor.psc: ;returns the ActorBase ActorBase function GetActorBase() return GetBaseObject() as ActorBase endFunction ; In ObjectReference.psc: ; Returns the base object this reference represents Form Function GetBaseObject() native While GetLeveledActorBase() is a native function in Actor.psc: ; Obtains a leveled actor's "fake" base (the one generated by the game when the ; actor is leveled. This differs from GetActorBase which will return the editor base ; object) ActorBase Function GetLeveledActorBase() native So, I think the function GetActorBase() in the RE::Actor class is the same as GetLeveledActorBase, because in Actor.h: and in TESObjectREFR.h (a RE::Actor is also TESObjectREFR (inherits)): So the return types are different, GetBaseObject() returns a TESBoundObject, while GetActorBase() returns a TESNPC, and I am using a TESNPC* in my code: Could just do: auto actorBase = a_target->GetTemplateActorBase(); Now: actorBase ? actorBase : a_target->GetActorBase(); To be sure. Although I use GetActorBase() too for gender/etc and never saw any problems Edited December 22, 2025 by asdt123123
MysticDaedra Posted January 1 Posted January 1 Slavetats menu (MCM) is showing empty pages, no options on any of the pages (face, body, hands, feet). Spoiler Obviously I've screwed something up, but I'm not sure what. Help?
nopse0 Posted January 1 Author Posted January 1 3 hours ago, MysticDaedra said: Slavetats menu (MCM) is showing empty pages, no options on any of the pages (face, body, hands, feet). Hide contents Obviously I've screwed something up, but I'm not sure what. Help? Just checked it, for me the MCM works, must be something with your setup. Do you have RaceMenu installed, and is it working ? Does Papyrus SlaveTats alone without SlaveTatsNG work ? And what are the log files saying, SlaveTatsNG.log and skse64.log, is the SlaveTatsNG DLL loaded at all ?
MysticDaedra Posted January 2 Posted January 2 17 hours ago, nopse0 said: Just checked it, for me the MCM works, must be something with your setup. Do you have RaceMenu installed, and is it working ? Does Papyrus SlaveTats alone without SlaveTatsNG work ? And what are the log files saying, SlaveTatsNG.log and skse64.log, is the SlaveTatsNG DLL loaded at all ? I feel embarrassed, it turns out the .dll was hidden in MO2 for some reason. Perhaps I was trying to find an incompatible dll or something? I can't remember, but I found it hidden in MO2, and when I un-hid it and loaded the game back up, SlavetatsNG was working. Whoops! 1
argagagargaarga Posted January 6 Posted January 6 I'm not sure if I'm the only one with this issue, or if it is merely working as intended, or I am stupid and just missing something, but while the tats do render in when I load the game, the colors/glows applied to them instead don't and have a grey color until I manually go in and re-synchronize the visuals.
nopse0 Posted January 6 Author Posted January 6 (edited) 5 hours ago, argagagargaarga said: I'm not sure if I'm the only one with this issue, or if it is merely working as intended, or I am stupid and just missing something, but while the tats do render in when I load the game, the colors/glows applied to them instead don't and have a grey color until I manually go in and re-synchronize the visuals. I think the reason for this problem is, that when editing fields in the field editor, only the value in the JContainer data structure of the applied tattoo is changed, for example the integer field editor does this: if (ImGui::Button("OK", ImVec2(120, 0))) { JMap::setInt(tattoo_id, field_key, _int_new); // Check if this was successful bool result = JMap::hasKey(tattoo_id, field_key) && JMap::getInt(tattoo_id, field_key) == _int_new; if (result) ImGui::OpenPopup("Success"); else ImGui::OpenPopup("Error"); } But this isn't enough for a change to become visible, the 'synchronize_tattoos' function only does something if the ".SlaveTats.updated" flag of the actor is true, otherwise it thinks nothing has changed. That's why I am doing the following in the "Synchronize visuals" button: if (ImGui::Button("Synchronize visuals")) { if (actor_selector.actor) { // If manipulating the JContainer data directly, the '.updated' flag must be set before calling 'synchronize_tattoos' !!! JFormDB::setInt(actor_selector.actor, ".SlaveTats.updated", 1); slavetats::synchronize_tattoos(actor_selector.actor); } } Currently, this cannot be done in the editors for the 3 different types (int,float,string), because they don't have the context information, they only know the tattoo_id, field name and the old value of the field (if there was one), they don't even know the actor this tattoo is applied on, so, currently, this can only be done in the parent window, which has all context information (actor selector, etc.). This is an achitectural problem, I don't use a model/view concept, didn't seem neccessary when I wrote this (the model is "JContainers"), this has the disadvantage that only simple things can be done in simple controls. Edited January 6 by nopse0
nopse0 Posted January 13 Author Posted January 13 6 hours ago, mcdyn said: works compatible with UBE body? I think so. A user found out the NiOverride function addresses of the UBE skee64.dll, and I added them to the address tables file, the comment says they are for "Skyrim 1.5.97, UBE 2.0 U.0.7" 1
terratorrent Posted January 21 Posted January 21 (edited) I have some weird issues with this mod. When using CatMenu the tattoo won't get applied for some reason, even though the pop-up message said that "operation was successful" or something like that. It once appeared randomly after a solo sex animation. So I tried going the "Original SlaveTats Papyrus" route, but with that I'm not sure what I should copy or cut. Is it the .pex and .psc files? Because I then copied them into the SlaveTatsNG folder, overrode 8 files, but the MCM menu still doesn't show up. So then I decided to go back to SlaveTatsSE, but it's now buggy as hell and runs every time I load a save and asks me to wait until SlaveTats is done with my character. I'm not sure if this is an AE issue or because I changed mid game, since this is my first time playing with AE. EDIT: Okay, now it's working through SlaveTats MCM, but CatMenu is still not working. It's interesting that in the MCM it shows that I applied the tattoo, but it only shows on the body if I enter the MCM, then exit. Or is that the intended purpose? Edited January 21 by terratorrent
nopse0 Posted February 2 Author Posted February 2 On 1/21/2026 at 8:54 AM, terratorrent said: I have some weird issues with this mod. When using CatMenu the tattoo won't get applied for some reason, even though the pop-up message said that "operation was successful" or something like that. It once appeared randomly after a solo sex animation. So I tried going the "Original SlaveTats Papyrus" route, but with that I'm not sure what I should copy or cut. Is it the .pex and .psc files? Because I then copied them into the SlaveTatsNG folder, overrode 8 files, but the MCM menu still doesn't show up. So then I decided to go back to SlaveTatsSE, but it's now buggy as hell and runs every time I load a save and asks me to wait until SlaveTats is done with my character. I'm not sure if this is an AE issue or because I changed mid game, since this is my first time playing with AE. EDIT: Okay, now it's working through SlaveTats MCM, but CatMenu is still not working. It's interesting that in the MCM it shows that I applied the tattoo, but it only shows on the body if I enter the MCM, then exit. Or is that the intended purpose? In the CatMenu gui you must press "Synchronize visuals" for the graphics to show up (sorry, difficult to keep multiple controls in sync, I only know the actor the tattoo has to be applied to in the parent window; maybe some day I restructure the code, but it works, so not very interested in doing so)
khirasier Posted February 3 Posted February 3 so when i have this mod enabled and start a new game in racemenu all the overlay tabs are completely empty and as soon as i exit racemenu the game crashes. if i disable it so i just have the old slavetats active it works fine.
fuchs11 Posted February 15 Posted February 15 Ok I figured cat menu but I get blue body with it. I reverted to old mcm menu, no speed improvement
nopse0 Posted February 16 Author Posted February 16 (edited) 10 hours ago, fuchs11 said: Ok I figured cat menu but I get blue body with it. I reverted to old mcm menu, no speed improvement Ah, good! But blue body (texture not found => texture name wrong => maybe a character encoding problem, are you asian?) is strange, never had this. Under the hood cat menu gui is doing the same as the MCM. Speed was not the reason I wrote this. I wanted to see what's going on, i.e. what SlaveTats fields are stored in JContainers and what the NiOverride overlays actually contain (internal (SlaveTats) and external overlays). Edited February 16 by nopse0
Strateg Posted February 16 Posted February 16 (edited) I have same problem. Using YPS. Every time if something changes in character - full part of body become blue, or bright blue. For example makeup, or nails color. Spoiler Edited February 16 by Strateg image to spiler, and added more info
nopse0 Posted February 21 Author Posted February 21 On 2/16/2026 at 6:53 PM, Strateg said: I have same problem. Using YPS. Every time if something changes in character - full part of body become blue, or bright blue. For example makeup, or nails color. I think it's best, when you are adding/removing tattoos, to pause the game first, before opening the SlaveTats GUI (e.g. by opening the console before pressing 'F6'), so that no mod can add/remove overlays or SlaveTats tattoos, while the GUI is running. I am currently adding some proper models to the gui, so the controls (combo boxes, etc.) of the gui itself are synchronized with each other, but this doesn't help against external changes made while the gui is running (though I re-read the NiOverride and SlaveTats data once per second, so at least the shown data shouldn't be totally outdated).
HintHelmetxX Posted February 28 Posted February 28 Quick question cause I wasn't sure... I am currently running SlaveTatsNG 0.8.1 and I see that the recent update is titled "GUI 0.2.0". Is this mod needed "in addition" to the 0.8.1 version or is it a replacement? Its confusing to me cause the install name is different from "SlaveTatsNG". I looked around for upgrade instructions but I found none (I easily could have missed something). Thanks in advance and thanks for all your work!
nopse0 Posted February 28 Author Posted February 28 (edited) 15 hours ago, HintHelmetxX said: Quick question cause I wasn't sure... I am currently running SlaveTatsNG 0.8.1 and I see that the recent update is titled "GUI 0.2.0". Is this mod needed "in addition" to the 0.8.1 version or is it a replacement? Its confusing to me cause the install name is different from "SlaveTatsNG". I looked around for upgrade instructions but I found none (I easily could have missed something). Thanks in advance and thanks for all your work! No, it's just a gui (like the MCM), completely optional. If you want to try it, you also need CatMenu from NexusMods (Ps: Easy to overlook, but it's written somewhere on the Catmenu site, you have to copy it's 'imgui.dll' into the Skyrim folder, otherwise game crashes on start). Edited February 28 by nopse0 2
SIKguy Posted February 28 Posted February 28 (edited) Can you upload GUI version 0.1.1 again on the site? The mod is needed for some modlist to be installed Edited February 28 by SIKguy
nopse0 Posted February 28 Author Posted February 28 (edited) 1 hour ago, SIKguy said: Can you upload GUI version 0.1.1 again on the site? The mod is needed for some modlist to be installed Ah, didn't think on that. No, but v0.1.2 I have, its in Git https://github.com/nopse0/SlaveTatsGUI/releases , but v0.1.1 I made no proper release of. Ah, found it, I had one in an old Skyrim folder. SlaveTatsGUI-0.1.1.7z Edited February 28 by nopse0 1
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now