WASD: resume the walk right after a weapon set switch (untested in-game)
Switching between weapon classes resets the hero's animation state inside cUI_Taskbar2::SelectWeaponSet, which dropped the walk for a tick. The hook sends the WASD walk again at once. Checkpoint before the movement rework. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
184c7058fd
commit
d296e2850b
4 files changed
+79
-12
No files matched your search
@@ -36,6 +36,7 @@
|
||||
#include "game/engine/objects.h"
|
||||
#include "game/ui/text.h"
|
||||
#include "mods/skillslots.h"
|
||||
#include "mods/wasd.h"
|
||||
#include "re/hook.h"
|
||||
#include "re/log.h"
|
||||
#include "re/patch.h"
|
||||
@@ -307,6 +308,18 @@ void __fastcall UiTaskbar_SelectSkillSlot(void* self, void* edx, uint32_t slot,
|
||||
}
|
||||
}
|
||||
|
||||
// cUI_Taskbar2::SelectWeaponSet (0x6e1440, ret 8): sends the hero the
|
||||
// weapon set order (0x114) and, when the weapon class changed, resets its
|
||||
// animation state (0x54e540), which drops a walk for a tick (measured
|
||||
// 2026-10-18: action walk -> idle -> walk on switches between melee and bow
|
||||
// sets, none between melee sets). A WASD walk goes on at once.
|
||||
void __fastcall UiTaskbar_SelectWeaponSet(void* self, void* edx, uint32_t set, int notify);
|
||||
RE_HOOK(0x006e1440, UiTaskbar_SelectWeaponSet);
|
||||
void __fastcall UiTaskbar_SelectWeaponSet(void* self, void* edx, uint32_t set, int notify) {
|
||||
UiTaskbar_SelectWeaponSet_original(self, edx, set, notify);
|
||||
mods::wasd::ResumeWalk();
|
||||
}
|
||||
|
||||
// cUI_Taskbar2::RenderArtSlots (0x6e31e0): then the cooldown labels.
|
||||
void __fastcall UiTaskbar_RenderArtSlots(void* self, void* edx, void* renderer);
|
||||
RE_HOOK(0x006e31e0, UiTaskbar_RenderArtSlots);
|
||||
|
||||
Reference in new issue
Block a user