naaitsab Posted June 8, 2021 Posted June 8, 2021 3 hours ago, UnEvenSteven said: Time for a new device that can hopefully be added to the framework in a future update. Nice work. Hopefully the boxbinder set also made it's way in the framework after the authors approval so we can enjoy some shiny new things
Kimy Posted June 9, 2021 Author Posted June 9, 2021 12 hours ago, naaitsab said: Nice work. Hopefully the boxbinder set also made it's way in the framework after the authors approval so we can enjoy some shiny new things I am working on this as we speak! 10
loniceraa Posted June 12, 2021 Posted June 12, 2021 I've been having a bit of trouble with the DD animation filter, but I think I've found a solution that could be more broadly helpful. The problem I'm having is that some mods' animation requests depend heavily on the "include" and "suppress" tags initially supplied, and if the filter has to overrule the animation, it loses that information. For example, let's say that a mod requests a rape animation on a female PC with two male NPCs. Let's say the mod requests animations using the following tags: Include: Oral, Anal, Vaginal Suppress: Lesbian, Gay, FFM, MFF, FFF, MMM IncludeAll: False (at least one include tag required) Now, let's say the female PC has an anal plug. Anecdotally, a lot of MMF threeway animations include the anal tag, but some do not. If the initially selected animation does include the anal tag, then DD wisely discards it, due to the anal plug. But then, the next requested animation by DD is as follows (with aggressive not required): Include: (empty) Suppress: Anal, Yoke, Armbinder IncludeAll: True (all include tags required) Frequently, for me, this results in unfortunate animations, such as MFF animations where one of the male rapists is now in a female role, being raped by one of the other attackers. Not a great result, though it doesn't happen every time, of course. The solution I propose is to recover the tag information supplied by the initial animation request, and adjust it according to the restrictions DD correctly imposes. This would be easy if SexLab saved that information as a property to the thread controller, but unfortunately, it only saves the filtered list of animations, and presumably DD doesn't want to modify SexLab scripts. Fortunately, though, the tag information is still recoverable: it is saved in a text cache by sslAnimationSlots. I implemented the code to recover and adjust the tags by modifying only the SelectValidAnimations() function in zadBQ00.psc (starting at line 1001), as follows: Spoiler ; filter version of the animation selector 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) bool aggr = false string includetag = "" sslBaseAnimation[] Sanims If previousAnim != none && previousAnim.HasTag("foreplay") ; ok, this is causing trouble, as we don't really have a lot of bound foreplay animations. We...just don't pass on the tag for now, which will result in regular anims. ; includetag = "foreplay" ; libs.Log("Using only foreplay animations.") Elseif forceaggressive || (previousAnim != none && previousAnim.HasTag("Aggressive") && libs.config.PreserveAggro) libs.Log("Using only aggressive animations.") aggr = true Endif Bool IsCreatureAnim = previousAnim.HasTag("Creature") If IsCreatureAnim && HasBoundActors ; it's a creature anim and some participants are bound, we can abort here, as there are no bound animations for creatures. return None Endif ; Bound Animations need to be processed separately, since they are not registered in SexLab. if count > 1 && HasBoundActors libs.Log("Actor(s) are bound. Trying to set up bound animation.") Sanims = New sslBaseAnimation[1] ; we have bound anims only for two actors, so we pick an animation only if we have two actors, otherwise we let the filter split the scene later on. If count == 2 Sanims[0] = GetBoundAnim(Controller.Positions[0], Controller.Positions[1], permitOral, permitVaginal, permitAnal, permitBoobs) Endif If Sanims[0] == None libs.log("Error: SelectValidAnimations could find no valid bound animations.") return None Else return Sanims Endif Endif ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; begin modified code ;;;;;;;;;;;;;;;;;;;;;;;;;;; ; find the animation cache slot associated with the animation that was previously being played float TimeToBeat = 0.0 int index = -1 int i = 0 While i < 20 ; we must check if this cache slot is the slot that was used by our thread controller. ; we cannot do this with certainty. we will start by comparing animation array lengths. If SexLab.AnimSlots.GetCacheSlot(i).Length == Controller.Animations.Length ; if there are multiple cache slots with the same correct array length, we will use the most recently updated slot. string CacheText = SexLab.AnimSlots.CacheInfo(i) int TimeStartIndex = StringUtil.Find(CacheText, " -- Timestamp: ") + 15 int TimeEndIndex = StringUtil.Find(CacheText, " -- Count: ") float CacheTime = StringUtil.Substring(CacheText, TimeStartIndex, TimeEndIndex - TimeStartIndex) as float If CacheTime > TimeToBeat TimeToBeat = CacheTime index = i EndIf EndIf ; Debug.Trace("[Zad Trace]: AnimCache Length - " + SexLab.AnimSlots.GetCacheSlot(i).Length +", Controller Anim Length - " + Controller.Animations.Length + ", CacheText - " + SexLab.AnimSlots.CacheInfo(i) + ", TimeToBeat - " + TimeToBeat + ", index - " + index) i += 1 EndWhile string suppresstag = "" bool RequireAll = True If Index >= 0 ; grab the filter used to search for the played animation, and parse the string string CorrectCacheText = SexLab.AnimSlots.CacheInfo(index) int FilterStartIndex = StringUtil.Find(CorrectCacheText, " -- Name: ") + 10 int FilterEndIndex = StringUtil.Find(CorrectCacheText, " -- Timestamp: ") string FilterText = StringUtil.Substring(CorrectCacheText, FilterStartIndex, FilterEndIndex - FilterStartIndex) string[] FilterArray = PapyrusUtil.StringSplit(FilterText, ":") string OldInclude = FilterArray[1] suppresstag = FilterArray[2] RequireAll = (FilterArray[3] == "TRUE") ; adjust the include string to remove DD conflicting tags If OldInclude string[] OldIncludeArray = PapyrusUtil.StringSplit(OldInclude) ; don't handle aggression here OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Aggressive") If !permitVaginal OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Vaginal") EndIf If !permitAnal OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Anal") EndIf If !permitBoobs OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Boobjob") EndIf If !permitOral OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Oral") OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Blowjob") EndIf If usingYoke OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Pillory") OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Yoke") EndIf If usingArmbinder OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Pillory") OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Armbinder") EndIf string NewInclude = PapyrusUtil.StringJoin(OldIncludeArray) If NewInclude If includetag includetag = includetag + "," + NewInclude Else includetag = NewInclude EndIf EndIf EndIf EndIf ;;;;;;;;;;;;;;;;;; ;;; end modified code; except getSuppressString and SexLab.GetAnimationsByTags last parameters ;;;;;;;;;;;;;;;;;; string tagString = getTagString(aggr, includetag) string suppressString = getSuppressString(aggr, usingArmbinder, usingYoke, permitOral, permitVaginal, permitAnal, permitBoobs, suppresstag) ; ok, we need to process private animations and masturbation as a special case as the tag system would otherwise be unable to call DDI or ZAP armbinder and yoke animations and also not exclude opposite gender masturbation/ if count == 1 libs.Log("Selecting masturbation animation.") If usingArmbinder ; she is wearing an armbinder Sanims = New sslBaseAnimation[1] Sanims[0] = SexLab.GetAnimationObject("DDArmbinderSolo") return Sanims Endif If usingYoke ; she is wearing a yoke Sanims = New sslBaseAnimation[1] Sanims[0] = SexLab.GetAnimationObject("DDYokeSolo") return Sanims Endif If !permitVaginal ;she is belted Sanims = New sslBaseAnimation[1] Sanims[0] = SexLab.GetAnimationObject("DDBeltedSolo") return Sanims Endif ; if she is not wearing chastity, we need to filter the wrong gender tagString = "Solo," + tagString If Controller.Positions[0].GetLeveledActorBase().GetSex() == 1 suppressString = "M," + suppressString Elseif Controller.Positions[0].GetLeveledActorBase().GetSex() == 0 suppressString = "F," + suppressString EndIf EndIf If IsCreatureAnim ; determine what creature it was and append its tag to the selection if it was a humanoid one, otherwise return an empty array. string crString = GetCreatureType(previousAnim) if crString != "" tagString += "," + crString Else libs.log("Creature animation with non-humanoid creatures in use. Cannot replace. Filtering aborted.") return None Endif Endif Sanims = SexLab.GetAnimationsByTags(count, tagString, suppressString, RequireAll) libs.log("Selecting SexLab animations with number of actors: " + count) libs.log("Selecting SexLab animations with tag string: " + tagString) libs.log("Selecting SexLab animations with suppress string: " + suppressString) return Sanims endfunction Maybe there's an easier way to do this, but I couldn't find it. And the code above works fine and doesn't seem to have any performance problems. Using this, the tags requested by DD in the example above would be: Include: Oral, Vaginal Suppress: Lesbian, Gay, FFM, MFF, FFF, MMM, Anal, Yoke, Armbinder IncludeAll: False This results in a much better choice of new animation, at least in my testing (DD 5.1, Skyrim SE). There could of course be a good reason not to recover the tags, such as animation scarcity. I haven't found that to be a problem, and I don't have a huge number of animations installed, but I haven't tested this too extensively so far. But maybe there's another reason? I'm not sure. Thanks for all your work on Devious Devices! Hopefully this is helpful. If not, or if posting code suggestions here is against the rules, let me know and I'll remove it ASAP. 3
Zaflis Posted June 12, 2021 Posted June 12, 2021 (edited) I suggest making key crafting harder, even though you might have plan to redesign that whole thing later. It is however really quick to alter to make it somewhat balanced for the now. Currently all of them cost 1 iron ingot each. This is a quick overrider ESP to change crafting recipes to: Restraints key: 2 iron ingots, 2 steel ingots Chastity key: 3 gold ingots, 3 moonstone ingots Piercing removal kit: 2 iron ingots, 2 quicksilver ingots This is nothing more than initial untested version which i feel will be better. If you want to change them yourself, feel free, or suggest better recipes for everyone. It should help having them highlighted for editing in TES5Edit: DD-HarderKeys.zip I noticed there are 3 different difficulties of recipes for keys but i don't know how the harder ones get used, if at all currently. Edit: I don't think those are quite good yet, last i checked blacksmith today there was 0 moonstone, gold or quicksilver... I made this too difficult instead. Edited June 12, 2021 by Zaflis
Herowynne Posted June 12, 2021 Posted June 12, 2021 8 hours ago, anyway ayway said: Frequently, for me, this results in unfortunate animations, such as MFF animations where one of the male rapists is now in a female role, being raped by one of the other attackers. I have the same problem. I hope that @Kimy considers your solution to this problem.
Kimy Posted June 12, 2021 Author Posted June 12, 2021 10 hours ago, anyway ayway said: I've been having a bit of trouble with the DD animation filter, but I think I've found a solution that could be more broadly helpful. The problem I'm having is that some mods' animation requests depend heavily on the "include" and "suppress" tags initially supplied, and if the filter has to overrule the animation, it loses that information. For example, let's say that a mod requests a rape animation on a female PC with two male NPCs. Let's say the mod requests animations using the following tags: Include: Oral, Anal, Vaginal Suppress: Lesbian, Gay, FFM, MFF, FFF, MMM IncludeAll: False (at least one include tag required) Now, let's say the female PC has an anal plug. Anecdotally, a lot of MMF threeway animations include the anal tag, but some do not. If the initially selected animation does include the anal tag, then DD wisely discards it, due to the anal plug. But then, the next requested animation by DD is as follows (with aggressive not required): Include: (empty) Suppress: Anal, Yoke, Armbinder IncludeAll: True (all include tags required) Frequently, for me, this results in unfortunate animations, such as MFF animations where one of the male rapists is now in a female role, being raped by one of the other attackers. Not a great result, though it doesn't happen every time, of course. The solution I propose is to recover the tag information supplied by the initial animation request, and adjust it according to the restrictions DD correctly imposes. This would be easy if SexLab saved that information as a property to the thread controller, but unfortunately, it only saves the filtered list of animations, and presumably DD doesn't want to modify SexLab scripts. Fortunately, though, the tag information is still recoverable: it is saved in a text cache by sslAnimationSlots. I implemented the code to recover and adjust the tags by modifying only the SelectValidAnimations() function in zadBQ00.psc (starting at line 1001), as follows: Hide contents ; filter version of the animation selector 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) bool aggr = false string includetag = "" sslBaseAnimation[] Sanims If previousAnim != none && previousAnim.HasTag("foreplay") ; ok, this is causing trouble, as we don't really have a lot of bound foreplay animations. We...just don't pass on the tag for now, which will result in regular anims. ; includetag = "foreplay" ; libs.Log("Using only foreplay animations.") Elseif forceaggressive || (previousAnim != none && previousAnim.HasTag("Aggressive") && libs.config.PreserveAggro) libs.Log("Using only aggressive animations.") aggr = true Endif Bool IsCreatureAnim = previousAnim.HasTag("Creature") If IsCreatureAnim && HasBoundActors ; it's a creature anim and some participants are bound, we can abort here, as there are no bound animations for creatures. return None Endif ; Bound Animations need to be processed separately, since they are not registered in SexLab. if count > 1 && HasBoundActors libs.Log("Actor(s) are bound. Trying to set up bound animation.") Sanims = New sslBaseAnimation[1] ; we have bound anims only for two actors, so we pick an animation only if we have two actors, otherwise we let the filter split the scene later on. If count == 2 Sanims[0] = GetBoundAnim(Controller.Positions[0], Controller.Positions[1], permitOral, permitVaginal, permitAnal, permitBoobs) Endif If Sanims[0] == None libs.log("Error: SelectValidAnimations could find no valid bound animations.") return None Else return Sanims Endif Endif ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; begin modified code ;;;;;;;;;;;;;;;;;;;;;;;;;;; ; find the animation cache slot associated with the animation that was previously being played float TimeToBeat = 0.0 int index = -1 int i = 0 While i < 20 ; we must check if this cache slot is the slot that was used by our thread controller. ; we cannot do this with certainty. we will start by comparing animation array lengths. If SexLab.AnimSlots.GetCacheSlot(i).Length == Controller.Animations.Length ; if there are multiple cache slots with the same correct array length, we will use the most recently updated slot. string CacheText = SexLab.AnimSlots.CacheInfo(i) int TimeStartIndex = StringUtil.Find(CacheText, " -- Timestamp: ") + 15 int TimeEndIndex = StringUtil.Find(CacheText, " -- Count: ") float CacheTime = StringUtil.Substring(CacheText, TimeStartIndex, TimeEndIndex - TimeStartIndex) as float If CacheTime > TimeToBeat TimeToBeat = CacheTime index = i EndIf EndIf ; Debug.Trace("[Zad Trace]: AnimCache Length - " + SexLab.AnimSlots.GetCacheSlot(i).Length +", Controller Anim Length - " + Controller.Animations.Length + ", CacheText - " + SexLab.AnimSlots.CacheInfo(i) + ", TimeToBeat - " + TimeToBeat + ", index - " + index) i += 1 EndWhile string suppresstag = "" bool RequireAll = True If Index >= 0 ; grab the filter used to search for the played animation, and parse the string string CorrectCacheText = SexLab.AnimSlots.CacheInfo(index) int FilterStartIndex = StringUtil.Find(CorrectCacheText, " -- Name: ") + 10 int FilterEndIndex = StringUtil.Find(CorrectCacheText, " -- Timestamp: ") string FilterText = StringUtil.Substring(CorrectCacheText, FilterStartIndex, FilterEndIndex - FilterStartIndex) string[] FilterArray = PapyrusUtil.StringSplit(FilterText, ":") string OldInclude = FilterArray[1] suppresstag = FilterArray[2] RequireAll = (FilterArray[3] == "TRUE") ; adjust the include string to remove DD conflicting tags If OldInclude string[] OldIncludeArray = PapyrusUtil.StringSplit(OldInclude) ; don't handle aggression here OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Aggressive") If !permitVaginal OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Vaginal") EndIf If !permitAnal OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Anal") EndIf If !permitBoobs OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Boobjob") EndIf If !permitOral OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Oral") OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Blowjob") EndIf If usingYoke OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Pillory") OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Yoke") EndIf If usingArmbinder OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Pillory") OldIncludeArray = PapyrusUtil.RemoveString(OldIncludeArray, "Armbinder") EndIf string NewInclude = PapyrusUtil.StringJoin(OldIncludeArray) If NewInclude If includetag includetag = includetag + "," + NewInclude Else includetag = NewInclude EndIf EndIf EndIf EndIf ;;;;;;;;;;;;;;;;;; ;;; end modified code; except getSuppressString and SexLab.GetAnimationsByTags last parameters ;;;;;;;;;;;;;;;;;; string tagString = getTagString(aggr, includetag) string suppressString = getSuppressString(aggr, usingArmbinder, usingYoke, permitOral, permitVaginal, permitAnal, permitBoobs, suppresstag) ; ok, we need to process private animations and masturbation as a special case as the tag system would otherwise be unable to call DDI or ZAP armbinder and yoke animations and also not exclude opposite gender masturbation/ if count == 1 libs.Log("Selecting masturbation animation.") If usingArmbinder ; she is wearing an armbinder Sanims = New sslBaseAnimation[1] Sanims[0] = SexLab.GetAnimationObject("DDArmbinderSolo") return Sanims Endif If usingYoke ; she is wearing a yoke Sanims = New sslBaseAnimation[1] Sanims[0] = SexLab.GetAnimationObject("DDYokeSolo") return Sanims Endif If !permitVaginal ;she is belted Sanims = New sslBaseAnimation[1] Sanims[0] = SexLab.GetAnimationObject("DDBeltedSolo") return Sanims Endif ; if she is not wearing chastity, we need to filter the wrong gender tagString = "Solo," + tagString If Controller.Positions[0].GetLeveledActorBase().GetSex() == 1 suppressString = "M," + suppressString Elseif Controller.Positions[0].GetLeveledActorBase().GetSex() == 0 suppressString = "F," + suppressString EndIf EndIf If IsCreatureAnim ; determine what creature it was and append its tag to the selection if it was a humanoid one, otherwise return an empty array. string crString = GetCreatureType(previousAnim) if crString != "" tagString += "," + crString Else libs.log("Creature animation with non-humanoid creatures in use. Cannot replace. Filtering aborted.") return None Endif Endif Sanims = SexLab.GetAnimationsByTags(count, tagString, suppressString, RequireAll) libs.log("Selecting SexLab animations with number of actors: " + count) libs.log("Selecting SexLab animations with tag string: " + tagString) libs.log("Selecting SexLab animations with suppress string: " + suppressString) return Sanims endfunction Maybe there's an easier way to do this, but I couldn't find it. And the code above works fine and doesn't seem to have any performance problems. Using this, the tags requested by DD in the example above would be: Include: Oral, Vaginal Suppress: Lesbian, Gay, FFM, MFF, FFF, MMM, Anal, Yoke, Armbinder IncludeAll: False This results in a much better choice of new animation, at least in my testing (DD 5.1, Skyrim SE). There could of course be a good reason not to recover the tags, such as animation scarcity. I haven't found that to be a problem, and I don't have a huge number of animations installed, but I haven't tested this too extensively so far. But maybe there's another reason? I'm not sure. Thanks for all your work on Devious Devices! Hopefully this is helpful. If not, or if posting code suggestions here is against the rules, let me know and I'll remove it ASAP. Looking good! I am going to merge this in the upcoming version, so we can test it more broadly! 8
naaitsab Posted June 12, 2021 Posted June 12, 2021 10 hours ago, anyway ayway said: Thanks for all your work on Devious Devices! Hopefully this is helpful. If not, or if posting code suggestions here is against the rules, let me know and I'll remove it ASAP. I'm sure all modders on here like to receive decent bugposts with fixes and even code pieces if they fix a bug or improve on a feature. So don't be shy to post things like that, that's the goal of this thread in essence As long as you respect the hard limits of a mod, like the no-children ethos in Cursed Loot it should be fine.
DonQuiWho Posted June 12, 2021 Posted June 12, 2021 11 hours ago, Zaflis said: I suggest making key crafting harder, even though you might have plan to redesign that whole thing later. It is however really quick to alter to make it somewhat balanced for the now. Currently all of them cost 1 iron ingot each. This is a quick overrider ESP to change crafting recipes to: Restraints key: 2 iron ingots, 2 steel ingots Chastity key: 3 gold ingots, 3 moonstone ingots Piercing removal kit: 2 iron ingots, 2 quicksilver ingots This is nothing more than initial untested version which i feel will be better. If you want to change them yourself, feel free, or suggest better recipes for everyone. It should help having them highlighted for editing in TES5Edit: DD-HarderKeys.zip 477 B · 0 downloads I noticed there are 3 different difficulties of recipes for keys but i don't know how the harder ones get used, if at all currently. @Kimy If you do anything like this, and I can understand that for some people it may well be quite appealing, please, please, please, make is some sort of slider/optional thing Some of us use DD/DCL when playing the main game, to add a bit of difficulty and risk management, not just to be prancing about in a bunch of restrictive pretty clothes and hardware This would make main game playing either just about impossible, or merely a continuous grind to collect the next set of key 'ingredients'. Just think about the impact when you're playing with a party of 2, 3, 4 or more followers down some of the deeper dungeons. It can be challenging enough as is, without adding anything that would be almost unplayable 1
Zaflis Posted June 12, 2021 Posted June 12, 2021 34 minutes ago, donkeywho said: Some of us use DD/DCL when playing the main game, to add a bit of difficulty and risk management, not just to be prancing about in a bunch of restrictive pretty clothes and hardware This would make main game playing either just about impossible, or merely a continuous grind to collect the next set of key 'ingredients'. Just think about the impact when you're playing with a party of 2, 3, 4 or more followers down some of the deeper dungeons. It can be challenging enough as is, without adding anything that would be almost unplayable I don't think your solution is key crafting for most of the time, afterall you don't have forges in dungeons usually. Turn down DD difficulty settings so you can struggle/cut/lockpick out of them without trying it for dozens of times per device. I like the way you can tweak key drop chances in DCL's MCM, i don't have those chances at defaults but much higher.
DonQuiWho Posted June 12, 2021 Posted June 12, 2021 (edited) 21 minutes ago, Zaflis said: I don't think your solution is key crafting for most of the time, afterall you don't have forges in dungeons usually. Turn down DD difficulty settings so you can struggle/cut/lockpick out of them without trying it for dozens of times per device. I like the way you can tweak key drop chances in DCL's MCM, i don't have those chances at defaults but much higher. I know that I don't have forges in dungeons. I plan my gameplay. The PC and NPC has a standard set equipped from whatever has been forged or collected, before setting off on a quest, 5 Restraint Keys, 2 Piercing Removal Tools and 1 Chastity Key. You then pick up whatever else you can find on your travels, without making the key drop stupidly easy In gameplay, I use Devious Device Helpers to allow the Followers to 'help' the PC, but it requires judicious management to ensure that what your party has lasts the distance, given how early you might get restraints applied on container access etc, or be impacted by combat application and key stealing (I use Defeat Banev3 incl the Devious Captures mechanisms for that), and then assessing what risk you have to take by leaving player or NPCs with some worn devices to stop running out of keys/using up your last ones And if you get it wrong, if like me you don't cheat, you sometimes have to retreat out of a dungeon, see a blacksmith etc, clean things up, restock and start again Sure, settings changes are good, depending on how hard or easy you want to play, and I do make marginal changes to the settings. But making crafting as difficult as be worthless/unplayable is daft, as is then fixing that by just fiddling all the sliders to decrease adverse event impacts, or increase key drops to ridiculous levels, so as to make it all too easy. And, anyway, too easy is just for wimps ... ? Edited June 12, 2021 by donkeywho 1
Zaflis Posted June 13, 2021 Posted June 13, 2021 (edited) 10 hours ago, donkeywho said: But making crafting as difficult as be worthless/unplayable is daft Right, the intent is just to make the crafting slightly harder, instead of "stupidly trivial". With just about 10 gold you can buy an ingot from blacksmith next to you to make a key and they usually have tens of ingots in stock. It's like walking to a "free keys" hand-in. My recipes are nowhere as hard as DD's own internal medium and hard crafting recipes that need even soulgems, but i admit i still made them just slightly too complex. At least steel ingots would be very accessible to you anywhere, and i don't like chastity being easy to remove. That defeats the devices purpose. Oh, i just figured it would also be very nice if heavy bondage had its own key dedicated to them. They're the ones hindering vanilla gameplay, the others not so much. Edited June 13, 2021 by Zaflis
DonQuiWho Posted June 13, 2021 Posted June 13, 2021 3 hours ago, Zaflis said: Right, the intent is just to make the crafting slightly harder, instead of "stupidly trivial". With just about 10 gold you can buy an ingot from blacksmith next to you to make a key and they usually have tens of ingots in stock. It's like walking to a "free keys" hand-in. My recipes are nowhere as hard as DD's own internal medium and hard crafting recipes that need even soulgems, but i admit i still made them just slightly too complex. At least steel ingots would be very accessible to you anywhere, and i don't like chastity being easy to remove. That defeats the devices purpose. Oh, i just figured it would also be very nice if heavy bondage had its own key dedicated to them. They're the ones hindering vanilla gameplay, the others not so much. I'd be more than happy to settle for some more options that allow people to balance the game to a style they are happy with. I maybe need to revisit a couple of the other mods I use to see if they affect materials availability in my game , as not all blacksmiths have everything eg Alvor never has any money or stock, and some have only intermittent availability of even common items I certainly don't want to mess up what other people are happy to play. But I tend to jump in quickly when I see the potential for individuals' preference, however innocuously or inadvertently, messing up mine and very probably that of others And if @Kimy sees fit to add some additional variety and spice to what we have now, fine
UnEvenSteven Posted June 14, 2021 Posted June 14, 2021 A slight update to a previous post of mine in regards to removing the encumbered effect from hobble dresses. As before I made some changes to the script and removed the carry weight penalty from the hobble dress effect. This allows sprinting in extreme hobble dresses again and also allows for fast travel. This time around I added a small speed increase while sprinting as being able to sprint/bunny-hop was a miniscule change in speed. The additional speed increase isn't terribly fast though, it's still a restrictive dress after all. At least you can sprint/bunny-hop in bursts now. The reason for bursts is the stamina drain penalty, hopping around in a tight dress would be exhausting I imagine. I'm not sure if the "Hobble Skirt De-Buff Strength" MCM setting can be used anymore. Removing the carry weight de-buff threw all the speed calculations out of whack. Moving the slider excessively will now make massive changes to speed. With the numbers I'm using in the script the default speed is now slightly faster than the original default speed with the current carry-weight-debuff method. It's also not as fast as the current lowest setting of 25. It's a nice in-between and still looks okay as far as the animation speed goes. Since sprinting and fast travel would be allowed again and with these changes while wearing extreme hobble dresses, perhaps the MCM setting is no longer needed. I did have to create a new Object Effect specifically for Pet Suits. They use the same effect as hobble dresses and with these changes you could sprint in a pet suit, imagine how silly that looked. The new effect for Pet Suits keeps the carry weight penalty so no sprinting and no fast travel. Bunny-Hop Test.7z
naaitsab Posted June 15, 2021 Posted June 15, 2021 9 hours ago, UnEvenSteven said: A slight update to a previous post of mine in regards to removing the encumbered effect from hobble dresses. As before I made some changes to the script and removed the carry weight penalty from the hobble dress effect. This allows sprinting in extreme hobble dresses again and also allows for fast travel. This time around I added a small speed increase while sprinting as being able to sprint/bunny-hop was a miniscule change in speed. The additional speed increase isn't terribly fast though, it's still a restrictive dress after all. At least you can sprint/bunny-hop in bursts now. The reason for bursts is the stamina drain penalty, hopping around in a tight dress would be exhausting I imagine. I'm not sure if the "Hobble Skirt De-Buff Strength" MCM setting can be used anymore. Removing the carry weight de-buff threw all the speed calculations out of whack. Moving the slider excessively will now make massive changes to speed. With the numbers I'm using in the script the default speed is now slightly faster than the original default speed with the current carry-weight-debuff method. It's also not as fast as the current lowest setting of 25. It's a nice in-between and still looks okay as far as the animation speed goes. Since sprinting and fast travel would be allowed again and with these changes while wearing extreme hobble dresses, perhaps the MCM setting is no longer needed. I did have to create a new Object Effect specifically for Pet Suits. They use the same effect as hobble dresses and with these changes you could sprint in a pet suit, imagine how silly that looked. The new effect for Pet Suits keeps the carry weight penalty so no sprinting and no fast travel. Bunny-Hop Test.7z 5.11 kB · 5 downloads Would it be possible to do the normal 'slide walk' as the regular walking animation and use the bunnyhop as "sprint"? That would make it most realistic I think. 1
UnEvenSteven Posted June 15, 2021 Posted June 15, 2021 5 hours ago, naaitsab said: Would it be possible to do the normal 'slide walk' as the regular walking animation and use the bunnyhop as "sprint"? That would make it most realistic I think. Well that's not good. It appears "02 Feuertin Alt" is the only option that's going to look good. That option has the "slide-walk/shuffle" animation for regular walking and the bunny-hop for sprinting. By default all animations have the bunny-hop for walking and the other options appear to do so as well. I've been using the "Feuertin Alt" option ever since it was available and I'll admit I didn't check the other options for testing. I didn't think the other options would've had all bunny-hop animations, only the one labeled as such.
Kimy Posted June 15, 2021 Author Posted June 15, 2021 3 hours ago, UnEvenSteven said: Well that's not good. It appears "02 Feuertin Alt" is the only option that's going to look good. That option has the "slide-walk/shuffle" animation for regular walking and the bunny-hop for sprinting. By default all animations have the bunny-hop for walking and the other options appear to do so as well. I've been using the "Feuertin Alt" option ever since it was available and I'll admit I didn't check the other options for testing. I didn't think the other options would've had all bunny-hop animations, only the one labeled as such. I thought the bunny hop was an alternate set, not the default. oO
UnEvenSteven Posted June 15, 2021 Posted June 15, 2021 1 hour ago, Kimy said: I thought the bunny hop was an alternate set, not the default. oO Appears to be the case. I cleaned out the folder containing the animations and added them back from the "00 Core" folder, all the movement animations were bunny-hops. "Feuertin Alt" appear to be the only one with the walk-shuffle animations for non-sprinting movement while wearing a hobble dress. It doesn't overwrite the bunny-hop sprint animation from the Core folder.
Kimy Posted June 15, 2021 Author Posted June 15, 2021 27 minutes ago, UnEvenSteven said: Appears to be the case. I cleaned out the folder containing the animations and added them back from the "00 Core" folder, all the movement animations were bunny-hops. "Feuertin Alt" appear to be the only one with the walk-shuffle animations for non-sprinting movement while wearing a hobble dress. It doesn't overwrite the bunny-hop sprint animation from the Core folder. I will need to fix this, then. The bunny hop is NOT meant to be the default hobbled walk. 1
green365 Posted June 17, 2021 Posted June 17, 2021 So controversial opinion time but devious shouldn't be META devious. as in lock menu when tied should default to off if its not tutorialised. there's a steep enough learning curve with modding as it is; so for newer players non-tutorialised unexpected or unintuitive options must be absolutely atrocious. Although they fit the flavour of the mod from a software development standpoint they suck. same goes for systems that fail locked, if I break something with a mod conflict etc the device/furniture/quest should fail "safe" to give the player a chance to rectify things themselves. Anyway just thought I'd throw it out there, to see if I'm on my own here about ethos... fully expecting "you know helpless is the point of the mod right?" but I just don't feel like tricking players into being helpless is healthy or fun. Honestly I'm almost tempted to say all features should default to off until player enabled, that way you know at least everyone's read the tooltip.
Popular Post UnEvenSteven Posted June 17, 2021 Popular Post Posted June 17, 2021 A little nervous to release this but I've done some modifications to the various catsuit devices. Despite the devices able to be locked there were no visible locks on any of them, I aimed to change that. I also changed some shader and texture settings in the .nifs so the catsuit items will have a similar look and shine to other ebonite devices. Finally I also altered the red and white textures to closely match the coloring of existing red and white ebonite devices. Added a lock to the zipper tab on the catsuit (may be removed if people don't like it): Spoiler New gloves with cuffs. These are cut-down versions of long gloves since the existing pair of gloves were terrible. And no there are not longer gaps in the forearm when wearing them without catsuit: Spoiler Ballet boots with cuffs, these don't conflict with ankle chains or other leg cuffs: Spoiler Long Gloves with two cuffs, for extra security: Spoiler "Socks" with cuffs, might seem odd but these are lockable devices: Spoiler Updated the collar to have a padlock: Spoiler As I've stated and you may have noticed, the red and white textures are no longer nuclear-bright. They match far better with existing red and white ebonite devices: Spoiler The file includes CBBE and UUNP BodySlide options and updates the first-person meshes to use the various new shader and texture settings. The included .esp contains the necessary changes to TextureSets and ArmorAddon entries that are used for the red and white versions so everything appears correctly. Yes all the cuffs just use the collar mesh, I did this for consistency and it wouldn't require re-textures. Earlier versions I worked on were using the cuffs from restrictive gloves. They looked great for the black, red and white versions but would have required multiple re-textures for all the other colors catsuit devices have. I'm no texture artist and even re-coloring is difficult and I didn't want to rely on anyone else to complete this overhaul. There's also something else I did, I have added some cuffs to the pony boots. As with the catsuit devices these are lockable but didn't have any visible locks: Spoiler These changes cover the leather and ebonite versions, CBBE and UUNP sliders included. The .esp has the required changes to the ArmorAddon entries so the red and white cuffs appear correctly. There is one issue, however. You'll notice some bad clipping during certain poses and by extension, certain sex scenes. Spoiler If everyone can live with that then maybe Kimy would be willing to add these. Lastly I've created a working wooden yoke, it's the one from Contraptions but wasn't usable as a stand-alone device. I've done the necessary work to make it usable as a new yoke device. Includes a ground/inventory object as well. As I've said I'm kind of nervous about this as there are quite a few changes so I hope everything works well. Here's the files: Catsuit Overhaul.7z Pony Boots Overhaul.7z Wooden Yoke.7z 21
Vakir Posted June 18, 2021 Posted June 18, 2021 9 hours ago, UnEvenSteven said: A little nervous to release this but I've done some modifications to the various catsuit devices. Despite the devices able to be locked there were no visible locks on any of them, I aimed to change that. I also changed some shader and texture settings in the .nifs so the catsuit items will have a similar look and shine to other ebonite devices. Finally I also altered the red and white textures to closely match the coloring of existing red and white ebonite devices. Added a lock to the zipper tab on the catsuit (may be removed if people don't like it): Reveal hidden contents New gloves with cuffs. These are cut-down versions of long gloves since the existing pair of gloves were terrible. And no there are not longer gaps in the forearm when wearing them without catsuit: Reveal hidden contents Ballet boots with cuffs, these don't conflict with ankle chains or other leg cuffs: Reveal hidden contents Long Gloves with two cuffs, for extra security: Reveal hidden contents "Socks" with cuffs, might seem odd but these are lockable devices: Hide contents Updated the collar to have a padlock: Hide contents As I've stated and you may have noticed, the red and white textures are no longer nuclear-bright. They match far better with existing red and white ebonite devices: Hide contents The file includes CBBE and UUNP BodySlide options and updates the first-person meshes to use the various new shader and texture settings. The included .esp contains the necessary changes to TextureSets and ArmorAddon entries that are used for the red and white versions so everything appears correctly. Yes all the cuffs just use the collar mesh, I did this for consistency and it wouldn't require re-textures. Earlier versions I worked on were using the cuffs from restrictive gloves. They looked great for the black, red and white versions but would have required multiple re-textures for all the other colors catsuit devices have. I'm no texture artist and even re-coloring is difficult and I didn't want to rely on anyone else to complete this overhaul. There's also something else I did, I have added some cuffs to the pony boots. As with the catsuit devices these are lockable but didn't have any visible locks: Hide contents These changes cover the leather and ebonite versions, CBBE and UUNP sliders included. The .esp has the required changes to the ArmorAddon entries so the red and white cuffs appear correctly. There is one issue, however. You'll notice some bad clipping during certain poses and by extension, certain sex scenes. Hide contents If everyone can live with that then maybe Kimy would be willing to add these. Lastly I've created a working wooden yoke, it's the one from Contraptions but wasn't usable as a stand-alone device. I've done the necessary work to make it usable as a new yoke device. Includes a ground/inventory object as well. As I've said I'm kind of nervous about this as there are quite a few changes so I hope everything works well. Here's the files: Catsuit Overhaul.7z 29.19 MB · 1 download Pony Boots Overhaul.7z 2.12 MB · 0 downloads Wooden Yoke.7z 96.1 kB · 1 download These are nice! If you dont mind me asking. But do you have that Boxbinder straitjacket?, I'd like to test that out
naaitsab Posted June 19, 2021 Posted June 19, 2021 On 6/17/2021 at 5:06 PM, UnEvenSteven said: A little nervous to release this but I've done some modifications to the various catsuit devices. Despite the devices able to be locked there were no visible locks on any of them, I aimed to change that. I also changed some shader and texture settings in the .nifs so the catsuit items will have a similar look and shine to other ebonite devices. Finally I also altered the red and white textures to closely match the coloring of existing red and white ebonite devices. Don't be nervous It's a beta thread and if it doesn't crash the game everything can be tried out. I think it looks awesome, bit 50/50 on the default gloves and socks with the buckles. It's "realistic" but it does away with the clean esthetics. Perhaps both can be added and these could be added as a 'high security' variant.
Rogwar002 Posted June 19, 2021 Posted June 19, 2021 On 6/17/2021 at 5:06 PM, UnEvenSteven said: A little nervous to release this but I've done some modifications to the various catsuit devices. Despite the devices able to be locked there were no visible locks on any of them, I aimed to change that. I also changed some shader and texture settings in the .nifs so the catsuit items will have a similar look and shine to other ebonite devices. Finally I also altered the red and white textures to closely match the coloring of existing red and white ebonite devices. Added a lock to the zipper tab on the catsuit (may be removed if people don't like it): Hide contents New gloves with cuffs. These are cut-down versions of long gloves since the existing pair of gloves were terrible. And no there are not longer gaps in the forearm when wearing them without catsuit: Hide contents Ballet boots with cuffs, these don't conflict with ankle chains or other leg cuffs: Hide contents Long Gloves with two cuffs, for extra security: Hide contents "Socks" with cuffs, might seem odd but these are lockable devices: Hide contents Updated the collar to have a padlock: Hide contents As I've stated and you may have noticed, the red and white textures are no longer nuclear-bright. They match far better with existing red and white ebonite devices: Hide contents The file includes CBBE and UUNP BodySlide options and updates the first-person meshes to use the various new shader and texture settings. The included .esp contains the necessary changes to TextureSets and ArmorAddon entries that are used for the red and white versions so everything appears correctly. Yes all the cuffs just use the collar mesh, I did this for consistency and it wouldn't require re-textures. Earlier versions I worked on were using the cuffs from restrictive gloves. They looked great for the black, red and white versions but would have required multiple re-textures for all the other colors catsuit devices have. I'm no texture artist and even re-coloring is difficult and I didn't want to rely on anyone else to complete this overhaul. There's also something else I did, I have added some cuffs to the pony boots. As with the catsuit devices these are lockable but didn't have any visible locks: Hide contents These changes cover the leather and ebonite versions, CBBE and UUNP sliders included. The .esp has the required changes to the ArmorAddon entries so the red and white cuffs appear correctly. There is one issue, however. You'll notice some bad clipping during certain poses and by extension, certain sex scenes. Hide contents If everyone can live with that then maybe Kimy would be willing to add these. Lastly I've created a working wooden yoke, it's the one from Contraptions but wasn't usable as a stand-alone device. I've done the necessary work to make it usable as a new yoke device. Includes a ground/inventory object as well. As I've said I'm kind of nervous about this as there are quite a few changes so I hope everything works well. Here's the files: Catsuit Overhaul.7z 29.19 MB · 12 downloads Pony Boots Overhaul.7z 2.12 MB · 6 downloads Wooden Yoke.7z 96.1 kB · 7 downloads These are wonderful. I could kiss you for the gloves alone. Thank you so much.
Kimy Posted June 20, 2021 Author Posted June 20, 2021 @UnEvenSteven: These models look great! I am going to have a look at the files and merge them! 1
UnEvenSteven Posted June 20, 2021 Posted June 20, 2021 On 6/17/2021 at 9:05 PM, Vakir said: These are nice! If you dont mind me asking. But do you have that Boxbinder straitjacket?, I'd like to test that out I never worked on it beyond the concept. Your asking about the boxbinder jacket made me realize I had forgotten about it. On 6/19/2021 at 10:36 AM, naaitsab said: I think it looks awesome, bit 50/50 on the default gloves and socks with the buckles. It's "realistic" but it does away with the clean esthetics. Perhaps both can be added and these could be added as a 'high security' variant. Understandable but I suppose that's ultimately up to Kimy if she wants two versions of the gloves and socks. 27 minutes ago, Kimy said: @UnEvenSteven: These models look great! I am going to have a look at the files and merge them! Pay close attention to the changes that were made in the .esp files ,mainly regarding the TextureSet and ArmorAddon changes. They're very important to insure all the catsuit devices appear correctly since I've made some changes to the shader and texture settings. Same goes for the pony boots. Yes there are two files named "DDXSuitsUUNP" in the SliderSet folder for the UUNP version. However one is a .xml file and the other is an .osp file. At some point Outfit Studio changed how projects were saved so the .xml file is an older file while the .osp file is newer file. All the changes I made to catsuit devices are now contained in the .osp file, the .xml file still contains the zipsuit items. Both files are needed. Honestly the BodySlide folders for the CBBE and UUNP versions are a mess, additions and changes overtime have created an absolute cluster-fuck. I'm almost tempted to do a major clean up of the BodySlide folders, it wouldn't be too difficult just tedious and a bit time-consuming.
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