Skip to content

Game logic

Combat

When units attack, how hits and damage are worked out for normal attacks and spells, how shots fly, and what each boss casts.

Normal attacks

  • gap = distance between the two centres minus both radii. A unit starts a swing when the gap is under its reach and keeps it while it stays under reach + 22 px. With reach 0 it never attacks (Isaac, the mages and the story characters); when chasing it stops 4 px away.
  • It waits its time between attacks, then plays its attack animation; the hit or the shot comes out at its strike tick, and when the animation ends it waits again.
  • Melee hits when a random number from 0 to 100, plus accuracy, minus the target’s evasion, reaches 100.
  • A shot hits when a random number from 0 to 99 is under accuracy minus evasion. When evasion is higher, the game reads the difference as a very large number, so the shot always hits.
  • Damage = half the attack − a quarter of the target’s defense, rounded down; 0 or less does no damage.
  • An attack with an element does ×½ to a unit of the same element and ×1.5 to one of the opposite element. Shots do ×1.5 to flying units.
  • Finally ×(128 + r) / 128, with r random from −10 to 10 (about ±8 %).

Sight

  • Every 10 ticks each unit looks for enemies less than 200 px away.
  • It chases one while it is nearer than its own sight radius. Missions often change that radius: most set it to 150 or 50 px.

Spell damage

  • The power at cast comes from the spell, the caster’s magic, the drawing quality and the element level (see Spells).
  • Against a unit of the spell’s element the spell heals it slightly (1/16 of the power); against the opposite element it does ×1.5.
  • Then × (100 − magic defense) / 100; magic defense is at most 99.
  • Then ×(128 + r) / 128, with r random from −10 to 10.
  • A unit with more weaknesses than shields for that element takes ×2; with more shields, ×½.
  • Healing spells add their power as it is: no element, defense or randomness.

Opposite elements

  • Fire ↔ Water
  • Wind ↔ Earth
  • Dark ↔ Light

Shots

  • A shot flies straight at where the target’s centre was when it was fired, without following it, up to reach + 22 px.
  • It hits the first opposing unit within 4 px plus that unit’s radius, and does not go through. High obstacles stop it; water and pits do not.
  • If it misses, it bounces back and fades out in 31 ticks.
TypeUnitsSpeedOn a hit
1Cherubim, Seraphim90 px/sstays stuck 1.67 s
2Harpia, Elpia, Phoenix60 px/sstays stuck 1.67 s
3Purple Cap, Red Cap60 px/sdisappears
4Gnome, Rune Gnome75 px/sdisappears
5 · FireSalamander, Runemander, Flare Dragon75 px/sdisappears
6 · WindGale Dragon75 px/sdisappears
7 · WaterHydro Dragon75 px/sdisappears
8 · EarthEarth Dragon75 px/sdisappears
9 · DarkShadow Drgn.75 px/sdisappears
10 · LightShine Dragon, Multipul75 px/sdisappears

Bosses that cast

Only each battle’s boss casts spells, when its mission tells it to; there is no range check. It uses its own MP (its MP stat), pays each rune at the highest cost (element rank 0) and its power is the spell’s plus its magic, with no drawing quality or rank. With no MP left it cannot cast.

Each unit

Reach and swing are gaps between the two bodies; times in seconds.

UnitAttackReach → keepsBetween attacksHit atShotSightElement
IsaacNever attacks——————
OrkusMelee13 → 35 px1.17 s0.2 s—50 px—
Battle OrkusMelee13 → 35 px1.17 s0.2 s—50 px—
Scout OrkusMelee13 → 35 px0.92 s0.2 s—25 px—
Knight OrkusMelee13 → 35 px0.83 s0.2 s—50 px—
WyvernMelee14 → 36 px1.08 s0.1 s—50 px—
JetvernMelee14 → 36 px1.05 s0.1 s—50 px—
Purple CapRanged50 → 72 px1 s0.22 s60 px/s60 px—
Red CapRanged50 → 72 px1 s0.22 s60 px/s60 px—
Misty MushMelee15 → 37 px1.42 s0.17 s—40 px—
Killer MushMelee15 → 37 px0.92 s0.17 s—40 px—
SilfeedMelee13 → 35 px0.63 s0.1 s—50 pxWind
RunefeedMelee13 → 35 px0.58 s0.1 s—50 pxWind
Green ShogMelee13 → 35 px1.08 s0.27 s—50 px—
HarpiaRanged45 → 67 px0.83 s0.17 s60 px/s80 px—
ElpiaRanged45 → 67 px0.83 s0.17 s60 px/s80 px—
Gale HoundMelee17 → 39 px1 s0.33 s—75 px—
AcrobatMelee14 → 36 px0.98 s0.2 s—68 px—
Gale DragonRanged60 → 82 px1.08 s0.43 s75 px/s60 pxWind
UndineMelee14 → 36 px0.97 s0.1 s—50 pxWater
RunedineMelee14 → 36 px0.87 s0.1 s—50 pxWater
Blue ShogMelee13 → 35 px1.08 s0.27 s—50 px—
Death FishMelee17 → 39 px0.83 s0.2 s—50 px—
Death FangMelee17 → 39 px0.8 s0.2 s—50 px—
HydraMelee18 → 40 px1.17 s0.3 s—50 px—
Hydro HoundMelee17 → 39 px1 s0.33 s—75 px—
Hydro DragonRanged60 → 82 px1.08 s0.43 s75 px/s60 pxWater
GnomeRanged50 → 72 px0.9 s0.08 s75 px/s60 pxEarth
Rune GnomeRanged50 → 72 px0.87 s0.08 s75 px/s60 pxEarth
Mush-MushyMelee15 → 37 px1.42 s0.17 s—40 px—
Brown ShogMelee13 → 35 px1.08 s0.27 s—50 px—
Mud GolemMelee13 → 35 px1 s0.43 s—45 px—
Stone GolemMelee13 → 35 px1.08 s0.43 s—45 px—
Earth HoundMelee17 → 39 px1 s0.33 s—75 px—
Earth DragonRanged60 → 82 px1.08 s0.43 s75 px/s60 pxEarth
SalamanderRanged50 → 72 px1 s0.2 s75 px/s60 pxFire
RunemanderRanged50 → 72 px1 s0.2 s75 px/s60 pxFire
Red ShogMelee13 → 35 px1.08 s0.27 s—50 px—
Flare HoundMelee17 → 39 px1 s0.33 s—75 px—
Ruby GolemMelee13 → 35 px1 s0.43 s—45 px—
PhoenixRanged45 → 67 px0.83 s0.17 s60 px/s80 px—
DagonMelee18 → 40 px1.17 s0.3 s—50 px—
Flare DragonRanged60 → 82 px1.08 s0.43 s75 px/s60 pxFire
BatMelee14 → 36 px1 s0.2 s—50 px—
Com-BatMelee14 → 36 px1 s0.2 s—50 px—
GhostMelee13 → 35 px1 s0.33 s—50 pxDark
WraithMelee13 → 35 px0.97 s0.33 s—50 pxDark
Black ShogMelee13 → 35 px1.08 s0.27 s—50 px—
Dark WalkerMelee20 → 42 px1.5 s0.2 s—50 px—
Shadow HoundMelee17 → 39 px1 s0.33 s—75 px—
Shadow Drgn.Ranged60 → 82 px1.08 s0.43 s75 px/s60 pxDark
CherubimRanged50 → 72 px1.08 s0.23 s90 px/s65 pxLight
SeraphimRanged50 → 72 px0.75 s0.23 s90 px/s65 pxLight
Yellow ShogMelee13 → 35 px1.08 s0.27 s—50 px—
TalosMelee20 → 42 px1.25 s0.43 s—30 px—
GigantMelee20 → 42 px1.17 s0.43 s—30 px—
Shine HoundMelee17 → 39 px1 s0.33 s—75 px—
Day WalkerMelee20 → 42 px1.5 s0.2 s—50 px—
Shine DragonRanged60 → 82 px1.08 s0.43 s75 px/s60 pxLight
DividerMelee22 → 44 px0.83 s0.33 s—80 px—
MultipulRanged50 → 72 px0.92 s0.33 s75 px/s80 px—
BoxdogMelee15 → 37 px1 s0.27 s—110 px—
DogboxMelee15 → 37 px1 s0.27 s—110 px—
VillagerNever attacks——————
Fire MageNever attacks——————
Wind MageNever attacks——————
Water MageNever attacks——————
Earth MageNever attacks——————
Dark MageNever attacks——————
Light MageNever attacks——————
ChristivaNever attacks——————
TristaNever attacks——————
PopokuraNever attacks——————
Geh OlgNever attacks——————
LeonardNever attacks——————
RussellNever attacks——————
SenekaNever attacks——————

1×