diff options
Diffstat (limited to 'CONTEXT.md')
| -rw-r--r-- | CONTEXT.md | 8 |
1 files changed, 8 insertions, 0 deletions
| @@ -298,6 +298,14 @@ vocabulary / decisions. | |||
| 298 | `CBaseEntity::FireBullets`; the `CUniformRandomStream` wrappers and | 298 | `CBaseEntity::FireBullets`; the `CUniformRandomStream` wrappers and |
| 299 | constructor-time `RandomSeed(0)` resets pass other objects and are left | 299 | constructor-time `RandomSeed(0)` resets pass other objects and are left |
| 300 | alone. | 300 | alone. |
| 301 | - Seed choice alone cannot remove all of a shotgun's pellet spread: the best | ||
| 302 | of 256 sequences still leaves its 8/12 draws apart. `CShotManipulator:: | ||
| 303 | ApplySpread` is inlined into `CBaseEntity::FireBullets` and draws x/y via | ||
| 304 | the global `CUniformRandomStream` (`_ZTV20CUniformRandomStream` + 8, slot 1 | ||
| 305 | = `RandomFloat(float,float)`; confirmed against `libvstdlib.so`). The hook | ||
| 306 | returns 0 for those draws only when the calling frame's `this` (at | ||
| 307 | `ebp+8`) is the local server player, so every pellet follows the exact shot | ||
| 308 | direction. NPC fire and the client's prediction stream keep normal values. | ||
| 301 | - This attacks the random cone offset only. The cone size, the pistol's | 309 | - This attacks the random cone offset only. The cone size, the pistol's |
| 302 | `m_flAccuracyPenalty` growth, the server view punch added to | 310 | `m_flAccuracyPenalty` growth, the server view punch added to |
| 303 | `GetAutoaimVector`, and any damage falloff are server-side state. In | 311 | `GetAutoaimVector`, and any damage falloff are server-side state. In |
