File information

Last updated

Original upload

Created by

Penta-limbed-cat

Uploaded by

ProfJack

Virus scan

Safe to use

About this mod

SKSE plugin that triggers killmoves after the killing blow lands, plus prone execution and custom killmove system etc.

Requirements
Permissions and credits
Changelogs
Check out Kaputt, an updated and expanded version of this mod.



Support Me: 
Patreon

You
NEED to download & install the optional "PHKM - Vanilla Killmoves" to be able to perform vanilla killmoves. The main file is but an EMPTY FRAMEWORK. I separated animation entries from the plugin in case people want to test their own animations.


What is this?
This is a SKSE plugin that triggers killmoves on hit. In vanilla Skyrim killmoves are triggered when an attack is initiated, that is, before it actually lands on an opponent. This means npcs can straight up kill you even if you're able to evade their attacks, and you may not perform killmoves on them because you stand slightly off the spot.
This mod fixed it by triggering a killmove only when a hit was taken and when its actual damage exceeds victim's health.


Features
Post-hit Killmove

After taking a hit, this mod decides whether the hit kills. If yes, it then picks a killmove to play according to various conditions.
Configuration & Custom Animation
Configure the mod either by editing data/SKSE/plugins/PHKM.json, or by CatMenu from my 5LCat's Util. Integrate your custom killmoves by adding entries to data/SKSE/plugins/PHKM/entries folder. Detailed instruction below.
How do I make custom killmoves? Check out my toolkit HkxMerge.

Prone Execution
If configured, bleedout/ragdolled enemies may die in one hit.
Custom Trigger
Trigger killmoves by pressing a key. With many conditions including stamina cost, enemy hp etc.


Configuration
The configuration file is at data/SKSE/plugins/PHKM.json, but you can also configure in-game using CatMenu from my mod 5LCat's Utils. By default, press back slash [\] to invoke the menu. Select 'Post-hit Killmove' in the drop down list, and options will be shown.



Custom Trigger
You can also trigger killmoves by pressing a customizable key. The key entries file is located at data/SKSE/plugins/PHKM/keys.json, but you can also configure it in game, as shown below. (Although it is suggested that you edit anim list in text editor, as it's more convenient).
In game, if you pressed the button you've set, the npc at your crosshair will become the victim of your killmove (if you use BTPS, it'll affect selection too), and the trigger sound will play to tell you that a target has been selected. The mod will then pick an animation from the anim list (if it's empty, then all animations are considered) and play it.
For DX Scancode, refer to this.
The content of keys.json is something like this:
Spoiler:  
Show
{
    "key_entries": [
        {
            "anims": [
"Animation1",
"Animation2"
],
            "enemy_hp": 0.9900000095367432,
            "key": 9,
            "level_diff": 0,
            "name": "New Key",
            "sound": "MAGAlterationReleaseSD",
            "stamina_cost": 30.0
        }
    ]
}




Requirements 
  • This mod requires SKSE and Address Library. I personally play on AE so SE versions are not tested.
  • 5LCat's Utils is optional if you want in-game configuration.
  • Killmove Paralysis Prevention is optional. It makes npcs in killmove immune to paralysis, but it cannot prevent paralysis on the first hit.

Installation
Install like every other mods: use a mod organizer or put files in data folder. Remember to rerun FNIS/Nemesis if new animations are installed.
Since this mod is script-free you can uninstall it at any time.


Compatibility
  • Violens & other killmove mods that utilizes vanilla killmove system: Compatible. Vanilla killmove system is not disabled by this mod. In fact, if you want it disabled you'll need other mods to do that. Violens can disable kill cam if don't want it.
  • Mods that adds non-humanoid variant races: Compatible. Some mods like Revenge of Enemies add variant races of vanilla enemies. To be able to perform killmoves on them, either configure yourself, or use the skeleton config so that races with identical skeletons will play the same animations.
  • Mods that adds scripted staggering: Small issues. Sometimes staggering would cancel or delay the animation. This mod tries to avoid them by removing the stagger value of the hit. However, mods like Deflection which adds scripted timed block stagger are not handled.
  • Project Impact: Incompatible. Its animation will override mine.

Issues
  • Animated ragdoll executions are almost working. Still, 1. You may be glitched out of bound due to ragdoll positioning. 2. If somehow the animation is interrupted, the victim may get up and float in place.

Source & Credit
Souce Link
  • Ryan for CommonLibSSE.
  • powerofthree, LokiWasTaken, maxsu, ersh for I secretly plagiarized referenced their codes.
  • dTry for helping me with a lot of stuff.
  • Roggvir(0x000A3BDB) for I killed too many of him during testing.








For modders: Adding your custom killmoves
  • Make your animation and export as hkx.
  • Make your behaviour file with either FNIS or Nemesis.
  • Create an idle object for your paired animation within CK that has no condition.
  • Create an json file with any name under data/SKSE/plugins/PHKM.
  • Fill in entries that tells the plugin about your killmoves.
  • Generate behaviours with FNIS or Nemesis.
  • Profit.

This is what an entry json file may look like:



"example_km" is the name of your entry. It should be the EditorID of your Idle Object. One file may contain multiple entries.
"unpaired_anim_info" is only for unpaired animaitons, which is now unused. You can ignore this part.
"conditions" contains conditions required to trigger this killmove.
"attacker/victim" contains variable checks on the attacker/victim.
"weaptype_l/r" checks if the weapon on the left/right hand is of given type (See Link). Negative value means not of given type.
"race" checks if actor's one of the races given. Here it checks whether the victim is a bear.
"faction" (not shown here) checks if actor belongs to certain faction.
"skeleton" (not shown here) checks if actor uses certain skeleton file.
"keyword" (typo in screenshot, no 's') checks keywords of actor's certain properties. Here "race" with "ActorTypeNPC" means the attacker must be humanoid. You can also check "actor" "weapon_l" "weapon_r".
* On arrays (bracketed conditions): by default the mod checks whether actor is any of the items. If you want it to be all of them, add another bracket. Adding another bracket will revert to any. So [1,[2,[3,4]]] = (1 OR (2 AND (3 OR 4))). For example, the keyword check for a dwarven/daedric battleaxe could be written as [[[WeapMaterialDwarven, WeapMaterialDaedric], WeapTypeBattleAxe]].
"misc" contains other info that needs to be filled.
"is_execution", "decap", "sneak" self-explanatory.
"min_angle", "max_angle" limits what angle the attacker's position may be relative to victim's facing. 0 is straight ahead, 90 & -90 are right & left.
In general, the entry above defines a killmove that can only be triggered when a humanoid hits a bear with a greatsword in front.

If you have many animations with similar conditions, you can define "bases" which is like components of entries. For example the entry above can be re-written as:


Here in "bases", I defined several incomplete entries as bases for my actual entry "examplekm".
  • "root" defines a human-to-human non-execution non-decap non-sneaking front-facing killmove, which is probably what most killmoves would be.
  • "2h_sword" requires the attacker to wield a greatsword.
  • "bear" redefined victim's race as bears, "null" here means removal.
And in the actual entry, the item "base" contains all the bases that the entry is based upon. By combining them one by one, latter overriding former, you get the final entry that is equivalent to the first example.