Rasial · upper deck · immobileMiddle or right drag to orbit · scroll to zoom · left click to move
Loading model…
Phase 4
Rasial is on the deck and stationary. He only auto-attacks, and shadows bloom on the floor
as he casts — one always lands on the tile you were standing on.
Left click the floor to move. Press 1–7 for abilities.
Spam both freely; presses are buffered and fire the moment they come up.
Necromancy on 1 is
effectively always available — mash it if the rotation gets away from you.
Adrenaline
100%
Abilities
Ability keybinds
Invert camera Yoff
Attack range6 tiles
The range square is drawn on the floor and turns red when you step outside it.
Attacks are held rather than discarded while you are out, so a press made on the
way back still fires. Keybinds live in memory for this session — change the
BINDS defaults in the script to keep a layout.
Tick tape · last 40 ticksabilityfillerautomovedstalledhit
Rasial 200,000
Your health 12,000
Adrenaline 100%
Necrosis 0 / 12
Residual souls 0 / 5
Live read
Damage / sec—
Rotation uptime—
Stalled GCDs0
Bombs dodged0
Bombs eaten0
Range to Rasial—
What this is drilling. Phase 4 is mechanically simple and that is exactly why people lose kills
on it — the shadows are 1×1 and trivially avoidable, so nobody dies to the mechanic. They die to
panic-running, and they lose the kill to a rotation that quietly stops every time they click
the floor. The tick tape is the point of the tool: solid purple is a real ability, faded purple is
Necromancy filler, and hatched red bars are ticks where something was off cooldown and affordable and
you pressed nothing. If the hatching clusters under the teal movement bars, you have found your problem.
Staying in range
Attack range is 6 tiles measured from Rasial himself, not from the near edge of his deck —
he stands two tiles beyond the arena, so the workable pocket is 13×5, about 65 of the arena's
165 tiles. Range is Chebyshev, so the boundary is a square rather than a circle; it is drawn on the
floor and turns red the instant you step outside. His tile is the single source of truth for the
range check, the deck and the model position, so the number you are judged against and the thing you
can see cannot drift apart. Presses made while out of range are held rather than discarded, so an
ability pressed on the way back in still fires. Wandering outside costs roughly 21% of your damage.
Bombs
A wave is twelve shadows delivered as a stream of small batches — 1, 1, 1, 3, 3, 2, 1 — not one
batch of twelve. Each batch is placed using where you are standing at the moment it spawns, so
they keep arriving on top of you however much you move, and one always lands on your exact tile. That
matters: because only the next two or three are ever on the floor, you cannot see the whole wave and
plan a path through it. You react, you do not solve it. Shadows sit black while their short fuse burns
and bloom necrotic purple as they go off.
Waves are thrown slightly ahead of you rather than centred on you (CFG.wave.lead),
though testing could not show that this changes outcomes at the current radius — shifting a 7×7
cluster by one tile is close to noise, and a bomb lands on your own tile regardless. If leading really
bites in the live fight, the cluster is probably tighter than modelled here.
The waves accelerate, which is the most important thing measurement turned up. Fixed-camera
footage of the live phase, with detonation flashes isolated against a per-pixel median background,
gave wave-to-wave spacing of 18.61, 17.89, 17.22, 16.67 and 16.17 ticks — a monotonic decrease fitting
cycle = 18.53 − 0.61 × waveIndex at R² 0.994. So the phase tightens on you the longer it
runs, which is a large part of why it punishes a slow rotation: waves that were comfortable at the
start overlap by the end. That acceleration is carried by restDecay, which shrinks the
breather between barrages as the phase runs on.
Also measured: 7–12 distinct detonation flashes per wave, peaking at 12, and a ripple spanning
3.5–5.9 ticks (mean 4.8), which is what sets batchGap.
One deliberate deviation from the measurement: against an 8-tick active window, the measured cycle
implies a breather of 5.4–6.6 seconds, which plays as dead air. restStart sets it to about
3 seconds instead, so the cycle lands nearer 13 ticks than the measured 17. The alternative reading is
that fuse is too short — that shadows really do sit on the floor longer and fill that gap
without the cycle shortening at all. Setting fuse: 6 with restStart: 5
reproduces the measured 17-tick cycle exactly, at the cost of far more shadows visible at once. The batch sizes are
player-reported rather than measured — individual bombs inside a batch could not be separated from
one another. fuse could not be measured from footage — the dark-area signal that would
show shadows appearing is swamped by light from the explosions themselves — but it could be
benchmarked. Against five naive movement patterns plus a bot that reads the floor, fuse 2 is
the only setting where every blind pattern dies and floor-reading is the sole route through, and it
holds across all five movers rather than one, so it is not resonance. At fuse 3 mindless oscillation
clears the phase untouched; at 4 the results go non-monotonic. That makes 2 defensible even though it
was never directly observed.
A caution on tuning: automated difficulty probes are unreliable here. A bot with a fixed movement loop
resonates with the batch schedule and appears to die at some settings and survive at adjacent ones —
beat interference, not difficulty. Treat the structure as verified and the difficulty as not;
calibrate by playing it.
Keybinds
Every ability can be rebound in Settings — click a key box and press the key you want. A key can only
serve one ability, so reassigning it clears it from wherever it was. Bindings last for the session;
change the BINDS defaults near the top of the script to make a layout stick.
Barrier and podium
The green wall along the podium edge is the boundary you cannot cross — the walkable floor stops there,
so it is a real constraint rather than decoration. The podium behind it is a single wide deck spanning
the arena, with a faint lit lip along its front edge. An earlier version used a narrow three-tier dais
with pillars and braziers; it read less like the citadel, not more, so it is gone.
Ability queueing
A press waits for the global cooldown, so a deliberate press made a tick or two early still lands. But
a press for an ability that is on its own cooldown is refused outright rather than parked in
the buffer, because a parked press silently burns the casts that follow it — pressing Touch of Death on
a 17 tick cooldown used to cost the next several windows to an ability that could not fire. Refusing
costs you only the tick you pressed on: the following tick you can cast normally. The refusal names the
ability and the seconds remaining, so a dead press is legible instead of feeling like lag.
Player model and readouts
The Wise Old Man, assembled from primitives: stooped, bald on top with grey side hair and a long white
beard, in his blue and gold robe. Death Guard in the mainhand — bone-and-iron with a green edge —
and the Soulbound Lantern in the offhand, a caged soul on a hooked handle. He shuffles rather
than strides, and the lantern swings as he goes; the soul inside it brightens and swells with the
residual souls you are actually holding, so the offhand doubles as a readout.
Floating above him are health, then adrenaline, then soul pips, drawn as DOM projected into screen
space rather than as a sprite so the bars stay crisp at any zoom. The ground ring stays regardless of
how the figure looks, because tile occupancy has to be unambiguous.
If you export a character as GLB from the model viewer, paste the base64 into PLAYER_GLB
near the top of the script and it replaces the primitives, falling back on its own if the load fails.
Ability feedback
Casts are visible in the scene rather than only in the numbers. Most abilities lob a coloured orb that
arcs into Rasial and bursts. Death Skulls ricochets a single skull between him and you six times at
about a third of a second per leg, bursting on each arrival. Its endpoints are read live every frame,
so the return leg comes back to where you are rather than where you were standing when the
button went down. Command Skeleton conjures a skeleton beside him — skull with eye sockets and
a working jaw, spine, curved ribcage, pelvis, and limbs pivoting from shoulder and hip so it swings
overhead with the elbow snapping through the downstroke — for its full six seconds, then crumbles. Volley of Souls throws one orb
per soul spent, fanned out, and now requires two or more souls rather than one.
Residual souls orbit your character as well as showing in the nameplate and inside the lantern — three
readouts for the same number, but souls are the resource that most often goes unnoticed until a Volley
fizzles.
Cooldowns and the tick tape
Every ability carries a radial sweep like the game's: the dark wedge shrinks clockwise as the cooldown
runs down. All of them show the global cooldown together, and any ability on a longer cooldown of its
own shows whichever gate has further to go, drawn darker so the two read apart. The wide adrenaline bar
above the abilities is marked at 60%, the threshold that matters for Death Skulls and a free Finger of
Death.
The tick tape now sits at the very bottom and stays hidden until a run ends. It is a review instrument,
not a live one — watching it mid-fight is attention taken away from the floor, which is the exact
failure it exists to diagnose.
The ability bar
Icons in a row, as in game, with the keybind in the corner and the radial sweep over the icon itself,
its boundary travelling clockwise from the top as the cooldown recovers. An ability's own
cooldown takes precedence: if it is recharging, that is the wait shown, drawn darker, because the global
cooldown is irrelevant to an ability that would not be ready anyway. Only abilities that are otherwise
available show the lighter GCD sweep, so at a glance the bar separates “wait a moment” from
“this one specifically is gone”.
Names and costs live in the reference at the top of Settings rather than on the buttons — a bar you read
is a bar you are looking at instead of the floor. Hovering a button still gives you its name and cost.
Movement and camera
Movement fires on the press, not the release, with no drag threshold — an earlier version waited
for pointerup and discarded any click that drifted more than 5px, which silently ate most clicks while
spam-clicking. You can also hold the left button and sweep to keep re-pointing your destination, and
clicks slightly past the arena edge clamp to the nearest tile rather than being ignored. Pathing itself
still resolves on the tick, as in game.
The camera orbits your character. Middle-drag or right-drag to swing it, scroll to
zoom, arrow keys to nudge. Left click is reserved for movement, so it never fights the camera. Pitch is clamped so you cannot drop under the floor or go fully overhead — but you
can get close to top-down, which is the most readable angle for actually reading bomb positions.
Model
Rasial is the real model, baked down from 3.8 MB to 1.4 MB: the 17 meshes were skinned but
their nodes carried no transform, so the vertices were already in bind pose and the entire 544-node
skeleton, all 17 skins and the 1044-channel animation could be dropped without changing how he looks
standing still. He does not move during this phase, so nothing is lost. The model is embedded in this
file as base64, which means it works when you open it straight off disk — no local web server needed.
three.js itself loads from a CDN, so the very first load needs a connection.
Tuning
Everything numeric lives in CFG and ABILITIES at the top of the script:
fuse length, cast cadence, damage bands, cooldowns, adrenaline costs.