Rasial · Phase 4

Necrotic explosion drill Tick 0  /  0.6s cadence
Rasial · upper deck · immobile Middle 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 Y off
Attack range 6 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.
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.