traison Posted Saturday at 04:11 PM Posted Saturday at 04:11 PM (edited) This is a lazy request since I haven't had time to look into it myself yet. Hoping to save some time by having someone else look it up for me you could say. Is there a mod that makes moans audible to NPCs? No more banging around the corner in a bandit cave without everyone getting curious. Edited Saturday at 06:20 PM by traison
Mister X Posted Saturday at 04:29 PM Posted Saturday at 04:29 PM I don't know of any, but using some script events and CreateDetectionEvent it should be quite easy to implement 🤔
traison Posted Saturday at 04:39 PM Author Posted Saturday at 04:39 PM 7 minutes ago, Mister X said: I don't know of any, but using some script events and CreateDetectionEvent it should be quite easy to implement 🤔 The issue with that one as I read it is that it creates a detection event at the current ObjectReference for a specific actor. If I want to wake up the entire cave, I need a cloak spell to iterate all the nearby actors I think. I realize there's a function for getting nearby actors in one of po3's mods (iirc) but I also recall one of those was prone to CTDs. This could be a "plan B" perhaps. Any other ideas?
Mister X Posted Saturday at 04:46 PM Posted Saturday at 04:46 PM (edited) As I understand it, the "owning" actor is the source of the event, the event itself then alerts anybody within the "soundlevel" range. As one example, those rattling bone traps from vanilla game use this event to alert nearby enemies. The triggering person (mostly the player) is set as owning actor and the sound level is just hard set for those traps to 100, IIRC. So, for your case: send the DetectionEvent with one participating actor on begin of a sex scene and with a certain sound level, and anybody nearby will be alerted whenever a scene starts. Or maybe use OnOrgasm instead, to roleplay that your patricipants can stay quiet until they're cumming. Or you change the soundlevel, depending on some metrics, so they start quiet and get lounder with raising arousal level or something. Or you use the partner instead of the player as owning actor, so bandits don't get alerted if you get raped by one of them. Edited Saturday at 04:56 PM by Mister X link to explanation of detection event 1
traison Posted Saturday at 04:56 PM Author Posted Saturday at 04:56 PM 9 minutes ago, Mister X said: ...those rattling bone traps from vanilla game use this event to alert nearby enemies. The triggering person (mostly the player) is set as owning actor... Ah right, didn't consider that. 1
traison Posted Saturday at 06:08 PM Author Posted Saturday at 06:08 PM I implemented this straight into sslBaseVoice for a couple of reasons: My SL files are already modified to accomodate my own mods. My own mods access the moan function(s) directly. Preliminary testing shows the aiSoundLevel value should be 100 + Strength * 2, maybe more. Obviously this is going to depend on the kind of sounds you have in SL - breathy or muffled sounds probably do not echo down the hallway. I'm only implementing this for myself so I'm skipping all the fancy code.
Mister X Posted Sunday at 08:06 AM Posted Sunday at 08:06 AM Heyho, would you be willing to try this out as well? I took the idea and built an event based mod out of it. SexlabAudibleMoaning-1.0.0.zip
traison Posted Sunday at 09:19 AM Author Posted Sunday at 09:19 AM (edited) 3 hours ago, Mister X said: Heyho, would you be willing to try this out as well? I took the idea and built an event based mod out of it. I read through the code and spotted this: Consider instead sending out detection events on SL stage start rather than anim start. As it is right now, detection will only happen on scene start and end i.e. someone can walk past you banging in the bushes and not notice anything. With stage start that becomes *slightly* less likely. I send my detection events every time an actual sound is played, so there's no missing the action. You're not checking if the actor is silent: sslActorAlias.IsSilent. You're not checking if the scene stage is silent: sslBaseAnimation.IsSilent. Edit: You're not considering DD. I'm assuming its ballgags (and similar things) affect SL voices. Micro-optimizations: Consider inverting your while loops to avoid Papyrus measuring array lengts on every iteration (it may or may not do this, I do not know the internals): int i = thread.Positions.Length While (i > 0) i -= 1 Actor akPartner = thread.Positions[i] ... Edited Sunday at 11:36 AM by traison 1
Mister X Posted yesterday at 07:46 AM Posted yesterday at 07:46 AM On 10/11/2026 at 11:19 AM, traison said: I read through the code and spotted this: Consider instead sending out detection events on SL stage start rather than anim start. As it is right now, detection will only happen on scene start and end i.e. someone can walk past you banging in the bushes and not notice anything. With stage start that becomes *slightly* less likely. I send my detection events every time an actual sound is played, so there's no missing the action. You're not checking if the actor is silent: sslActorAlias.IsSilent. You're not checking if the scene stage is silent: sslBaseAnimation.IsSilent. Edit: You're not considering DD. I'm assuming its ballgags (and similar things) affect SL voices. Micro-optimizations: Consider inverting your while loops to avoid Papyrus measuring array lengts on every iteration (it may or may not do this, I do not know the internals): int i = thread.Positions.Length While (i > 0) i -= 1 Actor akPartner = thread.Positions[i] ... Thanks for the input! 1) As I wanted to keep the SL scripts untouched, I only had the way of using events and provided functions, so no soundplay trigger for me ^^. I added stage events as well though. 2) Added 3) Added 4) Maybe later. Some soft requirement to check for worn gag keyword and reduce the loudness by some factor could be possible 5) Micro-optimization done ^^ SexlabAudibleMoaning-1.0.0-b.2.zip
traison Posted yesterday at 08:49 AM Author Posted yesterday at 08:49 AM Just now, Mister X said: As I wanted to keep the SL scripts untouched, I only had the way of using events and provided functions, so no soundplay trigger for me ^^. The key to game development is to make the illusion convincing. You could run your own OnUpdate that creates detection events for everyone currently in a scene. Send a detection event every n seconds; grab the interval from SL's config for additional brownie points: sslSystemConfig Property Config Auto Config.MaleVoiceDelay Config.FemaleVoiceDelay 1
Mister X Posted yesterday at 09:11 AM Posted yesterday at 09:11 AM (edited) Oh well, yeah... I'm definitely out of practice... ^^ EDIT: next iteration, with Devious Gag soft implementation and Update event in moan interval SexlabAudibleMoaning-1.0.0-b.3.zip Edited yesterday at 09:34 AM by Mister X
traison Posted yesterday at 10:47 AM Author Posted yesterday at 10:47 AM (edited) There's a bit of a quirk in how Keywords work in Skyrim where there's nothing stopping you from defining the same keyword EDID in multiple plugins. Perhaps this applies to all object types in the game. However when it comes SKSE64's Keyword.GetKeyword function it will only ever return one keyword, even if multiple are defined. In other words, if another mod defines zad_DeviousGag then you do not know which one your mod will use. A safer approach would be to do it without SKSE64: If (Game.GetModByName("name_of_zad_plugin.esp") != 255) ddGag = Game.GetFormFromFile(0xDEADBEEF, "name_of_zad_plugin.esp") As Keyword EndIf The GetModByName is there to prevent the error from GetFormFromFile when the plugin does not exist. It will work without it, but it won't look as nice in the Papyrus log. Downside here being that if the DD plugin name(s) change your mod stops working. Upside being that if someone releases a shoe mod with a new zad_DeviousGag KYWD your mod continues to work. These duplicate keywords are extremely common for SOS where practically every revealing armor has it's own SOS_Revealing keyword - and none of them work because of how SOS is implemented but that's another issue. I suppose the ultimate question is, do you want your mod to work in this situation? Edit: And if you're thinking about using Form.HasKeywordString instead then note that it also uses GetKeyword and will thus run into the same issue. It is technically possible to make a GetKeyword variant that returns all alternatives, but such a thing does not exist natively in any Papyrus extender as far as I'm aware of. Reason most likely being that even if it's not enforced, you're not supposed to have overlapping EDIDs - lets not enable bad practices. Edit again: I use lots of overlapping EDIDs especially in keywords so I guess this is another case of do as I say not as I do. Edited 20 hours ago by traison
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