Jump to content

Devious Devices Framework Development/Beta


Kimy

Recommended Posts

Posted

@Kimy how do you stand about the "hardcore" effects with regards to my idea to set it off by default? It that is agreeable I can make the modifications in an ESP for merge and change the lines in the MCM script. The entire idea is it wil _always_ be off unless manually enabled. To make it even more safe a messagebox with a warning if you enable it in the MCM is also possible to do.

Posted
1 hour ago, naaitsab said:

@Kimy how do you stand about the "hardcore" effects with regards to my idea to set it off by default? It that is agreeable I can make the modifications in an ESP for merge and change the lines in the MCM script. The entire idea is it wil _always_ be off unless manually enabled. To make it even more safe a messagebox with a warning if you enable it in the MCM is also possible to do.

 

I am not sold on it, honestly. Even with the toggle off by default, I can imagine too many cases of stuff breaking and players being unable to make the connection between the problem and their MCM settings. I don't think it's good practice to have UI settings available that can potentially break content.

Posted

I think the hardcore activation filtering would best be suited as a separate mod addon. It would also be best if it's done without editing the default device effects, and instead with a single perk added to the player that activates based on worn keywords.

 

Just my two cents.

Posted
8 hours ago, Code Serpent said:

I think the hardcore activation filtering would best be suited as a separate mod addon. It would also be best if it's done without editing the default device effects, and instead with a single perk added to the player that activates based on worn keywords.

 

Just my two cents.

Yeah that might be the best option. Downside is it would either require a extra MCM, modify the original MCM which I don't llike or work with globals.

Posted
3 hours ago, naaitsab said:

Yeah that might be the best option. Downside is it would either require a extra MCM, modify the original MCM which I don't llike or work with globals.

Inte's DDe offers hardcore settings for devices already. ?

Posted
3 hours ago, donttouchmethere said:

Inte's DDe offers hardcore settings for devices already. ?

It does but also adds a whole lot of other features not related to the feature. So it's like you only need a knife but get a swiss army knife with 35 attachments you don't use :P

Posted
16 hours ago, Code Serpent said:

I think the hardcore activation filtering would best be suited as a separate mod addon. It would also be best if it's done without editing the default device effects, and instead with a single perk added to the player that activates based on worn keywords.

 

Just my two cents.

 

Sounds like a good solution to me.

Posted
1 hour ago, naaitsab said:

It does but also adds a whole lot of other features not related to the feature. So it's like you only need a knife but get a swiss army knife with 35 attachments you don't use :P

? I understand that.

If more functions get added to DD - with MCM settings to manipulate them - it seems outsourcing is the better solution and Inte's Framework seems to be already a good solution for further DD functionalities.

Posted
44 minutes ago, donttouchmethere said:

? I understand that.

If more functions get added to DD - with MCM settings to manipulate them - it seems outsourcing is the better solution and Inte's Framework seems to be already a good solution for further DD functionalities.

 

The appeal of a standalone mini-mod for that specific feature would be that people installing it would be well aware of its nature. If it's a feature buried in DD or another larger, multi-feature mod, the danger of users inadvertently breaking content with it, would be a tad smaller....

Posted

I want to ask about the gags...

Is there any plan on refining the meshes?
Reworking them, or adding a few polygons here and there to make them look better?
Are the original creators still around, and open to the idea?

I am asking, because i just released my Adjustable Gags mod, and while working on it, i couldn't unsee how low poly some gags are in certain parts (especially all the straps! omg! adding a few more polys certainly wouldn't ruin anyone's FPS and would go a long way for better visuals).
It may not seem that way, until you start adding morphs to make the gags fit the face.

I will be reworking the morphs i added to the gags in my mod, and it would be really great to work with better meshes from the get go.
I don't mean to sound ungrateful, DD i awesome, but it could be better :)

So, are any creators of those gags still around? Is anybody willing to help?

Posted
7 hours ago, Roggvir said:

So, are any creators of those gags still around? Is anybody willing to help?

I'd be happy to look at refining the meshes if the origional creators are gone, I believe anything in DD assets is free use anyway right so theres no issues with permissions on those gags. Are the heeretic ones high poly already? Which gags specificaly need work?

Posted (edited)
1 hour ago, audhol said:

I'd be happy to look at refining the meshes if the origional creators are gone, I believe anything in DD assets is free use anyway right so theres no issues with permissions on those gags. Are the heeretic ones high poly already? Which gags specificaly need work?

That would be amazing.

I could be wrong, but the Heretic gags seem to be less likely in needing refinements, because even if lowpoly, their shape is usually rather simple and it do not make much sense for them to bend too much in too many places where it would lack polygons to create at least a semblance of smooth bend/surface.
Maybe the Heretic ring gags could use few more polys on the rings, so they still look round-ish as they are made bigger by my morphs (in case the NPC has big mouth :).

Typically, the straps on any of the harness/simple gags is where it suffers.
For example, when you want to make the strap on top of the head copy the head curve (starting from forehead, and going over the top of the head towards back of the head) is where the lack of polygons leaves a lot to be desired.
487659999_gagstrapnotroundexample.png.94207e0563202e70b6c917e9e1354cba.png

(see how the strap is anything except smooth?)
Granted, the top of the head is often covered by hairs, so this eyesore is usually hidden.
But maybe she wants to be bald! But how could she?! Who wouldn't try to hide such awful strap? :)

Or here, see how super lowpoly the chinstrap is around where the cursor is pointing?
If the chin shape would be a bit rounder and wider, it would look awful with huge gap between the face and the strap point where the cursor is, because that point would have to be moved away from the face to prevent the strap from clipping through the face in those flat planes of the strap.
Similar problem would be underneath the chin - the bottom strap has too few polygons in general.
415118242_gagchinstrapnotroundexample.png.456452959129bc2941b8460d323e4679.png

 

Almost every gag has similar problem in some place.
The o rings connecting the straps could also use more polys to make them look a bit rounder from up close.

 

Or look at this... quadruplegoidal thing on that panel gag... is that supposed to be a round tube and round plug??? you couldn't fool me, no sir!
1135618877_gagpanelnotroundtubeexample.png.eeff7982395b059d2bd5ddaee7fbe675.png

 

...and i could find something horrid like that on almost every single gag.


Apart from those abominations, there may be some parts/places where it depends on the morphs.
For example, with some faces, a ring gag may need a morph that can move the ring deeper into the mouth, or in the opposite direction more toward the outside.
But to avoid clipping of the straps/parts that hold the ring from the sides, you need another morph that creates some kind of C-shape or almost U-shape around the edge of the mouth - and that is often where that part lacks polygons.

If i may, i would suggest that you grab the Adjustable Gags mod, and fiddle with some sliders to see what they do and why, and how it could be improved if the topology would be changed, or if there would be more polys to spare, etc.
The morphs are not super great, which is why i want to redo them all as i mentioned in my previous post, but even in their current state, it should give you an idea of what may be needed (i hope).

Edited by Roggvir
Posted
On 9/13/2022 at 3:31 AM, Zenagia said:

@Kimy Something I've been meaning to bring up for a while now. Not sure if anyone else has noticed this. For the last update or two, when in an armbinder, SJ or any other form of arm restraint - when your girl would interact with world objects such as chests and doors, they would just... operate via an "invisible force". I've noticed since the recent update or two that she will reach out through the restriant to interact before returning to the restraint idle.

I'm not sure if this is intentional or not - but it looks like a glitch. I've done a few re-installs since then (for various unrelated reasons), re-ran FNIS, and all the usual suspects and the issue persists. It's just an immersion breaking thing and it's a touch annoying and I wanted to bring it to your attention. Not sure if anyone else is experiencing this, or if you are already aware of it.

 

Correct me if I am wrong but there shouldn't be any animation for interacting with containers and/or doors in vanilla skyrim. If you see an animation, you might have installed one (a FNIS or DAR mod?) in which case, find said mod and name it here so people can see if they can overwrite its behavior while wearing DD.

Posted
1 hour ago, Roggvir said:

If i may, i would suggest that you grab the Adjustable Gags mod

 

This mod looks quite interesting but I see that it only exists for SE so far, so I just want to make sure I didn't miss some important change in the matter:

 

What's the up-to-date method to control gagged expression that is gonna ship within the DD base mod itself (in real version 5.2)? Because in my opinion the faction solution that you first introduced in "devious expresssions.esp" is simple enough and easy to use, and I wouldn't want to see it gone when 5.2 is released

Posted (edited)

@Roggvir

 

Had a quick look at it and its quite a big job, The issue is that if I use a multiresolution modifier with smoothing it creates holes in the mesh due to how it has been unwrapped for the uv. Now I can replace these missing faces but the I would have to remap the uv which in turn means its probably going to be easier to retexture the whole mesh rather than trying to scale the new faces to the old textures. Everything is of course possible but I dont know what the DD team thonks of retexturing and having to repack the new textures?

 

Here you can see in the center is the origional mesh, on the right is a multiresolution with smoothing and on the left a multiresolution without smoothing.

 

Spoiler

1179029_Blender15_09_202218_46_39.png.30d456868720bd34eed461842641f60a.png

here are the same three but looking side on, closest is the non smoothed multiplyed mesh and you can see quite clearly that the smoothed mesh (the furthest away) is far superior

 

Spoiler

1361763155_Blender15_09_202218_47_20.png.7779791b912a61df5efca02796352012.png

 

 

then here is the problem of using the smoothing

Spoiler

1502893061_Blender15_09_202218_46_55.png.aeed279b8f88dbff8fa4fa11d5d8dd1d.png

 

 

I'm happy to do whatever you and the rest of the team think is the best solution.

Edited by audhol
Posted
2 hours ago, audhol said:

@Roggvir

 

Had a quick look at it and its quite a big job, The issue is that if I use a multiresolution modifier with smoothing it creates holes in the mesh due to how it has been unwrapped for the uv. Now I can replace these missing faces but the I would have to remap the uv which in turn means its probably going to be easier to retexture the whole mesh rather than trying to scale the new faces to the old textures. Everything is of course possible but I dont know what the DD team thonks of retexturing and having to repack the new textures?

 

Here you can see in the center is the origional mesh, on the right is a multiresolution with smoothing and on the left a multiresolution without smoothing.

 

  Hide contents

1179029_Blender15_09_202218_46_39.png.30d456868720bd34eed461842641f60a.png

here are the same three but looking side on, closest is the non smoothed multiplyed mesh and you can see quite clearly that the smoothed mesh (the furthest away) is far superior

 

  Hide contents

1361763155_Blender15_09_202218_47_20.png.7779791b912a61df5efca02796352012.png

 

 

then here is the problem of using the smoothing

  Reveal hidden contents

1502893061_Blender15_09_202218_46_55.png.aeed279b8f88dbff8fa4fa11d5d8dd1d.png

 

 

I'm happy to do whatever you and the rest of the team think is the best solution.

 

I am no 3D Artist, i just used to "dabble" and i only ever used 3Ds Max, and there i could add or remove verts or faces without breaking the UV.
I usually only did manual refinements to smaller meshes, adding probably no more than a thousand vertices (in the most extreme cases), all in handpicked areas where i thought it needs more detail (or where i wanted to change the topology so it better followed how the mesh folds/morphs when animated in game).

 

I am not a fan of the automated refining tools, like subdivision, etc., because i found them too difficult to control where and how it affects the mesh, and because of some of the problems that you describe.

Applying any automated modifier to the whole mesh is not the way to go, when you want to refine the mesh, but still keep it as optimized as possible.
For me, the manual way, with only small and very strictly localized help from automated modifiers, is the only way.
But i know nothing about Blender, so i am afraid i can't be of any use.
 

I dunno what DD team thinks of retextures, but retexturing seems to me like too much work to make it worth it (but that could be just me, because i always found texturing one of the most difficult things i never learned).

Anyway, my opinions on these 3D matters should be taken very lightly, because i don't really know what i am doing :)

Posted
51 minutes ago, Roggvir said:

I am not a fan of the automated refining tools, like subdivision, etc., because i found them too difficult to control where and how it affects the mesh, and because of some of the problems that you describe.

Well the issue is where do you not subdivide, You mentioned that the rings looked hexagonal so then all rings need to be subdiveded then to allow for your tool to mould to the face better all straps also need to be subdived, the rivets bizarely already have loads of faces so I didnt subdived them or the ball as its fine and round as it is. I found a solution to the missing faces by rejoing all the vertices that were split by the uv map before applying the modifier then using the marked sharp edges to reaply the seam lines afterwards, here is a HD version of the harness ball gag (origional on left).

Spoiler

66253837_NewOutfit_-OutfitStudio15_09_202222_00_02.png.0ee5e9e2dbc5c179be4838d7b5a8cc0e.png203327832_NewOutfit_-OutfitStudio15_09_202222_00_11.png.950ef2db0f72118bc7e1be2e78671b60.png1280737756_NewOutfit_-OutfitStudio15_09_202222_01_11.png.175ebcc814260c5388000db40cb24483.png193965724_NewOutfit_-OutfitStudio15_09_202222_01_33.png.c7f8521effcaead6b19ab2dd96e4d0d1.png

I could probably optimise the process a bit by not splitting the edges of the straps and that would also solve the issue of the uv seams encroaching onto the front face but here is a quick version for you to see if it suits what your looking for, notice I also unified the wording for the segments of the mesh, as gags dont use texture sets its not an issue.

 

 

gagHarnessBallHD.nif  SE

 

gagHarnessBallHD.nif  LE

Posted
17 minutes ago, audhol said:

Well the issue is where do you not subdivide, You mentioned that the rings looked hexagonal so then all rings need to be subdiveded then to allow for your tool to mould to the face better all straps also need to be subdived, the rivets bizarely already have loads of faces so I didnt subdived them or the ball as its fine and round as it is. I found a solution to the missing faces by rejoing all the vertices that were split by the uv map before applying the modifier then using the marked sharp edges to reaply the seam lines afterwards, here is a HD version of the harness ball gag (origional on left).

  Hide contents

66253837_NewOutfit_-OutfitStudio15_09_202222_00_02.png.0ee5e9e2dbc5c179be4838d7b5a8cc0e.png203327832_NewOutfit_-OutfitStudio15_09_202222_00_11.png.950ef2db0f72118bc7e1be2e78671b60.png1280737756_NewOutfit_-OutfitStudio15_09_202222_01_11.png.175ebcc814260c5388000db40cb24483.png193965724_NewOutfit_-OutfitStudio15_09_202222_01_33.png.c7f8521effcaead6b19ab2dd96e4d0d1.png

I could probably optimise the process a bit by not splitting the edges of the straps and that would also solve the issue of the uv seams encroaching onto the front face but here is a quick version for you to see if it suits what your looking for, notice I also unified the wording for the segments of the mesh, as gags dont use texture sets its not an issue.

 

 

gagHarnessBallHD.nif  SE

 

gagHarnessBallHD.nif  LE

Subdivision is evil :)

 

I do not want to complain or make you feel bad, i really really appreciate your willingness to help.
So, please, don't get angry, but...


The rings only need more polys along the radius as the ring goes, not to add more across the tubus.
I can't say for sure it happens here, but make sure it doesn't do that.

 

The straps are suffering a lot from the pure evil darkness of subdivision (or whatever is the function called).

For example, there are now more vertices in the middle of the strap, but that is just a waste.

The strap can benefit from more verts along its path to make its curve smoother, but adding verts in the middle of the strap width is useless (it could be usefull if the straps would be much wider, but they are not).

And even though it added verts along the path of the strap, it doesn't make its curve look any smoother, because subdivision didn't attempt rounding the shape by interpolating the relative height of the newly added vertices between the previously existing ones, so those verts need to be moved.

 

And it seems that from a mesh topology perspective it is messy too.
I can only judge by where the higlighted green verts are, but i am sure if you make OS display the wireframe overlay on top of the texture, it won't reveal anything good.
The topology of the faces is important.
It makes a huge difference whether a diagonal, between four verts in a quad, is going from top left to bottom right, or from bottom left to top right.
Depending on where that quad/face is, what happens to the mesh in that place (which way it bends, how it morphs), it can result in clipping with itself, or with some mesh close to it or underneath it (if the faces on the opposite side, or that other mesh faces in roughly same spot, are divided by a diagonal going in the opposite direction).

 

And what is with the wonky strap edges shown in the last image on the right side?

That is really bad. Unfortunately, this is typical of these automatic modifiers - you can minimize/fix it sometimes, or to some extent, but not allways.

It is important, that the mesh gets only refined, not that it develops blisters or grows new appendages :)

 

Posted (edited)

@audhol I missed the files you posted, but i am looking at them now...
 

I am sorry, but the topology is beyond awful, it is extremely bad.

Everything got mangled by that subdivision/smoothing function you used.

 

There is no way to achieve a good result with applying the process to the whole mesh.
You need to carefully select parts of it and run the process only on that selection, and only so that it will mostly respect existing topology and boundaries, and that it only ADDs vertices, not move/change/remove existing ones.

Edited by Roggvir
Posted
14 hours ago, Roggvir said:

That would be amazing. [...]

 

The question is: Do you really need more polygons? Most of modern good looking models isn't done by just throwing more polygons at the renderer, but rather refined textures and maps. You can get almost the same look by using better normals and other textures, for a fraction of the computational cost.

 

Refining the DD assets by just  increasing the poly count and not looking at other methods is a big no for me. Sure I can run with it; I have an employer sponsored 3090Ti after all, but that doesn't mean I'm just willy nilly mod my Skyrim with 16k textures for candles.

 

Improving the textures also has the benefit of helping LE users in a greater way. 

Posted
33 minutes ago, GreatCroco said:

 

The question is: Do you really need more polygons? Most of modern good looking models isn't done by just throwing more polygons at the renderer, but rather refined textures and maps. You can get almost the same look by using better normals and other textures, for a fraction of the computational cost.

 

Refining the DD assets by just  increasing the poly count and not looking at other methods is a big no for me. Sure I can run with it; I have an employer sponsored 3090Ti after all, but that doesn't mean I'm just willy nilly mod my Skyrim with 16k textures for candles.

 

Improving the textures also has the benefit of helping LE users in a greater way. 

No, there are in fact three questions, and none of them is what you thought the question is.

Those three questions are:

  1. Why didn't you read the post you are quoting?
  2. Why didn't you look at the pictures from the post you are quoting?
  3. If you did read the post, and/or looked at the pictures, how come you think any of those problems can be solved without adding more polygons?
Posted
9 hours ago, Roggvir said:

I am sorry, but the topology is beyond awful, it is extremely bad.

Everything got mangled by that subdivision/smoothing function you used.

LOL you reminded me of my old art teacher that 5 hours into my 10 hour GCSE art exam took one look at my painting and said in her best scottish accent "Occhh thats awfull"

 

Anyway I take your point and took a fresh look this morning.

 

Spoiler

42121514_NewOutfit_-OutfitStudio16_09_202208_32_34.png.633e86d3da8c33138ea9061d5c79df18.png1764792821_NewOutfit_-OutfitStudio16_09_202208_32_52.png.23a4ff58119ff930cebf000588c19c90.png330836821_NewOutfit_-OutfitStudio16_09_202208_34_00.png.ae7ca22d28936cecd508cdac36223f6a.png

 

 

gagHarnessBallHD.nif   SE

 

gagHarnessBallHD.nif  LE

Posted
8 hours ago, GreatCroco said:

 

The question is: Do you really need more polygons? Most of modern good looking models isn't done by just throwing more polygons at the renderer, but rather refined textures and maps. You can get almost the same look by using better normals and other textures, for a fraction of the computational cost.

 

Refining the DD assets by just  increasing the poly count and not looking at other methods is a big no for me. Sure I can run with it; I have an employer sponsored 3090Ti after all, but that doesn't mean I'm just willy nilly mod my Skyrim with 16k textures for candles.

 

Improving the textures also has the benefit of helping LE users in a greater way. 

In this case the polgygons are there to make the changes more smooth instead of getting jagged edges. The less polygons the worse it will look. Or even get messed up completely. As te intent is to modify the mesh on the fly, that's something entirely different than a static mesh usecase.

Posted
3 hours ago, audhol said:

LOL you reminded me of my old art teacher that 5 hours into my 10 hour GCSE art exam took one look at my painting and said in her best scottish accent "Occhh thats awfull"

LOL, if you'd only know how long did it take, rewriting my post several times, hoping to prevent it from sounding mean, and still i failed! ?


 

3 hours ago, audhol said:

Anyway I take your point and took a fresh look this morning.

 

  Hide contents

42121514_NewOutfit_-OutfitStudio16_09_202208_32_34.png.633e86d3da8c33138ea9061d5c79df18.png1764792821_NewOutfit_-OutfitStudio16_09_202208_32_52.png.23a4ff58119ff930cebf000588c19c90.png

 

YES! This is much more like it!

There are still a few minor things, but very minor and easy to address:

  • The verts added in straps, in between previously existing verts, are not adding to the curve of the strap alongside its path.
    It would be better if the default shape (before applying any morphs) would have these vertices already moved to refine the curve.
    The segmented red line on the image below illustrates the "problem".
    The line is roughly copying the shape of the strap above it, and even though there are verts in the middle of the corresponding strap segments, those segments are still flat, instead of helping to create a better curve.
    In Max there was some surface snap modifier that i would use to make the strap segments snap to and copy an imported base head shape, but with a few polys as this, it can be done quick enough even manually, just eyeballing it and make it into a better curve (but there may be a different problem that should be addressed first).
    1346273652_thestrapshouldbecurved.png.28a8d2ccf44e600d6469ab993703c186.png
     
  • Misaligned verts on the sides of the strap.
    The image below was taken in OS with the perspective off, and as you can see, the vertices on one side (marked red) are not aligned with their counterparts on the other side.
    It is not misaligned in the meshes I am using, but it is possible it used to be, and that i fixed it long time ago myself and forgot :)
    In any case, you should have a look at this, and try to find a way of preventing it from happening.
    Have a look at the NIF file i am posting below - if it is better than your source, maybe use it instead? (to my surprise, when i imported both yours and mine NIF into OS, the overhead strap from my file does not align with yours at all. The rest of the shapes seem to be the same as far as i could tell, but not the overhead strap).
    49727831_thevertsarenotaligned.png.4d68487e7e190677c8284a0f76a6d058.png
    My file for comparison: gagHarnessBall.nif
     
  • The rings have still "malformed" topology.
    I think that is also why the textured preview of your rings look like they have uneven surface - maybe it can be fixed by recalculating normals or re-applying smoothing, but it would be better to keep the simple style of the original topology and just refine it by adding polys in alog the circumference (i usually used to do that manually usign some quick tricks, but maybe you know about a modifier/function that can do it for you - let me know if you want me to describe my method).
    Maybe you forgot to redo it using a different method than before?
    Here is an image for comparison - on the left is my source, on the right is your result.
    975746485_ringstopologybad.png.506723f839cbb2a083e739e80d5dcbb6.png
     


Apart from my complaints above, it looks fine.

Next thing would be to think about how to refine certain parts to help improve specific morphs,
Like the ring gag example i used in one of my previous posts, where the little straps holding the ring gag from its sides need to go inside the mouth while morphing around the mouth corner (creating sort of a C shape around it, to avoid clipping through the mouth corner while still alowing the ring to be pushed deeper into the mouth so it stands beyond the teeth and doesn't clip through them, etc.).
But we can keep that for later, after we sort out the base shapes and do the basic refinements.

Posted

It's been awhile since I've looked at this thread, and it looks like 5.2 is nearly out of beta, which is exciting. I thought I'd throw in another bug report and the solution I've had for awhile now, just in case it can get squeezed in before the final update. I thought someone had posted about it in this thread awhile ago, but search didn't seem to bring it up, and it's no different in the source for 5.2 Beta 7, so here it is.

 

I was getting a lot of papyrus errors surrounding the IsBlockedAnal() and IsBlockedVaginal() checks in ZadBQ00.psc. It looks like this is because they call GetWornRenderedDeviceByKeyword on zad_DeviousPlugAnal and zad_DeviousPlugVaginal, which doesn't work because GetWornRenderedDeviceByKeyword only checks for the zad_Lockable keyword, which plugs don't have. Relevant code snippets:

 

ZadBQ00

Spoiler
; Returns true if anal sex on this actor is blocked.
; 
Bool Function IsBlockedAnal(Actor akActor)
	If akActor.WornHasKeyword(libs.zad_DeviousBelt)
		Armor belt = libs.GetWornRenderedDeviceByKeyword(akActor, libs.zad_DeviousBelt)
		if !belt.HasKeyword(libs.zad_PermitAnal)
			return true
		EndIf
	EndIf
	If akActor.WornHasKeyword(libs.zad_DeviousSuit)
		Armor suit = libs.GetWornRenderedDeviceByKeyword(akActor, libs.zad_DeviousSuit)
		if !suit.HasKeyword(libs.zad_PermitAnal)
			return true
		EndIf
	EndIf
	If akActor.WornHasKeyword(libs.zad_DeviousPlugAnal)
		Armor plug = libs.GetWornRenderedDeviceByKeyword(akActor, libs.zad_DeviousPlugAnal)
		if !plug.HasKeyword(libs.zad_PermitAnal)
			return true
		EndIf
	EndIf	
	Return False
EndFunction

; Returns true if vaginal sex on/by this actor is blocked.
; 
Bool Function IsBlockedVaginal(Actor akActor)
	If akActor.WornHasKeyword(libs.zad_DeviousBelt)
		Armor belt = libs.GetWornRenderedDeviceByKeyword(akActor, libs.zad_DeviousBelt)
		if !belt.HasKeyword(libs.zad_PermitVaginal)
			return true
		EndIf
	EndIf
	If akActor.WornHasKeyword(libs.zad_DeviousSuit)
		Armor suit = libs.GetWornRenderedDeviceByKeyword(akActor, libs.zad_DeviousSuit)
		if !suit.HasKeyword(libs.zad_PermitVaginal)
			return true
		EndIf
	EndIf
	If akActor.WornHasKeyword(libs.zad_DeviousPlugVaginal)
		Armor plug = libs.GetWornRenderedDeviceByKeyword(akActor, libs.zad_DeviousPlugVaginal)
		if !plug.HasKeyword(libs.zad_PermitVaginal)
			return true
		EndIf
	EndIf	
	Return False
EndFunction

 

 

Zadlibs

Spoiler
Armor Function GetWornRenderedDeviceByKeyword(Actor a, Keyword kw)
	Int i = GetSlotMaskForDeviceType(kw)
	if i == -1
		return None
	EndIf
	Armor x = a.GetWornForm(i) As Armor 
	if x && x.HasKeyWord(zad_Lockable)
		return x
	EndIf
	return none
EndFunction

 

 

The solution is just to add zad_DeviousPlug as a check to GetWornRenderedDeviceByKeyword, like so:

 

Spoiler
Armor Function GetWornRenderedDeviceByKeyword(Actor a, Keyword kw)
	Int i = GetSlotMaskForDeviceType(kw)
	if i == -1
		return None
	EndIf
	Armor x = a.GetWornForm(i) As Armor 
	if x && (x.HasKeyWord(zad_Lockable) || x.HasKeyword(zad_DeviousPlug))
		return x
	EndIf
	return none
EndFunction

 

 

It stops the papyrus spam, at least. And I think it stopped some errors I was having with the animation filter too, but I made the change awhile ago, and I no longer remember.

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   1 member

×
×
  • Create New...