summaryrefslogtreecommitdiffstats
path: root/src/bones.cpp
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-10-28 13:02:26 +0100
committersalmonik <salmonik@tuta.io>2026-10-28 13:02:26 +0100
commitb212e8e13835cfdc4849a61c1b57146bd0312a29 (patch)
tree128a64c8c20411749ee8ea4a78ef4a51a9604515 /src/bones.cpp
parentCombat: fix silent-aim spread seed and lead projectiles (diff)
downloadhl2h-b212e8e13835cfdc4849a61c1b57146bd0312a29.tar.gz
hl2h-b212e8e13835cfdc4849a61c1b57146bd0312a29.zip
Melee: surface weapon state across maps; reset stale caches
- Map transitions often leave a non-crowbar weapon active, so the killbot silently does nothing. Log every active-weapon change as a normal `melee: active ... crowbar=0/1` line and toast once suggesting the crowbar. - Recover the crowbar model from the server entity when the client weapon model index is missing/0 after a map change. - Clear the bone cache and aim/silent locks when the local player entity changes (map load/respawn) so stale entity/model data cannot poison melee target selection.
Diffstat (limited to '')
-rw-r--r--src/bones.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/bones.cpp b/src/bones.cpp
index 0df13f2..c777067 100644
--- a/src/bones.cpp
+++ b/src/bones.cpp
@@ -509,6 +509,19 @@ bool head_position(int idx, Vector &out) {
509// Collect world-space aim points for the selected hit groups (HITGROUP_*). 509// Collect world-space aim points for the selected hit groups (HITGROUP_*).
510// Group 1 (head) uses head_position for its bone fallback; other groups are 510// Group 1 (head) uses head_position for its bone fallback; other groups are
511// the hitbox centers. The caller picks the point nearest to the crosshair. 511// the hitbox centers. The caller picks the point nearest to the crosshair.
512void bones_clear() {
513 for (auto &e : g_entries) {
514 e.ent = nullptr;
515 e.valid = false;
516 e.hdr = nullptr;
517 e.count = 0;
518 e.stamp = 0.0;
519 }
520 g_next = 0;
521 g_logged = 0;
522 g_renderable_warned = false;
523}
524
512int aim_points(int idx, unsigned group_mask, Vector *out, int max) { 525int aim_points(int idx, unsigned group_mask, Vector *out, int max) {
513 if (!out || max <= 0) 526 if (!out || max <= 0)
514 return 0; 527 return 0;