Reworked Precision Alpha (Patreon)
Downloads
Content
Hey there! I think the core of the plugin is now ready for testing. It has been almost entirely rewritten.
The plugin now adds an active ragdoll to actors for two purposes:
- Precise collision detection, this time done properly, entirely within Havok
- Procedural hit impacts - Similar to the bEnableHavokHit .ini setting, except better and (hopefully) less buggy
I feel like I have to mention again that it wouldn't be possible without the incredible mod PLANCK - Physical Animation and Character Kinetics and the author's help.
Known issues:
- The trails are not yet implemented
- The recoils when you hit a static are not yet implemented
- Weird stuff might happen with the active ragdoll sometimes. It is a big change for the engine.
The plugin supports all attacks that contain a weaponSwing animation event by default. There's a .toml config file located in Data/SKSE/Plugins/Precision that contains attack definitions for vanilla attacks. Similar to how TrueHUD works, all .toml files from the folder will be read so no conflicts are needed. The .toml file includes a detailed explanation.
I've only included human attack definitions and a rough example of dragon attacks. The other creature attacks unfortunately need to be manually filled by someone, which is a pretty annoying and boring process. You can open and close the mod's MCM to reload the .toml file if you want to iterate and test quickly.
The plugin also supports custom collisions defined inside animation files. If the animation contains proper annotations, the .toml attack definitions are ignored.
If an attack animation doesn't include Precision annotations and is missing a weaponSwing event or the attack definition isn't found in the .toml file, the vanilla attack functionality is used.
Installation:
Still SE only for the moment.
Use the optional TK Dodge / Ultimate Combat patch if you're running one of those mods and NOT running TK Dodge RE.
Use the optional TK Dodge RE patch if you're using TK Dodge RE, regardless of whether you also have Ultimate Combat. Do NOT install the other patch or you'll crash.
Run Nemesis after installing the mod.
The Precision Nemesis patch is made by NickNak. It includes a non-exaggerated, smooth upper body pitch while attacking so you can hit targets above or below you (works great with TDM's target lock) and also includes the animation events necessary for the animation support.
The TK patches disable the upper body pitch modifier while attacking that is included in the TK mods, because Precision does the same thing but subtler and smoother.
UPDATE: NickNak sent me a fixed patch for the TK files, hopefully this will fix your crashes.
UPDATE 2: Apologies folks, turns out there's a different patch for TK Dodge RE and for the original TK Dodge / Ultimate Combat. I've separated them out of the main archive, override the original TK files with the correct patch. (Reminder, the patch just removes the upper body pitch while attacking that is added by TK, because Precision does the same thing but much subtler and smoother)
UPDATE 3: Added the missing .dll to the latest archive, sorry! No changes yet.
UPDATE 4: Updated the installation instructions to clear up potential confusion. I'll pack it all up in a nice FOMOD installer later on so it'll be easier.
For the animators:
The animation annotations:
Collision_Start - HAS TO BE AT 0.0s TIME - this one informs the plugin that the animation supports Precision, and that the weaponSwing event should be ignored for the purposes of attack collisions.
Collision_Add - required payload: Node() - adds a collision. Use WEAPON for the right hand weapon, SHIELD for the left hand weapon (those are the node names in the character's skeleton.nif), or use other names if you want to use something like the hands, feet, head etc.
Collision_Remove - required payload: Node() or ID() - removes a collision
Collision_ClearTargets - required payload: Node() or ID() - this one is used so you can reset the already hit targets of an active collision, so you can hit again with the same collision. Only useful for animations that are supposed to hit multiple times, you don't need to use it for normal attacks.
The payload parameters:
Most of them are optional. The parameters are separated by |
Node(node name string) - the parent node of the collision. Required for Collision_Add.
ID(integer number) - optional, the id of the collision in case you want to add two collisions that are part of the same attack (they will share the already hit target list, so the attack will only hit once per target, no matter which capsule hits the target)
DamageMult(float number) - optional, the damage multiplier used for attacks dealt with this collision. Useful for combos where you want the later attack to deal more damage, or you might want to use something like a 0.5 multiplier for an attack that hits twice so you don't break the balance
Length(float) - optional, if set it will override the parent node's collision capsule length
Radius(float) - optional, if set it will override the parent node's collision capsule radius
Duration(float) - optional, if set the capsule will be removed after that time passes. If not set, you have to remove the collision with Collision_Remove.
Rotation(float, float, float) - optional, the local rotation of the capsule, in euler angles
Translation(float, float, float) - optional, the local translation of the capsule
Scale(float) - optional, the uniform local scale of the capsule
A random example (the attack doesn't make much sense, it's just an example of some more complicated annotations):
0.000000 Collision_Start
0.230000 SkySA_TriggerIntervalWin
0.233000 preHitFrame
0.350000 Collision_Add.node(WEAPON)|id(1)|scale(1.5)
0.350000 Collision_Add.node(WEAPON)|id(1)|rotation(180, 0, 180) another capsule in the opposite direction, like a twinblade. It has the same ID so the attack will only hit once regardless if both capsules hit the target.
0.400000 Collision_Add.node(NPC L Hand [LHnd])|scale(3.5)
0.400000 weaponswing
0.500000 Collision_Remove.node(WEAPON) this will remove the first collision matching the node
0.500000 HitFrame
0.570000 CastOKStart
0.650000 Collision_Remove.node(WEAPON) this won't remove anything as the previous event removed the collision already (they shared the ID)
0.690000 Collision_Remove.node(NPC L Hand [LHnd])
0.700000 SkySA_AttackWinStart
1.133000 SkySA_AttackWinEnd
1.330000 attackStop
Please let me know if the animation events are missing something that you'd like or are clunky in some way. Keep in mind they can change before the final release.