diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-04 23:26:53 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-04 23:26:53 +0100 |
| commit | 074e315c8550712dce0c7b530a90eee6aca29e63 (patch) | |
| tree | fc5d6ecf6dce582971f0c3878b68f4714b8e6fba /CONTEXT.md | |
| parent | Chams: working alpha via RenderView blend and a custom VMT (diff) | |
| download | hl2h-074e315c8550712dce0c7b530a90eee6aca29e63.tar.gz hl2h-074e315c8550712dce0c7b530a90eee6aca29e63.zip | |
Add grenade trajectory, RPG armour priority, empty chargers, mega gravity gun
- Projectiles gets a "Grenade trajectory" toggle. While a frag grenade is
held, simulate the weapon_frag throw (1200 u/s forward + 120 z, player
velocity, gravity 600) and trace each step with a new
trace_solid_segment(); reflect on impact, stop on a slow upward-normal hit,
and draw the path, landing cross and a 300-unit blast ring. Verified on :99
(arcs, bounces off the tunnel wall, lands).
- With the RPG equipped, armoured NPCs (striders, gunships, dropships,
hunter-choppers) sort before normal enemies during target acquisition.
Added helicopter/chopper to the ARMORED model list.
- Empty health/suit chargers are hidden: read m_iJuice from the server
datamap (0 = depleted, -1 = unreadable/fail open).
- The citadel supercharged gravity gun (d3_citadel_03, d3_citadel_04,
d3_breen_01 via IVEngineClient::GetLevelName) is treated as a normal
weapon, so the melee aimbot no longer restricts it to VULNERABLE NPCs.
Diffstat (limited to '')
| -rw-r--r-- | CONTEXT.md | 35 |
1 files changed, 28 insertions, 7 deletions
| @@ -201,9 +201,10 @@ vocabulary / decisions. | |||
| 201 | 201 | ||
| 202 | - Every NPC is classified for ESP and target selection: | 202 | - Every NPC is classified for ESP and target selection: |
| 203 | - `IMMUNE` — server `m_takedamage` is `DAMAGE_NO`/`DAMAGE_EVENTS_ONLY`. | 203 | - `IMMUNE` — server `m_takedamage` is `DAMAGE_NO`/`DAMAGE_EVENTS_ONLY`. |
| 204 | - `ARMORED` — gunship, strider, dropship: their `OnTakeDamage` only accepts | 204 | - `ARMORED` — gunship, strider, dropship, hunter-chopper: their |
| 205 | blast damage (`DMG_BLAST`, with a damage threshold on gunships and a | 205 | `OnTakeDamage` only accepts blast damage (`DMG_BLAST`, with a damage |
| 206 | distance check on striders). Only the RPG passes; bullets/grenades do not. | 206 | threshold on gunships and a distance check on striders). Only the RPG |
| 207 | passes; bullets/grenades do not. | ||
| 207 | - `VULNERABLE` — headcrab, antlion, manhack: punting them with the gravity | 208 | - `VULNERABLE` — headcrab, antlion, manhack: punting them with the gravity |
| 208 | gun / physics impact damage kills them. | 209 | gun / physics impact damage kills them. |
| 209 | - `NORMAL` — everything else. | 210 | - `NORMAL` — everything else. |
| @@ -213,7 +214,10 @@ vocabulary / decisions. | |||
| 213 | created at glyph size 10 alongside the 16 px body font (`g_font_small`). | 214 | created at glyph size 10 alongside the 16 px body font (`g_font_small`). |
| 214 | - Aimbot/silent aim/triggerbot/melee skip `IMMUNE` targets always and | 215 | - Aimbot/silent aim/triggerbot/melee skip `IMMUNE` targets always and |
| 215 | `ARMORED` targets unless the active weapon is the RPG | 216 | `ARMORED` targets unless the active weapon is the RPG |
| 216 | (`active_weapon_contains` for `rocket_launcher`/`rpg`). | 217 | (`active_weapon_contains` for `rocket_launcher`/`rpg`). With the RPG |
| 218 | equipped, armoured candidates are sorted before normal enemies (a | ||
| 219 | `fov - 1000` rank key), so a strider/gunship is acquired even when a normal | ||
| 220 | NPC is closer to the crosshair. | ||
| 217 | - Server `m_takedamage` is a `char` in the 2013 SDK | 221 | - Server `m_takedamage` is a `char` in the 2013 SDK |
| 218 | (`CNetworkVarForDerived(char, m_takedamage)`, `FIELD_CHARACTER`), so it is | 222 | (`CNetworkVarForDerived(char, m_takedamage)`, `FIELD_CHARACTER`), so it is |
| 219 | resolved with that type (int fallback) and read as a byte. `0/1` means no | 223 | resolved with that type (int fallback) and read as a byte. `0/1` means no |
| @@ -402,7 +406,11 @@ vocabulary / decisions. | |||
| 402 | `IN_ATTACK`: the primary attack launches a held object along | 406 | `IN_ATTACK`: the primary attack launches a held object along |
| 403 | `EyeVectors()`. No aim-punch compensation is applied there (EyeVectors does | 407 | `EyeVectors()`. No aim-punch compensation is applied there (EyeVectors does |
| 404 | not add punch); the crowbar path keeps it. Without a held object the primary | 408 | not add punch); the crowbar path keeps it. Without a held object the primary |
| 405 | is a short physics punch. | 409 | is a short physics punch. The citadel supercharges the gravity gun |
| 410 | (`d3_citadel_03`, `d3_citadel_04`, `d3_breen_01`; detected through | ||
| 411 | `IVEngineClient::GetLevelName`, slot 51), and there it is treated as a | ||
| 412 | normal weapon: the `VULNERABLE`-only filter is dropped, so any damageable | ||
| 413 | hostile NPC is selected. | ||
| 406 | - Map transitions often switch the active weapon away from the crowbar. The | 414 | - Map transitions often switch the active weapon away from the crowbar. The |
| 407 | state change is logged as `melee: active ... crowbar=0/1` (normal log), and | 415 | state change is logged as `melee: active ... crowbar=0/1` (normal log), and |
| 408 | a one-time toast says to equip the crowbar. If the client weapon model is | 416 | a one-time toast says to equip the crowbar. If the client weapon model is |
| @@ -694,7 +702,10 @@ vocabulary / decisions. | |||
| 694 | 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 |
| 695 | buckshot count 30 against a max of 3, permanently hiding rockets). | 703 | buckshot count 30 against a max of 3, permanently hiding rockets). |
| 696 | - 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 |
| 697 | fullness filter. | 705 | fullness filter. Empty health/suit chargers are still hidden: both |
| 706 | `CWallHealth` and `CNewRecharge` expose `m_iJuice` (server datamap | ||
| 707 | `FIELD_INTEGER`, resolved at offset 0x47c in this build), and a value of 0 | ||
| 708 | removes the charger tag until it recharges. `-1` (unreadable) fails open. | ||
| 698 | - Scans the client entity list every 100 ms and tags health, ammo, armor/suit, | 709 | - Scans the client entity list every 100 ms and tags health, ammo, armor/suit, |
| 699 | world weapon pickups, the two supply-crate models and generic items. | 710 | world weapon pickups, the two supply-crate models and generic items. |
| 700 | - Each tag is a colored marker with a name and optional distance, filtered by | 711 | - Each tag is a colored marker with a name and optional distance, filtered by |
| @@ -733,7 +744,17 @@ vocabulary / decisions. | |||
| 733 | is a 24-segment horizontal circle projected at the projectile height, with | 744 | is a 24-segment horizontal circle projected at the projectile height, with |
| 734 | every segment near-plane/screen clipped independently, so it still draws | 745 | every segment near-plane/screen clipped independently, so it still draws |
| 735 | when the grenade itself is off-screen or behind the camera. | 746 | when the grenade itself is off-screen or behind the camera. |
| 736 | Toggles: Fuse timer, Blast radius. | 747 | Toggles: Fuse timer, Blast radius, Grenade trajectory |
| 748 | (`[projectiles] trajectory=1`). | ||
| 749 | - Grenade trajectory: while the frag weapon is active, simulate the throw | ||
| 750 | from `weapon_frag.cpp` (eye + forward*18 + right*8, player velocity + | ||
| 751 | (forward + 0.1 z)*1200), gravity 600, dt 0.02, restitution 0.35, friction | ||
| 752 | 0.35. Each step traces with `trace_solid_segment` (EngineTraceClient003 slot | ||
| 753 | 4, `MASK_PLAYERSOLID`, local player ignored); hits reflect about the impact | ||
| 754 | normal, and an upward normal with a slow vertical speed marks the landing. | ||
| 755 | The polyline, landing cross and a 300-unit blast-radius ring at the landing | ||
| 756 | are drawn with the same near-plane-clipped projector as the radius ring. | ||
| 757 | Verified on `:99` (the line arcs, bounces off a tunnel wall and lands). | ||
| 737 | 758 | ||
| 738 | ## Roadmap / TODO | 759 | ## Roadmap / TODO |
| 739 | 760 | ||
