Create an account

Dynamic Animation Replacer v1.1.3  

Upload: 10 May 2023, 20:50
Created by: Felisky [X]
Uploaded by: Aqxaro
Dynamic Animation Replacer v1.1.3

This mod dynamically replaces the actors' animations depending on various conditions. Supports most actors, including creatures. Actors and animations added by mods are also supported. No ESP file.

There are two ways to assign animations. In both cases you place the files in the appropriate folders. No special tools are required. If you are using FNIS GENDER specific animations, the files in the female or male folder will be referenced. In that case, you need to place the file in the folder at that path.

+ Assignment depending on ActorBase
Assigns different animations to each NPC. Place the animation files in the following folder.

meshes\actors\(project folder)\animations\DynamicAnimationReplacer\(esp name)\(actor base id)\(animation folders and files)
(project folder) is the folder that contains the behavior graph set for the race. Example: character
(actor base id) must be 8 characters. First two characters are 00.

Example:
Player - meshes\actors\character\animations\1hm_attackpowerleft.hkx
-> meshes\actors\character\animations\DynamicAnimationReplacer\Skyrim.esm\00000007\1hm_attackpowerleft.hkx
Serana - meshes\actors\character\animations\female\mt_idle.hkx
-> meshes\actors\character\animations\DynamicAnimationReplacer\Dawnguard.esm\00002B6C\female\mt_idle.hkx

+ Assignment depending on custom conditions
Set the conditions yourself. Assigns animations accordingly. Place the animation files and _conditions.txt in the following folder.

meshes\actors\(project folder)\animations\DynamicAnimationReplacer\_CustomConditions\<Priority>\(animation folders and files and _conditions.txt)
<Priority> is a decimal number excluding 0 in the range of -2147483648 to 2147483647. The higher the number, the higher the priority. Assignments that depend on ActorBase mentioned above have a priority 0.

_conditions.txt is a file with a text format named _conditions. Specify functions to set conditions in this file. Multiple conditions can be linked with AND and OR. You can use NOT to negate a condition.

(NOT) Function name("esp name" | formID, ...) (AND or OR)
...
The esp name is enclosed in "". Prefix with 0x to specify the FormID in hexadecimal. Remove or replace the first two digits indicating the load order. Example: 0xAA123456 -> 0x00123456
Specify esp name and FormID as the arguments of the function as follows.
IsEquippedRight(Form item) -> IsEquippedRight("aaa.esp" | 0x00123456)
It is also possible to specify the number directly to GlobalVariable.
IsEquippedRightType(GlobalVariable type) -> IsEquippedRightType(3)

Example:
Actors who have an iron dagger equipped to the right hand and are in the exterior
IsEquippedRight("Skyrim.esm" | 0x0001397E) AND
NOT IsInInterior()

Logical operation is performed in the same way as CK.
(A || B) && C
=A || B && C
A OR
B AND
C

(A && B) || C
=A || C && B || C
A OR
C AND
B OR
C

Function List
v1.0.0
IsEquippedRight(Form item)
Does the actor have the specified item equipped to his right hand?
IsEquippedRightType(GlobalVariable type)
Is the item equipped to the actor's right hand the specified type?
IsEquippedRightHasKeyword(Keyword keyword)
Does the item equipped to the actor's right hand have the specified keyword?
IsEquippedLeft(Form item)
Does the actor have the specified item equipped to his left hand?
IsEquippedLeftType(GlobalVariable type)
Is the item equipped to the actor's left hand the specified type?
IsEquippedLeftHasKeyword(Keyword keyword)
Does the item equipped to the actor's left hand have the specified keyword?
IsEquippedShout(Form shout)
Does the actor currently have the specified shout?
IsWorn(Form item)
Is the actor wearing the specified item?
IsWornHasKeyword(Keyword keyword)
Is the actor wearing anything with the specified keyword?
IsFemale()
Is the actor female?
IsChild()
Is the actor a child?
IsPlayerTeammate()
Is the actor currently a teammate of the player?
IsInInterior()
Is the actor in an interior cell?
IsInFaction(Faction faction)
Is the actor in the specified faction?
HasKeyword(Keyword keyword)
Does the actor have the specified keyword?
HasMagicEffect(MagicEffect magiceffect)
Is the actor currently being affected by the given Magic Effect?
HasMagicEffectWithKeyword(Keyword keyword)
Is the actor currently being affected by a Magic Effect with the given Keyword?
HasPerk(Perk perk)
Does the actor have the given Perk?
HasSpell(Form spell)
Does the actor have the given Spell or Shout?
IsActorValueEqualTo(GlobalVariable id, GlobalVariable value)
Is the ActorValue of the specified ID equal to the value?
IsActorValueLessThan(GlobalVariable id, GlobalVariable value)
Is the ActorValue of the specified ID less than the value?
IsActorValueBaseEqualTo(GlobalVariable id, GlobalVariable value)
Is the base ActorValue of the specified ID equal to the value?
IsActorValueBaseLessThan(GlobalVariable id, GlobalVariable value)
Is the base ActorValue of the specified ID less than the value?
IsActorValueMaxEqualTo(GlobalVariable id, GlobalVariable value)
Is the max ActorValue of the specified ID equal to the value?
IsActorValueMaxLessThan(GlobalVariable id, GlobalVariable value)
Is the max ActorValue of the specified ID less than the value?
IsActorValuePercentageEqualTo(GlobalVariable id, GlobalVariable value)
Is the percentage ActorValue of the specified ID equal to the value?
IsActorValuePercentageLessThan(GlobalVariable id, GlobalVariable value)
Is the percentage ActorValue of the specified ID less than the value?
IsLevelLessThan(GlobalVariable level)
Is the actor's current level less than the specified level?
IsActorBase(ActorBase actorbase)
Is the actorbase for the actor the specified actorbase?
IsRace(Race race)
Is the actor's race the specified race?
CurrentWeather(Weather weather)
Is the current weather the specified weather?
CurrentGameTimeLessThan(GlobalVariable time)
Is the current game time less than the specified time?
ValueEqualTo(GlobalVariable value1, GlobalVariable value2)
Is the value1 equal to the value2?
ValueLessThan(GlobalVariable value1, GlobalVariable value2)
Is the value1 less than the value2?
Random(GlobalVariable percentage)
The probability of the specified percentage (from 0 to 1).
==========================================================================
Added in v1.1.0
IsUnique()
Is the actor flagged as unique?
IsClass(Class class)
Is the actor's class the specified class?
IsCombatStyle(CombatStyle combatStyle)
Is the actor's CombatStyle the specified CombatStyle?
IsVoiceType(VoiceType voiceType)
Is the actor's VoiceType the specified VoiceType?
IsAttacking()
Is the actor currently attacking?
IsRunning()
Is the actor currently running?
IsSneaking()
Is the actor currently sneaking?
IsSprinting()
Is the actor currently sprinting?
IsInAir()
Is the actor in the air?
IsInCombat()
Is the actor in combat?
IsWeaponDrawn()
Does the actor have his equipped weapon and/or magic spell drawn?
IsInLocation(Location location)
Is the actor in the specified location or a child of that location?
HasRefType(LocationRefType refType)
Does the actor have the specified LocationRefType attached?
IsParentCell(Cell cell)
Is the actor in the specified cell?
IsWorldSpace(WorldSpace worldSpace)
Is the actor in the specified WorldSpace?
IsFactionRankEqualTo(GlobalVariable rank, Faction faction)
Is the actor's rank in the specified faction equal to the specified rank?
IsFactionRankLessThan(GlobalVariable rank, Faction faction)
Is the actor's rank in the specified faction less than the specified rank?
IsMovementDirection(GlobalVariable direction)
Is the actor moving in the specified direction?

Note that the Random() function can get mixed up in some animations unintentionally.

Please refer to the following for the ActorValue ID.
https://www.creationkit.com/index.php?title=ActorValueInfo_Script

Item types are as follows.
-1=Others
0=Fists
1=Swords
2=Daggers
3=War Axes
4=Maces
5=Greatswords
6=Battleaxes
7=Bows
8=Staff
9=Crossbows
10=Warhammers
11=Shields
12=Alteration Spells
13=Illusion Spells
14=Destruction Spells
15=Conjuration Spells
16=Restoration Spells
17=Scrolls
18=Torches

The actor's rank in the specified faction:
-2 if the Actor is not in the faction.
-1 if the Actor is in the faction, with a rank set to -1. By convention, this means they may eventually become a member of this faction.
A non-negative number equal to the actor's rank in the faction.

Movement direction:
0=Standing Still
1=Forward
2=Right
3=Back
4=Left

If you are having trouble applying animations, open "..My Games\Skyrim Special Edition\SKSE\DynamicAnimationReplacer.log". There may be error messages.

Note:
The maximum number of animation files for each project is 16384. This number is the sum of the original files in Skyrim, the files added by other mods, and the files added by this mod. If there are too many, a message box will display an error and animations will not be loaded. If you want to know the current number of animations, open the log.

- Requirement
SKSE64
Address Library for SKSE Plugins

- Compatibility
Incompatible mods have not been found.

Comments
The minimum comment length is 10 characters.