zzuhz Posted July 26, 2025 Posted July 26, 2025 As the title suggested, recently I've came accross this issue that the PC won't open it's mouth during oral scene, and then later I realized that the PC will automatically close it's mouth——or say, refresh it's face expression in every 5-6 seconds (I figured this out by trying open pc's mouth using Sexlab Survival's functionality and the Vanilla Sexlab expression test menu). I then enabled papyrus log and asked Chatgpt whether it can identify some issues within, and it suggested it was because the Random Emotion was trying to do something with the expressions: Papyrus.0.log Hence I disabled the Random Emotions mod and then tried again, but the problem persists, here's the new log: Papyrus.2.log And at this point the GPT starts to giving nonsense suggestions... I'm running out of ideas.
traison Posted July 26, 2025 Posted July 26, 2025 (edited) 5 minutes ago, zzuhz said: And at this point the GPT starts to giving nonsense suggestions... I hope you realize the first one was nonsense as well. 5 minutes ago, zzuhz said: ...refresh it's face expression in every 5-6 seconds What I would do in your case is use a utility that can search for text in Skyrim (be it my own utility, or something like Notepad++) and search for every writing function that's declared in MfgConsoleFunc. Maybe start with the phoneme ones, as those are the most likely ones. The mods that contain the pex files with positive matches is your list of suspects. Edit: My utility is available upon request. Edited July 26, 2025 by traison
zzuhz Posted July 26, 2025 Author Posted July 26, 2025 15 minutes ago, traison said: I hope you realize the first one was nonsense as well. What I would do in your case is use a utility that can search for text in Skyrim (be it my own utility, or something like Notepad++) and search for every writing function that's declared in MfgConsoleFunc. Maybe start with the phoneme ones, as those are the most likely ones. The mods that contain the pex files with positive matches is your list of suspects. Edit: My utility is available upon request. When I use "mfg phoneme 0 100" the mouth will remain opens until I do "mfg reset", but when I use "mfg emotion 10 100"(set to smile) then around 5s later the smile will disappear... I think I have the utility tool you mentioned(the one you DMed me yesterday from another post of mine, it was amazing). But I also need to know the the logic of how this happens to debug it, like for example even if I search all the functions that contain "phoneme" in my modpack I'll still be as clueless since I don't know which one is causing this specific issue. Like, I feel this must be from only 1 source, right? It's so specific, every 5-7(I can't tell exact seconds from my feelings) seconds reset the expression... Can I figure that out? Also, my apologies, it's 4:30am for me and I really can't last anymore, I'll reply you once I have some sleep. Thank you again.
traison Posted July 26, 2025 Posted July 26, 2025 42 minutes ago, zzuhz said: around 5s later the smile will disappear In that case it's the expression ones you'd be interested in, not the phonemes. 43 minutes ago, zzuhz said: I think I have the utility tool you mentioned... I got too many things going on here at once. 43 minutes ago, zzuhz said: I also need to know the the logic of how this happens to debug it, like for example even if I search all the functions that contain "phoneme" in my modpack I'll still be as clueless since I don't know which one is causing this specific issue. Typically I don't bother explaining further because most people settle for the "remove the mod" option. The real fix goes more like this: Find the pex files using my utility. Find their source files (psc) or decompile the pex files. Analyze how the function you're interested in is used in this script. In your case you're looking for a timer of some kind (most likely OnUpdate) that eventually calls your function. Look for a configuration option already in the game that would branch the code in a direction that prevents it from calling the function. If there is no configuration option you can add it yourself. Alternatively, you can just comment out the function call. Compile the altered script. 46 minutes ago, zzuhz said: Like, I feel this must be from only 1 source, right? Yes, there's a script somewhere with one of the following: Utility.Wait(5.0) RegisterForUpdate(5.0) RegisterForSingleUpdate(5.0) You probably shouldn't take the 5.0 literally. It could be a variable; and like you said, a human won't tell the difference between 4.8 and 5.2 in this context.
Kastagir Posted July 26, 2025 Posted July 26, 2025 (edited) A couple of things in the SexLab mod can cause the mouth to close. First, most "blowjob" animations use the "Shout" expression (mfg expression 16) together with the "Big Aah" phoneme (mfg phoneme 1). Two SL events can reset both the expression and the BigAah phoneme to zero: advancing an animation stage or an actor voice event. You can try increasing the delay between actor voice events and disable automatic scene advancement. These are settings in the SL mod MCM. I believe the default maximum delay between actor voice events is quite short. I ended up editing the script so that the maximum delay is 3600 seconds precisely because of this problem. Edited July 26, 2025 by Kastagir
zzuhz Posted July 27, 2025 Author Posted July 27, 2025 8 hours ago, traison said: In that case it's the expression ones you'd be interested in, not the phonemes. I got too many things going on here at once. Typically I don't bother explaining further because most people settle for the "remove the mod" option. The real fix goes more like this: Find the pex files using my utility. Find their source files (psc) or decompile the pex files. Analyze how the function you're interested in is used in this script. In your case you're looking for a timer of some kind (most likely OnUpdate) that eventually calls your function. Look for a configuration option already in the game that would branch the code in a direction that prevents it from calling the function. If there is no configuration option you can add it yourself. Alternatively, you can just comment out the function call. Compile the altered script. Yes, there's a script somewhere with one of the following: Utility.Wait(5.0) RegisterForUpdate(5.0) RegisterForSingleUpdate(5.0) You probably shouldn't take the 5.0 literally. It could be a variable; and like you said, a human won't tell the difference between 4.8 and 5.2 in this context. So I've tried search for "Utility.wait(", "RegisterForUpdate(", "RegisterForSingleUpdate(", but the results were simply too many to analyze... Strings that I also tried and their result: "emotion": Name match result 25, Content match result 96, among which there is a record from Troubles of Heroine, and the rest most came from Random emotion. "expression": Name match result 39, Content match result 971, of which I can't analyze. "setExpressionModifier": Name match result 0, Content match Results 9: 2 came from Devious Training, 1 from SexLabFrameworkSE_v163, 1 from Devious Devices for SE-AE-VR, 1 from Devious Devices NG, 1 from Blush When Aroused SE_v3.0.0_testing, 1 from Faster HDT-SMP 1 from CBPC Physics with Collisions I tried to install both Random Emotions and Troubles of Heroine, then loaded an early save before I enter Riverwood (at the Riverwood entrance). Then I found that even with those 2 mods installed(My current full mod pack), the pc expression still works normally: It won't auto reset "mfg expression 10 100", auto close mouth manually opened by Sexlab Survival, and during sex scene the character will have facial expressions(The mouth is still closed but I can manually open it by SLS hotkey, and it won't close by itself by few seconds). Then, after another few hours of experiments. I think I've found the cause! It was because of the devious device equipped on my PC, it's a collar, and it will refresh pc's expression to neutral every 5 secs... When I took it off everything works normal. But this is not the solution yet. At this point the easiest solution would be just disable the whole DD mods, or just don't equip them at all, but I do want to keep them. So what should I do? I've checked the MCM settings, and there are no options that allow me to fiddle with facial expressions... Also, a side question. How do you properly Bodyslide for DD equipment? I'm pretty sure I did it in the BodySlide but in games a lot of DD equipment just not aligned with my pc's body, such as nipple rings, etc.
traison Posted July 27, 2025 Posted July 27, 2025 (edited) 1 hour ago, zzuhz said: So I've tried search for "Utility.wait(", "RegisterForUpdate(", "RegisterForSingleUpdate("... Next time don't include the "(". The source code is not visible in pex files, only the function names. Searching for "Utility.Wait" is a bit optimistic too, because that assumes function calls are stored with their class names, which seems unlikely. Better search terms would have been "Wait" and "RegisterForSingleUpdate", of which "Wait" is obviously awfully generic and might cause a lot of false-positives to show up. 1 hour ago, zzuhz said: But this is not the solution yet. Wear the collar. Open the console. prid 14 inv Find the form id of the collar among the items marked as "worn". Empty your inventory first if you want to find it faster. Open xEdit, don't change the load order. Browse to the form id you found. Find its enchantment, Ctrl + Click the field in the ARMO record to go straight to it. Find the script name that's associated with that enchantment. Open the script in notepad, and disable its ability to reset or otherwise alter expressions. Compile the altered script. 1 hour ago, zzuhz said: How do you properly Bodyslide for DD equipment? I'm pretty sure I did it in the BodySlide but in games a lot of DD equipment just not aligned with my pc's body, such as nipple rings, etc. Are you sure you got the correct BodySlide files? Another thing to keep in mind (unfortunately) is that many outfits are labeled 3BAv2 when they're actually 3BA. There's even CBBE and CBBE SMP outfits labeled 3BA. 3BBB outfits are anyones guess, could be COCO, 3BA, 3BAv2, BHUNP, ... NifSkope will tell the truth. Sometimes you can spot differences in sliders in BodySlide too. Like 3BA will be missing certain belly, vag and muscle sliders compared to 3BAv2 I believe. Edit: Also, differences in bodies is not limited to what you see in NifSkope and BodySlide. Nip rings not lining up could be simply because the weight paint is different, i.e. one of them moves more than the other when physics and animations are applied. Edited July 27, 2025 by traison
zzuhz Posted July 27, 2025 Author Posted July 27, 2025 26 minutes ago, traison said: Find its enchantment, Ctrl + Click the field in the ARMO record to go straight to it. Sorry, but what is ARMO record? I'm looking at it right now and I didn't find the section called ARMO at the right hand side... Here's the screenShots(My cursor is pointing to the collar):
traison Posted July 27, 2025 Posted July 27, 2025 (edited) 24 minutes ago, zzuhz said: Sorry, but what is ARMO record? Expand the Record Header and you'll see the text "ARMO:0004000F". ARMO is Armor, ARMA is Armor Addon, and so on. They're ESP record labels (types, ids, whatever you want to call them). i.e. you're in the right place already. 24 minutes ago, zzuhz said: Here's the screenShots(My cursor is pointing to the collar) What's the value of the VMAD field? Perhaps there's a script hiding in there. Edited July 27, 2025 by traison
zzuhz Posted July 27, 2025 Author Posted July 27, 2025 42 minutes ago, traison said: Expand the Record Header and you'll see the text "ARMO:0004000F". ARMO is Armor, ARMA is Armor Addon, and so on. They're ESP record labels (types, ids, whatever you want to call them). i.e. you're in the right place already. What's the value of the VMAD field? Perhaps there's a script hiding in there. Sorry for the late reply, I'm a bit busy atm. As the screenshot shows, is this the script I should be look into...? Should I just go to the mod folder and find this and then identify the specific lines of codes that refreshes expression? Any key words? Also, the in-game console screenshot I shared earlier had some items showing "BAD EDITOR ID xxxxxxxxx", should I be worry about those...?
traison Posted July 27, 2025 Posted July 27, 2025 14 minutes ago, zzuhz said: is this the script I should be look into...? One of them, yes. There can be more than one script attached to things. 15 minutes ago, zzuhz said: Should I just go to the mod folder and find this and then identify the specific lines of codes that refreshes expression? Yes. 15 minutes ago, zzuhz said: Any key words? The expression functions in MfgConsoleFunc. 16 minutes ago, zzuhz said: should I be worry about those...? Everyone gets them. Never bothered to look into it.
zzuhz Posted July 27, 2025 Author Posted July 27, 2025 30 minutes ago, traison said: One of them, yes. There can be more than one script attached to things. Yes. The expression functions in MfgConsoleFunc. Everyone gets them. Never bothered to look into it. So far as I found in xEdit, there is only this script that this item is using, yet I didn't found anything that seems to be MFG or expression related...
traison Posted July 27, 2025 Posted July 27, 2025 OnEquippedPre calls the overridden function OnEquippedPre in zadRestraintScript.
zzuhz Posted July 27, 2025 Author Posted July 27, 2025 38 minutes ago, traison said: OnEquippedPre calls the overridden function OnEquippedPre in zadRestraintScript. OK (WoW, how did you find that out?!), I'm looking at the zadRestraintScript right now, and it looks straight forward... It seems that it overwrites a function in the zadEquipScript.psc called OnEquippedPre and the way it was overwritten was... Calling the function in the parents as it was???? What? (I don't recognize this language, is this C?) And in the parents the function was defined as an empty function... So it theoretically shouldn't do anything, right? What happened?
traison Posted July 27, 2025 Posted July 27, 2025 22 minutes ago, zzuhz said: is this C? Papyrus. 22 minutes ago, zzuhz said: So it theoretically shouldn't do anything, right? What happened? Irrelevant. zadCollarScripts inherits from zadRestraintScript which inherits from zadEquipScript which inherits from... One of these scripts has the timer in it. 24 minutes ago, zzuhz said: WoW, how did you find that out?! See the first non-commented line of the script for class inheritance. ObjectReference is most likely the base script. Provided by the vanilla game.
zzuhz Posted July 27, 2025 Author Posted July 27, 2025 48 minutes ago, traison said: Papyrus. Irrelevant. zadCollarScripts inherits from zadRestraintScript which inherits from zadEquipScript which inherits from... One of these scripts has the timer in it. See the first non-commented line of the script for class inheritance. ObjectReference is most likely the base script. Provided by the vanilla game. I've came back with some update. So it's not because of the equipment itself, it was because there is a mod called Devious Training that will morph the pc's neck a bit(Made it longer), and as long as the training effect was there, the problem will persists. Reset the training progress in the MCM will help but it's a short-term fix. I tried to look up through the path you mentioned above and that didn't yield much insights for me... Sorry I'm really bad at reading tons of codes....
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