Alpia Posted July 23 Posted July 23 (edited) 7 hours ago, Dg75 said: Kool ! I have the DynamicPoop function updated so it wont conflict, I just need to do the same to the AnalSpray Function as both use idle conditions to set values. I'll have an update up soon. I noticed in your jason you only have gsposes 23/06 and that only two of the 20/03 originals are added. EndUser can always add them if wanted. Or maybe add them by default.. I suppose the purpose was to replace the 20/03 so I understand if you prefer not to. Either or - its primary reason it best to leave as optional patch. Neat sounds good. I just used poserhotkeys and looked through all poses in the 23/06 poser and put in those that seemed like they may be usable or interesting in some way to make the json. It did feel like some poses I had seen in the old poser have been missing, but since the "gs123" pose numbers seem to have changed between 20/03 and 23/06 and they dont have names... its hard to know unless you can tell them apart visually. The json does have most old poses that I found in the new poser its just that the numbers changed gs11 is not gs11 in the newer etc. There isnt a changelog on the patreon so its difficult to tell if some poses have been removed from the poser or just re-ordered. 21/07 is now the newest btw Good thing about the approach with the json is you can ship it with a selection of your choice and people can change it to whatever poser/animations they use without editing the scripts. So yeah in my selection for now I only have gsposes from 23/06 as that still gets updated, but nothing wrong with just using the old one either. Personally I probably will mix and throw in some poses from other pose mods into the many empty placeholder slots gunslicer has as well so I dont need to have multiple pose mods installed. Looking at your old script this should be the selection for the 20/03 poser. { "extra_idles_f": [ { "event": "GS11", "label": "GS11 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS12", "label": "GS12 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS485", "label": "GS485 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS532", "label": "GS532 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS505", "label": "GS505 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS510", "label": "GS510 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS304", "label": "GS304 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS497", "label": "GS497 (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS148", "label": "GS148 (Poop)", "enabled": true, "dpExempt": false }, { "event": "GS292", "label": "GS292 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS320", "label": "GS320 (Poop)", "enabled": true, "dpExempt": false }, { "event": "GS365", "label": "GS365 (Poop)", "enabled": true, "dpExempt": false }, { "event": "GS366", "label": "GS366 (Poop)", "enabled": true, "dpExempt": false }, { "event": "GS404", "label": "GS404 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS406", "label": "GS406 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS458", "label": "GS458 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS503", "label": "GS503 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS509", "label": "GS509 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS514", "label": "GS514 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS501", "label": "GS501 (Both)", "enabled": true, "dpExempt": false }, { "event": "GS542", "label": "GS542 (Both)", "enabled": true, "dpExempt": false } ], "extra_idles_m": [ { "event": "GS198", "label": "Example Male Pose - Replace Me", "enabled": false, "dpExempt": false } ] } Trying to give the poses names with just a few words Spoiler { "extra_idles_f": [ { "event": "GS11", "label": "GS11 Half Squat Hip Shake (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS12", "label": "GS12 Half Squat Hip Shake (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS485", "label": "GS485 Cat Stretch (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS532", "label": "GS532 Pet leg lift look back (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS505", "label": "GS505 On Back Pelvis Lifting (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS510", "label": "GS510 Bend Over Hip Sway (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS304", "label": "GS304 Bend Over Legs closed (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS497", "label": "GS497 Kneel Look Back (non-DP)", "enabled": true, "dpExempt": true }, { "event": "GS148", "label": "GS148 Slav Squat", "enabled": true, "dpExempt": false }, { "event": "GS292", "label": "GS292 Lean Back Spread Jerking Masturbating", "enabled": true, "dpExempt": false }, { "event": "GS320", "label": "GS320 Kneel Look Back", "enabled": true, "dpExempt": false }, { "event": "GS365", "label": "GS365 Sit Sideways Legs closed", "enabled": true, "dpExempt": false }, { "event": "GS366", "label": "GS366 Sit Sideways Legs spread", "enabled": true, "dpExempt": false }, { "event": "GS404", "label": "GS404 All Fours Back Stretch", "enabled": true, "dpExempt": false }, { "event": "GS406", "label": "GS406 Kneeling Book", "enabled": true, "dpExempt": false }, { "event": "GS458", "label": "GS458 Casual Squat Modest", "enabled": true, "dpExempt": false }, { "event": "GS503", "label": "GS503 Kneel Legs spread", "enabled": true, "dpExempt": false }, { "event": "GS509", "label": "GS509 Bend Over Legs Closed", "enabled": true, "dpExempt": false }, { "event": "GS514", "label": "GS514 Sit Lean Back Spread", "enabled": true, "dpExempt": false }, { "event": "GS501", "label": "GS501 Cowgirl", "enabled": true, "dpExempt": false }, { "event": "GS542", "label": "GS542 Sit Lean Back Spread Wider", "enabled": true, "dpExempt": false } ], "extra_idles_m": [ { "event": "GS198", "label": "Example Male Pose - Replace Me", "enabled": false, "dpExempt": false } ] } Edited July 23 by Alpia 1
stalin233111 Posted July 23 Posted July 23 Sorry to bother you, but I can't get my character to play a pee animation. She seems to be in the "playing" animation state, but her body is still stuck in the normal standing idle animation. Could you please provide some assistance? I'm sure I have ZAZ animations8+ installed. By the way, English isn't my native language, and I apologize for any possible vocabulary and grammatical errors. I used Google Translate:)
Dg75 Posted July 23 Author Posted July 23 (edited) 10 hours ago, stalin233111 said: I can't get my character to play a pee animation. Have you run your animation patcher ? e.g fnis or nemeses or pandora or whatever is used now a days.. I know its a silly question but its always the first thing to pop in mind. Your mcm pics seem okay. Past that - make sure no other random idles are conflicting like arousal's shame idle if another idle calls roughly same time as paf's idle does they conflict and neither would work. If another idle trys to play and if its a replacer(open animation replacer) then it wouldn't matter as fnis type patchers always win conflicts over replacers.(so i've been told) Edited July 23 by Dg75
Dg75 Posted July 23 Author Posted July 23 (edited) 21 hours ago, Alpia said: but since the "gs123" pose numbers seem to have changed between 20/03 and 23/06 So its possible some with different names may actually be the same pose(or close match) as the old ones. Best leave the jason as you have it then, I'll work through the new poses and if they match old pose I can just add the new name in to pass the conditions for those offsets.. later update, primary concern now is to get 4.7.2 up hopefully this weekend. Edited July 23 by Dg75 1
Alpia Posted July 24 Posted July 24 3 hours ago, Dg75 said: So its possible some with different names may actually be the same pose(or close match) as the old ones. Best leave the jason as you have it then, I'll work through the new poses and if they match old pose I can just add the new name in to pass the conditions for those offsets.. later update, primary concern now is to get 4.7.2 up hopefully this weekend. Yes mostly same poses different names best to just take a look at the poses in game. Did mark a few more poses with (-dp) those with that mark dont seem suitable for the dynamic pooping. The GS 21/07 didnt change numbers from GS 23/06 so still fits PAF_ExtraIdles.json For my own use I added a small extra function "Preview all poses" toggle with a hotkey that one can bind. Turn the toggle on, and your character will strike the first pose from the pose list along with an on-screen label showing its name and if enabled and dpexcempt. Press the key to move to the next one, and so on through the whole list. More a debug/testing thing, so not for your release, but maybe interesting for you to when trying to preview poses. Makes it easier to check out all poses as you dont have to reopen the mcm constantly to take a look at the next pose. I add it in the spoiler if you want it for your own testing. Spoiler PAF_MainQuestScript.psc PFA_PAFMCM.psc PFA_PAFMCM.psc: Bool PreviewActive Bool PreviewIsMale Int PreviewIndex = -1 Int PreviewStyle = -1 Int PreviewKey = -1 For MCM Ui AddToggleOptionST("OID_PreviewIdles", "$PFAPreviewIdles_", PreviewActive) AddKeyMapOptionST("OID_PreviewKey", "$PFAPreviewKey_", PreviewKey) States for the options State OID_PreviewIdles Event OnHighlightST() SetInfoText("$PFAPreviewIdlesInfo_") EndEvent Event OnSelectST() if PreviewActive StopIdlePreview() else StartIdlePreview() endif SetToggleOptionValueST(PreviewActive) EndEvent Event OnDefaultST() StopIdlePreview(True) SetToggleOptionValueST(False) EndEvent EndState Keybind widget like your oid_dootykey State OID_PreviewKey Event OnHighlightST() SetInfoText("$PFAPreviewKeyInfo_") EndEvent Event OnKeyMapChangeST(int newKeyCode, string conflictControl, string conflictName) if newKeyCode == 1 || !ResolveConflict(newKeyCode, conflictControl, conflictName) if newKeyCode == 1 newKeyCode = -1 endif UnregisterForKey(PreviewKey) PreviewKey = newKeyCode if PreviewKey > 0 RegisterForKey(PreviewKey) endif SetKeyMapOptionValueST(PreviewKey) endif EndEvent Event OnDefaultST() UnregisterForKey(PreviewKey) PreviewKey = -1 SetKeyMapOptionValueST(PreviewKey) EndEvent EndState Needed three new functions Function StartIdlePreview() if PreviewActive || PAF_MainQuest.GetIsAnimating() Return endif Int nF = GetExtraIdleCount(False) Int nM = GetExtraIdleCount(True) if nF <= 0 && nM <= 0 ShowMessage("$PFAListEmpty_", False) Return endif if PreviewKey <= 0 ShowMessage("$PFAPreviewNoKey_", False) Return endif PreviewActive = True PreviewIsMale = (nF <= 0) PreviewIndex = -1 PreviewStyle = -1 Debug.Notification("$PFAPreviewStarting_") AdvancePreview() EndFunction Function StopIdlePreview(Bool silent = False) if !PreviewActive Return endif PreviewActive = False if PreviewStyle >= 0 PAF_MainQuest.PlayPeeIdleStop(PlayerRef, PreviewStyle, !PreviewIsMale) PreviewStyle = -1 endif if !silent Debug.Notification("$PFAPreviewStopped_") endif EndFunction Function AdvancePreview() if !PreviewActive Return endif PreviewIndex += 1 Int count = GetExtraIdleCount(PreviewIsMale) if PreviewIndex >= count if !PreviewIsMale && GetExtraIdleCount(True) > 0 PreviewIsMale = True PreviewIndex = -1 AdvancePreview() Return else StopIdlePreview(True) Debug.Notification("$PFAPreviewComplete_") Return endif endif Int base = 13 if PreviewIsMale base = 12 endif Int style = base + PreviewIndex String ev = GetExtraIdleEvent(PreviewIndex, PreviewIsMale) String lbl = GetExtraIdleLabel(PreviewIndex, PreviewIsMale) String genderTxt = "F" if PreviewIsMale genderTxt = "M" endif Debug.Notification("[" + genderTxt + " " + (PreviewIndex + 1) + "/" + count + "] " + lbl + " (" + ev + ")") PreviewStyle = style PAF_MainQuest.PlayPeeIdleStart(PlayerRef, style, !PreviewIsMale) EndFunction OnKeyDown before the existing dootykey logic Event OnKeyDown(Int KeyCode) if KeyCode == PreviewKey && PreviewKey > 0 if PreviewActive UnregisterForKey(PreviewKey) AdvancePreview() if PreviewKey > 0 RegisterForKey(PreviewKey) endif endif Return endif if KeyCode != DootyKey || ... ; unchanged, existing DootyKey handling continues below PAF_MainQuestScript.psc in beginidle event small utility wait Int Function BeginIdleEvent (Actor a_actor, Int style, Bool forFem = True) Create_Idles() String IdleEventName a_actor.PlayIdle(PAF_IdleReset) Utility.Wait(0.3) ActorUtil.ClearPackageOverride(a_actor) if forFem IdleEventName = PafIdlesF[style] else IdleEventName = PafIdlesM[style] endif Debug.SendAnimationEvent(a_actor, IdleEventName) EndFunction Translation keys added $PFAPreviewIdles_, $PFAPreviewIdlesInfo_, $PFAPreviewKey_, $PFAPreviewKeyInfo_, $PFAPreviewNoKey_, $PFAPreviewStarting_, $PFAPreviewStopped_, $PFAPreviewComplete_
Dg75 Posted July 24 Author Posted July 24 (edited) 21 hours ago, Alpia said: "Preview all poses" Kool! I'll take a look at it. Yeah it'l take me a bit to flip through the idles, I have a test jig to set dp values or mark as exempt, but its one idle at a time a little time consuming. As for now I have functions completed just have to test it out. Best I could come up with was to set up string arrays that represent types of offset conditions. they are designed to function with or without the patch, it just makes DP functions compatible with the pose names being altered. I'll test what I have and if all goes well post a 4.7.2 update with it and go from there. I have in PafMainScript edited functions: DynamicPoop, AnalSpray, and I think I edited CheckWorn a while back nothing else should have been altered from the 4.7.1 last update - I'll double check to make sure. Edited July 25 by Dg75 1
Dg75 Posted July 25 Author Posted July 25 (edited) On 7/21/2026 at 8:43 PM, Alpia said: If you are about to post a update I'll wait till I look into it more. 4.7.2 is up. The only changes in PafMainScript are the DynamicPoop and AnalSpray functions, and I added new functions directly under the Create_Idles function inside the Utilities section. Above post I mentioned that I may have edited CheckWorn - I did not ! I did edit a value in PushPno : ModEvent.PushInt(iModEventHandle, 60) ; the 60 was an 180(optional, not even certain it does anything) this value is a timeout sent pno if pno handles things. Mcm has not been edited. Spoiler new String[] StyleAdjustment String[] StyleNonAdjustment String[] StyleAdjustmentAp ; DP Functions now call on RetrievePafIdleEvent to retrieve chosen pose event name to compare with below lists in ; order to parse conditions for offset or default values. String Function RetrievePafIdleEvent(Int n, Bool IsMale = False) ; new, created for pfa 4.7.2 primarily to receive an idle name for chosen idles to play. int r if !IsMale r = PafIdlesF.Length else r = PafIdlesM.Length endif if n < 0 || r <= 0 || n > r Return -1 ; oops Should of been return "", somehow it compiled.. maybe the compiler took it as "" . just seen this endif if !IsMale Return PafIdlesF[n] endif Return PafIdlesM[n] EndFunction ;\ the below three functions idle names are from the original 20/03 gs poses and are used as conditions to set values offset from a default in both DynamicPoop() and AnalSpray() For any poses that have matching poses to the below but with different event names will need to be patched to the same element as their match as its the element the DP functions use to parse conditions. For any new pose - can be added to lists, but will need tested: StyleAdjustment are ass up(horizontal) like doggystyle or paf bend over, although in the DP function directional offsets need parsed if the ass is facing player heading like paf on back. StyleNonAdjustment are just fine tuned positional at a spawn point that I felt certain poses needed. Anything not on the list uses default values. this list only is used if the above list is not StyleAdjustmentAp is solely for Anal Spray and are ass up spray - away from player, but may spray in same heading like paf on back vs bend over.. \; Function CreateStyleAdjustment(Bool Recreate = False) ; DynamicPoop styleAdjustments if Recreate || StyleAdjustment.Length != 11 StyleAdjustment = New String[11] StyleAdjustment[0] = "paf_pose0" StyleAdjustment[1] = "paf_ZazAPC205" StyleAdjustment[2] = "paf_pose1" StyleAdjustment[3] = "PAF_Bendover01" StyleAdjustment[4] = "GS365" StyleAdjustment[5] = "GS366" StyleAdjustment[6] = "GS404" StyleAdjustment[7] = "GS485" StyleAdjustment[8] = "GS532" StyleAdjustment[9] = "GS542" StyleAdjustment[10] = "paf_ZazAPC211" endif EndFunction Function CreateStyleAdjustmentAp(Bool Recreate = False) ; AnalSpray style adjustments if Recreate || StyleAdjustmentAp.Length != 13 StyleAdjustmentAp = New String[13] StyleAdjustmentAp[0] = "paf_ZazAPC209" StyleAdjustmentAp[1] = "paf_ZazAPC205" StyleAdjustmentAp[2] = "paf_pose1" StyleAdjustmentAp[3] = "PAF_Bendover01" StyleAdjustmentAp[4] = "GS485" StyleAdjustmentAp[5] = "GS532" StyleAdjustmentAp[6] = "GS505" StyleAdjustmentAp[7] = "GS510" StyleAdjustmentAp[8] = "GS304" StyleAdjustmentAp[9] = "GS404" StyleAdjustmentAp[10] = "GS509" StyleAdjustmentAp[11] = "paf_pose0" StyleAdjustmentAp[12] = "paf_ZazAPC211" endif EndFunction Function CreateStyleNonAdjustment(Bool Recreate = False) ; DynamicPoop Non styleAdjustments if Recreate || StyleNonAdjustment.Length != 6 StyleNonAdjustment = New String[6] StyleNonAdjustment[0] = "paf_ZazAPC201" StyleNonAdjustment[1] = "paf_ZazAPC202" StyleNonAdjustment[2] = "GS11" StyleNonAdjustment[3] = "GS12" StyleNonAdjustment[4] = "GS497" StyleNonAdjustment[5] = "GS406" endif EndFunction Edited July 25 by Dg75
lixyna Posted July 26 Posted July 26 On 6/7/2026 at 4:23 AM, Dg75 said: IDK. It does work on my end. I get both paf and pno holding idles. I can only guess as pno's holding idles will auto start when pafs debuffs trigger. Like if you have a pee debuff - stamina would trigger pno idles. So if it were me I'd look and make sure pafs debuffs are applying. Using pno just by itself it would trigger differently. Check paf mcm I think there may be an on/off option for the debuffs. Hi again, after some time away and a few updates from both PAF and PNO, I have managed to get the PNO holding animation to work under exactly one specific instance, which is when my character is specifically peeing herself (and it stops mid-wetting if the pee is done and the poop isnt, interestingly). I dont get it man, I just want my girl to squirm I checked the debuffs and they are present in my status and not disabled in normal PAF. Anything I can provide to investigate this?
Dg75 Posted July 26 Author Posted July 26 16 minutes ago, lixyna said: and it stops mid-wetting if the pee is done and the poop isnt, peeing generally stops before the pooping finishes. Pno's holding idle is a pno feature as its a different idle than paf's holding. (maybee they are confliction..IDk try disabling pafs pee pressure..) As far as I know pno's second fomod page option for paf and pfa needs enabled upon install of pno and the idle works via skypatcher.
Alpia Posted July 27 Posted July 27 On 7/25/2026 at 5:28 AM, Dg75 said: 4.7.2 is up. The only changes in PafMainScript are the DynamicPoop and AnalSpray functions, and I added new functions directly under the Create_Idles function inside the Utilities section. Above post I mentioned that I may have edited CheckWorn - I did not ! I did edit a value in PushPno : ModEvent.PushInt(iModEventHandle, 60) ; the 60 was an 180(optional, not even certain it does anything) this value is a timeout sent pno if pno handles things. Mcm has not been edited. Reveal hidden contents new String[] StyleAdjustment String[] StyleNonAdjustment String[] StyleAdjustmentAp ; DP Functions now call on RetrievePafIdleEvent to retrieve chosen pose event name to compare with below lists in ; order to parse conditions for offset or default values. String Function RetrievePafIdleEvent(Int n, Bool IsMale = False) ; new, created for pfa 4.7.2 primarily to receive an idle name for chosen idles to play. int r if !IsMale r = PafIdlesF.Length else r = PafIdlesM.Length endif if n < 0 || r <= 0 || n > r Return -1 ; oops Should of been return "", somehow it compiled.. maybe the compiler took it as "" . just seen this endif if !IsMale Return PafIdlesF[n] endif Return PafIdlesM[n] EndFunction ;\ the below three functions idle names are from the original 20/03 gs poses and are used as conditions to set values offset from a default in both DynamicPoop() and AnalSpray() For any poses that have matching poses to the below but with different event names will need to be patched to the same element as their match as its the element the DP functions use to parse conditions. For any new pose - can be added to lists, but will need tested: StyleAdjustment are ass up(horizontal) like doggystyle or paf bend over, although in the DP function directional offsets need parsed if the ass is facing player heading like paf on back. StyleNonAdjustment are just fine tuned positional at a spawn point that I felt certain poses needed. Anything not on the list uses default values. this list only is used if the above list is not StyleAdjustmentAp is solely for Anal Spray and are ass up spray - away from player, but may spray in same heading like paf on back vs bend over.. \; Function CreateStyleAdjustment(Bool Recreate = False) ; DynamicPoop styleAdjustments if Recreate || StyleAdjustment.Length != 11 StyleAdjustment = New String[11] StyleAdjustment[0] = "paf_pose0" StyleAdjustment[1] = "paf_ZazAPC205" StyleAdjustment[2] = "paf_pose1" StyleAdjustment[3] = "PAF_Bendover01" StyleAdjustment[4] = "GS365" StyleAdjustment[5] = "GS366" StyleAdjustment[6] = "GS404" StyleAdjustment[7] = "GS485" StyleAdjustment[8] = "GS532" StyleAdjustment[9] = "GS542" StyleAdjustment[10] = "paf_ZazAPC211" endif EndFunction Function CreateStyleAdjustmentAp(Bool Recreate = False) ; AnalSpray style adjustments if Recreate || StyleAdjustmentAp.Length != 13 StyleAdjustmentAp = New String[13] StyleAdjustmentAp[0] = "paf_ZazAPC209" StyleAdjustmentAp[1] = "paf_ZazAPC205" StyleAdjustmentAp[2] = "paf_pose1" StyleAdjustmentAp[3] = "PAF_Bendover01" StyleAdjustmentAp[4] = "GS485" StyleAdjustmentAp[5] = "GS532" StyleAdjustmentAp[6] = "GS505" StyleAdjustmentAp[7] = "GS510" StyleAdjustmentAp[8] = "GS304" StyleAdjustmentAp[9] = "GS404" StyleAdjustmentAp[10] = "GS509" StyleAdjustmentAp[11] = "paf_pose0" StyleAdjustmentAp[12] = "paf_ZazAPC211" endif EndFunction Function CreateStyleNonAdjustment(Bool Recreate = False) ; DynamicPoop Non styleAdjustments if Recreate || StyleNonAdjustment.Length != 6 StyleNonAdjustment = New String[6] StyleNonAdjustment[0] = "paf_ZazAPC201" StyleNonAdjustment[1] = "paf_ZazAPC202" StyleNonAdjustment[2] = "GS11" StyleNonAdjustment[3] = "GS12" StyleNonAdjustment[4] = "GS497" StyleNonAdjustment[5] = "GS406" endif EndFunction Thanks, I did update my original post a page back (including changelog). Took me a bit longer as I hit some problem with the mcm options (never fiddled with that before), but seems like adding a few more "State OID" blocks was too much as the mod already uses a lot. Instead I now added my mcm options as plain "non-ST" options. Either way its updated to 4.7.2 and I added for the json a field to exempt a pose from being used with the anal spray and a field that allows to assign one of your existing offsets. I think thats the easiest approach. The core problem remains that some poses my not look great with the spray or dynamic pooping, but good enough. If you add new "types" they can simply be added by expanding the existing options. elseif oType == "onback" _styleAdj = True nth = <index that matches the new behaviour> I did try to comment any changes with "PFA - EX Added/Edited" if you wish to use any of this you are free to otherwise it'll remain as is a optional download in the thread unless I'd really make some bigger change that would justify its own mod page/branch 1
Destroyman Posted July 29 Posted July 29 (edited) Hello! I'm having the same problem as an esteemed gentleman earlier in the thread in that the mod appears to work fully correctly except I can't get the snack/drink commands to work, with a "You can't do that" message. I'm a bit confused as to the particular settings that have to be toggled, could you clarify when you have a moment? Other than that, real glad to see a mod in this particular niche still being actively supported! I only have two thoughts, the idle opinions of an overexuberant fan: A toggle for futas to exclusively use male pee and female poo animations? An accident animation? I was testing a reinstall to make sure PNO/PFA integration was still playing nice and the character entered a butt waggle animation right as she started a poo accident, which was a real lightbulb moment. Nevermind that second one, I realized that that particular idle always fires from PNO upon starting to wet, which is Good Enough... unless? Edited July 30 by Destroyman new info
Dg75 Posted August 1 Author Posted August 1 (edited) On 7/27/2026 at 6:08 PM, Alpia said: Thanks, I did update my original post a page back (including changelog). Took me a bit longer as I hit some problem with the mcm options (never fiddled with that before), but seems like adding a few more "State OID" blocks was too much as the mod already uses a lot. Instead I now added my mcm options as plain "non-ST" options. Either way its updated to 4.7.2 and I added for the json a field to exempt a pose from being used with the anal spray and a field that allows to assign one of your existing offsets. I think thats the easiest approach. The core problem remains that some poses my not look great with the spray or dynamic pooping, but good enough. If you add new "types" they can simply be added by expanding the existing options. elseif oType == "onback" _styleAdj = True nth = <index that matches the new behaviour> I did try to comment any changes with "PFA - EX Added/Edited" if you wish to use any of this you are free to otherwise it'll remain as is a optional download in the thread unless I'd really make some bigger change that would justify its own mod page/branch Kool! Sorry been lots of busy lately, just got around to taking a good look at your work. Great job ! I'll add a link to your original post to main page under patches section. So for now just make any new updates if any to your original post and it should reflect. If you ever want it removed just say the word and I'll take down. The offset types are good idea, Maybe I can better define a system to make better use of your jason offset types in the functions.. Edited August 1 by Dg75 1
Dg75 Posted August 1 Author Posted August 1 (edited) On 7/28/2026 at 10:16 PM, Destroyman said: I can't get the snack/drink commands to work, with a "You can't do that" message. By this I assume you mean that eating or drinking doesn't effect pressure state ? The message you refer to could indicate a failed condition, try turning on debug mode and see if it gives a clue. Edited August 1 by Dg75
Destroyman Posted August 2 Posted August 2 (edited) On 7/31/2026 at 8:14 PM, Dg75 said: By this I assume you mean that eating or drinking doesn't effect pressure state ? The message you refer to could indicate a failed condition, try turning on debug mode and see if it gives a clue. i mean that i can't get the mod to let me pee or poo on any NPCs, or vice versa, from the PAF kink menu. no option toggles seem to work. the actors get as far as the paffer stripping and then the alert comes up that it couldn't be done. Sometimes afterward my character enters the animation-broken state where you can't use or take out weapons and the mouse wheel doesn't work. I'm going to try re-installing Sexlab from scratch, as I also noticed that if I enable "animations for leaking" and change the solo options (which I am making an assumption is the "accident" animations) from Female Masturbation to Mito's Facedom, it stays being the default, which suggests to me that my install lost the original PAF's animations somewhere. I'll update the post with my findings there. UPDATE: Alright, good news is that this fixed the problem of nothing happening, bad news is that the role is wrong when the animation is activated (the giver is on the receiving end of the animation) I've also run into another minor problem where followers who are having their needs tracked will strip when any of their paf states increment above one. I have definitively traced the phenomenon to that but I don't know what's causing it, it may be a conflict with Nether Follower Framework. Edited August 2 by Destroyman partial fix
Dg75 Posted August 3 Author Posted August 3 (edited) 2 hours ago, Destroyman said: from the PAF kink menu. no option toggles seem to work. the actors get as far as the paffer stripping and then the alert comes up that it couldn't be done. Sometimes afterward my character enters the animation-broken state where you can't use or take out weapons and the mouse wheel doesn't work. I'm going to try re-installing Sexlab from scratch, as I also noticed that if I enable "animations for leaking" and change the solo options (which I am making an assumption is the "accident" animations) from Female Masturbation to Mito's Facedom, it stays being the default, which suggests to me that my install lost the original PAF's animations somewhere. I'll update the post with my findings there. UPDATE: Alright, good news is that this fixed the problem of nothing happening, bad news is that the role is wrong when the animation is activated (the giver is on the receiving end of the animation) I've also run into another minor problem where followers who are having their needs tracked will strip when any of their paf states increment above one. I have definitively traced the phenomenon to that but I don't know what's causing it, it may be a conflict with Nether Follower Framework. in kink sex, script function when the actor strips it then calls for sexlab to start animation, if for some reason sexlab fails to start it will return a false back to pfa and pfa cancels stuff and sends message to screen "You cannot do this right now". Point is if pfa stripped actor then pfa passed all other pfa related conditions - order of operation - lastly pfa builds animations and sends to Slab. sexlab is failing its conditions, Probably invalid animations. or pfa is screwing up the thread build(animations, in which case should be reproducible on my end and everybody else's end) I'll test and see. If you ever suspect SexLab is screwy then use its last mcm page options to save your current profile then use the reset option(sets it back default) then you can import your saved profile settings. This usually fixes Sexlab, but also may indicate some other mod is tampering with sexlab internals. I had expected Follower Slave Mod 1.734 as after I installed it myself I had to reset Sexlab several times but recently has been working okay so I can't say for sure. can't use or take out weapons may indicate a conflict with mods that disable PC controls. PFA, Sexlab and all mods that do, if faliing a function after disabling pc controls then they would re enable them upon function failure - but if other mods do same things at that exact moment then maybe things get crossed up. Not sure if there is a console command to re enable pc controls and set PC AI driven to false, try google search that for console command and see if anything pops up. Incorrect rolls is probably pfa fault unless another mod is switching them. Check sexlab mcm options on that as it can auto set rolls. What animation is playing that the rolls are wrong ? I'll test it. Try disabling PFA's "Unlock animations" (this if enabled will randomly use whatever animation you have installed for kink rather than just pafs defaults) Also try disabling pfa's tag system. There is a switch roll opt in pfa but is only Sexlab genders Female on Female as I felt their rolls were wrong. play with these options and see if either fixes it. All tracked actors strip with only one pressure state ? Do they paf after stripping ? Legacy Pee and Fart required tracked actors to have a pressure state of 3 before they could go. PFA did add a tweak that if one had enough pressure(state 3) then other actors that are checked after that one - could also go with with a lower pressure state of 2 but not 1 This may be related to kink sex - player used as toilet - and pfa's mcm option to require tracked actors have a pressure state of at least one before auto sex started. Check those mcm opts and see. Edited August 3 by Dg75
Destroyman Posted August 3 Posted August 3 (edited) I have solved all problems except the wrong role during kink. You were right, the stripping was the "use player as toilet" option. I think before I fixed the animations, it was doing the same thing for the follower in question as it was when I tried to initiate kink animations, as when I fixed the animations in general, instead of coming up to me and stripping she properly started the animation. I've fiddled around as much as possible without breaking anything in Sexlab and PFA/PAF's options and can't find a solution to the wrong role problem. When the NPC initiated the kink it was the correct roles though. EDIT: While I'm thinking about it, how about adding GS053 as a stripping animation? It's PNO's default undress for women and it's both sexy and real streamlined. Edited August 3 by Destroyman
Dg75 Posted August 5 Author Posted August 5 (edited) On 8/2/2026 at 10:59 PM, Destroyman said: When the NPC initiated the kink it was the correct roles though. EDIT: While I'm thinking about it, how about adding GS053 as a stripping animation? It's PNO's default undress for women and it's both sexy and real streamlined. so its just player initiated kink when the wrong role happens via set npc as toilet ? Do you have the Flip role mcm option enabled in pfa ? What sexlab gender are the participants ? I am assuming here its Player initiated so it should be the Player actor kinking on a submissive npc correct ? I'll take a look at gs053, would be nice to have a decent strip idle for a change. Edited August 5 by Dg75
LustyWolf0721 Posted August 9 Posted August 9 (edited) Hi! Thanks for the great mod! I tried replacing some of your fx sound files with my own, however, no sound was played in game after replacement. I named those files excatly the same as the original ones. Now I wonder if a new game is needed. What else should I edit if I want my own edits to work properly? Thanks in advance! Edited August 9 by LustyWolf0721
Dg75 Posted August 9 Author Posted August 9 (edited) 3 hours ago, LustyWolf0721 said: Hi! Thanks for the great mod! I tried replacing some of your fx sound files with my own, however, no sound was played in game after replacement. I named those files excatly the same as the original ones. Now I wonder if a new game is needed. What else should I edit if I want my own edits to work properly? Thanks in advance! Just make sure they are installed to correct path: Data/Sound/fx/PafFixesAndAddons for pfa's addon farts or Data/Sound/fx/PeeandFart for the legacy moans and farts If you use patch PFA_Additional_Farts then make sure your edits are winning the file. Can try load - save game - exit and load game again or try crossing some cells and see if they start working. As long as your edits are named the same and you used correct sound format they should work. Edited August 9 by Dg75
LustyWolf0721 Posted August 10 Posted August 10 (edited) On 8/10/2026 at 4:09 AM, Dg75 said: Just make sure they are installed to correct path: Data/Sound/fx/PafFixesAndAddons for pfa's addon farts or Data/Sound/fx/PeeandFart for the legacy moans and farts If you use patch PFA_Additional_Farts then make sure your edits are winning the file. Can try load - save game - exit and load game again or try crossing some cells and see if they start working. As long as your edits are named the same and you used correct sound format they should work. Thanks for the reply! Just tried and it works perfectly! Edited August 12 by LustyWolf0721
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