Jump to content

Devious Devices Framework Development/Beta


Kimy

Recommended Posts

Posted

@Kimy @Min I always found it a bit restrictive, as in: all or nothing. For example: Hiding a corset under the ancient nord armour doesn't make any sense, but hiding it under ebony does. However, the device hider doesn't allow this.

Small(??) suggestion, that would also declutter the Devious Devices MCM:

Inside the menu show a list of currently equipped item/the inventory. The player then can select an item and tick the slots they want hidden for that particular item. Does that work with the current system, or not? 

Posted (edited)

@Kimyspeaking of patch archives.. ?

I made one (against 5.2beta6). Summary of changes:

- adds in MCM Vibrate Volume slider for NPCs, existing is left for player.

- I think, fixes Vibrate Volume slider?..

- makes VibrateEffect use different volumes for player and NPCs from config. This way, player can have vibrations silenced while listening for NPC being vibrated.

- log messages added for when shock effect is applied to player

In archive patch itself (made with diff) and changed files.

As always - it is a suggestion, treat as you wish ?

Spoiler
diff -Naur Source.orig/zadConfig.psc Source/zadConfig.psc
--- Source.orig/zadConfig.psc	2021-01-05 21:37:32.324224300 +0300
+++ Source/zadConfig.psc	2022-06-27 16:04:11.931581100 +0300
@@ -113,6 +113,8 @@
 float volumeEdgedDefault = 1.0
 float Property VolumeVibrator = 0.5 Auto
 float volumeVibratorDefault = 0.5
+float Property VolumeVibratorNPC = 0.25 Auto
+float volumeVibratorNPCDefault = 0.25
 
 ; Quest Monitor Configuration 
 bool Property ForbiddenTome = true Auto
@@ -183,6 +185,7 @@
 int VolumeOrgasmOID
 int VolumeEdgedOID
 int VolumeVibratorOID
+int VolumeVibratorNPCOID
 int ForbiddenTomeOID
 int SergiusExperimentOID
 int SurreptitiousStreetsOID
@@ -440,7 +443,8 @@
 		AddHeaderOption("Audio Configuration")
 		VolumeOrgasmOID = AddSliderOption("Orgasm Volume", VolumeOrgasm, "{3}")
 		VolumeEdgedOID = AddSliderOption("Edged Volume", VolumeEdged, "{3}")
-		VolumeVibratorOID = AddSliderOption("Vibrator Volume ", VolumeVibrator, "{3}")	
+		VolumeVibratorOID = AddSliderOption("Player Vibrator Volume ", VolumeVibrator, "{3}")	
+		VolumeVibratorNPCOID = AddSliderOption("NPC Vibrator Volume ", VolumeVibratorNPC, "{3}")	
 	ElseIf page == "Devices Underneath (1)"
 		SetupSlotMasks()
 		SetCursorFillMode(TOP_TO_BOTTOM)
@@ -726,6 +730,11 @@
 		SetSliderDialogDefaultValue(VolumeVibratorDefault)
 		SetSliderDialogRange(0, 1)
 		SetSliderDialogInterval(0.01)
+	elseIf option == VolumeVibratorNPCOID
+		SetSliderDialogStartValue(VolumeVibratorNPC)
+		SetSliderDialogDefaultValue(VolumeVibratorNPCDefault)
+		SetSliderDialogRange(0, 1)
+		SetSliderDialogInterval(0.01)
 	elseIf option == ssSleepChanceOID
 		SetSliderDialogStartValue(ssSleepChance)
 		SetSliderDialogDefaultValue(ssSleepChanceDefault)
@@ -979,9 +988,12 @@
 	elseIf (option == VolumeEdgedOID)
 		VolumeEdged = VolumeEdgedDefault
 		SetSliderOptionValue(VolumeEdgedOID, VolumeEdgedDefault, "{3}")
-	elseIf (option == VolumeVibrator)
+	elseIf (option == VolumeVibratorOID)
 		VolumeVibrator = VolumeVibratorDefault
 		SetSliderOptionValue(VolumeVibratorOID, VolumeVibratorDefault, "{3}")
+	elseIf (option == VolumeVibratorNPC)
+		VolumeVibratorNPC = VolumeVibratorNPCDefault
+		SetSliderOptionValue(VolumeVibratorNPCOID, VolumeVibratorNPCDefault, "{3}")
 	elseif option == ForbiddenTomeOID
 		ForbiddenTome = ForbiddenTomeDefault
 		SetToggleOptionValue(ForbiddenTomeOID, ForbiddenTome)
@@ -1123,8 +1135,10 @@
 		SetInfoText("Controls the volume of an an actor's moans during an orgasm.\nDefault:" + volumeOrgasmDefault)
 	elseIf (option == VolumeEdgedOID)
 		SetInfoText("Controls the volume of an actor's moans after being edged.\nDefault:" + volumeEdgedDefault)
-	elseIf (option == VolumeVibrator)
-		SetInfoText("Controls the volume of a vibrator. Note, that the stronger vibrators are inherently louder than the weaker ones. If you set this too low, you may not be able to hear the weaker ones.\nDefault:" + volumeVibratorDefault)
+	elseIf (option == VolumeVibratorOID)
+		SetInfoText("Controls the volume of a vibrator for a player. Note, that the stronger vibrators are inherently louder than the weaker ones. If you set this too low, you may not be able to hear the weaker ones.\nDefault:" + volumeVibratorDefault)
+	elseIf (option == VolumeVibratorNPCOID)
+		SetInfoText("Controls the volume of a vibrator for NPC. Note, that the stronger vibrators are inherently louder than the weaker ones. If you set this too low, you may not be able to hear the weaker ones.\nDefault:" + volumeVibratorNPCDefault)
 	elseIf (option == ForbiddenTomeOID)
 		SetInfoText("Enable/disable the triggers to start the Forbidden Tome quest. Hint: This quest is started in the Arcanaeum.\nDefault:"+ForbiddenTomeDefault)
 	elseIf (option == SergiusExperimentOID)
@@ -1247,6 +1261,9 @@
 	elseIf option == VolumeVibratorOID
 		VolumeVibrator = (value as Float)
 		SetSliderOptionValue(option, value, "{3}")
+	elseIf option == VolumeVibratorNPCOID
+		VolumeVibratorNPC = (value as Float)
+		SetSliderOptionValue(option, value, "{3}")
 	elseIf option == VolumeEdgedOID
 		VolumeEdged = (value as Float)
 		SetSliderOptionValue(option, value, "{3}")
@@ -1394,6 +1411,7 @@
 	ExportFloat("VolumeOrgasm", VolumeOrgasm);EXPORTAUTOGEN
 	ExportFloat("VolumeEdged", VolumeEdged);EXPORTAUTOGEN
 	ExportFloat("VolumeVibrator", VolumeVibrator);EXPORTAUTOGEN
+	ExportFloat("VolumeVibratorNPC", VolumeVibratorNPC);EXPORTAUTOGEN
 	ExportBool("ForbiddenTome", ForbiddenTome);EXPORTAUTOGEN
 	ExportBool("SergiusExperiment", SergiusExperiment);EXPORTAUTOGEN
 	ExportBool("SurreptitiousStreets", SurreptitiousStreets);EXPORTAUTOGEN
@@ -1468,6 +1486,7 @@
 	VolumeOrgasm = ImportFloat("VolumeOrgasm", VolumeOrgasm);IMPORTAUTOGEN
 	VolumeEdged = ImportFloat("VolumeEdged", VolumeEdged);IMPORTAUTOGEN
 	VolumeVibrator = ImportFloat("VolumeVibrator", VolumeVibrator);IMPORTAUTOGEN
+	VolumeVibratorNPC = ImportFloat("VolumeVibratorNPC", VolumeVibratorNPC);IMPORTAUTOGEN
 	ForbiddenTome = ImportBool("ForbiddenTome", ForbiddenTome);IMPORTAUTOGEN
 	SergiusExperiment = ImportBool("SergiusExperiment", SergiusExperiment);IMPORTAUTOGEN
 	SurreptitiousStreets = ImportBool("SurreptitiousStreets", SurreptitiousStreets);IMPORTAUTOGEN
diff -Naur Source.orig/zadEventPeriodicShocker.psc Source/zadEventPeriodicShocker.psc
--- Source.orig/zadEventPeriodicShocker.psc	2018-05-10 06:33:04.282100000 +0300
+++ Source/zadEventPeriodicShocker.psc	2022-06-27 15:39:30.165878400 +0300
@@ -12,10 +12,13 @@
 		armor vPiercing = StorageUtil.GetFormValue(akActor, "zad_Equipped" + libs.LookupDeviceType(libs.zad_DeviousPiercingsVaginal) + "_Rendered") as Armor
 		if vPiercing && (vPiercing.HasKeyword(libs.zad_EffectShocking))
 			libs.NotifyPlayer("The piercings within you let out a painful jolt!")
+			libs.Log("zadEventPeriodicShocker: vPiercing")
 		ElseIf vPlug && (vPlug.HasKeyword(libs.zad_EffectShocking))
 			libs.NotifyPlayer("The plug within you let out a painful jolt!")
+			libs.Log("zadEventPeriodicShocker: vPlug")
 		Else
 			libs.NotifyPlayer("A painful jolt courses through you!")
+			libs.Log("zadEventPeriodicShocker: generic")
 		EndIf
 	Else
 		libs.NotifyNPC(akActor.GetLeveledActorBase().GetName() + " squirms uncomfortably as a painful jolt courses through her!")
diff -Naur Source.orig/zadEventVibrate.psc Source/zadEventVibrate.psc
--- Source.orig/zadEventVibrate.psc	2021-01-07 19:29:35.778818600 +0300
+++ Source/zadEventVibrate.psc	2022-06-27 15:42:17.659662100 +0300
@@ -30,6 +30,7 @@
 	if libs.ActorHasKeyword(akActor, libs.zad_EffectShockOnFullArousal) && libs.Aroused.GetActorArousal(akActor) >= 99
 		if (akActor == libs.PlayerRef)
 			libs.NotifyPlayer("A painful jolt of electricity rocks you.")
+			libs.Log("zadEventVibrate: shock")
 		Else
 			libs.NotifyNPC(akActor.GetLeveledActorBase().GetName()+" squirms uncomfortably as electricity runs through her.")
 		EndIf
diff -Naur Source.orig/zadLibs.psc Source/zadLibs.psc
--- Source.orig/zadLibs.psc	2022-03-28 23:14:58.890016400 +0300
+++ Source/zadLibs.psc	2022-06-27 16:07:10.049591400 +0300
@@ -2001,12 +2001,12 @@
 	Endif
 
 	; Initialize Sounds
-	float vibSoundMult = 1
+	float vibSoundVol = Config.VolumeVibrator
 	if akActor != PlayerRef
-		vibSoundMult=0.5
+		vibSoundVol=Config.VolumeVibratorNPC
 	EndIf
 	int vsID = vibSoundSelect.Play(akActor)
-	Sound.SetInstanceVolume(vsID, Config.VolumeVibrator * vibSoundMult)
+	Sound.SetInstanceVolume(vsID, vibSoundVol)
 	int msID = MoanSound.Play(akActor)
 	Sound.SetInstanceVolume(msID, GetMoanVolume(akActor))
 	int timeVibrated = 0
@@ -2857,6 +2857,7 @@
 Function ShockActor(actor akActor)
 	if akActor == playerRef
 		NotifyPlayer("The plugs within you let out a powerful electrical shock!")
+		log("zadLibs: ShockActor")
 	Else
 		NotifyNPC(akActor.GetLeveledActorBase().GetName()+" squirms uncomfortably as electricity runs through her.")
 	EndIf
diff -Naur Source.orig/zadShockVibEffect.psc Source/zadShockVibEffect.psc
--- Source.orig/zadShockVibEffect.psc	2018-05-10 06:33:04.330730000 +0300
+++ Source/zadShockVibEffect.psc	2022-06-27 16:10:12.662217300 +0300
@@ -21,6 +21,7 @@
 		if Target == libs.playerRef
 			libs.NotifyPlayer("A small jolt of electricity emenates from the ")
 			libs.NotifyPlayer("plugs within you, causing you to cry out in pain.")
+			libs.Log("zadShockVibEffect: ShockActor")
 		Else
 			libs.NotifyNPC(Target.GetName() + " squirms uncomfortably as the plugs within her let out a painful jolt!")
 		EndIf

 

 

DDi vibrate patch.rar

Edited by DeWired
Posted
2 hours ago, DeWired said:

@Kimyspeaking of patch archives.. ?

I made one (against 5.2beta6). Summary of changes:

- adds in MCM Vibrate Volume slider for NPCs, existing is left for player.

- I think, fixes Vibrate Volume slider?..

- makes VibrateEffect use different volumes for player and NPCs from config. This way, player can have vibrations silenced while listening for NPC being vibrated.

- log messages added for when shock effect is applied to player

In archive patch itself (made with diff) and changed files.

As always - it is a suggestion, treat as you wish ?

  Reveal hidden contents

 

DDi vibrate patch.rar 47.41 kB · 2 downloads

 

Looks like a good change to me. I will merge this! :)

Posted (edited)

Having a bit of a picke with cursed loot here: if I install DCL first, it won't work since it required DD to work. DD's beta 6 has a field for a patch for DCL, but that is greyed out unless DCL is installed... which I cannot do, unless DD is. How do I get the patch engaged?

 

Only way to get out of it is to install DD, then DCL, then re-install DD - then the patch is availlable. Might be just a nitpick, butt...

Edited by Cornoholio
Posted

So, it seams like a problem: Iron Ring Slave Boots don't have BodySlide records for UUNP body, even at 5.2beta6, and I hadn't found any instances of them having such records in other versions (5.1, 5.0, 4.3). In CBBE, they go as

<SliderSet name="DD - CBBE - IronSlaveBoots">

in /CalienteTools/BodySlide/SliderSets/DD - CBBE.osp.

File formed is meshes/devious/expansion/ZariaBoot7_0.nif, used for Armor Addon zadx_bootsAA.

It causes problems for Cursed Loot, as this exact model is used for Prisoner Leg Restraints.

 

Posted
On 6/29/2022 at 2:36 AM, Cornoholio said:

Having a bit of a picke with cursed loot here: if I install DCL first, it won't work since it required DD to work. DD's beta 6 has a field for a patch for DCL, but that is greyed out unless DCL is installed... which I cannot do, unless DD is. How do I get the patch engaged?

 

Only way to get out of it is to install DD, then DCL, then re-install DD - then the patch is availlable. Might be just a nitpick, butt...

I have no that trouble since I am using MO2. I can just install DCL with patch first, then DD with patch. 

Posted (edited)

So idea for the "heavy bondage" limitations.

Instead of setting the lockpick chance to 0, just outright disable it.

 

Add a new edit value on the perk 'zad_BoundActivation'

 

Spoiler

Capture.JPG.271e6be91969a98c637580ea9fe8a25c.JPG

 

Capture2.JPG.26ce4959d849cb1721f11f49fbb9ff32.JPG

 

This will only trigger on NPC's and when sneaking. A condition 'GetDead' could be added to allow corpse looting when sneaking.

 

Other one is the lockpick limitation. Adding another Perk entry on the same perk but with a check if it's locked removes the lockpick popup.

It could also be tweaked to trigger on GetLockLevel between 0 and 254 so it will be possible to open locked doors you have the key to. 

 

Only issue with this is that is might not be clear it's a locked door as the prompt is gone. Could be filtered to be only on doors with a GetIsObjectType -> door.

 

Spoiler

Capture3.JPG.83bb43bba709808c1982713b9ff2951b.JPG

 

As some mods to tamper with the same things it would be wise to add a condition to it so it's something that can be disabled via MCM if something conflicts.

Edited by naaitsab
Posted

Hello !

 

I just wanted to report a little bug on a mesh of the posture collar, in case it hasn't been done before :)

 

The new version of the posture collar has no smoothing group on his nif file, so i guess there was an issue on export from 3D software when it has been modified to add the padlock on the back.

Here is a screen to show the difference :)

 

 

collars.jpg

Posted (edited)
46 minutes ago, Hellethia_ said:

Hello !

 

I just wanted to report a little bug on a mesh of the posture collar, in case it hasn't been done before :)

 

The new version of the posture collar has no smoothing group on his nif file, so i guess there was an issue on export from 3D software when it has been modified to add the padlock on the back.

Here is a screen to show the difference :)

 

 

collars.jpg

 

Woah, where's that pretty frilled collar catsuit thing from?

Edited by SilentAntagonist121
Posted
18 hours ago, SilentAntagonist121 said:

 

Woah, where's that pretty frilled collar catsuit thing from?

 

Actually it's just the Collar part of the outfit mod from COCO's 2B Wedding Outfit, I just modified the nifskope to change material, remove transparency, and i modified textures as well. So it is completly independant (i use it as amulet slot here, i think it's looking well between the posture collar and the catsuit ^^)

Posted (edited)

Hello @Kimy,

After seeing how lively it became here, I realized that I should contribute something more life changing. So, basically, the whole expression system in DD is broken to the core. I have fixed it in my mode Unforgiving devices, and I think that it is finally working as intended. Because of that, I'm quite sure that it should not cause much problem in the framework.

So, I have taken the script, edited it, improved it (added some simple APi, may be good to expand it in the future) and integrated them in to DD. I would be glad if you could give it a look and possibly add in to the framework.

 

I have created new quest zadexpressionquest. For now this quest only contains 2 scripts: zadexpressionlibs and zadprebuildedexpressions.

Most importantly, this reworked system fixes following problems

  • Applyexpression() not really working. It only changes one phoneme if the openMouth argument is true. I have edited zadlibs applyexpression() to instead use new API function from zadexpressionlibs  which works.
  • Gag expression was overwriting expression, so even if the apply expression was fixed, it would still be removed by gag effect. New applyexpressions() from zadexpressionlibs   takes the gag in account, and only edits phonemes, without touching other expression nodes (more in pictures)
  • Strength argument in applyexpression()  was not working. This is SexLab problem. It either doesn't work or it works in way that I don't understand
  • New expressions use priority system. In case that there is call to apply an expression with lower priority that the currently applied expression, the call will fail. This will help modders in future as they will not need to check if the expression should be applied.
  • Depending on body, head mesh etc... Gag sometimes doesn't fit. This is from user to user, so a universal solution is impossible. For that reason I added simple way to fix this issue. I added 16 new faction. Every faction represent 1 phoneme node. Gag effect then use these factions ranks as how strong should phonem be (again, can be better explained on picture). In general, users can simply edit any actor gag phonemes by using console. For now this only edits simple gag. Large gag and panel gag is ignored.

Pictures

Spoiler
  • Gag effect before changing factions rank

gag-nofix.jpg.0ea42ee20076ca22ed2f639dea442c4b.jpg

  • Gag effect after changing phonems
    • Phonem 0 to 10
    • Phonem 9 to 20
    • Phonem 10 to 80
  • It can be seen that this change is done by calling SetFactionRank in console. This way, gag effect can be even modified for different actors (like custom followers, etc..)

gag-fix.jpg.0c305ad65ae38918a1e56247cf130c95.jpg

  • Pleasure expression with strength 75. This is the expression which is used by vib function (yes, this is how it should correctly look. I'm also surprised). I tested it by calling libs ApplyExpression and it worked, so if other mods also tried to use the expressions, now it should work.

pleasure-nogag.jpg.052af3790f730d7386caf0954230b6d2.jpg

  • The same expression after equipping gag. Now there is still one problem (and I already send the fix in this support thread few pages back). Issue is that when equipping gag, it will call QueueNiNodeUpdate, which reset expressions. I have fixed it by adding condition so it only gets called if inventory is open (this doesn't solve the issue but it will at least reduce chance of getting expression removed)

pleasure-gag.jpg.581924ada852e1aa38c75a7fcef0c78a.jpg

 

Few other notes:

  • I edited VibrateEffect function to use new function with priority. Also changed orgasm expression (uses same expressions from UD). Creating new expressions isn't really that hard so in case you don't like it you can try to edit to your liking
  • Edited script zadGagEffect and zadGagScript, so they doesn't remove expression once gag is unlocked
  • I have created it as a separate mod, but it should be simple to integrate in to the framework.
  • It is possible that this may cause issue if Conditional Expressions is installed. But from my understanding Conditional Expressions is incompatible with pretty much any mod in existence that changes expression. There are at least source files for the mod, so it should be possible to create a patch in the future.

Installation details

  • Can be installed like any other mod. Needs to be after DD.
  • Don't forget to install sexlab after starting the game, or expressions returned by framework will be none
  • No special upgrade handling is required. Install and try, nothing more.

Download link: Devious Expressions.zip

Edited by ihatemykite
Removed additional picture
Posted

Recently migrated skyrim to my SSD to improve performance. but seem to be having issues going into the Whip and Chain inn. Not sure whats causing it but I think its something with DD beta 6. I reinstalled a couple times to no avail. Is there something I'm possibly missing? I reinstalled my ENBs and SKSE but similar issues keep happening attempting to enter the inn

Posted
5 hours ago, ihatemykite said:

Pictures

 

Maybe I just have a lack of understanding, but what exactly is wrong with the first picture? The mouth being more closed over the gag makes it look more secure to the head and seemingly fitting more snug in the mouth. I don't see any unusual clipping that would make it look unnatural. The second picture has the mouth way too open, making it look less snug and making it seem more like she could just push the ball out of her mouth with her tongue.

 

Just my opinion here, I'm probably the only one who thinks this way.

Posted
45 minutes ago, Vakir said:

Recently migrated skyrim to my SSD to improve performance. but seem to be having issues going into the Whip and Chain inn. Not sure whats causing it but I think its something with DD beta 6. I reinstalled a couple times to no avail. Is there something I'm possibly missing? I reinstalled my ENBs and SKSE but similar issues keep happening attempting to enter the inn

ok seems its a DCL issue. ill bring it to that forum.

Posted

Heyho,

is there a way to check whether the timed lock shield for a worn item is active? If not, could such way be provided? Pretty please? 

Posted
11 hours ago, serranna said:

 

Maybe I just have a lack of understanding, but what exactly is wrong with the first picture? The mouth being more closed over the gag makes it look more secure to the head and seemingly fitting more snug in the mouth. I don't see any unusual clipping that would make it look unnatural. The second picture has the mouth way too open, making it look less snug and making it seem more like she could just push the ball out of her mouth with her tongue.

 

Just my opinion here, I'm probably the only one who thinks this way.

 

The angle of the picture makes it hard to notice by there is clipping with the lower lip (On my character and frankly any character that has a base mouth shape which isn't 0 or 1 it is far more noticable).

Posted
17 hours ago, ihatemykite said:

Hello @Kimy,

After seeing how lively it became here, I realized that I should contribute something more life changing. So, basically, the whole expression system in DD is broken to the core. I have fixed it in my mode Unforgiving devices, and I think that it is finally working as intended. Because of that, I'm quite sure that it should not cause much problem in the framework.

So, I have taken the script, edited it, improved it (added some simple APi, may be good to expand it in the future) and integrated them in to DD. I would be glad if you could give it a look and possibly add in to the framework.

 

I have created new quest zadexpressionquest. For now this quest only contains 2 scripts: zadexpressionlibs and zadprebuildedexpressions.

Most importantly, this reworked system fixes following problems

  • Applyexpression() not really working. It only changes one phoneme if the openMouth argument is true. I have edited zadlibs applyexpression() to instead use new API function from zadexpressionlibs  which works.
  • Gag expression was overwriting expression, so even if the apply expression was fixed, it would still be removed by gag effect. New applyexpressions() from zadexpressionlibs   takes the gag in account, and only edits phonemes, without touching other expression nodes (more in pictures)
  • Strength argument in applyexpression()  was not working. This is SexLab problem. It either doesn't work or it works in way that I don't understand
  • New expressions use priority system. In case that there is call to apply an expression with lower priority that the currently applied expression, the call will fail. This will help modders in future as they will not need to check if the expression should be applied.
  • Depending on body, head mesh etc... Gag sometimes doesn't fit. This is from user to user, so a universal solution is impossible. For that reason I added simple way to fix this issue. I added 16 new faction. Every faction represent 1 phoneme node. Gag effect then use these factions ranks as how strong should phonem be (again, can be better explained on picture). In general, users can simply edit any actor gag phonemes by using console. For now this only edits simple gag. Large gag and panel gag is ignored.

Pictures

  Reveal hidden contents
  • Gag effect before changing factions rank

gag-nofix.jpg.0ea42ee20076ca22ed2f639dea442c4b.jpg

  • Gag effect after changing phonems
    • Phonem 0 to 10
    • Phonem 9 to 20
    • Phonem 10 to 80
  • It can be seen that this change is done by calling SetFactionRank in console. This way, gag effect can be even modified for different actors (like custom followers, etc..)

gag-fix.jpg.0c305ad65ae38918a1e56247cf130c95.jpg

  • Pleasure expression with strength 75. This is the expression which is used by vib function (yes, this is how it should correctly look. I'm also surprised). I tested it by calling libs ApplyExpression and it worked, so if other mods also tried to use the expressions, now it should work.

pleasure-nogag.jpg.052af3790f730d7386caf0954230b6d2.jpg

  • The same expression after equipping gag. Now there is still one problem (and I already send the fix in this support thread few pages back). Issue is that when equipping gag, it will call QueueNiNodeUpdate, which reset expressions. I have fixed it by adding condition so it only gets called if inventory is open (this doesn't solve the issue but it will at least reduce chance of getting expression removed)

pleasure-gag.jpg.581924ada852e1aa38c75a7fcef0c78a.jpg

 

Few other notes:

  • I edited VibrateEffect function to use new function with priority. Also changed orgasm expression (uses same expressions from UD). Creating new expressions isn't really that hard so in case you don't like it you can try to edit to your liking
  • Edited script zadGagEffect and zadGagScript, so they doesn't remove expression once gag is unlocked
  • I have created it as a separate mod, but it should be simple to integrate in to the framework.
  • It is possible that this may cause issue if Conditional Expressions is installed. But from my understanding Conditional Expressions is incompatible with pretty much any mod in existence that changes expression. There are at least source files for the mod, so it should be possible to create a patch in the future.

Installation details

  • Can be installed like any other mod. Needs to be after DD.
  • Don't forget to install sexlab after starting the game, or expressions returned by framework will be none
  • No special upgrade handling is required. Install and try, nothing more.

Download link: Devious Expressions.zip 94.8 kB · 12 downloads

 

I didn't test it (and won't be able to in the next few days) but it sounds like some amazing improvements.

If it can't make it into the next release, could we have it as a separate mod please? XD

Posted
17 hours ago, ihatemykite said:
  • It is possible that this may cause issue if Conditional Expressions is installed. But from my understanding Conditional Expressions is incompatible with pretty much any mod in existence that changes expression. There are at least source files for the mod, so it should be possible to create a patch in the future.

 

While I am sure the regular version of Conditional Expressions would cause issues, there is also Conditional Expressions Extended here on LL which has compatibility with Devious Devices among other things.
I am not sure how your changes will effect that, but that mod is still in active development (even got another update earlier today), so I would think a solution wouldn't be hard to find?

Posted
2 hours ago, thedarkone1234 said:

 

I didn't test it (and won't be able to in the next few days) but it sounds like some amazing improvements.

If it can't make it into the next release, could we have it as a separate mod please? XD

 

The download posted should work as separate patch against DD already. If people can test it and let me know if they like the changes, I will merge that patch into the framework. :)

Posted
12 hours ago, Mister X said:

Heyho,

is there a way to check whether the timed lock shield for a worn item is active? If not, could such way be provided? Pretty please? 

 

I will look into it.

Posted
3 hours ago, thedarkone1234 said:

 

The angle of the picture makes it hard to notice by there is clipping with the lower lip (On my character and frankly any character that has a base mouth shape which isn't 0 or 1 it is far more noticable).

 

I get it, and when I study my characters in game I see the slight clipping in the lower lip, but picture 2 still looks like the mouth is open a bit too much in my opinion. As I said, it looks like the character can just push the ball out of their mouth. I prefer the look with the ever so slight clipping because it feels like a more snug and secure fit.

Also imagine how picture 2 would look with the ring or bit and the mouth open that much. I dont have any interest in the patch, but I would be interested in seeing pictures of them.

 

Posted
12 hours ago, serranna said:

 

I get it, and when I study my characters in game I see the slight clipping in the lower lip, but picture 2 still looks like the mouth is open a bit too much in my opinion. As I said, it looks like the character can just push the ball out of their mouth. I prefer the look with the ever so slight clipping because it feels like a more snug and secure fit.

Also imagine how picture 2 would look with the ring or bit and the mouth open that much. I dont have any interest in the patch, but I would be interested in seeing pictures of them.

 

The main goal of the patch isn't to allow users to adjust the gag. Main goal it so make expressions work properly. The gag thing was not even in original mod (or at least in such capacity). I just added it because I have heard many people complaining about clipping issue with gags.

In case you like how current gag look, you don't have to do anything. Default values are the same.

Also, here are the pictures of ring gag. I also edit the factions a little to make it fit more.

Spoiler
  • Default expression. This is still what you get after installing the mod. You have to adjust the faction manually or nothing happens

gag2-nofix.jpg.deae34d625af5a73abd4e35675a7af12.jpg

 

  • Adjusted expression. In comparison to previous pictures, I removed 1 and 10 modifier. This way it doesn't clip and still looks fits.

gag2-fix.jpg.aa1273bc9d94095572d4e422bfa7ddfd.jpg

  • Same thing but with ring gag. There is only problem with teeth clipping through teeth. This was most likely also an issue before, it was just impossible to see it.

ringgag-nofix.jpg.4fabc30b696e1753c3349760e53fcd9e.jpg

ringgag-fix.jpg.1d46416d3d5ca21b8f487d19cb8bc23a.jpg

 

Posted
4 hours ago, tznvlw said:

@ihatemykite

 

I was wondering, are these tweaks available for DD v1.63?

 

There is no DD 1.63. We're at version 5.x now. Do you mean SexLab perhaps?

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