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.

# Arrow Trap

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

*For the item it fires, see [Arrow](https://spelunky.ai/wiki/arrow).*

The Arrow Trap is a trap in Spelunky Classic, a block in the Mines' and Temple's walls that fires one arrow at whatever moves in front of it, for 2 hearts.

![A grey stone block carved with a face whose open mouth faces left](https://spelunky.ai/wiki/media/dbb0da14e7366b44/sprites/sArrowTrapLeft/frames/0%404x.png)

| Arrow Trap |                                                                                                                                        |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| Damage     | 2 hearts, and a stun[^1]                                                                                                               |
| Trigger    | Anything moving up to 5 or 6 blocks in front[^2]                                                                                       |
| Objects    | `oArrowTrapLeft`, `oArrowTrapRight`, `oArrowTrapLeftLit`, `oArrowTrapRightLit`, `oArrowTrapTest`, `oArrowRepeaterL`, `oArrowRepeaterR` |
| Found in   | [The Mines](https://spelunky.ai/wiki/mines), [The Temple](https://spelunky.ai/wiki/temple), Dark level                                 |
| Drops      | [Arrow](https://spelunky.ai/wiki/arrow) (Fired once; left behind if the trap is destroyed unfired)[^3]                                 |

An Arrow Trap looks like a carved stone block set into a wall, with an opening facing along a corridor. It
fires an arrow the first time anything moves in front of it, and never again. The arrow takes 2 hearts from
the player, as any fast arrow does, and hurts monsters as a thrown arrow does. On a dark level
the traps are lit, glowing so that the player can see them.

## How it works

**Clip: Arrow trap.** The player stands in front of an arrow trap three blocks away without setting it off, then takes a step toward it: it fires an arrow across the floor, which hits him for two hearts and knocks him down. ([video](https://spelunky.ai/wiki/media/dbb0da14e7366b44/clips/arrow-trap/fire/clip.mp4))

A trap has a sensor: an invisible strip in front of it, made one step after the trap, that reaches from its
face to the first block in its row, but no farther than 6 blocks for a trap facing left and 5 for one facing
right[^4][^5][^6]. The two directions' code measures the strip
differently, which is where the extra block comes from: the left-facing one counts up to 96 pixels from the
trap, the right-facing one up to 80 from the block in front of it. So a player midway between two traps facing
each other across 11 to 13 open blocks sets off only the left-facing one[^7][^8].

Anything in the strip that's moving sets the trap off: the player, a monster, an item, a piece of treasure, a
pushed block or a [Boulder](https://spelunky.ai/wiki/boulder). The player also sets it off near the end of his drop from a ledge into
a hang from it, even without moving[^9][^10][^11]. Standing still in the strip doesn't.

When it's set off, the trap fires an arrow from its face at 8 pixels a step (240 a second), plays its sound,
and its sensor is destroyed, so it never fires again[^12].
The first clip shows the player standing in a trap's strip, three blocks from it, without setting it off; when
he takes a step toward it, it fires, and the arrow hits him.

An arrow falls as it flies, and on the ground it loses 70% of its speed each step, as any item does[^13][^14]. A trap fires from near the top of its block, so its arrow
along a floor lands after about three blocks and slides on too slowly to hurt. The second clip shows a
player setting a trap off from the far end of its strip: the arrow drops onto the floor and stops short of
him.

**Clip: Arrow trap firing short.** The player walks toward an arrow trap from five blocks away and sets it off; its arrow drops onto the floor, slows and stops short of him, harmless. ([video](https://spelunky.ai/wiki/media/dbb0da14e7366b44/clips/arrow-trap/miss/clip.mp4))

## Damage

The trap itself hurts nothing: its arrow does, the same arrow the [Bow](https://spelunky.ai/wiki/bow) shoots, while it's moving fast.

| Victim                                        | Damage                                                                                                                                          |       |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| The player                                    | 2 hearts from an arrow faster than 3 pixels a step, which throws him the way it was going, stuns him for 20 steps (0.67 seconds) and is used up | [^1]  |
| Most monsters                                 | 1 hit point, as from any thrown item faster than 2 pixels a step                                                                                | [^15] |
| A [Vampire](https://spelunky.ai/wiki/vampire) | 4 hit points: arrows are stakes to it ([the Bow's damage](https://spelunky.ai/wiki/bow#damage))                                                 | [^16] |

An arrow that kills the player is counted in the end-of-game statistics' arrow row[^17]. The check takes the arrow nearest the player, not
necessarily the one touching him[^18][^7].

## Locations

Level generation turns some of the plain blocks of the walls into Arrow Traps, after it has placed
everything else:

| Area                                          | Chance for each block |       |
| --------------------------------------------- | --------------------- | ----- |
| [The Mines](https://spelunky.ai/wiki/mines)   | 1 in 4                | [^19] |
| [The Temple](https://spelunky.ai/wiki/temple) | 1 in 3                | [^20] |

A block only qualifies if it isn't in a shop, is more than 48 pixels from the entrance and not within 144
pixels of it on the same row, and has a block behind it and two open blocks in front of it: it faces left if
the block to its right is solid and the two to its left are open, else right if the opposite holds (a
right-facing trap's check also takes in the first pixel of a third block, so a two-block gap between walls only
ever has a trap in its right-hand wall)[^21][^7]. On a
dark level, the trap made is the lit kind[^22].

Arrow Traps are also:

- **In the Sun challenge room**, a bonus room reached from the high scores, whose traps
  fire every 100 to 200 steps whatever is in front of them, while the player is alive[^23][^24].
- **In custom levels**, as the level editor's tiles `<` (facing left) and `>` (facing right)[^25].

## Avoiding

- **Use up its arrow.** A trap fires once, at whatever moves first: a [Rock](https://spelunky.ai/wiki/rock) or any other item thrown
  through its strip, a monster walking by, or the player stepping in at the far end, where the arrow lands
  short.
- **Destroy it.** A trap is a block, and a [Bomb](https://spelunky.ai/wiki/bomb) destroys it like one. One destroyed before it has
  fired leaves its arrow lying where it was[^26]. The third
  clip shows a lit trap firing at the player as he drops down a ladder across its line, taking two hearts, and
  a bomb laid beside it destroying it.
- **Stand still.** Standing in the strip doesn't set it off, but taking a step does.

**Clip: Lit arrow trap.** On a dark level, a lit arrow trap fires as the player drops down a ladder through its line; the arrow takes two hearts. He walks back, lays a bomb beside the trap and climbs away, and the blast destroys it. ([video](https://spelunky.ai/wiki/media/dbb0da14e7366b44/clips/arrow-trap/dark/clip.mp4))

## Interactions

- **[Boulders](https://spelunky.ai/wiki/boulder)** set off the traps they roll past, as the Boulder's clips show[^27].
- **The [Bow](https://spelunky.ai/wiki/bow)** collects a trap's arrow, once it lies still, like one of its own[^28].
- **Light.** A lit trap counts as a light source on a dark level, as a lamp or a tiki torch
  does[^29].

## Trivia

- The traps were first meant to watch along their row on their own: their step events still hold a motion
  check that would fire an arrow at the first moving thing in line, commented out. The sensor objects
  replaced it[^30].
- Both kinds have an alarm, never set, that would fire a slow arrow to the right at 5 pixels a step, from
  either side: a left-facing trap's would come out of its back[^31][^32].
- An unused object, `oTemp`, is an earlier arrow trap that plays a sound the game no longer has[^7].

## FAQ

### How much damage does an Arrow Trap do in Spelunky Classic?

2 hearts. An arrow moving faster than 3 pixels a step takes 2 of the player's hearts, knocks him back and stuns him for 20 steps.

### How do you avoid an Arrow Trap in Spelunky Classic?

Set it off from a distance. A trap fires only once, at the first thing that moves in its line, so a thrown item, a monster walking by or the player stepping in at the far end of its line uses its arrow up. An arrow fired along a floor drops onto it and slows, and is harmless once it's slower than 3 pixels a step.

### Do Arrow Traps reload in Spelunky Classic?

No. Each Arrow Trap fires one arrow and is then a plain block for the rest of the level. Only the Sun challenge room's traps fire again and again.

### How do you destroy an Arrow Trap in Spelunky Classic?

With a [Bomb](https://spelunky.ai/wiki/bomb), like a block. One destroyed before it has fired leaves its arrow behind.

## See also

- **Related:** [Bow](https://spelunky.ai/wiki/bow), [Boulder](https://spelunky.ai/wiki/boulder), [Spear Trap](https://spelunky.ai/wiki/spear-trap), [Arrow](https://spelunky.ai/wiki/arrow)

## References

[^1]: `objects/oPlayer1/step.gml:1513-1536`

[^2]: `objects/oArrowTrapTest/collision_oCharacter.gml:1-29`

[^3]: `objects/oArrowTrapTest/collision_oCharacter.gml:14-23`

[^4]: `objects/oArrowTrapLeft/create.gml:9`

[^5]: `objects/oArrowTrapLeft/alarm_1.gml:1-13`

[^6]: `objects/oArrowTrapRight/alarm_1.gml:1-17`

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

[^8]: Replay `fidelity/replays/trap-arrow-sensor-left-wider.txt`

[^9]: `objects/oArrowTrapTest/collision_oCharacter.gml:5-8`

[^10]: `objects/oArrowTrapTest/collision_oItem.gml:5`

[^11]: `objects/oArrowTrapTest/collision_oBoulder.gml:5`

[^12]: `objects/oArrowTrapTest/collision_oCharacter.gml:10-28`

[^13]: `objects/oItem/step.gml:93-110`

[^14]: `objects/oItem/create.gml:21`

[^15]: `objects/oItem/step.gml:256-363`

[^16]: `objects/oItem/step.gml:265-266`

[^17]: `objects/oPlayer1/step.gml:1520-1521`

[^18]: `objects/oPlayer1/step.gml:1515`

[^19]: `scripts/scrEntityGen.gml:145-171`

[^20]: `scripts/scrEntityGen.gml:497-524`

[^21]: `scripts/scrEntityGen.gml:155-168`

[^22]: `scripts/scrEntityGen.gml:158-166`

[^23]: `rSun`, as the room editor placed it

[^24]: `objects/oArrowRepeaterL/step.gml:1-9`

[^25]: `scripts/scrCreateTileObj.gml:229-236`

[^26]: `objects/oArrowTrapLeft/destroy.gml:1-10`

[^27]: Replay `fidelity/replays/trap-boulder-crush.txt`

[^28]: `objects/oPlayer1/step.gml:1973-1988`

[^29]: `objects/oPlayer1/step.gml:113-124`

[^30]: `objects/oArrowTrapLeft/step.gml:1-44`

[^31]: `objects/oArrowTrapLeft/alarm_0.gml:1-2`

[^32]: `objects/oArrowTrapLeft/create.gml:8`

### Source code

- `objects/oArrowTrapLeft/create.gml`
- `objects/oArrowTrapLeft/alarm_1.gml`
- `objects/oArrowTrapLeft/destroy.gml`
- `objects/oArrowTrapLeft/step.gml`
- `objects/oArrowTrapRight/alarm_1.gml`
- `objects/oArrowTrapTest/collision_oCharacter.gml`
- `objects/oArrowTrapTest/collision_oItem.gml`
- `objects/oArrowRepeaterL/step.gml`
- `objects/oPlayer1/step.gml`
- `scripts/scrEntityGen.gml`
