Kimy Posted October 5, 2020 Author Posted October 5, 2020 Devious Devices 5 Beta 2 - Fixed: Straitjackets should now work properly on NPCs (without breaking other stuff). - Fixed: NPCs wearing hobble skirts no longer affect the player's walking speed. - Fixed: Chain collars now use the correct DD device slot.  Devious Devices 5 LE Beta 1 to Beta 2.7z  This is a delta patch that needs to be installed on top of the Beta 1 version! Download the Beta 1 build here, if you haven't already:  https://mega.nz/file/eMEWRbJQ#YALWLvOcPo6PlgIgcLYnQdv2M86RsZTsc1WR31u49zc 1
Kharos Posted October 5, 2020 Posted October 5, 2020 19 minutes ago, Kimy said: Devious Devices 5 Beta 2  @Kimy I am still seeing the "disappearing NPC equipment" bug. Steps to reproduce on a "clean" game with DD5 (make sure you do not have mods like AFT that are messing with follower outfits): Hire a follower for the first time (Janessa is the fastest, just start a new game using LAL and give yourself 500 gold so you can hire her) Talk -> I need to trade some items -> equip heavy bondage, e.g. armbinder Wait until everything has settled (armbinder is visually equipped and pose is set up) Talk -> I need to trade some items -> equip another device, e.g. panel gag Directly after step 4 most of her equipment disappears, in my game actually while the trade dialog is still open. As I wrote before, I suspect (but have not validated this theory) that it is caused by the following code inside zadEquipScript.OnEquipped(Actor akActor): if akActor != libs.PlayerRef && (akActor.WornHasKeyword(libs.zad_DeviousSuit) || akActor.WornHasKeyword(libs.zad_DeviousHeavyBondage)) akActor.SetOutfit(libs.zadEmptyOutfit, false) endIf Â
DeWired Posted October 5, 2020 Posted October 5, 2020 2 hours ago, Kimy said: With the new code being as fast as it is, is there even a true need for skipping events anymore? I have to admit that I removed the skipEvents parameter intentionally, because it can cause really really messed up device states if used incorrectly. Well, main idea was to to a device swap within library, as there were reports about unequip/equip combo being so fast that it failed. Personally, I didn't test extensively (and didn't test before posting at all, sorry) - but in my one test it worked fine. So, yeah, I don't really know if it is needed - I will test it more and then if problem really is there I will say so. Â Â Anyway, there is another topic for discussion: animation filter. I see at least one problem with it: in zadBQ00.psc, bound actors are determined by HasBoundActors = HasBoundActors || libs.NeedsBoundAnim(originalActors[i]) and in zadlibs.psc, it looks like bool Function NeedsBoundAnim(actor akActor) return akActor.WornHasKeyword(zad_DeviousCuffsFront) || akActor.WornHasKeyword(zad_DeviousElbowTie) || (akActor.WornHasKeyword(zad_DeviousArmbinder) || akActor.WornHasKeyword(zad_DeviousArmBinderElbow) || akActor.WornHasKeyword(zad_DeviousYoke) || akActor.WornHasKeyword(zad_DeviousYokeBB)) EndFunction Question is: where is petsuit?
DonQuiWho Posted October 5, 2020 Posted October 5, 2020 @Kharos @Kimy  Just to say that I really appreciate all your hard work, folks! - as I'm sure is also true of many others
Kimy Posted October 5, 2020 Author Posted October 5, 2020 54 minutes ago, Kharos said: @Kimy I am still seeing the "disappearing NPC equipment" bug. Steps to reproduce on a "clean" game with DD5 (make sure you do not have mods like AFT that are messing with follower outfits): Hire a follower for the first time (Janessa is the fastest, just start a new game using LAL and give yourself 500 gold so you can hire her) Talk -> I need to trade some items -> equip heavy bondage, e.g. armbinder Wait until everything has settled (armbinder is visually equipped and pose is set up) Talk -> I need to trade some items -> equip another device, e.g. panel gag Directly after step 4 most of her equipment disappears, in my game actually while the trade dialog is still open. As I wrote before, I suspect (but have not validated this theory) that it is caused by the following code inside zadEquipScript.OnEquipped(Actor akActor): if akActor != libs.PlayerRef && (akActor.WornHasKeyword(libs.zad_DeviousSuit) || akActor.WornHasKeyword(libs.zad_DeviousHeavyBondage)) akActor.SetOutfit(libs.zadEmptyOutfit, false) endIf  Yes, I haven't yet looked into this issue, because I am not sure what's going on there. The code quoted changes the outfit on equipping certain items (that's the intended effect), but there is a corresponding function call in OnUneqipped() that should reset the outfit to the original one upon unequipping the device. Is that not working for you?
Zaflis Posted October 5, 2020 Posted October 5, 2020 51 minutes ago, DeWired said: Well, main idea was to to a device swap within library, as there were reports about unequip/equip combo being so fast that it failed. To be specific, it fails half the times so far when using DD5 and mods that were built with DD 4.3a scripts.  I went through all hoods to see what's with them: - Face masks (the black and transparent version) don't prevent eating, ID's xx049c80..83. The rendered item has zad_DeviousGag keyword, i don't know why it doesn't block inventory. I checked my load order, nothing overrides it. Spoiler  - No masks that block eyes but not mouth. For reminder these are hoods that are currently available, + the balloon hood: Spoiler From left to right: Open eyes hood, open hood, open face hood. It is slightly odd that open face hood covers mouth visually but it doesn't actually block mouth in any way.
Kimy Posted October 5, 2020 Author Posted October 5, 2020 @DeWired @Zaflis  Right, so isn't  Bool Function LockDevice(actor akActor, armor deviceInventory, bool force = false)  with force set to true about what you wanted? Because with this parameter it WILL swap out any generic item (if any is present) for the one given.
Zaflis Posted October 5, 2020 Posted October 5, 2020 21 minutes ago, Kimy said: with force set to true about what you wanted? Because with this parameter it WILL swap out any generic item (if any is present) for the one given. Not sure what "generic" covers, but as long as it supports quest and other special items then sure. It's not likely to be needed for any regular lootable restraints.
Kimy Posted October 5, 2020 Author Posted October 5, 2020 3 minutes ago, Zaflis said: Not sure what "generic" covers, but as long as it supports quest and other special items then sure. It's not likely to be needed for any regular lootable restraints. It does NOT support swapping OUT quest or block generic tagged devices. But you can swap such devices IN using this function. Replacing a generic device (e.g. anything in the DD library) with a quest device is honestly the only true use-case I can ever see for swapping devices.
Zaflis Posted October 5, 2020 Posted October 5, 2020 2 minutes ago, Kimy said: It does NOT support swapping OUT quest or block generic tagged devices. But you can swap such devices IN using this function. Replacing a generic device (e.g. anything in the DD library) with a quest device is honestly the only true use-case I can ever see for swapping devices. Laura is not going to be able to use it then  In case of changing strict hobble into loose one for example.
Kharos Posted October 5, 2020 Posted October 5, 2020 1 hour ago, Kimy said: Yes, I haven't yet looked into this issue, because I am not sure what's going on there. The code quoted changes the outfit on equipping certain items (that's the intended effect), but there is a corresponding function call in OnUneqipped() that should reset the outfit to the original one upon unequipping the device. Is that not working for you? Nope, at least when I test with Janessa, when I continue with 5. Talk -> I need to trade some items -> Unequip all DD items, her equipment does not come back. Also something is wonky, as her outfit does not disappear when I equip the armbinder (step 2), but later when I equip the panel gag (step 4).  But: The fact that you are trying to reset the original outfit on removal explains another issue that I have seen. I noticed some PAH slaves that had weapons even though I did not give them any, sometimes even multiples of these weapons. Most probably I am hitting the case that you comment with ; Note: This code has a side-effect when it resets the outfit to the ActorBase. This could override prior changes to the -Actor- outfit. Not sure if it's a big problem, so let's see how that goes.  Bottom line, it looks like the outfit changes do not always work correctly, and when they do they are causing compatibility issues...
Kimy Posted October 6, 2020 Author Posted October 6, 2020 4 hours ago, Zaflis said: Laura is not going to be able to use it then  In case of changing strict hobble into loose one for example. Changing a generic item for another generic item will totally work using that function.
Kimy Posted October 6, 2020 Author Posted October 6, 2020 5 hours ago, Kharos said: Nope, at least when I test with Janessa, when I continue with 5. Talk -> I need to trade some items -> Unequip all DD items, her equipment does not come back. Also something is wonky, as her outfit does not disappear when I equip the armbinder (step 2), but later when I equip the panel gag (step 4).  But: The fact that you are trying to reset the original outfit on removal explains another issue that I have seen. I noticed some PAH slaves that had weapons even though I did not give them any, sometimes even multiples of these weapons. Most probably I am hitting the case that you comment with ; Note: This code has a side-effect when it resets the outfit to the ActorBase. This could override prior changes to the -Actor- outfit. Not sure if it's a big problem, so let's see how that goes.  Bottom line, it looks like the outfit changes do not always work correctly, and when they do they are causing compatibility issues... Hm. I mean I could easily disable that few lines of code. Not sure if THAT is ideal either, though.
thedarkone1234 Posted October 6, 2020 Posted October 6, 2020 2 hours ago, Kimy said: Changing a generic item for another generic item will totally work using that function. I might be wrong but I think she wants a quest item to be replaced with another quest item (because both variants should be impossible to struggle from). Â I understand why you would want to block that, but is there a way to enable this in case the two items are related to the very same quest?
Kharos Posted October 6, 2020 Posted October 6, 2020 7 hours ago, Kimy said: It does NOT support swapping OUT quest or block generic tagged devices. But you can swap such devices IN using this function. Replacing a generic device (e.g. anything in the DD library) with a quest device is honestly the only true use-case I can ever see for swapping devices. 36 minutes ago, thedarkone1234 said: I might be wrong but I think she wants a quest item to be replaced with another quest item (because both variants should be impossible to struggle from). Â If I remember correctly (yeah I might misremember things) this is a quest where you get equipped with a hobble dress (or was it a hobble straitjacket?) that slows you down to almost a standstill at the Skyforge in Whiterun. You then walk very slowly to the temple of Kynareth nearby, where somebody manages to help you by loosening it a bit. You can then walk a bit faster to Laura's shop outside of Whiterun, where you will receive further aid. The "loosening" is implemented by replacing the item with another almost identical item. Both are quest items obviously because they should only be unequipped by that quest. Â This does look like a valid use case for swapping a quest item with another quest item to me @Kimy, and I can actually see other mod authors doing similar things (replacing one quest item with another one as the story evolves). While it can obviously already be done by unequipping one device and equipping the other one, as a mod author having a function that "atomically" swaps them out would be much better as it reduces the chance of things going wrong, and prevents a situation where the player is "unbound" for a short time.
Kharos Posted October 6, 2020 Posted October 6, 2020 2 hours ago, Kimy said: Hm. I mean I could easily disable that few lines of code. Not sure if THAT is ideal either, though. I am assuming that you added this because many heavy bondage items cause "clipping" with armor? Not all do though, e.g. yokes are usually fine, as are most wrist cuffs. Â Anyway, I can see how this functionality can be a good thing in many situations, but it is rather heavy-handed and can cause compatibility issues. Personally I would probably have been more conservative about making such changes to NPCs by default. Â Oh, by the way, what about the edge case when the DD items are part of the NPC outfit? I need to somehow test that... 1
1339378915 Posted October 6, 2020 Posted October 6, 2020 @Kimy well I downloaded the Beta and ran a test run, there is a problem with all restrictive corset appeared. I chose a bound save with res. corset, res. gloves, ball gag harness, blindfold and elbowbinder to initialize this test, when the chastity belt from the old save was removed, the corset showed the model with chastity belt. When I put on another corset before/after putting on a chastity belt(or crotch rope) in any order, the corset showed the model without chastity belt, the belt just simply disappeared I was new to the Papyrus so logging wasn't enabled until I saw the instructions, reply if you need that
DeWired Posted October 6, 2020 Posted October 6, 2020 9 minutes ago, 1339378915 said: @Kimy well I downloaded the Beta and ran a test run, there is a problem with all restrictive corset appeared. I chose a bound save with res. corset, res. gloves, ball gag harness, blindfold and elbowbinder to initialize this test, when the chastity belt from the old save was removed, the corset showed the model with chastity belt. When I put on another corset before/after putting on a chastity belt(or crotch rope) in any order, the corset showed the model without chastity belt, the belt just simply disappeared I was new to the Papyrus so logging wasn't enabled until I saw the instructions, reply if you need that What do you mean "bound save"? I thought test was implying new game, because some mechanics definitely would conflict with old scripts and/or event and gear states. Also, this version, if I remember correctly, drops corset+belt mechanics completely - so using it on previous save and having corsets broken is expected behavior.
DeWired Posted October 6, 2020 Posted October 6, 2020 @Kimy Another suggestion: adding SendModEvents for non-periodic events, such as plugs inflation/deflation, and ShockActor (which is called sometimes through effects, not events).
Kimy Posted October 6, 2020 Author Posted October 6, 2020 16 hours ago, thedarkone1234 said: I might be wrong but I think she wants a quest item to be replaced with another quest item (because both variants should be impossible to struggle from). Â I understand why you would want to block that, but is there a way to enable this in case the two items are related to the very same quest? Removing another mod's quest item is a big no-no. The code makes that actually intentionally hard to do. If both are her OWN quest items, flipping them is ok of course, but I don't think I need to provide an extra function for such a rare use case (normally it's assumed that quest items get equipped for the duration of the quest and removed near or at the end, but not replaced with another). But it's still perfectly doable: Just remove the equipped quest item with the API function provided and equip the new one. Add a short delay for safety perhaps. That will do the trick just nicely and takes about three lines of code. 1
Kimy Posted October 6, 2020 Author Posted October 6, 2020 15 hours ago, Kharos said: I am assuming that you added this because many heavy bondage items cause "clipping" with armor? Not all do though, e.g. yokes are usually fine, as are most wrist cuffs. Â Anyway, I can see how this functionality can be a good thing in many situations, but it is rather heavy-handed and can cause compatibility issues. Personally I would probably have been more conservative about making such changes to NPCs by default. Â Oh, by the way, what about the edge case when the DD items are part of the NPC outfit? I need to somehow test that... Yes, I did that mainly because of clipping. But call me convinced. I will remove that code and provide an extra function or parameter for stripping the target of a device operation.
Kimy Posted October 6, 2020 Author Posted October 6, 2020 11 hours ago, DeWired said: @Kimy Another suggestion: adding SendModEvents for non-periodic events, such as plugs inflation/deflation, and ShockActor (which is called sometimes through effects, not events). Can do!
Kharos Posted October 6, 2020 Posted October 6, 2020 7 minutes ago, Kimy said: Yes, I did that mainly because of clipping. But call me convinced. I will remove that code and provide an extra function or parameter for stripping the target of a device operation. Hmm... looking at the old zadEquipScript (DD4 integration), it already contains most of the outfit change code (unless I just made a mistake and got the wrong version). So I am actually asking myself, why have I never seen these issues in the past? Am I the only one who has this code "misbehave" now? I just assumed that the code was new, but this does not seem to be the case...
Code Serpent Posted October 6, 2020 Posted October 6, 2020 8 hours ago, Kharos said: I am assuming that you added this because many heavy bondage items cause "clipping" with armor? Not all do though, e.g. yokes are usually fine, as are most wrist cuffs 7 minutes ago, Kimy said: Yes, I did that mainly because of clipping. But call me convinced. I will remove that code and provide an extra function or parameter for stripping the target of a device operation. Actually, I suggested this change a while ago. The issue was NPC outfits would override some devices, mainly body devices: catsuits and hobble dresses. Besides removing NPC outfits, I think the only way to get around this would be to have a cloak/alias script that checks if NPCs have a zad_DeviousSuit item in their inventory, but isn't worn, and then tries to re-equip it. 2
Kimy Posted October 6, 2020 Author Posted October 6, 2020 7 hours ago, Kharos said: Hmm... looking at the old zadEquipScript (DD4 integration), it already contains most of the outfit change code (unless I just made a mistake and got the wrong version). So I am actually asking myself, why have I never seen these issues in the past? Am I the only one who has this code "misbehave" now? I just assumed that the code was new, but this does not seem to be the case... Hm, before doing anything drastic, can anyone confirm bad stuff to happen with this feature? Because, yes, it has been in DD for ages, so I am a bit confused, too. 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now