Fix mount stability, speed parsing, combat dismount, and self-targeting

- Fix SMSG_FORCE_RUN_SPEED_CHANGE parsing (missing uint32 field caused garbage speed)
- Always send speed ACK to prevent server stall, even on invalid values
- Defer mount model loading to next frame to avoid render-loop hang
- Compute mount height from tight vertex bounds instead of M2 header bounds
- Dismount when entering combat or casting spells while mounted
- Prevent auto-attacking yourself when self-targeted
- Leave combat when 40+ yards from target, close vendor at 15+ yards
- Pre-open X11 display for reliable mouse release in signal handlers
This commit is contained in:
Kelsi 2026-02-07 18:33:14 -08:00
parent 643611ee79
commit 0874f4f239
6 changed files with 242 additions and 146 deletions

View file

@ -190,8 +190,10 @@ void CameraController::update(float deltaTime) {
speed = WOW_BACK_SPEED;
} else if (ctrlDown) {
speed = WOW_WALK_SPEED;
} else if (runSpeedOverride_ > 0.0f && runSpeedOverride_ < 100.0f && !std::isnan(runSpeedOverride_)) {
speed = runSpeedOverride_;
} else {
speed = (runSpeedOverride_ > 0.0f) ? runSpeedOverride_ : WOW_RUN_SPEED;
speed = WOW_RUN_SPEED;
}
} else {
// Exploration mode (original behavior)