Mushano Posted June 8 Posted June 8 (edited) On 6/8/2026 at 7:59 AM, hextun said: Before going to "save is borked" instead of "hextun made a booboo", given that I *did* elect to move *away* from actual API calls because in *my* testbed the API calls were not working, I'd like to collect a little info if you don't mind. Hmm.. is this a purely custom modlist, a pre-made modlist (e.g. from wabbajack), or a customized pre-made modlist (e.g. from wabbajack, but with your own tweaks)? I'm curious to match it against my own testbed for SLP+ (Masterstroke) Do you have an older save you could load, verify things are working (since you did feel confident things were working at one point), and then try 980 again? Are you willing to do unpaid testing? Side note/PSA: In the LL text editor (i.e. where I am typing right now), if you enter a smiley (like colon-right parens, i.e. ":)" ), but do not hit enter or space after the parens, your arrow keys will stop allowing navigation in the text editor until you do so? Like, start typing, then enter the ":)" but without the quotes. Then, before you hit enter or space (thus letting the editor convert it to the icon), try using your arrow keys. You can't! This surprised me. Enjoy! Purely custom modlist before wabbajack existed! Basically a migrated Skyrim to Skyrim Special modlist using Wrye Bash and not any Mod Organizers. I could try older saves, but this behaviour seems kind of familiar to an old version of SL triggers where for some reasons things would play out of order. Like start of sex scripts wouldn't run, but it would fire orgasms or end of sex scripts. Or end of sex scripts would fire at the beginning of the scene. Not sure what fixed it. I could definitely try some save files and see what happens. I hope we narrow down the problem. PS: About the smiley problem. Nope! I do not have that problem . Actually I just got that bug too. Most of the time I can, but if I enter the smiley mid sentence, like I'm editing a sentence, I ran into that bug. For reference, using Firefox. Edit: Okay. Testing done. It seems like somewhere in-between 980 and 983, that's when the logic broke. I'm not 100% certain, but 982 worked most of the time, so it might just be 983 that is broken at the moment. This was tested using an older save that I had near the beginning of my game. Testing newer save seems to confirm that 983 is currently broken with SLP+ and aggressive detection. Using a newer save, it does seem like 982 works, but 983 doesn't. Edited June 9 by Mushano
hextun Posted June 26 Author Posted June 26 16 hours ago, Fraying9981 said: whats the command to get the dick size from TNG? tng_get_actor_size?
Fraying9981 Posted June 26 Posted June 26 14 minutes ago, hextun said: tng_get_actor_size? thanks, do you have an idea of the value range?
hextun Posted June 26 Author Posted June 26 2 hours ago, Fraying9981 said: thanks, do you have an idea of the value range? Not as such, though I recall the MCM has settings for e.g. small, medium, large that appeared to range typically from, say, 0.8 to 1.3 or so maybe? Factor in race multipliers and you could perhaps end up with 0.5 to 1.5? But that's all dependent on how your modlist is set up. Technically I suppose you could normalize it all to a flat 1.0 for equality. having said that I don't know for sure that that's what you'll be getting back.
Fraying9981 Posted June 27 Posted June 27 1 hour ago, hextun said: Not as such, though I recall the MCM has settings for e.g. small, medium, large that appeared to range typically from, say, 0.8 to 1.3 or so maybe? Factor in race multipliers and you could perhaps end up with 0.5 to 1.5? But that's all dependent on how your modlist is set up. Technically I suppose you could normalize it all to a flat 1.0 for equality. having said that I don't know for sure that that's what you'll be getting back. thanks, indeed. 1
Fraying9981 Posted June 30 Posted June 30 do you know what's the unit range for enjoyment? should you only use addenjoyment + a fix number? or does it make sense to use relative change?
hextun Posted June 30 Author Posted June 30 3 minutes ago, Fraying9981 said: do you know what's the unit range for enjoyment? should you only use addenjoyment + a fix number? or does it make sense to use relative change? I *think* it functions from 0-100 but IIRC the API allows values to exceed the range softly, meaning it won't fail but applies a cap. At least for SexLab. SexLab P+ redid a lot of the enjoyment stuff but I suspect it works similarly. I have a script I have tinkered with that plays with enjoyment during a scene and seems to work for both SL and SLP+ within an expected range of 0-100. So if you adjust enjoyment 50, it should add 50 to the current level. Note that normal execution by the respective frameworks seems to apply far more subtle amounts of enjoyment per unit time by default; an adjustment of 50 would be significant to say the least.
hextun Posted June 30 Author Posted June 30 55 minutes ago, Fraying9981 said: do you know what's the unit range for enjoyment? should you only use addenjoyment + a fix number? or does it make sense to use relative change? This is a slightly altered version of the SLTScript I mentioned, CumDelay.sltscript. It's a mini-game that can ostensibly work on its own or sit on top of something like SLSO. I have tested it on both SexLab and SexLab P+. Note that the values for enjoyment increase are large and notable, even for the "Work It" scenario (i.e. the player attempting to provide service to earn the right to orgasm). The general point of this mini-game is that there is an amount of effort that must be achieved, by stimulating the partner(s), before the player's ability to orgasm is unlocked. When the player breaks through, this level is increased; each scene where the player breaks through makes the next scene harder to break through. If the player does not break through, the level is reduced a bit. Several keys can be mapped for listening, configurable as variables near the top of the script. There are options to "give up", where further self pleasure is impossible, as well as self and other service, where an extreme amount of enjoyment is tacked on to either the player or the partner(s). It is meant to be run on Sex Start, Player targeted. It should give an idea of how enjoyment can be affected. You can play with the values to see how much it impacts progress. Note that, in my very anecdotal observation, SLP+ enjoyment seems to progress more quickly under normal conditions (i.e. without this script or attempting to use the built-in manipulation) than, for example, in base SexLab. So if you are using SLP+, you'll see enjoyment ratcheting up pretty noticeably, and then, if you use this script, it's going to go much more quickly. Spoiler set $CUM_DENIAL_FLOOR 100.0 set $CUM_DENIAL_DECREMENT -25.0 set $CUM_DENIAL_DECR_FLOOR $CUM_DENIAL_FLOOR - $CUM_DENIAL_DECREMENT set $CUM_DENIAL_CEILING 2000.0 ; these values are used directly with the SexLab/SexLabP+ API / It appears that for SLP the values may need to be larger to have effect, early results are inconclusive set $SERVICE_ENJOYMENT_SELF 100 ; when providing service to self, add this much enjoyment set $SERVICE_ENJOYMENT_OTHERS 100 ; when providing service to others, add this much enjoyment set $GIVEUP_ENJOYMENT_OTHERS 20 ; after giving up, add this much enjoyment to the others each 0.5 second set $BREAKTHROUGH_ENJOYMENT_SELF 100 ; upon breaking through, add this much enjoyment to self set $WORK_ENJOYMENT_RND_OTHER_MIN 0 ; for the work-it enjoyment calc, rnd(min, max) + bonus set $WORK_ENJOYMENT_RND_OTHER_MAX 7 ; for the work-it enjoyment calc, rnd(min, max) + bonus set $WORK_ENJOYMENT_OTHER_BONUS 17 ; for the work-it enjoyment calc, rnd(min, max) + bonus ; keystrokes - https://gist.github.com/arithex/3e953d1eb096afe58ce05ba6846493e4 ; NP1/79 ; NP2/80 ; NP3/81 ; NP4/75; NP5/76; NP6/77 ; NP7/71 ; NP8/72 ; NP9/73; NP0/82 ; NP-/74; NP+/78 ; NPENTER/156 ; ArrowUp/200 ; ArrowLeft/203 ; ArrowRight/205 ; ArrowDown/208 set $KEY_BREAK "G" set $DXC_BREAK 34 set $KEY_WORK "ArrowUp" set $DXC_WORK 200 set $KEY_SELF "ArrowRight" set $DXC_SELF 205 set $KEY_OTHER "ArrowLeft" set $DXC_OTHER 203 set $KEY_GIVEUP "NP5" set $DXC_GIVEUP 76 ; are you the Public Whore? Much harder to cum set $is_PW resultfrom pw_is_whore_anywhere msg_console $"CumDelay - Public Whore - {is_PW}" if $is_PW set $CUM_DENIAL_CEILING $CUM_DENIAL_CEILING * 1.5 endif if $global.cum_denial_max < $CUM_DENIAL_FLOOR msg_console $"CumDelay - Initializing cum_denial_max to {CUM_DENIAL_FLOOR}" set $global.cum_denial_max $CUM_DENIAL_FLOOR elseif $global.cum_denial_max > $CUM_DENIAL_CEILING set $rnd_decr resultfrom rnd_float 0 $global.cum_denial_max set $global.cum_denial_max $global.cum_denial_max - $rnd_decr msg_console $"CumDelay - cum_denial_max > {CUM_DENIAL_CEILING}, reducing by random amount ({rnd_decr}); new cum_denial_max - {global.cum_denial_max}" elseif $global.cum_denial_max > $CUM_DENIAL_DECR_FLOOR msg_console $"CumDelay - Decrementing cum_denial_max by {CUM_DENIAL_DECREMENT}" inc $global.cum_denial_max $CUM_DENIAL_DECREMENT endif set $info_msg $"CumDelay - Press '{KEY_BREAK}' to Disable, {KEY_WORK}-Work It, {KEY_SELF}-Service self, {KEY_OTHER}-Service others, {KEY_GIVEUP}-Give up : .. {global.cum_denial}/{global.cum_denial_max}" msg_console $info_msg uilib_shownotification $info_msg set $broken false if $global.cum_denial < $global.cum_denial_max sl_disableorgasm $system.player true msg_console "CumDelay - Disabling orgasms for now" else set $global.cum_denial 0.0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR set $broken true msg_console "CumDelay - Orgasms starting enabled" endif [startwaiting] set $keypress resultfrom sl_waitforkbd $DXC_BREAK $DXC_WORK $DXC_SELF $DXC_OTHER $DXC_GIVEUP if $keypress == $DXC_WORK set $rndi resultfrom rnd_int $WORK_ENJOYMENT_RND_OTHER_MIN $WORK_ENJOYMENT_RND_OTHER_MAX inc $rndi $WORK_ENJOYMENT_OTHER_BONUS sl_adjustenjoyment $system.partner1 $rndi sl_adjustenjoyment $system.partner2 $rndi sl_adjustenjoyment $system.partner3 $rndi sl_adjustenjoyment $system.partner4 $rndi if $broken == false set $decr_amount $system.random.100 if $is_PW set $decr_amount $decr_amount * 0.25 endif inc $global.cum_denial $decr_amount if $global.cum_denial > $global.cum_denial_max sl_disableorgasm $system.player false msg_console $"CumDelay - Breakthrough! {global.cum_denial}/{global.cum_denial_max}" set $global.cum_denial 0.0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR set $broken true sl_adjustenjoyment $system.player $BREAKTHROUGH_ENJOYMENT_SELF endif else sl_adjustenjoyment $system.player $rndi endif goto [startwaiting] elseif $keypress == $DXC_OTHER msg_console "CumDelay - Service to Others" sl_adjustenjoyment $system.partner1 $SERVICE_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner2 $SERVICE_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner3 $SERVICE_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner4 $SERVICE_ENJOYMENT_OTHERS goto [startwaiting] elseif $keypress == $DXC_SELF msg_console "CumDelay - Service to Self" if $is_PW msg_console "CumDelay - Unable to service self while the public whore" else sl_adjustenjoyment $system.player $SERVICE_ENJOYMENT_SELF sl_orgasm $system.player endif goto [startwaiting] elseif $keypress == $DXC_GIVEUP sl_disableorgasm $system.player true msg_console "CumDelay - Giving Up and disabling orgasms" [do giveup_service] sl_isin $system.player if $$ sl_adjustenjoyment $system.partner1 $GIVEUP_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner2 $GIVEUP_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner3 $GIVEUP_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner4 $GIVEUP_ENJOYMENT_OTHERS util_wait 0.5 goto [do giveup_service] else msg_console "CumDelay - Exiting after Giving Up" if $is_PW set $global.cum_denial 0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR endif return endif elseif $keypress == $DXC_BREAK msg_console "CumDelay - Break forced" if $broken == true sl_disableorgasm $system.player false msg_console $"CumDelay - '{KEY_BREAK}' pressed again; Disabled: {global.cum_denial}/{global.cum_denial_max}" if $is_PW set $global.cum_denial 0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR endif return else set $global.cum_denial $global.cum_denial_max + 1.0 msg_console $"CumDelay - '{KEY_BREAK}' pressed; Overriding cum_denial {global.cum_denial}/{global.cum_denial_max}" goto [startwaiting] endif endif if $is_PW set $global.cum_denial 0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR endif msg_console $"CumDelay - result: {keypress} .. {global.cum_denial}/{global.cum_denial_max}"
hextun Posted June 30 Author Posted June 30 Probably also worth mentioning that spending some time to add Papyrus optimizations may help. Here is my PapyrusTweaks.ini file for example. Spoiler # |\__/,| (`\ ZZZZZZ # |_ _ |.--.) ) ZZZZ # ( T ) / zzz #(((^_(((/(((_/ [Fixes] ;Fixes ToggleScripts command not persisting when saving/stack dumping ;Scripts will now stay turned off when toggled off, and on when toggled on. bFixToggleScriptsCommand = true ;Fix unintentionally allocating script pages when getting largest available page, but out of memory. bFixScriptPageAllocation = true ;Fix crash when passing in NONE object to script function Actor.IsHostileToActor(). bFixIsHostileToActorCrash = true ;Fix scripts that don't load right away breaking completely if they reference an invalid object type (Ex: SuperSecretScript has a function that takes InvalidScript as a parameter). bFixDelayedScriptBreakage = true [Experimental] ;(VR-ONLY) Pauses all non-playroom scripts while in the VR playroom, so mod scripts only initialize once you actually enter a save/new game. ;This is only experimental as it intentionally alters script behavior bDisableScriptsInPlayroomVR = false ;Stops the game from resetting when loading a corrupted save ;This will NOT fix a broken save, just allows you to load the save no matter what information is lost. ONLY USE AS A LAST RESORT TO RECOVER A SAVE YOU HAVE BEEN WARNED!! bBypassCorruptSaveMessage = false ;Allows the Script Engine to use as much memory as needed, with no cap. This makes `iMaxAllocatedMemoryBytes` in Skyrim.ini useless ;Note: Skyrim already ignores memory limit when stressed, this setting just keeps it ignores. bIgnoreMemoryLimit = true ;(Formerly bRunScriptsOnMainThreadOnly) ;Speeds up native calls by desyncing them from framerate and instead syncing script calls to a spinlock, greatly improving script performance while still preventing concurrent execution of native calls bSpeedUpNativeCalls = true ;(Formerly sMainThreadMethodsToExclude, requires bSpeedUpNativeCalls=true) ;List of script method prefixes to exclude from being sped up (ex: "Equip" excludes "EquipItem" and "EquipItemByID", but does NOT exclude "UnequipItem". ;It is strongly recommended to leave at defaults unless you absolutely know what you're doing ;as a lot of modifying functions like `EquipItem` do not work properly if executed more than once in a single frame. ; Defaults exclude everything except for read-only functions (ex: GetFormFromFile, HasKeyword, IsLoaded, etc.) ;ORIGINALsScriptMethodPrefixesToExclude = Activate, Add, Advance, Allow, Attach, Apply, Block, Cast, Change, Clear, Close, Complete, Create, Damage, Delete, Disable, Disallow, Dismount, Dispel, DoCombatSpellApply, Draw, Drop, Enable, End, Equip, Evaluate, Fade, Fail, Fire, Force, GetAnimation, GetQuest, Hide, Hold, Ignore, Increment, Keep, Kill, Knock, Learn, Load, Lock, Mod, Move, Mute, Open, Place, Play, Pop, Precache, Process, Push, Queue, Quit, Regenerate, Register, Release, RemoteCast, Remove, Request, Reset, Restore, Resurrect, Revert, Save, Say, Send, Serve, Set, Shake, Sheath, Show, Start, Stop, Teach, TempClone, Tether, Toggle, Translate, Trap, Trigger, Try, Unequip, Unlock, UnMute, UnPause, Update, Unregister sScriptMethodPrefixesToExclude = Offset, _Set, _Adjust, _Get, _Seed, _Reset, _Clear, _Copy, CalcEnjoyment, Activate, Add, Advance, Allow, Attach, Apply, Block, Cast, Change, Clear, Close, Complete, Create, Damage, Delete, Disable, Disallow, Dismount, Dispel, DoCombatSpellApply, Draw, Drop, Enable, End, Equip, Evaluate, Fade, Fail, Fire, Force, GetAnimation, GetQuest, Hide, Hold, Ignore, Increment, Keep, Kill, Knock, Learn, Load, Lock, Mod, Move, Mute, Open, Place, Play, Pop, Precache, Process, Push, Queue, Quit, Regenerate, Register, Release, RemoteCast, Remove, Request, Reset, Restore, Resurrect, Revert, Save, Say, Send, Serve, Set, Shake, Sheath, Show, Start, Stop, Teach, TempClone, Tether, Toggle, Translate, Trap, Trigger, Try, Unequip, Unlock, UnMute, UnPause, Update, Unregister ;(Formerly sMainThreadClassesToExclude, requires bSpeedUpNativeCalls=true) ;List of script classes to exclude from being sped up by bSpeedUpNativeCalls. ;It is strongly recommended to leave at defaults unless you absolutely know what you're doing ;ORIGINALsScriptClassExclusions = UI, ConsoleUtil, PO3_SKSEFunctions, MfgConsole, MFGConsoleFunc, Input, Debug, Utility, PapyrusTweaks, Quest, MfgConsoleFuncExt sScriptClassExclusions = UI, ConsoleUtil, PO3_SKSEFunctions, MfgConsole, MFGConsoleFunc, Input, Debug, Utility, PapyrusTweaks, Quest, MfgConsoleFuncExt, SexLabUtil, slaInternalModules, AnimSpeedHelper [VM Tweaks (Tweaks that directly alter the script engine)] ;Maximum papyrus operations per frame. Higher number means better script performance on average ;Has a very minor impact on framerate, and varies from script to script. (Default: 500, Vanilla value: 100). Recommended Range: 100-2000. Set to 0 to disable iMaxOpsPerFrame = 4000 ;Modify how long Papyrus can be "overstressed" before dumping stacks, in milliseconds (Default value: 15000, Vanilla value: 5000). ;Set to 0 to disable the stack dump check, or -1 to disable this setting. ;See https://www.nexusmods.com/skyrimspecialedition/articles/4625 for information on what a stack dump is iStackDumpTimeoutMS = 15000 ;Enables loading of doc strings from scripts into the engine. Requires `bLoadDebugInformation` to be true in this INI bEnableDocStrings = true ;Enables Skyrim to load debug information of scripts. This completely overrides bLoadDebugInformation in Skyrim.ini and is provided here for easier configuration bEnableDebugInformation = true [Logging Tweaks (Tweaks that affect script logging)] ;Disables `File " % s " does not exist or is not currently loaded.` logs from being printed when calling Game.GetFormFromFile(). ;This only disables the logging of the error, the error itself will still occur bDisableGetFormFromFileErrorLogs = false ;Improves Base Type Mismatch error to show inheritance hierarchy of scripts; Also clarifies if the script was a genuine mismatch, or if the script doesn't exist bImproveBaseTypeMismatchLogs = true ;Improves several error logs relating to incompatible arguments to better clarify what is incompatible bImproveValidateArgsLogs = true ;Disable "Property %s on script %s attached to %s cannot be initialized because the script no longer contains that property" log messages. ;This only disables the logging of the warning, the warning itself will still occur bDisableNoPropertyOnScriptErrorLogs = false ;Disable "Cannot open store for class "%s", missing file?" errors being logged. ;This only disables the logging of the error, the error itself will still occur bDisableMissingScriptError = false ;Adds a summary of events when dumping stacks to log bSummarizeStackDumps = true
Fraying9981 Posted June 30 Posted June 30 1 hour ago, hextun said: This is a slightly altered version of the SLTScript I mentioned, CumDelay.sltscript. It's a mini-game that can ostensibly work on its own or sit on top of something like SLSO. I have tested it on both SexLab and SexLab P+. Note that the values for enjoyment increase are large and notable, even for the "Work It" scenario (i.e. the player attempting to provide service to earn the right to orgasm). The general point of this mini-game is that there is an amount of effort that must be achieved, by stimulating the partner(s), before the player's ability to orgasm is unlocked. When the player breaks through, this level is increased; each scene where the player breaks through makes the next scene harder to break through. If the player does not break through, the level is reduced a bit. Several keys can be mapped for listening, configurable as variables near the top of the script. There are options to "give up", where further self pleasure is impossible, as well as self and other service, where an extreme amount of enjoyment is tacked on to either the player or the partner(s). It is meant to be run on Sex Start, Player targeted. It should give an idea of how enjoyment can be affected. You can play with the values to see how much it impacts progress. Note that, in my very anecdotal observation, SLP+ enjoyment seems to progress more quickly under normal conditions (i.e. without this script or attempting to use the built-in manipulation) than, for example, in base SexLab. So if you are using SLP+, you'll see enjoyment ratcheting up pretty noticeably, and then, if you use this script, it's going to go much more quickly. Hide contents set $CUM_DENIAL_FLOOR 100.0 set $CUM_DENIAL_DECREMENT -25.0 set $CUM_DENIAL_DECR_FLOOR $CUM_DENIAL_FLOOR - $CUM_DENIAL_DECREMENT set $CUM_DENIAL_CEILING 2000.0 ; these values are used directly with the SexLab/SexLabP+ API / It appears that for SLP the values may need to be larger to have effect, early results are inconclusive set $SERVICE_ENJOYMENT_SELF 100 ; when providing service to self, add this much enjoyment set $SERVICE_ENJOYMENT_OTHERS 100 ; when providing service to others, add this much enjoyment set $GIVEUP_ENJOYMENT_OTHERS 20 ; after giving up, add this much enjoyment to the others each 0.5 second set $BREAKTHROUGH_ENJOYMENT_SELF 100 ; upon breaking through, add this much enjoyment to self set $WORK_ENJOYMENT_RND_OTHER_MIN 0 ; for the work-it enjoyment calc, rnd(min, max) + bonus set $WORK_ENJOYMENT_RND_OTHER_MAX 7 ; for the work-it enjoyment calc, rnd(min, max) + bonus set $WORK_ENJOYMENT_OTHER_BONUS 17 ; for the work-it enjoyment calc, rnd(min, max) + bonus ; keystrokes - https://gist.github.com/arithex/3e953d1eb096afe58ce05ba6846493e4 ; NP1/79 ; NP2/80 ; NP3/81 ; NP4/75; NP5/76; NP6/77 ; NP7/71 ; NP8/72 ; NP9/73; NP0/82 ; NP-/74; NP+/78 ; NPENTER/156 ; ArrowUp/200 ; ArrowLeft/203 ; ArrowRight/205 ; ArrowDown/208 set $KEY_BREAK "G" set $DXC_BREAK 34 set $KEY_WORK "ArrowUp" set $DXC_WORK 200 set $KEY_SELF "ArrowRight" set $DXC_SELF 205 set $KEY_OTHER "ArrowLeft" set $DXC_OTHER 203 set $KEY_GIVEUP "NP5" set $DXC_GIVEUP 76 ; are you the Public Whore? Much harder to cum set $is_PW resultfrom pw_is_whore_anywhere msg_console $"CumDelay - Public Whore - {is_PW}" if $is_PW set $CUM_DENIAL_CEILING $CUM_DENIAL_CEILING * 1.5 endif if $global.cum_denial_max < $CUM_DENIAL_FLOOR msg_console $"CumDelay - Initializing cum_denial_max to {CUM_DENIAL_FLOOR}" set $global.cum_denial_max $CUM_DENIAL_FLOOR elseif $global.cum_denial_max > $CUM_DENIAL_CEILING set $rnd_decr resultfrom rnd_float 0 $global.cum_denial_max set $global.cum_denial_max $global.cum_denial_max - $rnd_decr msg_console $"CumDelay - cum_denial_max > {CUM_DENIAL_CEILING}, reducing by random amount ({rnd_decr}); new cum_denial_max - {global.cum_denial_max}" elseif $global.cum_denial_max > $CUM_DENIAL_DECR_FLOOR msg_console $"CumDelay - Decrementing cum_denial_max by {CUM_DENIAL_DECREMENT}" inc $global.cum_denial_max $CUM_DENIAL_DECREMENT endif set $info_msg $"CumDelay - Press '{KEY_BREAK}' to Disable, {KEY_WORK}-Work It, {KEY_SELF}-Service self, {KEY_OTHER}-Service others, {KEY_GIVEUP}-Give up : .. {global.cum_denial}/{global.cum_denial_max}" msg_console $info_msg uilib_shownotification $info_msg set $broken false if $global.cum_denial < $global.cum_denial_max sl_disableorgasm $system.player true msg_console "CumDelay - Disabling orgasms for now" else set $global.cum_denial 0.0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR set $broken true msg_console "CumDelay - Orgasms starting enabled" endif [startwaiting] set $keypress resultfrom sl_waitforkbd $DXC_BREAK $DXC_WORK $DXC_SELF $DXC_OTHER $DXC_GIVEUP if $keypress == $DXC_WORK set $rndi resultfrom rnd_int $WORK_ENJOYMENT_RND_OTHER_MIN $WORK_ENJOYMENT_RND_OTHER_MAX inc $rndi $WORK_ENJOYMENT_OTHER_BONUS sl_adjustenjoyment $system.partner1 $rndi sl_adjustenjoyment $system.partner2 $rndi sl_adjustenjoyment $system.partner3 $rndi sl_adjustenjoyment $system.partner4 $rndi if $broken == false set $decr_amount $system.random.100 if $is_PW set $decr_amount $decr_amount * 0.25 endif inc $global.cum_denial $decr_amount if $global.cum_denial > $global.cum_denial_max sl_disableorgasm $system.player false msg_console $"CumDelay - Breakthrough! {global.cum_denial}/{global.cum_denial_max}" set $global.cum_denial 0.0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR set $broken true sl_adjustenjoyment $system.player $BREAKTHROUGH_ENJOYMENT_SELF endif else sl_adjustenjoyment $system.player $rndi endif goto [startwaiting] elseif $keypress == $DXC_OTHER msg_console "CumDelay - Service to Others" sl_adjustenjoyment $system.partner1 $SERVICE_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner2 $SERVICE_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner3 $SERVICE_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner4 $SERVICE_ENJOYMENT_OTHERS goto [startwaiting] elseif $keypress == $DXC_SELF msg_console "CumDelay - Service to Self" if $is_PW msg_console "CumDelay - Unable to service self while the public whore" else sl_adjustenjoyment $system.player $SERVICE_ENJOYMENT_SELF sl_orgasm $system.player endif goto [startwaiting] elseif $keypress == $DXC_GIVEUP sl_disableorgasm $system.player true msg_console "CumDelay - Giving Up and disabling orgasms" [do giveup_service] sl_isin $system.player if $$ sl_adjustenjoyment $system.partner1 $GIVEUP_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner2 $GIVEUP_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner3 $GIVEUP_ENJOYMENT_OTHERS sl_adjustenjoyment $system.partner4 $GIVEUP_ENJOYMENT_OTHERS util_wait 0.5 goto [do giveup_service] else msg_console "CumDelay - Exiting after Giving Up" if $is_PW set $global.cum_denial 0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR endif return endif elseif $keypress == $DXC_BREAK msg_console "CumDelay - Break forced" if $broken == true sl_disableorgasm $system.player false msg_console $"CumDelay - '{KEY_BREAK}' pressed again; Disabled: {global.cum_denial}/{global.cum_denial_max}" if $is_PW set $global.cum_denial 0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR endif return else set $global.cum_denial $global.cum_denial_max + 1.0 msg_console $"CumDelay - '{KEY_BREAK}' pressed; Overriding cum_denial {global.cum_denial}/{global.cum_denial_max}" goto [startwaiting] endif endif if $is_PW set $global.cum_denial 0 inc $global.cum_denial_max $CUM_DENIAL_FLOOR endif msg_console $"CumDelay - result: {keypress} .. {global.cum_denial}/{global.cum_denial_max}" thank you! this is helpful to understand an example of how to use. so the main function is "sl_adjustenjoyment " -> does it ADD a value on top of the 0-100 scale you mentioned OR: does it set the level 0-100 of the enjoyment? If you reach or exceed 100, do you get an orgasm automatically?
hextun Posted June 30 Author Posted June 30 23 minutes ago, Fraying9981 said: thank you! this is helpful to understand an example of how to use. so the main function is "sl_adjustenjoyment " -> does it ADD a value on top of the 0-100 scale you mentioned OR: does it set the level 0-100 of the enjoyment? If you reach or exceed 100, do you get an orgasm automatically? It appears to add to the actors existing value. And if orgasms are not disabled for them I believe that yes once you reach that value it will trigger one. I say I believe because other mods or values might also impact things. 1
ShadowClaw20017 Posted Sunday at 06:08 PM Posted Sunday at 06:08 PM Quick question. Say I wanted to design a script for triggering a scene upon hunger levels dropping with certain tags, but only out of combat. How do access the hunger variable in survival mode?
hextun Posted Monday at 01:01 AM Author Posted Monday at 01:01 AM 6 hours ago, ShadowClaw20017 said: Quick question. Say I wanted to design a script for triggering a scene upon hunger levels dropping with certain tags, but only out of combat. How do access the hunger variable in survival mode? If I am understanding you correctly, you are wanting to obtain the CC (i.e. base game, not modded like SunHelm Survival) current hunger value. If I am not mistaken, you can obtain the current value, which is normally scaled from 0 (fed) to 1000 (ravenous), by querying the Global Variable "Survival_HungerNeedValue", which you can do in SLTScript using global_getvalue "Survival_HungerNeedValue", i.e.: set $current_hunger resultfrom global_getvalue "Survival_HungerNeedValue" Similarly, I *believe* but *am not certain* you could set it via: global_setvalue "Survival_HungerNeedValue" 0.0 ; which would make you well fed again I don't currently have a list set up to use vanilla survival so can't test this. I got the global variable names by pulling up ccqdrsse001-survivalmode.esl in xEdit and taking an educated guess. There are some other interesting hunger related values there too.
hextun Posted Tuesday at 01:33 PM Author Posted Tuesday at 01:33 PM On 6/8/2026 at 6:11 PM, Mushano said: Purely custom modlist before wabbajack existed! Basically a migrated Skyrim to Skyrim Special modlist using Wrye Bash and not any Mod Organizers. I could try older saves, but this behaviour seems kind of familiar to an old version of SL triggers where for some reasons things would play out of order. Like start of sex scripts wouldn't run, but it would fire orgasms or end of sex scripts. Or end of sex scripts would fire at the beginning of the scene. Not sure what fixed it. I could definitely try some save files and see what happens. I hope we narrow down the problem. PS: About the smiley problem. Nope! I do not have that problem . Actually I just got that bug too. Most of the time I can, but if I enter the smiley mid sentence, like I'm editing a sentence, I ran into that bug. For reference, using Firefox. Edit: Okay. Testing done. It seems like somewhere in-between 980 and 983, that's when the logic broke. I'm not 100% certain, but 982 worked most of the time, so it might just be 983 that is broken at the moment. This was tested using an older save that I had near the beginning of my game. Testing newer save seems to confirm that 983 is currently broken with SLP+ and aggressive detection. Using a newer save, it does seem like 982 works, but 983 doesn't. Sorry for taking so long to reply; I guess I must have missed your edit. Well, v983 is when I introduced a change to how I resolve aggressiveness in SLP+ explicitly. Aaaaand I am guessing I borked it up. I'll look at reverting that change, but the original issue that caused me to make said change will also need revisiting. In the meantime, try reverting to v982, though note that that will also remove access to the introduced functions: sl_is_actor_aggressor sl_is_actor_submissive sl_is_scene_aggressive
Mushano Posted yesterday at 04:15 AM Posted yesterday at 04:15 AM On 7/7/2026 at 9:33 AM, hextun said: Sorry for taking so long to reply; I guess I must have missed your edit. Well, v983 is when I introduced a change to how I resolve aggressiveness in SLP+ explicitly. Aaaaand I am guessing I borked it up. I'll look at reverting that change, but the original issue that caused me to make said change will also need revisiting. In the meantime, try reverting to v982, though note that that will also remove access to the introduced functions: sl_is_actor_aggressor sl_is_actor_submissive sl_is_scene_aggressive Yeah, for now I'm on a mix of 982/983...? I forgot what I did, but I think I unstubbed sl_is_aggressive and restored what you put in with 982. And I'm using the 982 version of sl_triggersExtensionSexLab. That seems to have restored the aggressive or consensual check for me.
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