Bestiary
All 23 enemy types, with the AI that drives each one. Portraits are rendered through the game's own recolour shader, so a variant looks here exactly as it does in play.
The roster
Ordered by the wave they start appearing on. Weight is how often a type is drawn once it has unlocked, relative to everything else eligible — the behaviour enemies are deliberately rare, because a wave that is half Frogs is not six times as interesting as a wave with one in it.

Mushroom
MeleeThe baseline: two orb hits at base damage and one after two stacks of Striking Force, which is what makes early orb damage a breakpoint rather than a rounding error.
The original art. Broodmother, Brute, Sporeling, Toadstool are recolours of it.


Bomber
BomberThe clock in a wave. It forces you to deal with it now rather than later, which is the only thing on the field that does.
The original art. PaleRevenant, PlaguePriest are recolours of it.
Shares the skeleton sheet with the Revenant, which is why they read as bone rather than flesh.

Toadstool
MeleeHalf a Mushroom's health at nearly double the speed. The enemy that punishes standing still.
A recolour of Mushroom's art, told apart by a hue rotation.


EvilWizard
CasterCasts from range and has no melee swing, but it is not safe to stand on — Backlash punishes anything inside 100px, including a player who walked into a cast.
The original art. Archmage, Bonecaller, DreadSovereign, Witchdoctor are recolours of it.

Frog
LeaperThe first enemy you beat by reading it rather than out-damaging it. Low health, so the lane is the whole threat — and the time it spends winded afterwards is the damage window the fight pays you back with.
Its row's attackRange is unused — FrogEnemy replaces the melee update entirely and uses its own trigger range.

Sporeling
SplitterHealth that becomes two Toadstools, which are faster than the thing that made them. Kill it with room around you, or inside an explosion big enough to catch what comes out.
A recolour of Mushroom's art, told apart by a hue rotation.

Wisp
RangedA Bat that keeps up with you, and outranges it. It glows because the bat sprite is near-black and a hue rotation preserves luma, so a recolour alone would be invisible on it.
A recolour of Bat's art, told apart by a hue rotation.

Brute
MeleeThe opposite trade: slow enough to kite forever, and the first enemy an un-upgraded orb genuinely cannot one-shot.
A recolour of Mushroom's art, told apart by a hue rotation.

Slug
HazardBarely fights, but everything it does POISONS you: its bite, the ball it lobs from range (it lands where you stood and leaves a pool), and the small pool of rot it leaves every 35px it walks. Poison is a tick a second for three seconds, 3 damage each at every wave (armour does not reduce it, a shield soaks it), and a new dose refreshes it rather than stacking; your health bar turns green and a POISONED plate counts it down. Each pool lasts 4.5s and stays after it dies — kite in a tight circle around one and you can wall off your own escape route. The first enemy that makes WHERE the fight happens matter.
Drops are keyed to DISTANCE WALKED, not to a timer — a 40px pool every 35px — so one parked against a wall does not stack pools on one spot: it draws a line you have to route around. The pool a THROWN ball leaves is the big one, 90px.

Bulwark
ShieldThe card check. An orb that only goes forwards bounces off it all day; anything that flanks, pierces, arcs or simply arrives fast walks through. Its health is a long time to spend doing the wrong thing.
A recolour of Vampire's art, told apart by a hue rotation.

Nosferatu
VampireMore than twice a Vampire's health and faster. It roots for the same time, so the danger is purely how long it survives to keep doing it.
A recolour of Vampire's art, told apart by a hue rotation.

Siphon
DrainHangs at range and drains you through a beam, healing off what it takes. The beam needs line of sight, so a tree is a real answer to it.
A recolour of Vampire's art, told apart by a hue rotation.
Its row carries damage = 0 and attackRange = 0: it has no attack at all. Everything it does is the beam, and the beam is refused the moment the grid says it cannot see you — frozen or stunned, it drops as well.

Witchdoctor
SupportHeals the most wounded allies around it often enough to outpace chip damage across a crowd. Capped at two alive at once, because three means nothing dies.
A recolour of EvilWizard's art, told apart by a hue rotation.

Archmage
CasterThe late-game priority target. Longer range, far more health, every cast another root somewhere on the map, and the hardest Backlash in the game.
A recolour of EvilWizard's art, told apart by a hue rotation.

Bonecaller
SupportCalls fresh bodies out of the ground on a timer, and what it calls OUTLIVES it — so killing it late buys you nothing. Violet and badged so it is not mistaken for the healer at range.
A recolour of EvilWizard's art, told apart by a hue rotation.

Hivemind
RangedA Bat that fires three bolts in a narrow fan. Individually weak, but it punishes the straight-line retreat that answers every other ranged enemy.
A recolour of Bat's art, told apart by a hue rotation.

Broodmother
SupportThe Bonecaller inverted. She calls faster, and every Toadstool she makes is tethered to her: kill the mother and the whole swarm drops at once. The swarm is a decoy, and walking past it is the correct play.
A recolour of Mushroom's art, told apart by a hue rotation.
Shares SupportEnemy with the Witchdoctor and the Bonecaller; summon_bound in her row is the single flag that makes her brood die with her. Her summons are killed rather than deleted, so each one still scores, drops loot and triggers every on-kill upgrade you own.

PlaguePriest
SupportHalves your healing while you stand in its ring, and keeps close enough to hold you in it — walking away does not work for long, so the answer is to kill it. Frozen or stunned, the aura switches off. The HUD says HEALING HALVED beside your health bar while it does.
A recolour of Bomber's art, told apart by a colour tint.
The fourth SupportEnemy, told apart by plague_range in its row, and it carries keep_min/keep_max of its own so it stands inside its ring rather than at a healer's distance. It never attacks. The skeleton sheet is achromatic, so it is TINTED a bile yellow-green, clear of the Revenant's mint.
Bosses
Exempt from wave modifiers' health multipliers, and never elite. The fights in full →

The third fight, and a test of the build rather than the footwork: it takes your three best cards for as long as it lives.
A recolour of Vampire's art, told apart by a colour tint.
On the vampire sheet, TINTED gold: the cloak is too dark for a hue rotation to reach gold (a rotation keeps luminance), while a multiply turns the face and hands gold and leaves the cloak a royal purple.

A siege engine. It walks, and the fight is read from a distance.
A recolour of EvilWizard's art, told apart by a hue rotation.

The opposite fight: it runs, and you have to be moving already.
A recolour of Bomber's art, told apart by a colour tint.
No projectile at all — even the Phantom Cross is aimed at your feet, not fired. It goes straight through trees and rocks, so scenery is no cover from it. Its speed is capped below the wizard's own, on purpose, even at phase three.
Behaviour classes
What actually drives each type. Several enemies share a class and differ only in their stat block — a Nosferatu is a Vampire with different numbers — and that is the cheap half of the roster. The rest have their own code.
takeDamage
returns false, exactly as an iframe-swallowed hit does — and bounces off harder than it
arrived. Make the orb arrive from somewhere you are not, arrive fast enough to punch
straight through, or blink past it: the shield swings round quickly, but not instantly.