Jump to content

Cumshot 2.3 (FINISHED, DISCONTINUED)


Recommended Posts

Posted
13 minutes ago, Seijin8 said:

First or second tab on the MCM lets you directly set the gender for the PC or any targeted character.  Note that Sexlab only recognizes two genders - it never really did more than that, and Cumshot v1 used the word "transgender" to just toggle from one to the other.

Its got one for player but not NPC ok found it Thanks

Posted

Here is a new version for my Cumshot improvements for SexLab:

  • Pressing the advance stage hotkey will no longer finish the animation if it's the last stage and last stage orgasm is disabled. You will need to press the "End Animation" hotkey instead.
  • Message notification when changing stages.
  • Cumshot hotkeys are now disabled while in menu mode.
  • Some other minor stuff.

 

@Erstam You should consider adding this to the original release:

 

Event OnKeyDown(Int keyCode)
    If Utility.IsInMenuMode() || UI.IsMenuOpen("Console") || UI.IsMenuOpen("Loading Menu")
        Return
    EndIf

    ...

 

This will prevent the hotkeys from triggering on menus. It was pissing the crap out of me when cumshots were being triggered because I pressed the cumshot key while in the console.

 

 

Posted
7 hours ago, Hawk9969 said:

You should consider adding this to the original release:

 


Event OnKeyDown(Int keyCode)
    If Utility.IsInMenuMode() || UI.IsMenuOpen("Console") || UI.IsMenuOpen("Loading Menu")
        Return
    EndIf

    ...

 

This will prevent the hotkeys from triggering on menus. It was pissing the crap out of me when cumshots were being triggered because I pressed the cumshot key while in the console.

Thanks for the suggestion. I will add these lines next time I update. Along with the SexLab animations menu bug that I only fixed in two of three places in the script.

 

I'm going to wait until the next Flower Girls update, though. It's supposed to be out sometime this week, and there's always a chance that the FG module might break in case Xiderpunk does some major changes to the thread model.

Posted
37 minutes ago, Erstam said:

Thanks for the suggestion. I will add these lines next time I update. Along with the SexLab animations menu bug that I only fixed in two of three places in the script.

Oh yeah, I saw that while I was comparing your scripts to update the scripts above (back when you released 2.0.3). I didn't bother fixing it myself because I was unsure about your reasoning.

 

Int i = animOID.Find(option) + (curAnimPage - 1) * animsPerPage

 

This one, right? Had my head itching for a while because of it.

Posted
10 hours ago, Hawk9969 said:

Here is a new version for my Cumshot improvements for SexLab:

  • Pressing the advance stage hotkey will no longer finish the animation if it's the last stage and last stage orgasm is disabled. You will need to press the "End Animation" hotkey instead.
  • Message notification when changing stages.
  • Cumshot hotkeys are now disabled while in menu mode.
  • Some other minor stuff.

 

@Erstam You should consider adding this to the original release:

 


Event OnKeyDown(Int keyCode)
    If Utility.IsInMenuMode() || UI.IsMenuOpen("Console") || UI.IsMenuOpen("Loading Menu")
        Return
    EndIf

    ...

 

This will prevent the hotkeys from triggering on menus. It was pissing the crap out of me when cumshots were being triggered because I pressed the cumshot key while in the console.

 

Sexlab - Cumshot Improvements.7z

Pretty sure that conflicts with Sexlab Separate Orgasm (both overwrite sslThreadController.pex which is a requirement for SLSO to even work)

Posted
6 hours ago, ptmc2112 said:

Pretty sure that conflicts with Sexlab Separate Orgasm (both overwrite sslThreadController.pex which is a requirement for SLSO to even work)

Yes, it does. Since the orgasm events are hardcoded into the controller (and its effects into the actorAlias), it's not possible to do it just on a separate Papyrus script. There is a way to do it with a SKSE plugin by interceptting orgasm Mod Events and dropping them, but that would break SLSO or any other mod that generate those events.

However, both Sexlab - Cumshot Improvements and and SLSO do different things to the same behavior, you would need to choose one anyway.

SLSO adds automatic separate orgasm to SexLab, while my version of Cumshot adds manual control over orgasm.

If you are a standard female, SLSO is a better choice because you won't even be able to orgasm manually without using the hotkeys to target your partner to cum at you (which can be a bitch if the animation started without targetting the proper actor) and you will revert back to default last stage orgasm if the animation has no dicks.

I'll look into implementing a cycle animation target for the hotkeys, though.

 

For a better detailed answer here is the reason this needs to edit the controller script:

 

state Animating
    function FireAction()
        UnregisterForUpdate()
        ; Prepare loop
        RealTime[0] = Utility.GetCurrentRealTime()
        SoundFX  = Animation.GetSoundFX(Stage)
        SFXDelay = ClampFloat(BaseDelay - ((Stage * 0.3) * ((Stage != 1) as int)), 0.5, 30.0)
        ResolveTimers()
        PlayStageAnimations()
        ; Send events
        if !LeadIn && Stage >= StageCount
            SendThreadEvent("OrgasmStart")
            TriggerOrgasm()        
        endIf
        ; Begin loop
        RegisterForSingleUpdate(0.5)
    endFunction

    ...

 

By editing this function, both me and Ed can prevent automatic orgasm from triggering at the last stage. Since SexLab is a framework this should've been handled by the "StageStart" event, but I guess it's now too late to change that.

 

state Animating
    function EndAction()
        if !LeadIn && Stage > StageCount
            SendThreadEvent("OrgasmEnd")
        else
            SendThreadEvent("StageEnd")
        endIf
    endFunction

    ,,,

 

By editing this function, both me and Ed can prevent the "OrgasmEnd" event from being sent at the end of an animation.

 

state Animating
    function AdvanceStage(bool backwards = false)
        if !backwards
            GoToStage((Stage + 1))
        elseIf backwards && Stage > 1
            GoToStage((Stage - 1))
        endIf
    endFunction

    ...

 

By editing this function, I can prevent the animation from ending when pressing the advance stage hotkey at the last stage.

 

I hope it's now clear as to why it can never work with SLSO.

Posted
9 minutes ago, Hawk9969 said:

Yes, it does. Since the orgasm events are hardcoded into the controller (and its effects into the actorAlias), it's not possible to do it just on a separate Papyrus script. There is a way to do it with a SKSE plugin by interceptting orgasm Mod Events and dropping them, but that would break SLSO or any other mod that generate those events.

However, both Sexlab - Cumshot Improvements and and SLSO do different things to the same behavior, you would need to choose one anyway.

SLSO adds automatic separate orgasm to SexLab, while my version of Cumshot adds manual control over orgasm.

If you are a standard female, SLSO is a better choice because you won't even be able to orgasm manually without using the hotkeys to target your partner to cum at you (which can be a bitch if the animation started without targetting the proper actor) and you will revert back to default last stage orgasm if the animation has no dicks.

I'll look into implementing a cycle animation target for the hotkeys, though.

 

For a better detailed answer here is the reason this needs to edit the controller script:

 


state Animating
    function FireAction()
        UnregisterForUpdate()
        ; Prepare loop
        RealTime[0] = Utility.GetCurrentRealTime()
        SoundFX  = Animation.GetSoundFX(Stage)
        SFXDelay = ClampFloat(BaseDelay - ((Stage * 0.3) * ((Stage != 1) as int)), 0.5, 30.0)
        ResolveTimers()
        PlayStageAnimations()
        ; Send events
        if !LeadIn && Stage >= StageCount
            SendThreadEvent("OrgasmStart")
            TriggerOrgasm()        
        endIf
        ; Begin loop
        RegisterForSingleUpdate(0.5)
    endFunction

    ...

 

By editing this function, both me and Ed can prevent automatic orgasm from triggering at the last stage. Since SexLab is a framework this should've been handled by the "StageStart" event, but I guess it's now too late to change that.

 


state Animating
    function EndAction()
        if !LeadIn && Stage > StageCount
            SendThreadEvent("OrgasmEnd")
        else
            SendThreadEvent("StageEnd")
        endIf
    endFunction

    ,,,

 

By editing this function, both me and Ed can prevent the "OrgasmEnd" event from being sent at the end of an animation.

 


state Animating
    function AdvanceStage(bool backwards = false)
        if !backwards
            GoToStage((Stage + 1))
        elseIf backwards && Stage > 1
            GoToStage((Stage - 1))
        endIf
    endFunction

    ...

 

By editing this function, I can prevent the animation from ending when pressing the advance stage hotkey at the last stage.

 

I hope it's now clear as to why it can never work with SLSO.

Which is a shame, because it would be awesome if you could have a patch that does work with slso.

Posted
1 hour ago, ptmc2112 said:

Which is a shame, because it would be awesome if you could have a patch that does work with slso.

For what purpose? They do the same thing in different ways.

 

If you just want to apply cum effects for the hotkey, you can safely install just the following scripts:

 

CS2ConfigScript.pex
CS2GameScript.pex

 

Delete the other scrripts (including the SexLab script or it will break) and let the original Cumshot scripts load instead.

 

Make sure to toggle the following off:

 

Disable orgasm
Disable camera shake
Disable orgasm sound

 

Set both "Apply cum behavior on manual cumshot" and "Apply cum behavior on apply cum hotkey" to "Play voice and apply cum".

Posted

New version for Sexlab - Cumshot Improvements:

  • Added a cycle SexLab target hotkey. Using this hotkey during a player-driven SexLab animation will allow you to select a target for the other hotkeys instead of using the crosshair reference, which is unreliable during a SexLab animation.
  • Fixed "Ragdoll Ending" not being applied if the animation is ended through the SexLab End Animation hotkey.
  • Fixed an issue with SexLab's animation list.

@Erstam

I've noticed that NPCs are redressing when using the hotkey on them. I know this bug was in the mod before. maybe the fix you applied isn't completely working. 

I didn't notice it before because I never use cumshot on anything other than my character, but I did need to use it to test the "cycle target" feature and it's 100% replicable.

I don't have the time right now to pursue this bug, but just letting you now before hand.

 

 

Posted
7 hours ago, Hawk9969 said:

For what purpose? They do the same thing in different ways.

the purpose that if the changes were made part of cumshot (SL part), then 2 things which should be compatible completely incompatible. Which is a shame. I was hoping the part where " can prevent the animation from ending when pressing the advance stage hotkey at the last stage. " could have been implemented side by side with SLSO, which it doesn't do. I guess having slso as the overwriting script will have to do.

Posted
1 hour ago, Hawk9969 said:

I've noticed that NPCs are redressing when using the hotkey on them. I know this bug was in the mod before. maybe the fix you applied isn't completely working. 

I didn't notice it before because I never use cumshot on anything other than my character, but I did need to use it to test the "cycle target" feature and it's 100% replicable.

I don't have the time right now to pursue this bug, but just letting you now before hand.

That's by design.

 

NPCs always reevaluate their equipment when adding or removing an armor piece on them - this means that they redress when they were stripped before. To prevent that happening during a SexLab animation:
- The cumshot object is directly added by calling EquipItem(), instead of calling AddItem() before (which is generally seen as the cleaner way, but would trigger evaluation)
- When called via the SexLab orgasm event handler, the cumshot object won't get removed from the NPC's inventory before the scene actually ends. That's why I added the autoRemove parameter to the Ejaculate() function, which defaults to false.

 

However, the hotkey is a different thing. It's primarily meant to be used outside of SexLab animations, where the cumshot object has to be removed without an "end of animation" event telling when to do that. So this is the only case where Ejaculate() is called with autoRemove=true. Redressing shouldn't be an issue here, since you probably have manually removed the NPC's armor from their inventory, instead of it being unequipped by a script.

Anyway, there's a warning in the MCM description for the hotkey option, so I think I got that covered.

Posted
1 hour ago, ptmc2112 said:

the purpose that if the changes were made part of cumshot (SL part), then 2 things which should be compatible completely incompatible. Which is a shame. I was hoping the part where " can prevent the animation from ending when pressing the advance stage hotkey at the last stage. " could have been implemented side by side with SLSO, which it doesn't do. I guess having slso as the overwriting script will have to do.

If you just want that, you can recompile SLSO's controller script with that change. It's just an one liner change (2 lines if you include the notification of the current stage).

 

1 hour ago, Erstam said:

That's by design.

 

NPCs always reevaluate their equipment when adding or removing an armor piece on them - this means that they redress when they were stripped before. To prevent that happening during a SexLab animation:
- The cumshot object is directly added by calling EquipItem(), instead of calling AddItem() before (which is generally seen as the cleaner way, but would trigger evaluation)
- When called via the SexLab orgasm event handler, the cumshot object won't get removed from the NPC's inventory before the scene actually ends. That's why I added the autoRemove parameter to the Ejaculate() function, which defaults to false.

 

However, the hotkey is a different thing. It's primarily meant to be used outside of SexLab animations, where the cumshot object has to be removed without an "end of animation" event telling when to do that. So this is the only case where Ejaculate() is called with autoRemove=true. Redressing shouldn't be an issue here, since you probably have manually removed the NPC's armor from their inventory, instead of it being unequipped by a script.

Anyway, there's a warning in the MCM description for the hotkey option, so I think I got that covered.

Interesting. I'll just add a conditional for autoRemove then, that evaluates false if the target is in a SexLab animation.

Thanks for the clarification.

 

Out of curiosity, why do you have a cleanup code running for both OrgasmEnd and AnimationEnding? On a standard SexLab installation, OrgasmEnd is called just a few calls before AnimationEnding, and on a non-standard installation, you wouldn't want to cleanup at OrgasmEnd if that means redressing the actor.

Also wouldn't it better to do that on AnimationEnd instead? Which would give SexLab time to redress them on its own. 

Posted
28 minutes ago, Hawk9969 said:

Out of curiosity, why do you have a cleanup code running for both OrgasmEnd and AnimationEnding? On a standard SexLab installation, OrgasmEnd is called just a few calls before AnimationEnding, and on a non-standard installation, you wouldn't want to cleanup at OrgasmEnd if that means redressing the actor.

Also wouldn't it better to do that on AnimationEnd instead? Which would give SexLab time to redress them on its own. 

Don't know exactly anymore (it's a long time since I wrote those parts), but IIRC one of those events only fires when you have separate orgasms enabled in SexLab's MCM. And back then, some users had problems with cumshots not getting removed, so doing it twice to be on the safe side.

AnimationEnd happens several seconds after SexLab redresses the actors. Having a cum drip stick through their clothes just looks ridiculous.

Posted
2 hours ago, Hawk9969 said:

If you just want that, you can recompile SLSO's controller script with that change. It's just an one liner change (2 lines if you include the notification of the current stage).

Wish i could, but every time i tried compiling i got a giant list of errors, even when done within ck.

Posted
9 hours ago, Erstam said:

Don't know exactly anymore (it's a long time since I wrote those parts), but IIRC one of those events only fires when you have separate orgasms enabled in SexLab's MCM. And back then, some users had problems with cumshots not getting removed, so doing it twice to be on the safe side.

AnimationEnd happens several seconds after SexLab redresses the actors. Having a cum drip stick through their clothes just looks ridiculous.

SexlabOrgasm is the one that fires from Separate Orgasm, but it also fires from last stage too, as the event is sent from there with OrgasmEnd always firing at the end of the animation.

 

Oh I didn't consider the drip, it was always disabled for me as I always found it to be really bad.

 

8 hours ago, ptmc2112 said:

Wish i could, but every time i tried compiling i got a giant list of errors, even when done within ck.

You are probably missing the source scripts for SKYUI, which can be found here: https://github.com/schlangster/skyui/tree/master/dist/Data/Scripts

 

If you also use Mod Organizer, you need to run CK/PapyrusCompiler through it or they wont be able to see your installed mods' scripts.

Posted

New version for Sexlab - Cumshot Improvements:

  • Fixed NPCs redressing after a manual (hotkey) cumshot.
  • Added a non-blocking lock primitive-like implementation to hotkeys to prevent multiple hotkeys from being processed simultaneously.

 

@ErstamThat lock primitive is another idea you should consider for the next patch. The way I did it:

; Prevent multiple cumshots at the same time.
State HotkeysDisabled
    Event OnKeyDown(Int keyCode)
    EndEvent
EndState
Event OnKeyDown(Int keyCode)
    GotoState("HotkeysDisabled") ; Must be done here to prevent releasing the lock on external calls.
    ...
    GotoState("")
EndEvent

 

Also, further examining the way you remove cumshots, I noticed that it's inherently incompatible with "No victim redressing". Unfortunately, I couldn't find a way to fix that on the current design. Maybe call StripActor() after removing cumshots, but a few issues could arise from that:

  1. Racing against SexLab's thread on Unstrip().
  2. Incompatibility with mods that do custom stripping/unstripping.

The second could be somehow solved if you cache what items are actually equipped before removing cumshots, but the racing conditions will make this unreliable.

Good thing that most NPC victims are non-futa females, where Cumshot doesn't work anyway.

 

Sexlab - Cumshot Improvements.7z

Posted
2 hours ago, Hawk9969 said:

@ErstamThat lock primitive is another idea you should consider for the next patch.

 

 

2 hours ago, Hawk9969 said:

Also, further examining the way you remove cumshots, I noticed that it's inherently incompatible with "No victim redressing". Unfortunately, I couldn't find a way to fix that on the current design. Maybe call StripActor() after removing cumshots, but a few issues could arise from that:

  1. Racing against SexLab's thread on Unstrip().
  2. Incompatibility with mods that do custom stripping/unstripping.

The second could be somehow solved if you cache what items are actually equipped before removing cumshots, but the racing conditions will make this unreliable.

Good thing that most NPC victims are non-futa females, where Cumshot doesn't work anyway.

 

No, I won't lock the hotkey. The way it works is when an ejaculation is in progress, it stops the ejaculation and removes the cumshot object.

 

And yes, it's damn hard to avoid the automatic equipment evaluation kicking in on actors. Especially when other mods come into play, like outfit managers, or follower frameworks that include equipment management, and Flower Girls' equipment guard during scenes (I had to put the actors into my own set of aliases to work against it).

 

Bottom line, if it works in general and with the more popular mod combos, it's okay. You simply can't take account of every possible scenario. Or it would take an insane amount of work, and a lot extra script processing.

 

Posted
1 hour ago, Erstam said:

 

No, I won't lock the hotkey. The way it works is when an ejaculation is in progress, it stops the ejaculation and removes the cumshot object.

 

And yes, it's damn hard to avoid the automatic equipment evaluation kicking in on actors. Especially when other mods come into play, like outfit managers, or follower frameworks that include equipment management, and Flower Girls' equipment guard during scenes (I had to put the actors into my own set of aliases to work against it).

 

Bottom line, if it works in general and with the more popular mod combos, it's okay. You simply can't take account of every possible scenario. Or it would take an insane amount of work, and a lot extra script processing.

 

Yeah, but the race conditions on those hotkeys can be severe. Sometimes you can press the key twice by mistake or because of a faulty keyboard. With the new stuff I added that puts emphasis on the hotkey cumshot, this became so much more relavant.

At least you should add it like this:

; Prevent multiple cumshots at the same time.
State HotkeysDisabled
    Event OnKeyDown(Int keyCode)
        If keyCode == Config.triggerKey && StorageUtil.HasFormValue(target, "CS2_ejaculating")
            ...

            DebugMessage(target.GetLeveledActorBase().GetName() + ": Ejaculation stopped manually")
            RemoveCumshot(target)
        EndIf
    EndEvent
EndState

 

As for the conflict. it's meh that it's incompatible with a vanilla SexLab feature, but rewriting code and risking a bunch of race conditions for a small possibility is also meh.

Posted

The slider for cum shot still doesn't work for me, no matter if it is set to "0", "0.5" or the maximum. Using SL it starts very late, almost at the end of animation. If I didn't extend last (orgasm) stage to 30 seconds, cum shot won't be triggered at all or at not been seen.

Posted

@Hawk9969 You can't lock the hotkey like that - the user should still be able to trigger a cumshot on another NPC while the first NPC (or the own character) is still ejaculating, and the original event still running. I'm already pseudo-locking the handler by the StorageUtil variable CS2_ejaculating on a per-actor basis, which is set, or unset, as close to the actual equipping/unequipping as possible.

And I can't do anything about faulty keyboards or the user accidentally pressing the key twice, sorry.

 

3 hours ago, Elf Prince said:

The slider for cum shot still doesn't work for me, no matter if it is set to "0", "0.5" or the maximum. Using SL it starts very late, almost at the end of animation. If I didn't extend last (orgasm) stage to 30 seconds, cum shot won't be triggered at all or at not been seen.

Heavy script lag maybe? Cumshot receives events sent by SexLab and usually reacts on them in less than a second.

Posted
25 minutes ago, Erstam said:

 

Heavy script lag maybe? Cumshot receives events sent by SexLab and usually reacts on them in less than a second.

- I don't know. I'm saying that before version 2.0 everything worked excellent and with more heavy scripted mods. I have less mods installed now and every new CS 2.+ version in installed on the new game. I wanted to see if it is the problem in my game. I reverted to 1.7+ and it worked spotlessly. Installing any 2.0+ version returned delayed cum shot.

Posted
33 minutes ago, Elf Prince said:

- I don't know. I'm saying that before version 2.0 everything worked excellent and with more heavy scripted mods. I have less mods installed now and every new CS 2.+ version in installed on the new game. I wanted to see if it is the problem in my game. I reverted to 1.7+ and it worked spotlessly. Installing any 2.0+ version returned delayed cum shot.

Are you using drop objects mode? That's the only thing in 2.0+ that can be far heavier on Papyrus than previous versions.

You can also enable Papyrus logging, then turn on debug messages in Cumshot's MCM, run through a scene, and see in the log what could be wrong.

Posted

Version 2.0.4 reuploaded

 

This is just a minor bugfix and stability release.

 

- Fixed the SexLab animations menu bug in another spot that I overlooked

 

And by suggestions from Hawk9969 (mainly to prevent unwanted redressing of NPCs):

- Don't remove cumshots on NPCs by hotkey when in a SexLab animation
- Cumshot hotkeys are disabled while in menu mode

 

Everything is working now. If you downloaded 2.0.4 in the last hour or so, please redownload.

 

 

Posted

@Erstam - Here is my settings. I tried to keep them the closest to old version, although I tried new settings but result was same.

 

Spoiler

ScreenShot469.jpg.afa8c28f97a47e9c21a4eb5e2ccda0e5.jpg

ScreenShot470.jpg.9233ad8b1e064e308fdc16f5bdc1e15d.jpg

 

Posted

@Elf Prince Nothing out of order there. Unless you're using SLSO, or a recent SexLab beta update shifted the orgasm event towards the end of the stage, I can't tell. Try "Individually" or "Hybrid Mode" instead of "Final Stage". Otherwise I'd need to see your Papyrus log.

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...