summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-04 14:28:21 +0100
committersalmonik <salmonik@tuta.io>2026-11-04 14:28:21 +0100
commit714262bcf759a238daf906de16e7b204712a104f (patch)
treed208ecfbbdb0f5f2f27aa888c806e38198ad1d52 /CONTEXT.md
parentRemove gamma slider; keep HDR brightness (diff)
downloadhl2h-714262bcf759a238daf906de16e7b204712a104f.tar.gz
hl2h-714262bcf759a238daf906de16e7b204712a104f.zip
Add usable item filter, projectile ESP and gravity-gun melee
- Items: "Only if usable" hides health tags at full health and armor at full suit. Health ceiling is the server player's m_iMaxHealth; armor uses the server m_ArmorValue against HL2's 100 cap. Fails open when unreadable. - Projectiles: new Visuals feature/card for thrown grenades, RPG rockets, helicopter bombs and AR2 balls. Fuse from server m_flDetonateTime vs engine time; radius from m_DmgRadius with per-type fallback; optional 24-segment radius ring and FRAG timer label. - Melee: the killbot now handles the gravity gun as well; only VULNERABLE targets, 1200-unit range, primary attack to launch the held object, and no aim-punch compensation because the launch uses EyeVectors. - Server/netvars: m_ArmorValue, m_flDetonateTime, m_DmgRadius.
Diffstat (limited to 'CONTEXT.md')
-rw-r--r--CONTEXT.md42
1 files changed, 35 insertions, 7 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index 5c91b5c..96a4660 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -310,10 +310,16 @@ vocabulary / decisions.
310 310
311## Melee killbot 311## Melee killbot
312 312
313- Active only while the local player's active weapon is the crowbar. The 313- Active only while the local player's active weapon is the crowbar or the
314 client `m_hActiveWeapon` handle is used first; if it is missing, the 314 gravity gun. The client `m_hActiveWeapon` handle is used first; if it is
315 authoritative server `m_hActiveWeapon` handle (0x824) is used to get the 315 missing, the authoritative server `m_hActiveWeapon` handle (0x824) is used
316 weapon entity index. 316 to get the weapon entity index.
317- With the gravity gun, only `VULNERABLE` targets (headcrab, antlion,
318 manhack) are selected, the range is 1200 units, and the attack button is
319 `IN_ATTACK`: the primary attack launches a held object along
320 `EyeVectors()`. No aim-punch compensation is applied there (EyeVectors does
321 not add punch); the crowbar path keeps it. Without a held object the primary
322 is a short physics punch.
317- Map transitions often switch the active weapon away from the crowbar. The 323- Map transitions often switch the active weapon away from the crowbar. The
318 state change is logged as `melee: active ... crowbar=0/1` (normal log), and 324 state change is logged as `melee: active ... crowbar=0/1` (normal log), and
319 a one-time toast says to equip the crowbar. If the client weapon model is 325 a one-time toast says to equip the crowbar. If the client weapon model is
@@ -328,9 +334,9 @@ vocabulary / decisions.
328 movement keys are rotated with `preserve_movement`, and the rendered view is 334 movement keys are rotated with `preserve_movement`, and the rendered view is
329 restored immediately and at `FRAME_RENDER_START` (same silent-aim path). 335 restored immediately and at `FRAME_RENDER_START` (same silent-aim path).
330 This gives a 360-degree silent melee attack. 336 This gives a 360-degree silent melee attack.
331- While the crowbar is active and the killbot feature is on, the gun aimbot, 337- While either melee weapon is active and the killbot feature is on, the gun
332 triggerbot and silent aim are skipped to avoid fighting over the usercmd 338 aimbot, triggerbot and silent aim are skipped to avoid fighting over the
333 view. 339 usercmd view.
334- Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are 340- Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are
335 ignored). 341 ignored).
336 342
@@ -583,6 +589,11 @@ vocabulary / decisions.
583## Valuable items 589## Valuable items
584 590
585- Visuals feature; Active is on by default and unbound (always-on). 591- Visuals feature; Active is on by default and unbound (always-on).
592- "Only if usable" (`[items] usable=1`) hides health pickups when the local
593 player is at full health and armor pickups at full suit. The health ceiling
594 is the server player's `m_iMaxHealth` (not a hardcoded 100); armor uses the
595 HL2 `MAX_NORMAL_BATTERY` cap of 100, read from the server
596 `m_ArmorValue`. If the values cannot be read the filter fails open.
586- Scans the client entity list every 100 ms and tags health, ammo, armor/suit, 597- Scans the client entity list every 100 ms and tags health, ammo, armor/suit,
587 world weapon pickups, the two supply-crate models and generic items. 598 world weapon pickups, the two supply-crate models and generic items.
588- Each tag is a colored marker with a name and optional distance, filtered by 599- Each tag is a colored marker with a name and optional distance, filtered by
@@ -601,6 +612,23 @@ vocabulary / decisions.
601 item crates. The item scan falls back to the server entity's model index 612 item crates. The item scan falls back to the server entity's model index
602 (`server_model_index`) to recover the model name. 613 (`server_model_index`) to recover the model name.
603 614
615## Projectile ESP
616
617- Visuals feature `g_projectiles` (`[projectiles]`, Active on, unbound).
618- Scans the client entity list every 100 ms for world-model `w_grenade`,
619 `w_missile*`, `helicopter_bomb` and `combineball`. Weapon entities are
620 excluded by class (`...weapon...`); thrown grenades are recognised by
621 `CGrenadeFrag`-style class names or by an owner handle.
622- Fuse: `CBaseGrenade::m_flDetonateTime` is not networked, so it is read from
623 the server entity datamap (`FIELD_TIME`) and compared with
624 `IVEngineClient::Time()` (slot 14). RPG rockets have no fuse.
625- Blast radius: networked client `m_DmgRadius` when available, server
626 `m_DmgRadius` (`FIELD_FLOAT`) as fallback, then 300/200/150/300 for
627 frag/RPG/AR2/bomb.
628- Draws a small marker and a `FRAG 1.2s`-style label; the optional radius ring
629 is a 24-segment horizontal circle projected at the projectile height.
630 Toggles: Fuse timer, Blast radius.
631
604## Roadmap / TODO 632## Roadmap / TODO
605 633
606- **Server-side spread/recoil control**: not planned; recoil and accuracy 634- **Server-side spread/recoil control**: not planned; recoil and accuracy