Skyrim Special Edition


Documentation for Modders

Animation Changes for EVGAT 2.0b+
Spoiler:  
Show

Use HKanno to add annotations to your animations.

Here is how Ledge looks:

# numOriginalFrames: 77
# duration: 2.533333
# numAnnotationTracks: 97
# numAnnotations: 10
0.333333 animmotion 0 0 0
0.366667 SoundPlay.EVGJumpUp
0.600000 SoundPlay.EVGBodySmallHTouch
0.700000 animmotion 0 17 63
1.077777 animmotion 0 17 63
1.100000 SoundPlay.EVGMeditationExitSoft
1.267777 animmotion 0 21 101
1.600000 animmotion 0 25 128
2.020000 IdleChairSitting
2.033333 animmotion 0 38 186
2.244444 animmotion 0 45 200
2.520000 IdleStop
2.530000 IdleFurnitureExit

Note these three:
IdleChairSitting
IdleStop
IdleFurnitureExit
You MUST have all three in your annotations.

IdleChairSitting allows you to cancel the animation with movement inputs.
IdleStop & IdleFurnitureExit make the animation stop. Without it, you're stuck in the furniture state.

I recommend placing IdleChairSitting early on in a spot where you won't be inside any geometry.
Place IdleStop & IdleFurnitureExit 0.2s before the end of your animation length.

and then in Open Animation Replacer, if you're adding new paths:
Make sure you have both of the annotation checkboxes ticked in Author Mode.


How does this mod work, exactly?
Spoiler:  
Show

You know the floating Telvanni pads in the Dragonborn DLC?
Furniture is perfect because it auto-snaps the player into the right spot, takes away controls, and disables collision.
I do the same thing. Kind of.

idletelvannitower_floatup.hkx (4.6 seconds) (location z +1000)
EVG_vault.hkx (2.3 seconds) (location y +120)

We can't use the Telvanni furniture specifically, as the movement is baked into the behaviours, not the animation file.
Instead, we use Dynamic Animation Replacer to hijack another existing 'single use' animation in the vanilla game.
The lever pull animation is the shortest in the game, and has no baked movement.
When you activate a marker, it casts the correct spell for DAR/OAR to read and swap the animation.
Then we use Animation Motion Revolution to add movement data to that new animation.



Want to make a patch with manual marker placement?

This section is meant for beginner users. Truthfully- this framework is very bare bones, and people familiar with the CK and Papyrus
will be able to accomplish much more compared to the simple click marker > play animation that I’ve shown.
I didn't want to edit existing cells as I'm not familiar with the safest modding practices for compatibility.

Use the markers as you would any other furniture object.
The furniture objects include graphical indicators to show where the animation aligns.
Otherwise, each animation trigger is a 'blank slate.' Place them wherever your creativity allows.
As animations are all "one-way," you may want to place multiple furniture objects to allow for more entry points and such.
Quick implementation is very easy. Just copy + paste existing sets.



PLAIN TEXT IN IMAGES FOR TRANSLATION PURPOSES:
Spoiler:  
Show

The easiest way to get these into your cells is just by copy pasting existing marker sets in the EVGMotionCourse cell.

- Design Advice -
Use decorations to help guide players to where you want them to be!
I like using worn, flat boards to make surfaces look climbable.
Use different colors & materials to help break up things visually and add contrast!
Tall Ladder animations were made for RiftenRWTGRoomRoundLadder01
Use volumetric lighting & wind gust effect objects like FXAmbBeamDust to draw attention to gaps and holes!
(the image provided is exaggerated.)
Shadow casting lights are also good for tight passages.

New in 0.98.2: Scuff Decals
DecalEVGScuff1, 2, etc.
These arrows project a texture on whatever surface you like.
Helpful to guide the player if you do not like glowing indicator!

These are collision cubes. Press '2' to toggle the scaling interface.
These stop objects from moving through them, and prevent the player from clicking things on the opposite side.


I would recommend watching this tutorial on how ladders were implemented prior to this framework being made,
as it covers NPCs using load doors (which is still necessary to have NPCs use this framework, see below)
and creating collision cubes, which is very helpful for separating close markers.

Do note that animations are affected by height: I'd recommend testing with Imperials as they are 'scale 1.0.'

If you seem unable to get a prompt to appear, check that the activator box doesn't have the rotation set to
0.0, 0.0, 0.0

Some odd engine bug where a 'default' rotation activator won't work.
NPC Usage (VERSION 1.0b)

NAVMESHES AND 2 DOORS ARE REQUIRED.
NPCs will only use Traversal if the navmesh has doors that tell them they can go to certain areas.
Your navmesh MUST have the teleport marker as close as possible to the furniture marker.

Your door will need:
The EVGActivateDoor script.
to have the Furniture as the Linked Reference.
(and all those script properties. again, copying is fast)


NPCs will:
Activate a door, which overrides their AI Package, and cast a spell on them.
The AI Package will direct them to the furniture marker.
The spell will allow them to play the correct animation.

Their AI package then resets to normal after a brief moment,
regardless of whether traversal was successful.

If the NPC is not able to activate the furniture marker, the hidden 'door' is also temporarily usable.
This is meant for combat.


Toggleable Indicators through MCM


Thank you to Maleficus for a framework to easily toggle any visual indicators within your mod!

Maleficus' MCM Framework for EVGAT Mods

The tutorial video there covers the basics using EVGAT, as well as how to use the above framework for your MCM.

Basic Breakdown

If using separate activation markers as I intended:
Place a primitive activator box to where you want the player’s prompt to appear.
Link the furniture as a reference for the activator.
Ensure your activator has the EVGActivate script to properly redirect to the reference.
Ensure that the correct spell is selected in the EVGAnimSwap script property.

You can skip the above steps by copy-pasting existing marker sets.
You can find many examples in the EVGMotionCourse cell (do not edit the cell, things will break)
I urge you to place the visual indicator as well.

Ensure that the activators are placed skillfully, so that users
cannot select certain triggers from unintended areas.

Types of objects included in the mod:

Editor Marker Furniture:
These are invisible furniture items that the player cannot activate themselves without help through scripts.
Most markers in this mod are like this.

Statics:
These are decorative meshes that you cannot interact with. The short ladder mesh didn’t exist in the base game, so I made it.
(Taken from the ‘short ladder to trapdoor’ mesh.)

Furniture Statics: Furniture markers that the player can activate from the collision box.

Since ladders are a main feature people have been wanting,
the variety in ladder ‘type’ should help those who require specific uses.
If you have the time and patience, I’d recommend pairing a static ladder
with two invisible markers as you have the most control over how they are activated.


Alternate Methods, Ideas to Explore

I’d assume that people who know papyrus don’t need this, but just in case:

You could activate furniture through on-collision-scripts with objects.
You will have to take in consideration disabling/enabling opposite-sided markers as they are used.
I avoided this as there could be some frustration imo, but it's up to you.

You could script markers to only be visible when in close proximity.
This was done in Mielbarr, see the Duck markers in EVGMielbarr02.

You could enable furniture only after specific quest stages, after using another object-
Activate a nearby table to move it’s position to a ledge, then enable the marker, etc..
This was also done in Mielbarr. See the ladder pick up & place scripts.

All you need is the spell to be applied onto the actor as they activate it. Have fun!

NPC Usage Look above!

Couldn't get it to work, BUT it should be possible :( halp

There are some leftover things in the main file to help set up NPCs using the furniture.
(EVGAnimatedTraversal.esl - Quest: EVGActivateDoorQuest / Package: EVGActivateDoor / Script: EVGActivateDoor)
Feel free to look at it and tell me where the glaring issues are, I'll update asap.

how it's supposed to happen:
- completed navmesh, separate islands for each 'side' of the animation
- hidden doors that teleport from one navmesh to the other
- each door has a linked reference to the furniture item
- as well as EVGAnimSwap & EVGActivateDoor scripts on the door
- the npc will try to use the door to get from point A to B and then..

the EVGActivateDoor script will:
- block the teleport on the door
- log the linked furniture as a reference alias
- give the actor a package that makes them want to activate the alias instead
- remove the linked npc & furniture aliases from the package

then the actor uses the furniture!

this ALMOST works- but the package doesn't get removed off the NPC once done
and they're just stuck >:(
halp

this is set up ONLY in the test cell, the 2 sided vault marker (one has a script on the trapdoor.)


Creating Animations - Blender & CK Work

This is just a brief walkthrough. This requires fundamental 3D and animating experience.

Animate using an AMR compatible rig from the Skyrim Guild discord.
This will auto-generate most annotations you need within the animation. You may need to edit the export script to include vertical motion.
Edit the annotation with hkanno Animation Annotation Tools.
You can find generic sounds in the CK, under the Sound Descriptor tab.
The EVGAnimatedTraversal.esl has some sounds.

Annotation example of a finished animation:

# numOriginalFrames: 77
# duration: 2.533333
# numAnnotationTracks: 97
# numAnnotations: 7
0.333333 animmotion 0 0 0
0.366667 SoundPlay.EVGJumpUp
0.600000 SoundPlay.EVGBodySmallHTouch
0.700000 animmotion 0 16 62
1.100000 animmotion 0 16 62
1.100000 SoundPlay.EVGMeditationExitSoft
1.266667 animmotion 0 20 100
1.600000 animmotion 0 25 127
2.100000 animmotion 0 38 185
2.300000 animmotion 0 45 200

Convert the animation to SSE.

Then, use an appropriate frame of final animation's mesh as the Editor Marker. I'd recommend PyNifly for blender.
I also make little meshes for surfaces to help placement in the CK.
I also add extra copies of the hands & feet to show beginning/end placements.
In Nifskope, I copied the Furniture Marker branch, as well as the EditorMarker shader properties onto the new mesh.
BS Flags will depend on your mesh, likely just 32 Editor Marker.

In the CK, create a dummy (properly named) magic effect, and a spell using said magic effect for 1 second,
as it will be casted on the player with the EVGAnimSwap Script.
Create a copy of either an existing EVG marker, or the animated floor lever object. Keywords should be the same.
Create a copy of either an existing EVG activator, or the Telvanni float activator.
Use the correct scripts and attach the new spell as the script property.
Set up the furniture and activator as shown above (or however you want)

Create a Dynamic Animation Replacer folder path, following the instructions on that page.
Place the new animation, named as mt_leverfloorpull.hkx.

Condition example for the spell:
meshes\actors\character\animations\DynamicAnimationReplacer\_CustomConditions\yourfoldernumber
HasMagicEffect("EVGATAddon.esp"|0x_______)
That's it.

Article information

Added on

Edited on

Written by

Everglaid

0 comments