Spelunky is © 2008, 2009 Derek Yu and Mossmouth, LLC, and is used under the [Spelunky User License v1.1b](https://spelunky.ai/LICENSE.txt). spelunky.ai is an unofficial fan project, not affiliated with or endorsed by Mossmouth. The game and its assets may not be sold.

Music by George Buzinkai and Jonathan Perry; sound effects made in SFXR. From Spelunky Classic 1.1, © 2008, 2009 Derek Yu and Mossmouth, LLC.

# Dead Fish

From the spelunky.ai wiki: <https://spelunky.ai/wiki/dead-fish>. Verified against the spelunky.ai port [v0.1.10](https://github.com/851-labs/spelunky/releases/tag/v0.1.10) on 27 October 2026.

The Dead Fish is a skeletal fish in Spelunky Classic that takes the Piranha's place on the Jungle's graveyard levels, biting a swimming player for 1 heart.

![A tiny grey fish skeleton with an open jaw, swimming](https://spelunky.ai/wiki/media/5c7e47490074a2a7/sprites/sDeadFishLeft/anim%404x.png)

| Dead Fish |                                         |
| --------- | --------------------------------------- |
| Health    | 1 hit point[^1]                         |
| Damage    | 1 heart[^2]                             |
| Speed     | 1 pixel per step[^3]                    |
| Behaviour | Patrols the water; attacks swimmers[^4] |
| Object    | `oDeadFish`                             |
| Found in  | The Jungle, Graveyard level             |
| Drops     | Fish Bone                               |

On a graveyard level of the Jungle, the water holds Dead Fish where other
levels have [Piranhas](https://spelunky.ai/wiki/piranha). A Dead Fish leaves a player on dry land alone, but once he's swimming near
it, it swims straight at him and bites. Its code is a copy of the Piranha's, less its hunting of other
monsters and its bubbles, plus a check for being on screen. With
1 hit point, it dies to any damage, and falls apart into three bones.

## Behaviour

A Dead Fish swims back and forth at 1 pixel per step, turning around where the water ends or a wall is in
its way[^5]. It always starts out heading right[^6].

**Clip: Dead Fish bite.** On a graveyard level, a dead fish swims at the player in a pool and bites him for a heart. He whips it, and it falls apart into three bones. ([video](https://spelunky.ai/wiki/media/5c7e47490074a2a7/clips/dead-fish/bite/clip.mp4))

When the player is swimming within 90 pixels of it, it attacks: it swims straight
at him at 1 pixel per step (30 per second), its
heading wobbling by a degree each step, and moves only while the way ahead is water[^7][^8]. The game
moves it in whole pixels on each axis, so on a diagonal it covers 1 pixel across and 1 up or down in a step[^9]. When he leaves the water or its range, it stops for 20–40 steps
(0.67–1.33 seconds) and then patrols again, heading left or right at random[^10][^11]. The clip
shows a Dead Fish swimming at the player in a graveyard level's pool, biting him, and the Whip breaking it
up.

Unlike a Piranha, a Dead Fish doesn't hunt other monsters in the water, and lets off no bubbles[^12][^13].

**Out of the water.** A Dead Fish whose middle isn't in water turns into a Fish Bone at once[^14].

**Off screen.** A Dead Fish does nothing at all unless it's on screen, or less than 16 pixels off its left
or top edge: it doesn't move, and even one killed or out of the water there only falls apart or turns into
a Fish Bone once it's back on screen[^15]. A Piranha has no such
check, and swims on out of sight.

## Damage

When the player touches a Dead Fish without stomping it, he loses 1 heart, is knocked
away from it, and blinks, invincible, for 30 steps (1 second)[^16]. This is the touch code most monsters share.
Unlike a Piranha's, its bite draws no blood[^17][^18]. The bite clip shows a bite taking the player from four
hearts to three.

## Defeating

A Dead Fish has 1 hit point, so any damage kills it[^19]:

| Way                                                                | Damage                                                                                                             |            |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ---------- |
| Whip                                                               | 1 hit point                                                                                                        | [^20]      |
| Machete                                                            | 2 hit points                                                                                                       | [^20]      |
| Stomp (landing on it), except while the player is swimming         | 1, plus 1 for every 16 steps of falling; three times that with [Spike Shoes](https://spelunky.ai/wiki/spike-shoes) | [^21]      |
| A thrown item moving faster than 2 pixels per step, such as a Rock | 1                                                                                                                  | [^22]      |
| A stunned monster thrown into it                                   | 1                                                                                                                  | [^23][^24] |
| A Shotgun or Pistol bullet                                         | 4 hit points                                                                                                       | [^25]      |
| A Bomb's explosion                                                 | 30 hit points                                                                                                      | [^26]      |
| Being out of the water                                             | Turns it into a Fish Bone                                                                                          | [^14]      |

The Dead Fish's own step event replaces the one most monsters share, which is where Spikes,
Lava and Spear Traps hurt them, so none of those harm a Dead Fish[^27].

**Clip: Dead Fish stomped.** On a graveyard level, the player drops into a pool right onto a dead fish. He isn't swimming yet, so he stomps it, and it falls apart into three bones. ([video](https://spelunky.ai/wiki/media/5c7e47490074a2a7/clips/dead-fish/stomp/clip.mp4))

A swimming player can't stomp it, but one dropping into the water lands on it before he's swimming, and
that is a stomp. The clip shows the player dropping into a pool onto a Dead Fish, which falls apart.

A Dead Fish that dies falls apart into three bones[^28]. Dead Fish
killed count toward the player's kills, and the screen between levels draws a Dead Fish icon for each; in
the kills table the game writes to `stats.txt`, which has no row for them, they're added to the Piranha's
row[^29][^30][^31]. One
that turns into a Fish Bone out of the water isn't killed, so it isn't counted.

## Locations

Level generation makes Dead Fish only on graveyard levels, which 1 in 10 levels of
the Jungle is[^32][^33]. Each water block with no solid block in it has a 1 in 30
chance of a monster, which on a graveyard level is a Dead Fish and on any other Jungle level a Piranha[^34].

The level editor has no tile for a Dead Fish, so custom levels can't have them.

## Tips

- A Dead Fish only chases a swimming player, so one crossing above the water isn't chased.
- Dropping into the water right onto a Dead Fish stomps it.
- A Dead Fish freezes as soon as it's off screen, so one left behind stays where it was, and one killed
  off screen falls apart only when it's seen again.

## Trivia

- The Dead Fish's code never sets its `type` string, so it keeps the parent object's `"None"`[^35]. A Dead Fish that takes the player's last heart isn't counted
  in the deaths-by-enemy table the game writes to `stats.txt`, under the Piranha or anywhere else[^36][^37].
- Unlike the Piranha's, its code starts an attack without checking that the player is alive, so near a
  dead swimming player it keeps starting attacks and giving them up the next step[^7][^38][^39].

## FAQ

### How much damage does a Dead Fish do in Spelunky Classic?

1 heart per bite, like a [Piranha](https://spelunky.ai/wiki/piranha). Each bite also knocks the player back and makes him invincible for 30 steps (1 second).

### Where do Dead Fish live in Spelunky Classic?

In the water of graveyard levels ("THE DEAD ARE RESTLESS!"), which 1 in 10 levels of the Jungle is. There, the 1 in 30 chance for each water block that makes a Piranha elsewhere makes a Dead Fish instead.

### What is the difference between a Dead Fish and a Piranha in Spelunky Classic?

Little. A Dead Fish swims and bites as a [Piranha](https://spelunky.ai/wiki/piranha) does, but it only hunts the player, not other monsters, only moves while it's on screen, and falls apart into three bones instead of bleeding when it dies.

### How do you kill a Dead Fish in Spelunky Classic?

Hit it once with anything. A Dead Fish has 1 hit point, so a Whip hit, a thrown item, a bullet or a Bomb kills it. A swimming player can't stomp it, but one dropping into the water onto it can.

## See also

- **Damaged by:** Whip, Machete, Stomping[^21], Throwing[^22], Shotgun[^25], Pistol[^25], Bomb[^26]
- **Related:** [Piranha](https://spelunky.ai/wiki/piranha)

## References

[^1]: `objects/oDeadFish/create.gml:14`

[^2]: `objects/oEnemy/collision_oCharacter.gml:25`

[^3]: `objects/oDeadFish/step.gml:56`

[^4]: `objects/oDeadFish/step.gml:21-63`

[^5]: `objects/oDeadFish/step.gml:21-35`

[^6]: `objects/oDeadFish/create.gml:11`

[^7]: `objects/oDeadFish/step.gml:36-39`

[^8]: `objects/oDeadFish/step.gml:50-57`

[^9]: `scripts/moveTo.gml:20-31`

[^10]: `objects/oDeadFish/step.gml:41-49`

[^11]: `objects/oDeadFish/step.gml:58-62`

[^12]: `objects/oPiranha/step.gml:37-51`

[^13]: `objects/oPiranha/step.gml:123-128`

[^14]: `objects/oDeadFish/step.gml:70-74`

[^15]: `objects/oDeadFish/step.gml:1-3`

[^16]: `objects/oEnemy/collision_oCharacter.gml:14-25`

[^17]: `objects/oEnemy/collision_oCharacter.gml:55`

[^18]: `objects/oDeadFish/create.gml:27`

[^19]: `objects/oDeadFish/step.gml:4-17`

[^20]: `objects/oEnemy/collision_oWhip.gml:1`

[^21]: `objects/oEnemy/collision_oCharacter.gml:6-13`

[^22]: `objects/oItem/step.gml:256-348`

[^23]: `objects/oEnemy/step.gml:169-180`

[^24]: `objects/oEnemy/step.gml:252-259`

[^25]: `objects/oBullet/collision_oEnemy.gml:16`

[^26]: `objects/oExplosion/collision_oEnemy.gml:14`

[^27]: `objects/oEnemy/step.gml:63-128`

[^28]: `objects/oDeadFish/step.gml:6-9`

[^29]: `objects/oDeadFish/step.gml:10-15`

[^30]: `objects/oTransition/alarm_0.gml:143-148`

[^31]: `scripts/scrWriteStats.gml:181-198`

[^32]: `scripts/scrInitLevel.gml:147-148`

[^33]: `scripts/scrClearGlobals.gml:56`

[^34]: `scripts/scrEntityGen.gml:326-336`

[^35]: `objects/oEnemy/create.gml:4`

[^36]: `objects/oEnemy/collision_oCharacter.gml:27-51`

[^37]: Quirk 1 (docs/quirks.md)

[^38]: `objects/oDeadFish/step.gml:52-62`

[^39]: `objects/oPiranha/step.gml:32`

### Source code

- `objects/oDeadFish/create.gml`
- `objects/oDeadFish/step.gml`
- `objects/oEnemy/create.gml`
- `objects/oEnemy/collision_oCharacter.gml`
- `objects/oEnemy/collision_oWhip.gml`
- `scripts/scrEntityGen.gml`
