summaryrefslogtreecommitdiffstats
path: root/CONTEXT.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-10-27 15:22:19 +0100
committersalmonik <salmonik@tuta.io>2026-10-27 15:22:19 +0100
commit27c9ad766e1b1333922b4c14cbde9d9b77c8dab0 (patch)
tree7c758c0d431a389cc3826495b4c6d20ca28c6530 /CONTEXT.md
parentMelee killbot: 360-degree crowbar silent aim (diff)
downloadhl2h-27c9ad766e1b1333922b4c14cbde9d9b77c8dab0.tar.gz
hl2h-27c9ad766e1b1333922b4c14cbde9d9b77c8dab0.zip
Spread control: client-seed no-spread
HL2's CBaseEntity::FireBullets seeds its RNG from the usercmd random_seed (m_bUseServerRandomSeed is false for HL2 weapons), so the client can select the 8-bit seed that puts CShotManipulator::ApplySpread closest to the center. - New feature Spread control -> Active / No spread (both default on). - Precompute the best seed for a single shot and for the shotgun's 8-shot primary (first pellet accurate) and 12-shot secondary windows using the engine's own RandomSeed/RandomFloat from libvstdlib. - Set cmd->random_seed on attack commands; note_modified repairs the CRC. - The random cone offset is neutralized, but the cone size, the pistol accuracy penalty, server view punch and any damage falloff remain server-side; stock HL2 has no distance damage falloff.
Diffstat (limited to 'CONTEXT.md')
-rw-r--r--CONTEXT.md30
1 files changed, 28 insertions, 2 deletions
diff --git a/CONTEXT.md b/CONTEXT.md
index 8fb2197..861fbf8 100644
--- a/CONTEXT.md
+++ b/CONTEXT.md
@@ -111,6 +111,9 @@ HL2hake
111 Assist timing 111 Assist timing
112 Melee killbot 112 Melee killbot
113 Active 113 Active
114 Spread control
115 Active
116 No spread
114 ESP 117 ESP
115 Active 118 Active
116 Show neutral / healthbar / healthnum / name / skeleton / box / speed graph 119 Show neutral / healthbar / healthnum / name / skeleton / box / speed graph
@@ -186,6 +189,27 @@ Binds use SDL scancodes; mouse buttons are pseudo-scancodes 600..604.
186- Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are 189- Vischeck uses the shared `MASK_VISIBLE`/world-only path (static props are
187 ignored). 190 ignored).
188 191
192## Spread control
193
194- HL2's `CBaseEntity::FireBullets` seeds its RNG from
195 `CBaseEntity::GetPredictionRandomSeed(info.m_bUseServerRandomSeed)`; HL2
196 weapons leave `m_bUseServerRandomSeed` false, so the server uses the
197 client usercmd's `random_seed` (masked to 8 bits). This is the TF2-style
198 client-side seed hook.
199- `Spread control -> No spread` precomputes, with the engine's own
200 `RandomSeed`/`RandomFloat`, the 8-bit seed whose
201 `CShotManipulator::ApplySpread` offset is smallest. It sets
202 `cmd->random_seed` on attack commands; `note_modified` repairs the CRC.
203- Shotguns use consecutive seeds per pellet. The primary's first pellet is
204 `FIRE_BULLETS_FIRST_SHOT_ACCURATE`, so the table excludes it; the secondary
205 uses all 12. Separate best starting seeds are precomputed for 1, 8 and 12
206 pellets.
207- This attacks the random cone offset only. The cone size, the pistol's
208 `m_flAccuracyPenalty` growth, the server view punch added to
209 `GetAutoaimVector`, and any damage falloff are server-side state. In
210 single-player those can be written/hooked locally; stock HL2 has no
211 distance damage falloff.
212
189## Jumpbug 213## Jumpbug
190 214
191- Automatic while falling when the predicted landing speed 215- Automatic while falling when the predicted landing speed
@@ -237,6 +261,8 @@ Binds use SDL scancodes; mouse buttons are pseudo-scancodes 600..604.
237 261
238- **GUI**: replace/augment the VGUI ISurface menu with an immediate-mode GUI 262- **GUI**: replace/augment the VGUI ISurface menu with an immediate-mode GUI
239 (Dear ImGui or a custom implementation); needs a design grill first. 263 (Dear ImGui or a custom implementation); needs a design grill first.
240- **Distance weapon spread thesis**: TBD — user will explain. Likely models 264- **Server-side spread/recoil control**: optional single-player writes to the
241 weapon spread as a function of distance for aim/trigger decisions or visuals. 265 pistol accuracy penalty and view punch, and a true zero-cone hook if wanted.
266- **Distance weapon spread thesis**: addressed by Spread control; stock HL2
267 hitscan damage is range-independent, so distance efficiency is the cone.
242 268