Jump to content

Recommended Posts

Posted

I'm having a problem regarding about npcs, when i put a armbinder on them, the animation works, but if we fast travel, the npc doesn't do the armbinder animation and their hands are invisible, is there a solution to this aside from reequipping it on the npc? I don't think this is a problem regarding me forgetting to run FNIS or fixing my load order with LOOT, if there isn't a solution, is there atleast a mod out there that allows me to manually refresh a npc's animation to potentially fix their animation not working?

Posted

Possible minor bug report

 

While wearing a DD armbinder, the animation selection came up with a stupid and immersion breaking animation. Matching and immersive animations would have been available and  possible.

No further harm was done :classic_wink:

 

Current official DD versions, current version of Laura's Bondage Shop which provided the trigger for the scene.

It appears the DD animation filter might be flawed in newer DD versions (> 4.2)  ?

 

Original reference post with more details and follow up posts:

 

Posted
On 11/29/2019 at 8:02 PM, worik said:

Possible minor bug report

 

While wearing a DD armbinder, the animation selection came up with a stupid and immersion breaking animation. Matching and immersive animations would have been available and  possible.

No further harm was done :classic_wink:

 

Current official DD versions, current version of Laura's Bondage Shop which provided the trigger for the scene.

It appears the DD animation filter might be flawed in newer DD versions (> 4.2)  ?

 

Original reference post with more details and follow up posts:

 

You know what? You are right. This is function definition to select valid animations

sslBaseAnimation[] function SelectValidAnimations(sslThreadController Controller, int count, sslBaseAnimation previousAnim, bool usingArmbinder, bool usingYoke,  bool HasBoundActors,  bool forceaggressive, bool permitOral, bool permitVaginal, bool permitAnal, bool permitBoobs)

And there are it's uses:

sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)			
anims = SelectValidAnimations(Controller, i, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)

Notice anything funny? Right, arguments are shuffled around, so usingArmbinder is always end up with "false". So - fix is needed. I'll try to do it tomorrow...

Posted
24 minutes ago, DeWired said:

Notice anything funny?

:classic_huh: I am not that good at reading those scripts (yet) . Just for my personal understanding: Is it that the variable "UsingArmbinder" and all others are at the wrng positon because of e.g. this "false" in the wrong position here :

24 minutes ago, DeWired said:

anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, UsingArmbinder, ...

?

Using Armbinder should be the 4th variable, not the 5th , right?

I'm still learning :classic_shy:

Posted
24 minutes ago, DeWired said:

You know what? You are right. This is function definition to select valid animations

And there are it's uses:

Notice anything funny? Right, arguments are shuffled around, so usingArmbinder is always end up with "false". So - fix is needed. I'll try to do it tomorrow...

 

You may also want to take a look at the arguments for the Pet Suit as well, they haven't been working right either in 4.3a. The Yoke animations seem to work fine for me with 4.3a but wouldn't hurt to take a look if you don't mind.

 

Thanks for looking in to this, DeWired.

Posted

Hi everyone,

 

I recently noted an issue with armbinder and extreme hobble dress animations. Initially the devices get applied correctly: hobble dress pose and armbinder pose work- when I walk around and struggle restricted movement animations also work correctly, arms are in the armbinder. After about 20 seconds though my arms pop out of the armbinder (invisble hands) and instead the hoble dress pose and the restricted step animations disappear. I assume this is an issue with DDI- I am using version 4.3a btw. This behavior can be almost immediately triggered when I walk through a door and load new cells.

Any guidance would be very much appreciated.

Posted
On 11/28/2019 at 11:04 PM, AtackHelicopter said:

Hej, i've got a problem with gags. When i am equiping ANY gags they are working good at first 2-3 seconds, after mouth  is closing... Unequip and equip works from time to time. Sometimes mouth just randomly closes itself after beeing open for more than 2 minuts while gagged... Tested both with or without gag fix plus new saves! All mods are updated to the last versions. Cbbe hdt body is used (if it does matter). 

Sorry for being ununderstandable, england is not my city... LOOt is used, reinstalled all mods- did not help

Plz hjälp, somebody 

Posted
On 12/1/2019 at 12:40 AM, UnEvenSteven said:

 

You may also want to take a look at the arguments for the Pet Suit as well, they haven't been working right either in 4.3a. The Yoke animations seem to work fine for me with 4.3a but wouldn't hurt to take a look if you don't mind.

 

Thanks for looking in to this, DeWired.

First of all - I'm in no way a professional, I've learned about existence of Papyrus two month ago, and I still doesn't understand in full how DeviousDevices framework works. But I can spot things which are definitely wrong, such as this argument incostistency. So, take my words with a grain of salt, and apply your thinking too - you may spot something that I don't.

As I understand it, current realization of animation filter have a chance (meaning it's not failproof) of working only in case of having Yoke - otherwise, it doesn't even catch a fact that some of actors are bound. As such, it's very much possible that petsuits are fixed by this too.

Second - I did a patch, did some testing - so far, armbinder results in armbinder animations, petsuit results in petsuit animations, except for ones initiated by devices - plug inflation, for example. So, not a problem of SL animation filter, at least. Oh, just remembered - there was a problem with petsuit animation when chain harness was also equipped - I will look at keywords, maybe it counts as HeavyBondage.

Tried to upload it, but it seems we have an intermittent upload problem. So, for now - just a diff, for @Kimy to look into.

Spoiler

--- zadBQ00.psc.orig	2019-12-01 13:12:35.119113100 +0300
+++ zadBQ00.psc	2019-12-01 13:23:54.314165100 +0300
@@ -921,7 +921,7 @@
 	int currentActorCount = originalActors.length
 	
 	; Let's try and see if we can get valid animations right here
-	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	
 	if anims.length <= 0
 		; we didn't get a valid animation. Let's move the belted actors to solos.
@@ -947,7 +947,7 @@
 			EndIf
 		Endif
 		libs.Log("Total actors: " + originalActors.length + ". Participating Actors: " + actors.length + ". Animation: " + previousAnim.name)		
-		anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+		anims = SelectValidAnimations(Controller, actors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	EndIf
 			
 	if anims.length <= 0
@@ -980,7 +980,7 @@
 			while i >= 2 && anims.length==0				
 				i -= 1
 				libs.Log("Reduced number of actors to " + i)								
-				anims = SelectValidAnimations(Controller, i, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+				anims = SelectValidAnimations(Controller, i, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 				;anims = SelectValidAnimations(Controller, i, previousAnim, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 			EndWhile
 			if anims.length >=1

 

 

UPD. Upload works! ?

DDi_animfilter_patch_01122019.zip

Posted
13 hours ago, AtackHelicopter said:

Plz hjälp, somebody 

Which mod manager are you using, and did you verify that the old DD4.3a PEX file is overwritten with the bugfix i linked on the previous page? MO2 would show you this:

 

xaKxBl8.png

 

(I can't upload image to post at the moment for some reason, site issues?)

Posted
4 hours ago, Zaflis said:

 

(I can't upload image to post at the moment for some reason, site issues?)

hi, i have same prob., since 48 hours?.....

Posted

Found a bug with harnesses.

 

Some harnesses act as belts and have DeviousBelt keyword. Some do not.

 

However, all harnesses block piercing add/remove.

So when naive modder checks for belt keyword to see if PC can fit or remove piercings, it gets a wrong answer.

 

I believe that harnesses without belt keyword should not block piercing add/remove.

Posted
8 hours ago, Zaflis said:

Which mod manager are you using, and did you verify that the old DD4.3a PEX file is overwritten with the bugfix i linked on the previous page? MO2 would show you this:

 

xaKxBl8.png

 

(I can't upload image to post at the moment for some reason, site issues?)

I did use vortex, now I reinstalled skyrim and will try the mod organizer 2. Now i understand why mo2 should be used, THX

Posted
7 hours ago, Lupine00 said:

Found a bug with harnesses.

 

Some harnesses act as belts and have DeviousBelt keyword. Some do not.

 

However, all harnesses block piercing add/remove.

So when naive modder checks for belt keyword to see if PC can fit or remove piercings, it gets a wrong answer.

 

I believe that harnesses without belt keyword should not block piercing add/remove.

Did a test patch - you can try it.. DDi vaginalPiercing patch 02122019.zip

UPD. So, I was so excited about working uploads that I rushed all that without proper explanations. Let's rectify that...

As I read the code about Vaginal Piercing equipping, I found out that there are three places to block interaction. In two of them, checks were done like "Has belt keyword?", if no - go ahead with equipping, if yes - "Has harness keyword?" - if yes, it's belt harness, if no - it's simple belt. It was done to print a different messages in case of belts and harnesses. But in one place belt/harness check was done independently - and it was causing aforementioned bug. So, I redone this part to work the same way as other parts of this same file (basically, I think now it works as intended by developers). But as always, it's for @Kimy to decide.

Oh, and one more thing - I do believe, that current unpatched code doesn't block piercing removal from under non-belt harnesses. It's only putting in that was blocked.

 

Actual patch in spoiler, but it's also included in archive. No testing was done at all. As usual, be advised to take precations, make savegame backups and
 all that.

Spoiler

--- zadPiercingVaginalScript.psc.orig	2019-12-02 16:43:28.339918900 +0300
+++ zadPiercingVaginalScript.psc	2019-12-02 16:45:38.722282400 +0300
@@ -13,23 +13,20 @@
 			libs.Log("Avoiding FTM duplication bug (Vaginal Piercings).")
 			return 0
 		EndIf
-		if akActor.WornHasKeyword(libs.zad_DeviousHarness)
-			if akActor == libs.PlayerRef && !silent
-				libs.NotifyActor(strFailEquipHarness, akActor, true)
-			ElseIf  !silent
-				libs.NotifyActor("The harness " + akActor.GetLeveledActorBase().GetName() + " is wearing prevents you from inserting this piercing.", akActor, true)
-			EndIf
-			if !silent
-				return 2
-			Else
-				return 0
-			EndIf
-		Endif
+
 		if akActor.WornHasKeyword(libs.zad_DeviousBelt)
-			if akActor == libs.PlayerRef && !silent
-				libs.NotifyActor(strFailEquipBelt, akActor, true)
-			ElseIf  !silent
-				libs.NotifyActor("The belt " + akActor.GetLeveledActorBase().GetName() + " is wearing prevents you from inserting this piercing.", akActor, true)
+			if akActor.WornHasKeyword(libs.zad_DeviousHarness)
+				if akActor == libs.PlayerRef && !silent
+					libs.NotifyActor(strFailEquipHarness, akActor, true)
+				ElseIf  !silent
+					libs.NotifyActor("The harness " + akActor.GetLeveledActorBase().GetName() + " is wearing prevents you from inserting this piercing.", akActor, true)
+				EndIf
+			Else	
+				if akActor == libs.PlayerRef && !silent
+					libs.NotifyActor(strFailEquipBelt, akActor, true)
+				ElseIf  !silent
+					libs.NotifyActor("The belt " + akActor.GetLeveledActorBase().GetName() + " is wearing prevents you from inserting this piercing.", akActor, true)
+				EndIf
 			EndIf
 			if !silent
 				return 2

 

 

Posted
On 12/1/2019 at 1:39 PM, DeWired said:

First of all - I'm in no way a professional, I've learned about existence of Papyrus two month ago, and I still doesn't understand in full how DeviousDevices framework works. But I can spot things which are definitely wrong, such as this argument incostistency. So, take my words with a grain of salt, and apply your thinking too - you may spot something that I don't.

As I understand it, current realization of animation filter have a chance (meaning it's not failproof) of working only in case of having Yoke - otherwise, it doesn't even catch a fact that some of actors are bound. As such, it's very much possible that petsuits are fixed by this too.

Second - I did a patch, did some testing - so far, armbinder results in armbinder animations, petsuit results in petsuit animations, except for ones initiated by devices - plug inflation, for example. So, not a problem of SL animation filter, at least. Oh, just remembered - there was a problem with petsuit animation when chain harness was also equipped - I will look at keywords, maybe it counts as HeavyBondage.

Tried to upload it, but it seems we have an intermittent upload problem. So, for now - just a diff, for @Kimy to look into.

 

UPD. Upload works! ?

 

I've tested the script you uploaded with scenes triggered by Match Maker, Eager NPCs, SL Survival and Devious Followers. Arm/Elbow/Rope Binders seem to work correctly now, all the scenes were using proper bound animations for the various binders. Had to test quite a few times as the bound animations are selected at random but I suppose the way the bound anim filter is setup scenes can't be changed on-the-fly like regular SL scenes can.

 

Couldn't get the Pet Suit animations to work with aforementioned mods, though. My character wasn't wearing any other devices during testing.

 

Still thanks for taking the time to look in to this issue and for the script fix.

 

 

Posted
2 hours ago, UnEvenSteven said:

 

I've tested the script you uploaded with scenes triggered by Match Maker, Eager NPCs, SL Survival and Devious Followers. Arm/Elbow/Rope Binders seem to work correctly now, all the scenes were using proper bound animations for the various binders. Had to test quite a few times as the bound animations are selected at random but I suppose the way the bound anim filter is setup scenes can't be changed on-the-fly like regular SL scenes can.

 

Couldn't get the Pet Suit animations to work with aforementioned mods, though. My character wasn't wearing any other devices during testing.

 

Still thanks for taking the time to look in to this issue and for the script fix.

 

 

Post a papyrus.log of petsuit tests, I'll try to look into it.

Posted
11 hours ago, DeWired said:

Post a papyrus.log of petsuit tests, I'll try to look into it.

 

Kept it simple for the log, only tested with Match Maker followed by Eager NPCs while wearing a Pet Suit.

 

I have earlier logs posted here and here if that'll help, the first being from framework version 4.3a and the second from 4.3.

Papyrus.0.log

Posted
On 12/2/2019 at 4:38 AM, Zaflis said:

Which mod manager are you using, and did you verify that the old DD4.3a PEX file is overwritten with the bugfix i linked on the previous page? MO2 would show you this:

 

xaKxBl8.png

 

(I can't upload image to post at the moment for some reason, site issues?)

For now i installed all dd's and it's works just fine without any fixes, i'll test with  other mods added

Posted
14 hours ago, UnEvenSteven said:

 

Kept it simple for the log, only tested with Match Maker followed by Eager NPCs while wearing a Pet Suit.

 

I have earlier logs posted here and here if that'll help, the first being from framework version 4.3a and the second from 4.3.

Papyrus.0.log 50.11 kB · 1 download

Okay, this is slightly more difficult. As is, it's less of coding error and more of logic gap between Armbinders/Yoke counting as Binding, and PetSuit.. not counting as Binding. I did an untested patch for that - now, anything with a keyword "HeavyBondage" must actually trigger Binding part of filter, even if it's not an Armbinder or Yoke. As always, exercise caution with testing, backup saves and all that ?DDi animfilter patch 04122019.zip

Patch in spoiler, also in archive.

Spoiler

--- zadBQ00.psc.orig	2019-12-01 13:12:35.119113100 +0300
+++ zadBQ00.psc	2019-12-04 09:27:26.236790600 +0300
@@ -840,6 +840,7 @@
 	;string[] ExtraTags = new String[12]
 	bool UsingArmbinder = False
 	bool UsingYoke = False
+	bool UsingHeavyBondage = False
 	bool HasBoundActors = False
 	i = originalActors.Length
 	While i > 0
@@ -850,9 +851,10 @@
 		PermitOral = PermitOral && !IsBlockedOral(originalActors[i])
 		UsingArmbinder = UsingArmbinder || HasArmbinder(originalActors[i])
 		UsingYoke = UsingYoke || HasYoke(originalActors[i])
+		UsingHeavyBondage = UsingHeavyBondage || HasHeavyBondage(originalActors[i])
 		HasBoundActors = HasBoundActors || libs.IsBound(originalActors[i])
 	EndWhile
-	Bool NoBindings = !UsingArmbinder && !UsingYoke
+	Bool NoBindings = !UsingArmbinder && !UsingYoke && !UsingHeavyBondage
 	Bool IsCreatureAnim = previousAnim.HasTag("Creature")
 	
 	; This step is needed, in order to determine if the prior animation is valid (Prevent replacing valid bound anims).
@@ -890,6 +892,7 @@
 		StoreHeavyBondage(originalActors)
 		UsingArmbinder = False
 		UsingYoke = False
+		UsingHeavyBondage = False
 		NoBindings = True
 	EndIf
 	
@@ -921,7 +924,7 @@
 	int currentActorCount = originalActors.length
 	
 	; Let's try and see if we can get valid animations right here
-	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	
 	if anims.length <= 0
 		; we didn't get a valid animation. Let's move the belted actors to solos.
@@ -947,7 +950,7 @@
 			EndIf
 		Endif
 		libs.Log("Total actors: " + originalActors.length + ". Participating Actors: " + actors.length + ". Animation: " + previousAnim.name)		
-		anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+		anims = SelectValidAnimations(Controller, actors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	EndIf
 			
 	if anims.length <= 0
@@ -971,6 +974,7 @@
 			StoreHeavyBondage(originalActors)			
 			UsingArmbinder = False
 			UsingYoke = False
+			UsingHeavyBondage = False
 			HasBoundActors = False
 			NoBindings = True		
 			anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)			
@@ -980,7 +984,7 @@
 			while i >= 2 && anims.length==0				
 				i -= 1
 				libs.Log("Reduced number of actors to " + i)								
-				anims = SelectValidAnimations(Controller, i, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+				anims = SelectValidAnimations(Controller, i, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 				;anims = SelectValidAnimations(Controller, i, previousAnim, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 			EndWhile
 			if anims.length >=1
@@ -1084,6 +1088,10 @@
 	Return (akActor != None) && (akActor.WornHasKeyword(libs.zad_DeviousPetSuit))
 EndFunction
 
+Bool Function HasHeavyBondage(Actor akActor)
+	Return (akActor != None) && (akActor.WornHasKeyword(libs.zad_DeviousHeavyBondage))
+EndFunction
+
 sslBaseAnimation[] Function GetSoloAnimations(Actor akActor)
 	sslBaseAnimation[] soloAnims
 	Bool bHasBelt = HasBelt(akActor)

 

 

Posted
11 hours ago, DeWired said:

Okay, this is slightly more difficult. As is, it's less of coding error and more of logic gap between Armbinders/Yoke counting as Binding, and PetSuit.. not counting as Binding. I did an untested patch for that - now, anything with a keyword "HeavyBondage" must actually trigger Binding part of filter, even if it's not an Armbinder or Yoke. As always, exercise caution with testing, backup saves and all that ?

Patch in spoiler, also in archive.

 

 

Tried the latest patch and the Pet Suit animations are working again when triggered by MM and SLEN and Arm/Elbow/Rope Binders and Yokes continue to work as well.


However sex scenes with Straitjackets are now broken, it only chooses solo animations for the PC and NPCs. Normally straitjackets use regular SexLab animations (or from SLAL packs) and have no special sex animations. Straitjackets do contain the "HeavyBondage" so I'm guessing the changes in the recent patch are having sex scenes with straitjackets try and find specific sex animations that don't exist for them.


Also the bound sex animations for any heavy bondage device seem to ignore certain devices my character was wearing. I would still get oral animations despite wearing a gag or vaginal animations with a chastity belt. I can't remember if device blocking worked correctly in 4.2 for bound animations, I did try with the zadBQ00.pex script from 4.3a and device blocking didn't work either. It may not be working correctly or the bound anim filter just wasn't coded to detect devices that would normally block certain positions.

 

Here's a log again where I tried straitjackets and attempts to wear gags and belts with armbinders.

 

 

Papyrus.0.log

Posted
On 12/1/2019 at 1:39 PM, DeWired said:

First of all - I'm in no way a professional, I've learned about existence of Papyrus two month ago, and I still doesn't understand in full how DeviousDevices framework works. But I can spot things which are definitely wrong, such as this argument incostistency. So, take my words with a grain of salt, and apply your thinking too - you may spot something that I don't.

As I understand it, current realization of animation filter have a chance (meaning it's not failproof) of working only in case of having Yoke - otherwise, it doesn't even catch a fact that some of actors are bound. As such, it's very much possible that petsuits are fixed by this too.

Second - I did a patch, did some testing - so far, armbinder results in armbinder animations, petsuit results in petsuit animations, except for ones initiated by devices - plug inflation, for example. So, not a problem of SL animation filter, at least. Oh, just remembered - there was a problem with petsuit animation when chain harness was also equipped - I will look at keywords, maybe it counts as HeavyBondage.

Tried to upload it, but it seems we have an intermittent upload problem. So, for now - just a diff, for @Kimy to look into.

  Reveal hidden contents


--- zadBQ00.psc.orig	2019-12-01 13:12:35.119113100 +0300
+++ zadBQ00.psc	2019-12-01 13:23:54.314165100 +0300
@@ -921,7 +921,7 @@
 	int currentActorCount = originalActors.length
 	
 	; Let's try and see if we can get valid animations right here
-	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	
 	if anims.length <= 0
 		; we didn't get a valid animation. Let's move the belted actors to solos.
@@ -947,7 +947,7 @@
 			EndIf
 		Endif
 		libs.Log("Total actors: " + originalActors.length + ". Participating Actors: " + actors.length + ". Animation: " + previousAnim.name)		
-		anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+		anims = SelectValidAnimations(Controller, actors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	EndIf
 			
 	if anims.length <= 0
@@ -980,7 +980,7 @@
 			while i >= 2 && anims.length==0				
 				i -= 1
 				libs.Log("Reduced number of actors to " + i)								
-				anims = SelectValidAnimations(Controller, i, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+				anims = SelectValidAnimations(Controller, i, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 				;anims = SelectValidAnimations(Controller, i, previousAnim, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 			EndWhile
 			if anims.length >=1

 

 

UPD. Upload works! ?

DDi_animfilter_patch_01122019.zip 43.67 kB · 13 downloads

You are a god damn hero. I mentioned this issue further up the thread, but there wasn't really much response so I figured I was fucking something up in my game somehow (and ended up doing a complete re-install of my game + mods which was a royal pain in the ass). Now, like Gandalf at Helmsdeep you come charging in with the sunrise and save the day.

 

Cheers.

Posted
15 hours ago, UnEvenSteven said:

 

Tried the latest patch and the Pet Suit animations are working again when triggered by MM and SLEN and Arm/Elbow/Rope Binders and Yokes continue to work as well.


However sex scenes with Straitjackets are now broken, it only chooses solo animations for the PC and NPCs. Normally straitjackets use regular SexLab animations (or from SLAL packs) and have no special sex animations. Straitjackets do contain the "HeavyBondage" so I'm guessing the changes in the recent patch are having sex scenes with straitjackets try and find specific sex animations that don't exist for them.


Also the bound sex animations for any heavy bondage device seem to ignore certain devices my character was wearing. I would still get oral animations despite wearing a gag or vaginal animations with a chastity belt. I can't remember if device blocking worked correctly in 4.2 for bound animations, I did try with the zadBQ00.pex script from 4.3a and device blocking didn't work either. It may not be working correctly or the bound anim filter just wasn't coded to detect devices that would normally block certain positions.

 

Here's a log again where I tried straitjackets and attempts to wear gags and belts with armbinders.

 

 

Papyrus.0.log 181.72 kB · 2 downloads

Okay... That's what I've talked about - you noticing things that I don't ?  I've read now that straitjackets works almost as no-bound. So, next version marks them as not-bondage.

DDi animfilter 05122019.zip

Spoiler

--- zadBQ00.psc.orig	2019-12-01 13:12:35.119113100 +0300
+++ zadBQ00.psc	2019-12-05 11:58:37.056824000 +0300
@@ -840,6 +840,8 @@
 	;string[] ExtraTags = new String[12]
 	bool UsingArmbinder = False
 	bool UsingYoke = False
+	bool UsingHeavyBondage = False
+	bool UsingStraitJacket = False
 	bool HasBoundActors = False
 	i = originalActors.Length
 	While i > 0
@@ -850,9 +852,11 @@
 		PermitOral = PermitOral && !IsBlockedOral(originalActors[i])
 		UsingArmbinder = UsingArmbinder || HasArmbinder(originalActors[i])
 		UsingYoke = UsingYoke || HasYoke(originalActors[i])
-		HasBoundActors = HasBoundActors || libs.IsBound(originalActors[i])
+		UsingStraitJacket = HasStraitJacket(originalActors[i])
+		UsingHeavyBondage = UsingHeavyBondage || (HasHeavyBondage(originalActors[i]) && !UsingStraitJacket) ; DeWired: I've read, straitjackets work almost as non-bound
+		HasBoundActors = HasBoundActors || (libs.IsBound(originalActors[i]) && !UsingStraitJacket) ; DeWired: I've read, straitjackets work almost as non-bound
 	EndWhile
-	Bool NoBindings = !UsingArmbinder && !UsingYoke
+	Bool NoBindings = !UsingHeavyBondage 
 	Bool IsCreatureAnim = previousAnim.HasTag("Creature")
 	
 	; This step is needed, in order to determine if the prior animation is valid (Prevent replacing valid bound anims).
@@ -890,6 +894,7 @@
 		StoreHeavyBondage(originalActors)
 		UsingArmbinder = False
 		UsingYoke = False
+		UsingHeavyBondage = False
 		NoBindings = True
 	EndIf
 	
@@ -921,7 +926,7 @@
 	int currentActorCount = originalActors.length
 	
 	; Let's try and see if we can get valid animations right here
-	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+	sslBaseAnimation[] anims = SelectValidAnimations(Controller, originalActors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	
 	if anims.length <= 0
 		; we didn't get a valid animation. Let's move the belted actors to solos.
@@ -947,7 +952,7 @@
 			EndIf
 		Endif
 		libs.Log("Total actors: " + originalActors.length + ". Participating Actors: " + actors.length + ". Animation: " + previousAnim.name)		
-		anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+		anims = SelectValidAnimations(Controller, actors.length, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 	EndIf
 			
 	if anims.length <= 0
@@ -971,6 +976,7 @@
 			StoreHeavyBondage(originalActors)			
 			UsingArmbinder = False
 			UsingYoke = False
+			UsingHeavyBondage = False
 			HasBoundActors = False
 			NoBindings = True		
 			anims = SelectValidAnimations(Controller, actors.length, previousAnim, false, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)			
@@ -980,7 +986,7 @@
 			while i >= 2 && anims.length==0				
 				i -= 1
 				libs.Log("Reduced number of actors to " + i)								
-				anims = SelectValidAnimations(Controller, i, previousAnim, false, UsingArmbinder, UsingYoke, HasBoundActors, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
+				anims = SelectValidAnimations(Controller, i, previousAnim, UsingArmbinder, UsingYoke, HasBoundActors, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 				;anims = SelectValidAnimations(Controller, i, previousAnim, false, false, false, PermitOral, PermitVaginal, PermitAnal, permitBoobs)
 			EndWhile
 			if anims.length >=1
@@ -1084,6 +1090,14 @@
 	Return (akActor != None) && (akActor.WornHasKeyword(libs.zad_DeviousPetSuit))
 EndFunction
 
+Bool Function HasHeavyBondage(Actor akActor)
+	Return (akActor != None) && (akActor.WornHasKeyword(libs.zad_DeviousHeavyBondage))
+EndFunction
+
+Bool Function HasStraitJacket(Actor akActor)
+	Return (akActor != None) && (akActor.WornHasKeyword(libs.zad_DeviousStraitJacket))
+EndFunction
+
 sslBaseAnimation[] Function GetSoloAnimations(Actor akActor)
 	sslBaseAnimation[] soloAnims
 	Bool bHasBelt = HasBelt(akActor)

 

 

And then you mentioned belts. This is hard, because it requires heavy reworking of filter - there aren't bound animation filtering right now, it's all or nothing. So, I've tried to do it - but 1. I don't remember half of mentioned animations, and don't know which devices they will be compatible with.

2. As such, filtering is done by the way of liberal assumptions. If you get bound animation which doesn't correspond to your additional devices (belt, gag), it is 'not a bug, but a feature'. All can be corrected, of course (or, I think so), but dwindling available animation count is inevitable. Also - I don't think this is a fix, but a change in code, it most probably will not be in main library. If developers do this, they will probably do it their way (and better).

So... DDi animfilter heavy 05122019.zip

I'm not even going to include patch for this in post - it weights 15kb. If someone need it - it's in archive.

 

P.S. There's a meme about all that - "we need to go deeper..." ?

Posted
5 hours ago, DeWired said:

Okay... That's what I've talked about - you noticing things that I don't ?  I've read now that straitjackets works almost as no-bound. So, next version marks them as not-bondage.

 

And then you mentioned belts. This is hard, because it requires heavy reworking of filter - there aren't bound animation filtering right now, it's all or nothing. So, I've tried to do it - but 1. I don't remember half of mentioned animations, and don't know which devices they will be compatible with.

2. As such, filtering is done by the way of liberal assumptions. If you get bound animation which doesn't correspond to your additional devices (belt, gag), it is 'not a bug, but a feature'. All can be corrected, of course (or, I think so), but dwindling available animation count is inevitable. Also - I don't think this is a fix, but a change in code, it most probably will not be in main library. If developers do this, they will probably do it their way (and better).

So...

I'm not even going to include patch for this in post - it weights 15kb. If someone need it - it's in archive.

 

P.S. There's a meme about all that - "we need to go deeper..." ?

 

Tested the first script, straitjackets are working correctly again and other heavy bondage restraints still work correctly with the bound anim filter. Excellent work, Dewired! ?As @balth put it you're a hero.

 

During this latest test I had completely forgotten there were animations for hand cuffs and manacles. The hand cuffs from DDX are front cuffs and the manacles are rear cuffs, the front versions have their own animations and rear cuffs seem to use armbinder animations. Don't worry, the bound anim filter works correctly for these due to your fixes even though I forgot to mention them.

 

Also tested the script with the device filter for bound anims, seemed to work well. Equipped my character with ball gag and couldn't get any oral animations with binders, yoke or the pet suit. Tried a ring gag instead and oral animations returned as expected. Then used an open chastity belt, with no gag, and would either get oral or anal animations. While wearing an open belt and ball gag it appeared that only anal animations were selected. The pet suit was the easiest to test here as it only has four animations, oral, missionary, doggy and anal doggy but still seemed to work correctly with other heavy restraints.

 

I suppose one oddity was when I tried a closed belt and an oral-blocking gag, the anim filter selected either a kissing animation or one of the bound sex animations. I didn't test this extensively but does the script just default to certain animations as a fall-back when...um...no holes are available? I don't see it as much of an issue really, I believe most modern DD-based mods aren't using closed belts on the PC.

 

Once again thank you for your work on this, DeWired.

Posted
4 hours ago, UnEvenSteven said:

 

Tested the first script, straitjackets are working correctly again and other heavy bondage restraints still work correctly with the bound anim filter. Excellent work, Dewired! ?As @balth put it you're a hero.

 

During this latest test I had completely forgotten there were animations for hand cuffs and manacles. The hand cuffs from DDX are front cuffs and the manacles are rear cuffs, the front versions have their own animations and rear cuffs seem to use armbinder animations. Don't worry, the bound anim filter works correctly for these due to your fixes even though I forgot to mention them.

 

Also tested the script with the device filter for bound anims, seemed to work well. Equipped my character with ball gag and couldn't get any oral animations with binders, yoke or the pet suit. Tried a ring gag instead and oral animations returned as expected. Then used an open chastity belt, with no gag, and would either get oral or anal animations. While wearing an open belt and ball gag it appeared that only anal animations were selected. The pet suit was the easiest to test here as it only has four animations, oral, missionary, doggy and anal doggy but still seemed to work correctly with other heavy restraints.

 

I suppose one oddity was when I tried a closed belt and an oral-blocking gag, the anim filter selected either a kissing animation or one of the bound sex animations. I didn't test this extensively but does the script just default to certain animations as a fall-back when...um...no holes are available? I don't see it as much of an issue really, I believe most modern DD-based mods aren't using closed belts on the PC.

 

Once again thank you for your work on this, DeWired.

Well, I deliberately avoided filtering out kissing animation, as gagged kiss is a thing ? As such, it has very high chance to appear when all holes are plugged. Also, I consider getting to animation filter in full chastity "event of low probability" ? So, some animations that I quessed as anal, are made available regardless of belt keywords. Technically, they can be considered (probably) non-penetrating petting ?

 

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