Skyrim Special Edition

File information

Last updated

Original upload

Created by

scorrp10

Uploaded by

scorrp10

Virus scan

Safe to use

Tags for this mod

Documentation

Readme

View as plain text

HeelsFix V1.7.2

This mod is essentially an upgrade of RaceMenuHH Height Fixes (https://www.nexusmods.com/skyrimspecialedition/mods/18045) mod by ousnius.
This mod is primarily aimed at those who have upgraded to Skyrim AE (1.6.*) version, released in late 2021. For those still on 1.5.97 (pre-AE), there is a mod called 'Misc High Heels Sitting Height Fix', which does this somewhat better. But being an SKSE dll plugin, it will not work in AE. However, this mod should work fine for both SE and VR as well.

What it does:
------------
It corrects Player and NPC poses when they interact with various in-game objects while wearing high heels.
The Racemenu engine does heels by constantly 'floating' a character up by their heel height. This causes character furniture interactions to look weird (i.e. floating above chairs/beds)

The basic fix (what original RacemenuHH does) simply cancels that 'float' during object interaction. Which just sinks the heels into ground. Feet look weird but the rest doesn't.
If you just enable Player/NPC Fixes in the MCM, that is what you'll get.

Enabling 'Advanced' Fixes in the MCM turns on the more in-depth interaction monitoring and appropriate pose adjustment. I tried to make those as lightweight and efficient as possible, but if you seem to have performance issues, leaving advanced Fixes off might work out for you.

On occasion, I came across follower mods that use custom scaling on followers. Specifically making them shorter. (I.e. Taki - Kunoichi Warrior - 0.88 scale) If such follower wears heels, checking the 'Correct Scaled Actors' option should help them align with things.

Also, there is an option to correct positions for scaling for actors not wearing high heels.

Revision 1.7.2
--------------
Corrected some issues with SPID usage.

Revision 1.7.1
--------------
The.esp header version changed from 1.71 to 1.70 in order to be compatible with Skyrim SE versions 1.5.97 and 1.6.xxx prior to 1.6.1130
The "Info" page in the HeelsFix MCM has some extra functionality. If targeting an NPC when entering menu, It will display the NPC name, footwear wrn and heel height.
It also will allow to refresh the NPCs heels by cycling them off/on.
Additionally, if NPC is female, it will give option to equip "test heels" on that NPC (or revert the NPC back to their standard outfit)

Revision 1.7
------------
'Enable NPCs' in MCM Now has 3 options:
Disable = Corrective effects on NPCs disabled.
Cloak = the old way, a cloak style spell on the player will apply the corrective effect on all NPCs within certain radius.
SPID = using the Spell Perk Item Distributor. If you have SPID installed, use this setting. You will need to move to a different cell for the change to start working

A new slider: Heel Refresh Timer. Set to 0 to disable, else it is number of minutes, how often heel wearer shoes get refreshed (cycled off/on) For some players, heels tend to stop working on NPCs after a while, seemingly due to load issues. This might help.

Also fixed a bug where corrective effect would not persist after using werewolf/vampire lord forms.

Revision 1.6.2
--------------
Minor correction: adding the DAR conditional spell to player was 'verbose', displaying 'Heels Fix Spell added' notification - removed.

Also, thanks to gades28, I determined I had an errorr in my scaled actor corrections. Positional transform overrides are subject to scaling. So if I callculated I need to raise a small actor by 12 poiints (and applied as much), actor was only raised by 12 * actor_scale. This was not obvious on scale values closer to 1, but below 0.75 or above 1.5, this became quite niticeable. Now corrected to take actor scaling into effect.

Revision 1.6.1
--------------
Now, any actor actually wearing high heels in the vicinity of player (player included) will receive a 'HeelsFixSpell' ability. And when heels are unequipped or actor goes out of range and correction effect is removed, so is the spell. But what is it for? Simple. If you use any DAR-based conditional High Heel idles, you either needed to
- Install HighHeelsCondition mod that has to use SPID to distribute this spell to NPCs or
- Add high heel form IDs to an ini file so that it can use KID to distribute the keywords to the footwear...
Or you just change DAR contition to something like:
IsFemale() AND
HasSpell("HeelsFix.esp" | 0x811)

Revision 1.6 was set to make use of a 'HasPerk' condition, but it slipped my mind that 'AddPerk' call does not work on NPCs. Hence changing it to a 'HasSpell'.
How is this different from HighHeelsCondition mod? That mod makes use of an external SPID mod to distribute a monitoring spell to all NPCs. And then it registers for Equip/Unequip events. But using that mod, one still needs a correcting mod anyway - such as RacemenuHH or HeelsFix. HeelsFix already uses internal mechanics (no SPID needed) to distribute an effect to all NPCs iin player vicinity, and already monitors for all necessary events. AND it is very diligent about cleaning out effects from any NPC that is no longer in range.

Revision 1.5.1
--------------
Corrected a bug in RaceMenuHH disable portion - things should now load properly.

Revision 1.5
------------
- RacemenuHH begone! People just refuse to read! All too many times I needed to diagnose a 'HeelsFix not working' complaint only to find out people still have RacemenuHH on. As of this revision, HeelsFix will detect presence of RacemenuHH, and kill it: Disable its MCM options, cancel its effects and correction offsets whenever it finds them on any actor.
- Wood chopping block fix is now included.
- Added a castable spell: Heel Refresh(Illusion). It will cycle NPC's footwear off/on, update the transform node, and refresh the correction effect.
If the heels are perma-stuck in ground because your skee64.dll is absent/not working, spell will NOT help. You need to sort that out first.
But it will help if you need to refresh an NPC due to a performance glitch or after changing HeelsFix MCM settings.
Spell tome is sold by Lucan Valerius in Riverwood, and occasionally by other spell vendors. Or you can get it via AddItem or console.
Open console, type: help "heel refresh"
Look for a result starting wih 'SPEL'. It will have form ID like FExxx80D. (i.e. FE07880D)
Type: player.addspell {formID of the spell}
- Better Mu Joint Fix interaction. Acro does not share source code, so I have to deduce MJF nuances by observation alone. MJF fixes the knee bend by elongating the calf. Which causes feet to sink into ground a bit when knees are bent. There is a 'height correction' mechanism that lifts actor so feet don't sink. Which means if they are using furniture, it puts them out of alignment, so there is a setting called 'FurniitureDisable' (FD) to disable height correction when using furniture (true by default) but that means actor feet sink when the sit. If you set it to false, sitting actor feet are on ground, but butt floats a little. Not too much though, so I actually think setting FD=false in MJF ini file is better. My initial idea was to add MJF detection and add a correcting option, inclluding the state of FD flag. And the idea was that with FD off, HF would raise knees and lower butt just a bit more. Problem is, when HF raises knees (and heels), MJF apparently decides that height correction is not needed anyway and does not apply it, so actor ends up sunk through a chair... In any case, if you use MJF, my recommendation:
In Data/SKSE/Plugins/MuJointFix.ini, find 'FurnitureDisable' and set it to 'false'
In HeelsFix MCM, under MJF options leave 'FurnitureDisable' checked, regardless of above ini setting.
For 'Knee correction amount', 3.0 seemed to work best for me.
If you use alternate sitting animation (i.e. Sexy Sit), you might want to disable this (set knee correction amount to 0).
I am working on a more intelligent adjustment which actively examines knee bend, leg angle to ground, and whether legs are crossed, but it is not quite ready.

Revision 1.4
------------
This version adds camera correction options. Please read carefully before using these new features!
Understandably, these features apply to player only. So if your character does not wear high heels, this will do nothing for you. Also, the camera correction is explicitly for high heels usage. If you are using a scaled up/down player character, your camera adjustments should be coming from your scaling solution. I.e. 'Player Size Adjuster' mod.
MCM now has a few more settings, disabled by default.
Correct First Person - enabling this turns on first-person camera correction. This is accomplished by keeping your first-person avatar root adjusted by the same amount as your third-person one.
Correct Third Person - when enabled, this adjusts your over-shoulder idle and combat cameras by the same amount as your root - that is, by the height of your heels. The standard heights of those cameras relative to player shoulder are respectively -10 and 20. But for your convenience, I am providing sliders to adjust camera heights, and they should work even for non-heel-wearing player.
VERY IMPORTANT: This will absolutely clash with any other third-person camera handling mod, such as 'Customizable Camera'. If you use one of those, you need to keep this feature in HeelsFix disabled. Just set your camera through that mod to match your heels.

Revision 1.3.1:
---------------
A correction to the determination of player scaling. Up to now, the mod has relied on GetScale() call to determine if the actor has custom scaling. I historically used 'Player Size Adjuster' mod to set player's height in the game, and effect from that mod is reflected in the GetScale() result. It was brought to my attention, however, that 'Height' slider in 'Body Scales' tab of Racemenu does NOT factor in GetScale, and thus HeelsFix does not recognize it. Now, HeelsFix will check for scaling overrides on the root node as well, which should make the Scaling corrections work for players who changed their height via Racemenu.
A note of caution: I personally recommend using the "Player Size Adjuster and First Person Camera Height Fix SSE" mod instead of moving that Racemenu Height slider. A number of other mods rely on GetScale() alone. I.e. if you using adult animation frameworks like Flower Girls or OStim, messing with height slider will get you rather ugly alignment issues. SexLab checks for it but seems to have a bug where it counts the override scaling twice, so player is overscaled in opposite direction.

Revision 1.3:
-------------
There is now only one version: ESP-FE. It is a light-flagged esp that will not take am esp slot and can load about anywhere in the order.
The 'Smoothing Frames' feature has never worked well, and only made code overly complicated. I am getting rid of it.
Added support for a bunch more interaction markers. (i.e. Oven) The mod now requires DLC .esm's as masters, (Dawnguard, Dragonborn, Hearthfires)
Added 'garbage collection' mechanism to keep track of applied correction effects and delete those that should no longer be there.
Implemented better handling of OnEffectFinish event.
Scaling deviation is now 3.5% by default.

If you are upgrading from version 1.2, I VERY strongly advise to follow these instructions:
1. Launch game, load your game in progress.
2. Go to Heels Fix MCM, take a note of your settings, then disable everything.
3. Move to an interior location and make a manual save.
4. Exit the game and uninstall existing version of Heels Fix.
5. Start the game again and load last save. It will give you warning about HeelsFix missing.
6. Make another manual save and exit game.
7. STRONGLY recommended: open you last save file in Fallrim Tools ReSaver, and use 'Remove unattached instances'
8. Install new HeelsFix.
9. Launch game, loaded the cleaned save. You can now go to HeelsFix MCM to re-enable the corrections.

Revision 1.2:
-------------
Added pose correction for scaled actors NOT wearing heels. It is an additional toggle in MCM. Be careful - a LOT of NPCs in game have scaling that is a couple percent over or under 1.0, so with this option enabled, this script will be VERY active, applying tiny corrections to poses all over the place. The mod will exclude any NPC labelled as a child since children have their own furniture animations tuned to their size. With this option enabled, it definitely WILL conflict with "Furniture Height Size Fix" mod, so pick whichever you prefer.
A new 'Scaling Deviation' Slider in the MCM control how far the scale needs to be from 1.0 for corrections to start applying. I.e. setting it to 0.03 means anything between 0.97 and 1.03 will be treated as normal size and not corrected.
When an actor sits on a furniture too tall for them, the script will not attempt to rotate their legs down - this clips thighs into the furniture and looks real weird. Shorties will just have their legs dangle in the air.
For independent sitting, if there is an upward knee correction, the torso will be leaned back a bit to prevent hands clipping into legs. However, for sitting at tables or bars, the correction will prioritize 'hands on table'. meaning if one hand is on table and another on lap, the latter may clip or hover.

Revision 1.1:
------------
Introduced gradual correction: in the MCM, there is a new 'Smoothing frames' slider. If set to anything over 1, it will break the correction into several frames, overall played over half a second.
This was done in an attempt to make the correction not so abrupt. I am frankly not very pleased with the result. Instead of one jerky move, it rather looks like a bunch of smaller jerky moves. But maybe someone will like it. Leaving the slider at 1 makes the mod work like usual.

Also, added handling for carriage with proper scaling correction calculation.

Requirements:
-------------
Pretty much same as RacemenuHH. Racemenu, SKSE64, SkyUI for MCM. Pretty sure you need AddressLibrary and PapyrusUtilsSE as well. If you are on Anniversary Edition (AE) make sure you get proper versions of all those. XP32 or compatible skeleton would be good to have but should not be required.

Installation:
-------------
Should be quite straightforward, you should not have any sorts of conflicts to resolve. If you are already using RacemenuHH mod by ousnius, you definitely want to go to its MCM and disable both options. Then move to some other location to make sure its correction effects have cleared. You should be able to uninstall RacemenuHH after that.

Issues you might encounter:
--------------------------
In my testing, sometimes the corrections don't kick in right away on a new game. If that happens, go to MCM, disable the fixes, exit, go in again, enable fixes. That should do it.
Correction angles are calculated when weffect is applied or heel height changes. If you want to play with factor sliders, you pretty much need to unequip/reequip your test subject's heels for an adjustment to take effect.

If you are using the 'Sexy Sit Animations' mod - those are sorta created with heels in mind, so these poses either already have legs higher, or legs are stretched far out. And the correction is not looking quite right. You can play with 'Thigh Factor SS' and 'Lean Back Factor' to make those look better, but this will likely mess up vanilla sit idles for NPCs in heels.

Mods like "Immersive Interactions - Animated Actions" - this is a whole another bag of jumping weasels. I did not even go there yet. Those are not really furniture interactions. I would either have to catch those animation events or piggiback on the mod's actual scripts. If I have the time, I might eventuially make an update to account for that mod.

If you are using some adult framework, and want ladies keeping their high heels during action... this mod really leaves it up th them. If you use OStim, I think there is an OHeels add-on. For Flower Girls, the 'Animation Selector' mod includes basic 'sink the heels' correction for kissing scenes. If you use my 'Slot Handler' mod for retaning heels in all scenes, it should handle that as well.

The "Misc HH Height Fix" mod did a better job at pose correction. I.e. feet would remain straight on ground. But it was a .dll plugin, not shackled by the Papyrus engine. I tried to make this lightweight, so I went for simpler adjustments. I.e. legs fix is a single rotation override on the pelvis node. Means feet will be on the floor at a slight angle. You can tinker with Thigh factor to fine-tune it to your liking.

Credits:
-------
Ousnius, author of the original RacemenuHH fix, who graciously allowed me to borrow his mod structure to use as base for this one.
Expired, author of Racemenu
MiscMods, author of the Misc HH Height Fix - mostly for ideas and inspiration.
ElminsterAU, author of SSEEdit
All the great folks behind SKSE, SkyUI, PapyrusUtils etc.
Bethesda for the awesome game!


How this Works (in more technical detail).
--------------------------------------------------
This fully borrows the Effect application framework from the original RaceMenuHHmod by ousnius, with his permission.
If Player Fixes are enabled, the 'Ability' spell is added to player that applies a 'ScaleEffect' magic effect.
If NPC Fixes are enabled, the 'CloakAbility' spell is added to player.
This is a Cloak type spell that will place a 'ApplyEffect' on any nearby NPC.
The 'payload' of this effect is to add 'Ability' to the target, so they also get the 'ScaleEffect' magic effect.

Thus, all NPCs in certain radius of the player are given this effect.

Racemenu High Heels work by checking a special HH_OFFSET float value, typically added to high heels shoes meshes .nif file. If present, Racemenu elevates the actor by this offset. This mod's ScaleEffect checks if its target(Player or NPC) has this offset. It also tracks EquipItem and UnequipItem events to see if offset has changed.
Finally, effect tracks various other events determining when target enters/exits water, sleeps, rides a horse or interacts with various in-game objects. Since actor is shifted up by their heel offset, most such interactions cause visible misalignment - i.e. floating above beds/chairs/horses, leaning on air above counters/fences, etc.

Basic (original)version of this mod fixes this by simply cancelling the heels offset for the duration of interaction. If actor's heels are still on the ground, they will sink into the ground, but the rest of actor is aligned with the chair/horse/crafting station etc.

Advanced version performs a more careful analisys of what type of interaction is taking place and will correct the target's pose in a more appropriate manner.
Types of corrections and some examples:
No correction at all: leaning against walls, mining in-wall ore veins, pouring out a water bucket

Root correction only (shifting entire actor back down): riding, sleeping, laying down, sitting on ledge, etc.

Lean forward: (Actor remains overall shifted up, but their upper body leans a bit forward so their hands are lowered) - leaning on fences and counters, using workbenches, anvils, most other craft stations. For smelters and cooking spits/pots, the forward lean angle is a bit less.

Root + left knee up (Actor shifted down, left leg rotated up a bit) - mostly for tanning racks, really.

Root + knees up: (Actor is shifted down but their lower body is rotated to bring the knees up) - Pretty much for any chairs/benches/thrones/grindstones etc.
One distinction: a lot of chair sitting idles involve placing hands on knees, and with knees brought up, hands clip into knees. The solution is to rotate torso a few degrees back, bringing the hands up. This lean back adjustment, however, is only for free-standing chairs/benches. For sitting at a table or a bar, there is no lean back. Likewise, no extra leanback for Jarl thrones.

What are those 'factor' sliders in the MCM? The mod uses some trignonmetry to determine the rotation angle. Typical thigh length of a scale 1.0 XP32 skeleton female is 35 - this is the 'Thigh factor'. If actor's heels height is 8.0, sine of the needed rotation angle is 8.0/35.0, which works out to 13.2 degrees. For heels 3.0 high, correction is only 4.9 degrees.
***Larger factor value actually result in smaller correction angles and vice versa.*** I think I got these factors tuned fairly well, so playing with these sliders should not be necessary. To recap:
Thigh Factor - leg adjust for sitting on benches in front of tables, on bar stools, jarl thrones, writing chairs, and kneeling using Tanning racks.
Thigh Factor SS - (Simple Sit) leg adjust for sitting on unattached chairs/benches. Should normally be equal to Thigh Factor, unless you use 'Sexy Sit Animation' mod and want to adjust for that.
Lean Forward Factor - for interacting with all sorts of crafting stations, leaning on rails and counters, etc.
Lean Back factor - to use in conjunction with 'Thigh Factor SS' - amount of back lean to prevent hands clipping into knees.

Scaled Actors Math:
It seems that typical sitting surfaces in Skyrim are 30 off the ground, and various work surfaces are about 65 from ground. A 0.88 scale character's bottom in sitting height is 26.4 so she will be sunk 3.6 points into a typical chair. But suppose she wears 9-point heels. This mod will determine that her body needs to be lowered only 9 - 3.6 = 5.4 points. And likewise, her knees need to go up only by that amount.
Working, say, an enchanting table, her hands will be at 57.2, sticking a whopping 7.8 points into the table. With 9-point heels, this mod would normally give her a forward lean to bring the hands 9 points down. But with scaled math enabled, it will lean her only for 9 - 7.8 = 1.2 points.