| Input | Action |
|---|---|
| Right-click ground | Move hero to location |
| Right-click enemy | Set auto-attack target (hero or minion) |
| S | Stop movement immediately (hold position) |
| Q / W / E / R | Cast ability toward current cursor position |
| Scroll wheel | Zoom camera (0.3× – 2.0×) |
| Tab (hold) | Show scoreboard: K / D / A · CS · Gold · Level |
| ESC | Open/close settings menu |
Right-clicking an enemy sets them as your current auto-attack target. Your hero moves toward that target, then fires a homing projectile whenever in range and off cooldown.
If you right-click ground (no target), your hero walks to that point and auto-attacks any enemy that enters range automatically — no manual targeting needed.
Projectiles home on their assigned target. If the target dies mid-flight, the projectile disappears.
Each hero has 4 abilities. All abilities are targeted at the cursor position when the key is pressed. Abilities cost mana and trigger a cooldown — if you have insufficient mana, the ability will not fire.
Mana regenerates at 0.25 MP per tick (5 MP/second). It fully restores at spawn and on respawn.
Ability types in use:
"Target ally" buffs (Sage W / Sage E / Paladin W / etc.) cast at the cursor onto the nearest ally hero within 200 u. Press Alt + the ability key to self-cast.
Buffs and debuffs are time-limited modifiers tracked server-side per actor. Each has a duration (in ticks) and applies via a generalised helper — apply_slow, apply_speed_boost, apply_shield, apply_poison, apply_burn, apply_stun, apply_silence, apply_blind, apply_tint, apply_as_boost, apply_hp_regen_mult. Stacking takes the max of the existing and new effect per-field, then clears when the timer runs out.
| Effect | Stat | Visual | Notes |
|---|---|---|---|
| Slow | -40% to -60% move speed | Water-drop icon above sprite | From Sage Q, Monk Q, Guardian E, ice-tagged projectiles. CC penetrates shields. |
| Speed Boost | +40% to +100% move speed | White-blue ring around sprite | Clears active slow on application. Used for movement buffs (Barbarian R = +100%, Guardian R = +50%) and ally support. |
| Attack-Speed Boost | +100% AS (2× swing speed) | Paired with sprite tint | Barbarian R. Halves the swing time as long as the buff is active. |
| Shield | 130–350 absorb HP | White segment on HP bar | Time-limited (5 s default). Absorbs incoming damage; expires by timer or by being fully drained. |
| Poison | Hybrid flat + 1.5% × max HP per pulse | Poison icon above sprite | Pulses every 0.5 s. Refreshes on reapply (stronger pulse wins). Kill credit goes to latest applier. |
| Burn | ~12 flat dmg per pulse, stacks ×3 | Burn icon above sprite | Each stack adds 25% per pulse. Reapply adds a stack and refreshes duration. |
| Stun | No movement / no auto-attack / no casting | Stun icon + hero shows hurt frame | Hard CC. HP+MP regen halved. Cleared on respawn. |
| Silence | No ability casts (Q/W/E/R blocked) | Silence icon above sprite | Auto-attacks and movement still work. From Baby Dragon Q/R and Monk R. |
| Blind | Auto-attacks deal 0 damage | Blind icon + "Miss!" text floats up | Abilities NOT affected. Applied by Guardian Q. |
| HP Regen Multiplier | 10× regen rate | Subtle green glow | Wayrunner W (Runner) and Guardian R (Victory Lap). |
HP-bar render with shield: the bar denominator becomes max_hp + shield, so the green (HP) and white (shield) segments share the fixed-width bar. When the shield expires, the denominator drops back to max_hp and the green grows back to its actual HP percentage — your real HP never changes from a shield expiring.
Sprite tint: some self-buffs wash a colour across the whole hero silhouette via an alpha-mask render (not a circle halo). Barbarian R = red, Monk R = orange. The tint covers exactly the visible pixels of the sprite.
Status icons display above the hero's head AND in the top-left corner of the bottom-HUD portrait, so you can see your own debuffs without panning the camera.
Melee heroes have a horizontal oval attack zone, not a circle. Top-down perspective makes circular ranges feel too generous in the N/S direction — hero sprite bodies are stacked vertically on screen for N/S adjacencies but visually overlap for E/W. The oval compensates: full reach to the sides, ~55% reach above/below.
| Axis | Reach |
|---|---|
| X (east / west) | Full rng stat |
| Y (north / south) | rng × 0.55 (MELEE_Y_RATIO) |
Applies to both acquisition (auto-pick a target when idle or attack-moving) AND damage (does the swing actually land). Towers, minions, the Nexus, and ranged heroes keep the circular shape.
When you press A for attack-move on a melee hero, the range indicator drawn around your hero is an ellipse — that's the exact area where enemies will be acquired.
When your hero is idle (or in attack-move mode) and there's no current target, they scan for enemies within max(rng, 200) units. The 200 u floor means melee heroes with shorter ranges will still chase enemies in walking distance — not stand around until contact.
Hero priority: within the acquisition radius, enemy heroes are picked over minions. So if you're walking through a creep wave and an enemy hero strolls past, your auto-attack switches to the hero (LoL-style priority).
Pressing S sets the hero to hold-position mode, which disables auto-acquisition entirely until you issue a new move/attack command.
Behind each Nexus there's an elliptical jungle camp (rx=200, ry=170) that grants powerful regen to your own team and burns enemies.
| Zone | HP regen | Mana regen | Damage |
|---|---|---|---|
| Own camp | +7% / second | 8× base regen | — |
| Enemy camp | — | — | 20% max HP burn / second (lethal if you linger) |
Camp centres: Blue (500, 2000) · Red (5000, 2000). The CPU bot pathfinder actively avoids the enemy camp; the visual is a cobblestone ellipse with a team-coloured glow (green = friendly, red = hostile).
Persistent AoE pools that pulse damage over time inside a fixed radius. Spawned by abilities (currently Plague Doctor's Bio Blaster acid pool) when a projectile detonates.
Each puddle carries radius, dmg, pulse_every (tick cadence), and ticks (lifetime). The client renders the puddle as a frame-strip animation that plays ONCE across the full lifetime — so the visual splash → grow → settle → dry-up is perfectly in sync with the gameplay duration.
You gain XP by being within 500 units of an enemy unit when it dies — minions, towers, or heroes. You don't need to deal the killing blow.
Example: Level 1 → 2 needs 100 XP. Level 5 → 6 needs 500 XP. Level 19 → 20 needs 1,900 XP.
Spend ability points by clicking the Q/W/E/R icon or pressing Shift/Ctrl + the key. Q, W, E max out at level 5; R maxes at level 3. Putting your first point in R requires character level ≥ 4. Ability damage scales 65% at level 1 → 100% at level 5.
| Source | XP Value | Notes |
|---|---|---|
| Melee minion death | 30 | Must be within 500 units |
| Caster minion death | 20 | Must be within 500 units |
| Tower destruction | 200 | Must be within 500 units |
| Hero kill | 200 | Goes to the killer only |
All heroes start with 500 gold. Gold accumulates automatically and from actions during the match.
| Source | Gold | Notes |
|---|---|---|
| Starting gold | 500 | All heroes begin with this |
| Passive income | 5 / 10s | Auto-granted while alive |
| Melee minion last hit | 21 | You must land the killing blow |
| Caster minion last hit | 14 | You must land the killing blow |
| Tower destruction | 150 | Goes to last-hitting hero |
| Hero kill | 300 | Goes to the killer |
| First Blood bonus | +100 | Added to the first hero kill of the match |
[NOT YET IMPLEMENTED] Shop and item purchases. Gold currently accumulates but cannot be spent.
When a hero's HP reaches 0, they die and cannot act for 8 seconds. A respawn timer is visible on screen. On respawn, the hero returns to their team's spawn point — directly in front of their Nexus, not inside it — with full HP and mana.
Assists are awarded to teammates who dealt damage to the victim within the last 8 seconds before the kill.
Heroes, minions, towers, and the Nexus all have a collision radius. After all unit movement each tick, the server pushes any overlapping units apart in up to three resolution passes. You cannot walk through buildings, allies, or enemies.
| Unit | Collision Radius | Movable? |
|---|---|---|
| Hero | 24 | Yes |
| Minion | 20 | Yes |
| Tower | 45 | No (immovable) |
| Nexus | 75 | No (immovable) |
Push rules:
The map is clamped to (60..4940, 60..3940) so a chain of pushes can't shove anyone off the playable area.
Player activity is tracked by actions: movement commands, attacks, and ability casts all reset the AFK timer. Standing still and doing nothing triggers warnings and eventual removal.
| Idle Time | Event |
|---|---|
| 60 seconds | [WARN] First AFK warning — dismiss prompt to reset timer |
| 120 seconds | [ALERT] Final warning — time remaining is shown |
| 150 seconds | [KICK] Removed from game — returns to lobby automatically |
Destroy the enemy team's Nexus to win. There is no invulnerability mechanic on the Nexus itself, but it defends itself — it shoots cannonballs at any enemy within 420 units (80 damage per shot, 1.2s cadence). Taking down a Tower or two first removes the outer defences and gives your team breathing room to dive the Nexus.
On Nexus destruction, a 20-second game-over screen plays, then all players are returned to the main lobby for a new game.
The ESC settings menu has three tabs: General, Audio, Controls. The General tab carries display preferences that persist via localStorage and survive reloads.
| Setting | Range | Default |
|---|---|---|
| Minimap Size | 150 – 360 px | 240 px |
| Cursor Size | 1.0× – 3.0× (0.1 step) | 2.0× |
Cursors are 32×32 native; selecting a non-1× size upscales them via offscreen canvas (pixel-perfect nearest-neighbor) and updates the CSS cursor on the fly. Hotspots are anchored at the sprite's visible click point and scale linearly with size, so the click always lands where you'd expect regardless of cursor scale.
The Audio tab has SFX + Music volume + track picker + announcer settings (defaults: SFX on @ 80, Music muted, voice announcer on).
The Controls tab has the Quickcast toggle (default ON: plain Q/W/E/R fires instantly at cursor, Alt+key enters targeting mode; OFF swaps the two) and a full Controls Reference table.
Scroll wheel zooms the camera. Default zoom is 1.2×. The range was extended in session 11 to make tighter zooms practical.
| Stat | Value |
|---|---|
| Min zoom (most zoomed out) | 1.2× |
| Max zoom (most zoomed in) | 3.4× |
| Step | 0.1× per scroll-wheel notch |
Camera tracks the hero by default. Middle-click and drag to free-pan; release to resume tracking (or use Space to snap back). Click the minimap to jump-pan.
Bottom strip: HP bar · Mana bar · XP bar · Ability icons (Q/W/E/R with cooldown overlay) · Gold amount (left) · Clock + settings hint (right).
Top: Blue team panel (left) and Red team panel (right) — live player count and Castle HP bar. Bar turns orange below 40% HP.
Kill feed: Centered top — last 5 events (first blood, hero slain, castle destroyed). Events fade after 7 seconds.
Minimap: Bottom-right corner — shows lane, towers, castle dots, minion dots, player dots, and camera viewport rect.
Scoreboard (Tab): Hold Tab to see full stats for all players: Kills · Deaths · Assists · CS (minion kills) · Gold · Level.