Jump to content

Devious Devices Framework Development/Beta


Recommended Posts

Speaking of development. The discussion to make 2 'proper' versions of DD seems to have died. @Kimy did you have any specifics in mind on what would be best to proceed? 

 

I would still like to propose some kind of Git integration for the code contribution, as keeping track on here is just a pain. This will A keep track of all snippets. B make comments on specific snippets possible, to either bugfix or enhance said snippet and C clearly differentiate LE from SE code. By using tags or using a separate repo all together. Github free now has unlimited private repo's so we could set it to private if people don't want to have "spicy" code associated with their account. 

 

Other alternative could be a DD development discord on which we can use the 'threads' system to contribute things and comment on those specific things bundled underneath those things. So it does not get lost in the regular 'chat'.  We will lose al Git code tracking capabilties but at least it's structured and allows some non-text file uploading to take place.

Link to comment

These files were hosted in the troubleshooting post for the SE version for some time, but to increase their visibility so more people could test this awesome tech (and so I could link to this post more easily, and don't trouble zarantha if I need to update them again, ahaha), here they are:

DD to DAR/OAR for Skyrim SE

 

Installation instructions:
 

Spoiler

If you didn't have DAR/OAR before, grab them from Nexus. If you did have it installed, check what animations you've got and their priorities, DD's pack has to have the highest priority (largest number) - it's fairly high now (100 000), but I know some animators tend to set theirs priorities in the millions range, so this is worth a check (I use DAR Explorer but a manual check could also work, and if you are on OAR, you can do this straight from it's MCM).

 

Install the file I've attached, making sure it overwrites regular DD - so all the files in it are winning against what you've had before (in MO2 that means installing them lower in them mod panel).

 

Backup your FNIS output prior. Re-run FNIS, so it stops looking for the movement animations to let DAR handle them (you'll also get about a 1000 more free FNIS animations spots, which is nice)

 

Activate both DAR/OAR and DD to DAR thing and play the game normally.

 

To uninstall this, delete both DAR/OAR and DD to DAR, and restore your fnis output (or just re-run it again without them, so it picks everything back up).

 

Be sure to grab the awesome swimming add-on made by @iivanvv.

And if you're up to it - help me test the newest version of the edited movement script, from my experience it runs better than the one I've included with the conversion. ?

 

Have fun.

 

P.S. Send the love to @Roggvir for coming up with the idea, I'm mostly standing on the shoulders of giants here ✌️

DD to OAR_the big conversion_FOMOD.7z DD to DAR_the big conversion_FOMOD.7z

Edited by krzp
Link to comment
2 hours ago, krzp said:

These files were hosted in the troubleshooting post for the SE version for some time, but to increase their visibility so more people could test this awesome tech (and so I could link to this post more easily, and don't trouble zarantha if I need to update them again, ahaha), here they are:

DD to DAR/OAR for Skyrim SE

 

Installation instructions:
 

  Hide contents

If you didn't have DAR/OAR before, grab them from Nexus. If you did have it installed, check what animations you've got and their priorities, DD's pack has to have the highest priority (largest number) - it's fairly high now (100 000), but I know some animators tend to set theirs priorities in the millions range, so this is worth a check (I use DAR Explorer but a manual check could also work, and if you are on OAR, you can do this straight from it's MCM).

 

Install the file I've attached, making sure it overwrites regular DD - so all the files in it are winning against what you've had before (in MO2 that means installing them lower in them mod panel).

 

Backup your FNIS output prior. Re-run FNIS, so it stops looking for the movement animations to let DAR handle them (you'll also get about a 1000 more free FNIS animations spots, which is nice)

 

Activate both DAR/OAR and DD to DAR thing and play the game normally.

 

To uninstall this, delete both DAR/OAR and DD to DAR, and restore your fnis output (or just re-run it again without them, so it picks everything back up).

 

Be sure to grab the awesome swimming add-on made by @iivanvv.

And if you're up to it - help me test the newest version of the edited movement script, from my experience it runs better than the one I've included with the conversion. ?

 

Have fun.

 

P.S. Send the love to @Roggvir for coming up with the idea, I'm mostly standing on the shoulders of giants here ✌️

DD to OAR_the big conversion_FOMOD.7z 10.27 MB · 4 downloads DD to DAR_the big conversion_FOMOD.7z 12.34 MB · 0 downloads

 

I'm assuming these are intended for having dd natively supporting OAR. I've kicked FNIS to the curb a while ago, I think Nemesis does some handling of fnis-type behavior setup. IIRC it creates a plugin called fnis when doing the engine update + behavior update.

 

In simplest possible terms: I'm running Nemesis + OAR without any explicit conversion of the dd animations/behaviors to OAR format and haven't encountered any problems (vs just using FNIS.)

 

Could you elaborate to a moron like me, what the benefits are of using these - have I like broken the animations for dd without noticing? I could do a comparison performancewise or other some such if you want.

Link to comment
6 hours ago, agrdrk said:

Could you elaborate to a moron like me, what the benefits are of using these - have I like broken the animations for dd without noticing? I could do a comparison performancewise or other some such if you want.

I've been running DD with Nemesis for some time too, but DAR / OAR thing is better.

What we are doing here, is making the movement animations for DD use the replacer mechanics, instead of the dated Alternating Animations technology.

 

Bound combat actually works as intended, as I remember that my nemesis struggled with it.

Zero script lag, it's a lot faster to apply them to the player - so no immersion breaking slow swapping of animation states.

You can easily swap animations with a copy-paste.

You can create new ones for different devices and conditions, (I've posted a few new ideas that I personally use here).

It lowers your fnis animation count by about a 1000.

 

So, while this archive doesn't have any new features (this was intentional, the new features come in form of patches), but i think it's worth trying even on an regular install - the improvements are pretty noticeable, and at worst, if you don't like it for any reason, just de-install in and re-run Nemesis or restore the backup, and you're back to your old setup in minutes. ?

Link to comment
17 hours ago, krzp said:

Bound combat actually works as intended, as I remember that my nemesis struggled with it.

Zero script lag, it's a lot faster to apply them to the player - so no immersion breaking slow swapping of animation states.

You can easily swap animations with a copy-paste.

You can create new ones for different devices and conditions, (I've posted a few new ideas that I personally use here).

It lowers your fnis animation count by about a 1000.

 

So, while this archive doesn't have any new features (this was intentional, the new features come in form of patches), but i think it's worth trying even on an regular install - the improvements are pretty noticeable, and at worst, if you don't like it for any reason, just de-install in and re-run Nemesis or restore the backup, and you're back to your old setup in minutes. ?

 

Yeah, this is pretty fucking great actually.

 

(Like with all the new lightweight feature sets introduced by SKSE and .net scripting mods to SE lately, Skyrim feels like a recent release.)

Link to comment

So, speaking of new features taking advantage of OAR/DAR conversion, here's a fix for the thing that bugged me for quite some time.

 

You know how the both the stagger and bleed out animations often break DD's, making your character's arms defy laws of physics and travel through the worn devices like they aren't there there? Considering that DD already has the animations needed, let's make this work in our favour.

 

What I've done here is I took the ft_bleedout_*_* animations, and made OAR use them whenever both the bleedout and idlecower (iirc, DCL and Deviously helpless sometimes call for that one) animation gets called. Also I've made staggercamera animation use the abc*_h2h_staggerbacklarge - we already have the animation for stagger when in combat, why not also use it when we are outside of it as well? This should help with the "You stumble over your bulky leg cuffs" event sometimes playing the regular stagger animation, and I think a certain cursed shock collar might benefit from that as well...

 

Also, the yoke and arm binder folders now have replacements for the MT_Wounded_* animations for whenever those gets called - I do remember DCL uses those when it defeats you. Now, DD doesn't have anything suitable for laying down in devices animation - but old ZAZ 7 does, so I've used the DD-compatible ZapArmbPose13 and 14 and ZapYokePose14 for those, considering that version's open permissions. I think that DD already has a few animations from that pack, could this be included as well for this purpose?

 

This assumes my folder naming scheme (100 00*), so if you changed the priority for yours, remember to adjust the folders in the add-on accordingly.

 

@Kimy I've used the regular DD animations that are already in the main install, just renamed them accordingly to be picked up by OAR whenever DD's internal tech can't replace them through FNIS, so I hope I'm still operating within you kind permission to post this here - but do tell me if you wish for me to take this down. ?

 

P.S. This is SE-only, due to me not having an LE version to test this on, but I'll try to recreate this for LE's DAR version later on (or, if someone knows a way to quickly convert SE animations back to LE, the folder structure is the same in both).

DD_OAR_stagger_bleedout_wounded_patch.7z DD_DAR_stagger_bleedout_wounded_patch.7z

Link to comment

While trying to time a quest portion on a 'deviceorgasm' animation ending I could not find a way to elegantly hook into this using mod events, just unreliable timers. So for that goal I've added some code to be able to act on the animations started by any "SendAnimationEvent" calls in zadlib. The end call does not contain the animation string. This would require something to save the actor+animation combination in memory. Not sure a framework for that is already a requirement? One could also register for animevent "IdleForceDefaultState" on a specific actor but that does not guarantee it's from DD.

 

Start function:

Spoiler
Function SendStartedThirdPersonAnimationEvent(actor akActor, string animation)	
	Int Handle = ModEvent.Create("DDI_ThirdPersonAnimationStarted")
	If (Handle)		
		ModEvent.PushForm(Handle, akActor)
		ModEvent.PushString(Handle, animation)		
		ModEvent.Send(Handle)
	Endif	
EndFunction

 

 

Stop function:

Spoiler
Function SendStoppedThirdPersonAnimationEvent(actor akActor)	
	Int Handle = ModEvent.Create("DDI_ThirdPersonAnimationStopped")
	If (Handle)		
		ModEvent.PushForm(Handle, akActor)	
		ModEvent.Send(Handle)
	Endif	
EndFunction

 

 

Changes to the current StartThirdPersonAnimation and EndThirdPersonAnimation

 

Spoiler

bool[] Function StartThirdPersonAnimation(actor akActor, string animation, bool permitRestrictive=false)
    Log("StartThirdPersonAnimation("+akActor.GetLeveledActorBase().GetName()+","+animation+")")
    bool[] ret = new bool[2]
    if IsAnimating(akActor)
        Log("Actor already in animating faction.")
        return ret
    EndIf    
    if !IsValidActor(akActor) || (akActor.WornHasKeyword(zad_DeviousArmBinder) && !permitRestrictive)
        Log("Actor is not loaded (Or is otherwise invalid). Aborting.")
        return ret
    EndIf    
    if akActor.IsWeaponDrawn()
        akActor.SheatheWeapon()
        ; Wait for users with flourish sheathe animations.
        int timeout=0
        while akActor.IsWeaponDrawn() && timeout <= 35 ;  Wait 3.5 seconds at most before giving up and proceeding.
            Utility.Wait(0.1)
            timeout += 1
        EndWhile
        ret[1] = true
    EndIf    
    if akActor == PlayerRef
        ; Manipulate camera        
        int cameraOld = Game.GetCameraState()
        if cameraOld == 10 || akActor.IsOnMount(); 10 On a horse
            akActor.Dismount()
            game.ForceThirdPerson()
            int timeout = 0
            while akActor.IsOnMount() && timeout <= 30; Wait for dismount to complete
                Utility.Wait(0.1)
                timeout += 1
            EndWhile
        ElseIf cameraOld == 11; Bleeding out.
            Warn("Actor is bleeding out. Hmm.")
            return ret
        ElseIf cameraOld == 12 ; Dragon? Wtf?
            Warn("Actor is dragon? Not sure what happened here.")
            return ret
        ElseIf cameraOld == 8 || cameraOld == 9 || cameraOld ==  7 ;;; 8 / 9 are third person. 7 is tween menu.
        ;
        Else
            ret[0] = true
            game.ForceThirdPerson()
        EndIf        
        ; Not sure how to detect auto-walk: Tap 'forward' to disable it if it's active.
        ; Unfortunately this work-around causes a CTD for some players, so let's just disable it...
        ; Input.TapKey(Input.GetMappedKey("Forward"))
        ; Freeze player controls
        DisableControls()
    Else
        akActor.SetDontMove(true)
    EndIf    
    SetAnimating(akActor, true)    
    SendStartedThirdPersonAnimationEvent(akActor, animation)
    Debug.SendAnimationEvent(akActor, animation)    
    return ret
EndFunction

 

 

 

Function EndThirdPersonAnimation(actor akActor, bool[] cameraState, bool permitRestrictive=false)
    Log("EndThirdPersonAnimation("+akActor.GetLeveledActorBase().GetName()+","+cameraState+")")
    SetAnimating(akActor, false)
    if (!akActor.Is3DLoaded() ||  akActor.IsDead() || akActor.IsDisabled())
        Log("Actor is not loaded (Or is otherwise invalid). Aborting.")
        return
    EndIf
    ; Reset idle 
    Debug.SendAnimationEvent(akActor, "IdleForceDefaultState")
    if akActor == PlayerRef
        UpdateControls()
        if cameraState[0]
            game.ForceFirstPerson()        
        EndIf
        if cameraState[1]
            ;akActor.SheatheWeapon()
            ;akActor.DrawWeapon()
        EndIf
    Else
        akActor.SetDontMove(false)
    EndIf
    SendStoppedThirdPersonAnimationEvent(akActor)
EndFunction

 

 

Edited by naaitsab
Link to comment
On 7/13/2023 at 8:38 AM, krzp said:

 

So I've been trying the OAR version out, without touching the priorities, as it seems my walk run and combat (and EVG) are all way in the higher numbers (=lower priority, right?) compared to the numbers in DD, but they still seem to override DD's animations all the same. The common factor to all animations that seem to override OAR is that they are in the DAR structurce and work only because of the backwards compatbility. Could it be that there is a bug in OAR that gives extra priority to DAR over OAR? If so, is there a way to fix it (maybe in OAR in-game menu?) or should I just use the DAR version to avoid this problem for now?

Link to comment
27 minutes ago, thedarkone1234 said:

 

So I've been trying the OAR version out, without touching the priorities, as it seems my walk run and combat (and EVG) are all way in the higher numbers (=lower priority, right?) compared to the numbers in DD, but they still seem to override DD's animations all the same. The common factor to all animations that seem to override OAR is that they are in the DAR structurce and work only because of the backwards compatbility. Could it be that there is a bug in OAR that gives extra priority to DAR over OAR? If so, is there a way to fix it (maybe in OAR in-game menu?) or should I just use the DAR version to avoid this problem for now?

 

Encountered this as well, you can just increase the priority of the DD OAR animations by opening the menu (Shift-O by default) and entering user mode. I added an extra two 0's after the 1 to resolve this.

Link to comment
49 minutes ago, thedarkone1234 said:

higher numbers (=lower priority, right?)

The other way around, it plays 2 000 000 000 first, and then if it's not meeting condition, it then tries 1 999 999 999, 998 etc

 

So, if you have something higher than 100 000, this could play over DD's. You'd need to either remap that, or add a few zero's to DD, so it grabs priority - this can all be done in MCM for OAR. I'm still unsure about the priority numbering, if this gets included into DD, this is something to think about... I would've gladly set it at the max range, but there's some npc idle animation mod that did that already, iirc, and I don't want to overwrite it out of spite ?

 

Good news, though, is that OAR doesn't care for the folder names, so the patches will still work out of the box - because it only edits json's.

For DAR you'd need to rename folders.

 

I usually remap all my animations manually, because of OCD reasons, but there's this: Open Animation Replacer Priority Remapper for a little automation ?

Really wish someone to make a drag-and-drop remapper that reads OAR json's, would've saved me some time.

Link to comment
On 7/12/2023 at 1:32 PM, naaitsab said:

The discussion to make 2 'proper' versions of DD seems to have died.

Let's give it a little jump start ?

 

I've tried to collect all the tweaks to 5.2 that I have and remember where I got them:

  1. Bodyslide bone fixes for 3ba by ihatemykite
  2. New animations by iivanvv (+ some of them in form of a DAR patch)
  3. DAR/OAR SE, LE version
  4. New movement script for OAR/DAR
  5. Small fixes by Taki17
  6. Swimming animations by iivanv
  7. CommonLibNG DLL by ponzipyramid
  8. HDT chains fix by PredatorRJ
  9. Stagger fix SE
  10. Gag fix by ihatemykite
  11. SKSE expressions performance increase SE by ihatemykite

I think all of those combined might be worthy of a start of a discussion for the 5.3 beta at this point?

And I didn't even collect the proposed code changes, this is only ready to be merged stuff.

 

And a lot of those are SE-specific, so this is a good time to renew that discussion too... ?

 

If I have forgotten anything, please post them too ?

Edited by krzp
Link to comment
21 minutes ago, krzp said:

Let's give it a little jump start ?

 

I've tried to collect all the tweaks to 5.2 that I have and remember where I got them:

  1. Bodyslide bone fixes for 3ba by ihatemykite
  2. New animations by iivanvv (+ some of them in form of a DAR patch)
  3. DAR/OAR SE, LE version
  4. New movement script for OAR/DAR
  5. Small fixes by Taki17
  6. Swimming animations by iivanv
  7. CommonLibNG DLL by ponzipyramid
  8. HDT chains fix by PredatorRJ
  9. Stagger fix SE
  10. Gag fix by ihatemykite
  11. SKSE expressions performance increase SE by ihatemykite

I think all of those combined might be worthy of a start of a discussion for the 5.3 beta at this point?

And I didn't even collect the proposed code changes, this is only ready to be merged stuff.

 

And a lot of those are SE-specific, so this is a good time to renew that discussion too... ?

 

If I have forgotten anything, please post them too ?

Thank you for this nice list for me to go and update things with :)

Link to comment
1 hour ago, krzp said:

And a lot of those are SE-specific, so this is a good time to renew that discussion too... ?

We've had that long overdue discussion and the outcome was clear. SE should and will get it's own build with much needed SE fixes and LE will continue to be worked on in parallel if fixes/additions also apply to LE. We should now focus on actually doing something to make it happen. But haven't seen Kimy around or reply to my question on what platform we should do it, as code mongering here is just terrible for all parties. So that halts it down a bit. 

 

But bundling things would make a good starting point :P Gathering any code sniplets could also be handy (pastebin as temporary spot?) 

Link to comment
1 hour ago, krzp said:

Let's give it a little jump start ?

 

I've tried to collect all the tweaks to 5.2 that I have and remember where I got them:

  1. Bodyslide bone fixes for 3ba by ihatemykite
  2. New animations by iivanvv (+ some of them in form of a DAR patch)
  3. DAR/OAR SE, LE version
  4. New movement script for OAR/DAR
  5. Small fixes by Taki17
  6. Swimming animations by iivanv
  7. CommonLibNG DLL by ponzipyramid
  8. HDT chains fix by PredatorRJ
  9. Stagger fix SE
  10. Gag fix by ihatemykite
  11. SKSE expressions performance increase SE by ihatemykite

I think all of those combined might be worthy of a start of a discussion for the 5.3 beta at this point?

And I didn't even collect the proposed code changes, this is only ready to be merged stuff.

 

And a lot of those are SE-specific, so this is a good time to renew that discussion too... ?

 

If I have forgotten anything, please post them too ?

 

Thanks for compiling this, I didn't know half this stuff existed.

 

Completely up to @ihatemykite, but if the idea is to have an SE/AE build, would it be worth merging the NG DLL with the expressions fix? It doesn't make a difference for the end user but I think it's cleaner having a single DLL and it might create a good foundation for collaboratively improving/expanding the native side of DD (offloading expensive functions, new Creation Engine behaviour, etc.).

Link to comment
41 minutes ago, ponzipyramid said:

 

Thanks for compiling this, I didn't know half this stuff existed.

 

Completely up to @ihatemykite, but if the idea is to have an SE/AE build, would it be worth merging the NG DLL with the expressions fix? It doesn't make a difference for the end user but I think it's cleaner having a single DLL and it might create a good foundation for collaboratively improving/expanding the native side of DD (offloading expensive functions, new Creation Engine behaviour, etc.).

Sure, I don't mind. I was also thinking about it, but I didn't know at that point if I will made it as separate mod or if it will part of the framework. I will create push request to your repo. I was also thinking about making reworking some hider function to also use new native functions to make it more robust.

Link to comment
2 minutes ago, ihatemykite said:

Sure, I don't mind. I was also thinking about it, but I didn't know at that point if I will made it as separate mod or if it will part of the framework. I will create push request to your repo. I was also thinking about making reworking some hider function to also use new native functions to make it more robust.

 

Awesome, let me know if there's anything I can help with. I also wanted to resurface this post from Scrab listing some ideas for what could be done natively:

 

On 6/23/2023 at 2:54 AM, Scrab said:

f you are comfortable with C++ you can

  • improve NPC support by having each NPC be checked for devices independent of other NPC or some polling algorithm, which would get rid of a decent chunk of overhead DDs current NPC support creates
  • Overhaul the device hider by checking each NPC/PC in real time and hide/show devices as necessary in greater detail as its currently possible
  • Potentially move some of the back end into C++ to drastically speed up some of the calculations. While Kimy did an excellent job in regards to performance with DD5, theres still a lot of room for improvement. In particular the frame still likes to trip up when equipping too many items at once

If you then now AS2/Flash on top of that (and know some artist for assets) you can

  • overhaul the locking interface to use newly created menus over the default Messageboxes
  • Something that I admittedly havent tried yet but would like to see if its possible is adding a new column into the SkyUI Inventory Menu to express the current lock status of a device. I dont know if this is possible, but Parapets released some promising mod recently that may or may not go into a similar direction as this

Also, if you know assembly you can

  • Intercept the equip and unequip functions to add another custom layer to it for treating DD items specifically. This would allow you to get rid of pretty much all overhead created by mods unequipping DD items "on accident" and combined with the above points create an incredibly smooth unequipment function where trying to unequip an item opens a custom menu (through Cpp) which then handles the actual unequipment of the item
  • Intercept Papyrus Remove Item calls; similar to the above you could get rid of most overhead created by the attempt to not lose "locked" DD items
Link to comment
47 minutes ago, ponzipyramid said:

Here's a new patch thanks to @ihatemykite that merges the expressions fixes with the NG DLL. Merged source can be found here.

 

In terms of continuing this work:

  • Can modified scripts be included in the linked repo for version control?
  • As a proof of concept, are there particular API functions or event handlers that might be worth making native?

DeviousDevices.dll.Exp.Merge.zipFetching info...

Probably the calls that currently take up most time to process?

-The 'bound animation filter' as that is a very large script on it's own.

-Pose changes based on worn devices (addition to OAR conversion?)

-(un)equip function. Especially when running multiple in a row they can get laggy quickly. Or start to fail to process all together, having to result to waits in between calls. Which is far from ideal.

 

I hope we can get a DD repo up and running so we can merge this stuff on there and keep it in 1 place.

Link to comment
55 minutes ago, naaitsab said:

-Pose changes based on worn devices (addition to OAR conversion?)

Yeah, that seems like a doable thing - for example, DD has a ton of functions to choose which animation pose to send depending on the device, but this can be handed off to OAR as well, just send ONE common animation event without any keywords/slots assessment, and let OAR replace it with the correct idle conditionally, saving on some precious papyrus cycles.

 

I also have the next candidate for the new functionality for OAR - the "out of breath" thing, I've been using the existing rarely played animations for a conditional idle when my char's stamina/health goes down, and it's been working out really well and adds a ton to immersion, i think? Esp. with something a-la Unforgiving Devices or Devious Lore, mods that drain Stamina whenever the character struggles out of restraints.

 

I'll post a proposed add-on a little later. ?

 

57 minutes ago, naaitsab said:

Probably the calls that currently take up most time to process?

Device hider also looks like a good candidate for the native-fication.

 

1 hour ago, naaitsab said:

I hope we can get a DD repo up and running so we can merge this stuff on there and keep it in 1 place.

Discord seems like a great idea too, everyone and their dog in the skyrim modding scene seems to have one nowadays, it's not a bad tool for productive communication ?

 

Link to comment
1 hour ago, krzp said:

 

Discord seems like a great idea too, everyone and their dog in the skyrim modding scene seems to have one nowadays, it's not a bad tool for productive communication ?

 

Had posted the idea before. I can set one up for the development tract. The new 'forums' feature is great for tagging and sharing pieces of code or content and comment on that. It's not great for archival reasons but that is not really an issue in this usecase. And one can always use the search function. We can also easily differentiate LE from SE using different channels.

 

If Kimy also likes the idea I can setup one to give it a spin.

Edited by naaitsab
Link to comment
5 hours ago, naaitsab said:

-(un)equip function. Especially when running multiple in a row they can get laggy quickly. Or start to fail to process all together, having to result to waits in between calls. Which is far from ideal.

 

Ah, that explains some issues I've encountered in other projects. If I'm understanding the scripts correctly, most of the heavy lifting occurs in zadEquipScript. So Event OnUnequipped and Event OnEquipped should be faster? If ihatemykite's working on the hider function I can take a look at this.

Link to comment
On 7/22/2023 at 2:39 PM, krzp said:

I also have the next candidate for the new functionality for OAR - the "out of breath" thing, I've been using the existing rarely played animations for a conditional idle when my char's stamina/health goes down, and it's been working out really well and adds a ton to immersion, i think? Esp. with something a-la Unforgiving Devices or Devious Lore, mods that drain Stamina whenever the character struggles out of restraints.

Ok, so here goes:

 

This has 6 animations from the original DD: ft_out_of_breath_*.hkx, and a condition to apply them whenever player's stamina is < 50%, and/or health < 30% and he is wearing the corresponding device. I'm in the process of editing some of those animations to work for when the char is in the hobbled dress, so I'll try to post that when I'll finish all of them as a separate file.

 

(also note the missing Elbow Tie folder, because there's no such animation for that device - seriously, is that device really unloved or what?)

 

Do note, that this has a regular out of breath animation without any devices worn at 100500 folder, so if you don't want your stalwart dragonborn to huff and puff after a regular sprint like she has been smoking since childhood, you can turn this particular folder off from OAR's menu. ? Hypothetically, I can limit this one to only fire when a DD-device is worn (zad_lockable keyword check or something like that), it shouldn't be too hard. Thoughts? edit: little update, I actually thought about it some more and hid this animation behind the zad_lockable check, because my intention for this pack was to be used for DD-related stuff, struggles and whatnot, and leaving it playing all without them felt a bit... unnecessary intrusive. So this should now only play when you have something lockable on you - belts, harnesses, etc. Also, added a few checks so it doesn't accidentally play with any devices on, hopefully I didn't screw anything up.

 

P.S. This is for SE and OAR only, because I'm a little too lazy to convert it back to DAR, however, it's quite easy to convert it yourself - rename the folder from OpenAnimationReplacer to DynamicAnimationReplacer, folder "DD to OAR" to "_CustomConditions", and replace the OAR's jsons with a conditions.txt, here's an example:

 

Spoiler

IsFemale() AND
NOT IsChild() AND
IsActorValuePercentageLessThan(24, 0.3) OR
IsActorValuePercentageLessThan(26, 0.53) AND
IsWornHasKeyword("Devious Devices - Integration.esm" | 0x063AD9)

 

 

 

DD_out_of_stamina_oar_v.02.7z

Edited by krzp
Link to comment
7 hours ago, ponzipyramid said:

 

Ah, that explains some issues I've encountered in other projects. If I'm understanding the scripts correctly, most of the heavy lifting occurs in zadEquipScript. So Event OnUnequipped and Event OnEquipped should be faster? If ihatemykite's working on the hider function I can take a look at this.

If i recall correctly those events aren't always triggered. So it was not reliable. But perhaps @Min could share some light on why this was done back in the day?

But that was in the beginning days of LE, If we can make something that does work on SE with some of the new goodies we could see if we can boost it. 

Link to comment

hey. sorry to take the space and your guy's time.... but ok. so here is the thing.

back in the day, there used to be a mod called city bondage (would get some info here.

what it basically did was equipped dd devices when your character reached a city and remove it when you left said city. it was a neat mod but since the dev stopped updating it and it was outdated, he deleted it.

till recently, he had allowed people to mess with his mod but recently he said this

 

 

Convert: allowed

Share: not allowed

 

Though I might be open to granting permissions to someone if they're willing to convert the LE version to DD 5.x as well as a fully-supported SE/AE version...

 

proof here.

i was curious if someone here had the time and talent to do that?

Link to comment
56 minutes ago, johntrine said:

 

i was curious if someone here had the time and talent to do that?

It shouldn't be hard to do. But I'm not going to do work for a member that has made threats of legal action against another member for "stealing his work". Because it was a similar type of mod. If anything, I would support the author that is the victim of this ridicule (Devious Guards), to get that mod back online instead.

 

 

11 hours ago, krzp said:

 

(also note the missing Elbow Tie folder, because there's no such animation for that device - seriously, is that device really unloved or what?

There are a lot of devices that have very few animations. I tried to get some anim skills in Blender up and running but it's not really my thing, as I can't seem get a natural pose out of it. Might give it some extra attempts in the future.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use