summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-05 18:09:43 +0100
committersalmonik <salmonik@tuta.io>2026-11-05 18:09:43 +0100
commita5d732920bd56c96e85db1ce2073bebf53e6b1ea (patch)
tree2692a1f19f5b6cc33d015091f3a176062ea9bcf3 /CONTEXT.md
parentGrenade trajectory: actual grenade state, full-length path, rounder rings (diff)
downloadhl2h-a5d732920bd56c96e85db1ce2073bebf53e6b1ea.tar.gz
hl2h-a5d732920bd56c96e85db1ce2073bebf53e6b1ea.zip
Items: keep health chargers visible, add charger diagnostics
The health charger's candidate m_iJuice offset (0x3c8) read 0 on a full charger, so the empty-hide made health chargers disappear entirely. Restrict the hide to suit chargers (verified 0x47c) until the health offset is confirmed; health chargers stay visible. Classify with the server class name when the client class is generic, accept `healthcharger` in the health branch (maps use item_healthcharger / CNewWallHealth, not the func_healthcharger brush), and log up to eight `juice:` lines with the class and both candidate offsets/values.
Diffstat (limited to '')
-rw-r--r--CONTEXT.md17
1 files changed, 10 insertions, 7 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index 54ca0b4..8ff833c 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -702,13 +702,16 @@ vocabulary / decisions.
702 Reading at the raw offset shifted every count by one type (e.g. RPG read the 702 Reading at the raw offset shifted every count by one type (e.g. RPG read the
703 buckshot count 30 against a max of 3, permanently hiding rockets). 703 buckshot count 30 against a max of 3, permanently hiding rockets).
704- Chargers and ammo/supply crates are dispensers and are exempt from the 704- Chargers and ammo/supply crates are dispensers and are exempt from the
705 fullness filter. Empty health/suit chargers are still hidden: both 705 fullness filter. Empty **suit** chargers are hidden (`CNewRecharge`
706 `CWallHealth` (health brush) and `CNewRecharge` (suit charger) expose 706 `m_iJuice` at 0x47c, derived from `m_iMaxJuice - 20`; 0 = depleted, -1
707 `m_iJuice`, but at different offsets because their bases differ 707 unreadable fails open). Health chargers are currently left visible: their
708 (`CBaseToggle` vs `CBaseAnimating`). `datamap_offsets` collects every match; 708 candidate `m_iJuice` offset (0x3c8 for `CWallHealth`/`CNewWallHealth`) read 0
709 the suit offset is `m_iMaxJuice - 20` and the health offset is the other 709 on a full charger, so the empty-hide is not trusted yet.
710 `m_iJuice` match (0x47c / 0x3c8 in this build). `server_item_juice` picks 710 `server_item_juice` logs up to eight `juice:` lines with the class and both
711 by the server class name. 0 removes the tag; -1 (unreadable) fails open. 711 candidate values to finish diagnosing this. Item classification also falls
712 back to the server class name when the client class is generic, and the
713 health branch accepts `healthcharger` (maps use `item_healthcharger`,
714 i.e. `CNewWallHealth`, not the `func_healthcharger` brush).
712- Scans the client entity list every 100 ms and tags health, ammo, armor/suit, 715- Scans the client entity list every 100 ms and tags health, ammo, armor/suit,
713 world weapon pickups, the two supply-crate models and generic items. 716 world weapon pickups, the two supply-crate models and generic items.
714- Each tag is a colored marker with a name and optional distance, filtered by 717- Each tag is a colored marker with a name and optional distance, filtered by