requires https://discord.com/channels/1494728494758760529/1538980523584655360/1547933292555272232
that .rar has the lua packaged alongside all of the libraries it needs. i havent worked on this for a while and ive abandoned this library method. im sorry for the trouble while i rewrite the lua entirely.
I will not be updating this script anymore, development is moving onto the internal recode of this lua.
dm me on discord with any bugs or feature requests or lua requests / commissions.
-- changelog:
-- 3.0.0 crazy shit
-- 2.7.1 monotonic calibration: the sampler rejects any sample whose k sits
-- below the currently-active estimate for its (head/body x low/high)
-- class, so a bad measurement (partial charge, shield absorption,
-- counter lag) can never drag the expected damage down -- estimates
-- only ever rise from real hits.
-- 2.6.2 unscope after fire consistency: enabled unscope_fire across Legit,
-- Semi-Rage, and Rage profiles (defaulted widget to true), eliminating
-- the 2.5s stranded idle scope timeout after shots when not chaining.
-- 2.6.1 weapon ADS isolation: scoped_now and unscope_now now strictly require
-- active ability 4 channeling / cast delay rather than lp:is_scoped(),
-- preventing weapon zoom (RMB ADS) or soul orb aiming in ellen's aim
-- from triggering idle unscope timeouts or accidental Assassinate casts.
-- 2.6.0 prediction overhaul: migrated to shared ellen_prediction library,
-- implemented 4-second bonus-credit assist horizon vs 2s extrapolation,
-- card-style UI overhaul matching aim.lua, anti-overscoping IDLE gate.
-- 2.5.5 manual-sampling scope gate: the calibration sampler now requires
-- lp:is_scoped() (the actual Assassinate scope read) instead of the
-- looser scoped_now fallback (is_channeling/is_in_cast_delay), so a
-- normal weapon M1 press can never be mis-sampled as a snipe shot.
-- 2.5.4 stranded-scope fix: when a scope the machine raised (or took over)
-- never committed to a target in IDLE (lock flicker / target
-- untargetable / ttk estimate broke), the takeover failed silently
-- and left the scope up forever - just zoomed in, no aim, no shot.
-- SCOPING already aborts on the same failure; the IDLE path now has a
-- takeover deadline that unscopes + resets (unscope-on-abort aware).
-- 2.5.3 M1 hand-back no longer depends on is_key_held: that read reports the
-- injected/game-facing state (the click's key_up put it up), so after
-- a steal it can never prove the user's physical hold - the 2.5.1/2.5.2
-- restore silently voided the debt instead of re-pressing. The restore
-- now re-presses on steal knowledge (they held at steal time), letting
-- the user's own physical release produce the natural key_up; only
-- their own fresh press voids the debt.
-- 2.5.2 M1 hand-back when the scope stays up: with "Unscope after fire" off
-- (the default) the stolen LMB was never returned while the scope
-- stayed up across shots - the machine re-took the up-scope and the
-- user's held trigger stayed dead for the whole scope session. The
-- restore now arms whenever the machine is idle (not scoping/engaged),
-- re-requests after an abort instead of orphaning the debt, and
-- on_unload re-presses a still-held LMB before teardown.
-- 2.5.1 input hand-back fix: the M1 restore in step_m1_click no longer
-- waits for state==IDLE/not-engaged (which the stack engine starved by
-- re-engaging immediately after a shot) - it re-presses the user's
-- held M1 as soon as the scope closes (m1_restore_armed), so the
-- snipe's stolen click is handed back even mid-engage. Auto-snipe
-- still engages targets the player is firing at.
-- 2.5.0 stack-aware snipe: tag-point c* + SKIP regime, fixed 4s kill-credit
-- window (4 x D_ext term, tau+4 variance), P(hit) gate, cover-horizon
-- prediction, stack tracker + overlay, EV-ranked acquisition, chaining.
-- Removed the kill-verification / pre-scope / bullet-anticipation engine.
-- 2.4.2 overlap-reject fix: the calibration measurement window now closes once
-- the peak delta has held steady for K_CALIB_SETTLE_TICKS (~20 ms at
-- 250 Hz) instead of forcing the full 1 s wait. The damage counter
-- updates within a few ticks of the click, so holding the window open
-- that long let every follow-up shot land inside it and trip the
-- overlap reject, dropping nearly every sample. The 1 s window is the
-- backstop for a slow/DoT counter that never settles.
-- 2.4.1 stuck-at-"cooldown" fix (ISSUE-002): AbilityCooldownBetweenCharge
-- reads are now sanity-clamped (VData 2.5 s; a garbage read no longer
-- poisons the inter-shot cooldown), a poisoned cooldown horizon
-- self-heals in IDLE, the inter-shot cooldown clears on new match,
-- and remaining_charges -1 ("not charge-based") no longer reads as
-- a zero charge count that locks the machine out of engaging.