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.

# Push Block

From the spelunky.ai wiki: <https://spelunky.ai/wiki/push-block>.

A Push Block is terrain in Spelunky Classic, a loose stone block the player pushes along the floor at half a pixel a step, which falls when pushed over an edge.

![A square tan stone block with a raised border](https://spelunky.ai/wiki/media/sprites/sBlock/frames/0%404x.png)

| Push Block   |                                                                                                                                                                                                                                                                                                                           |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Effect       | Pushed by walking into it; falls[^1]                                                                                                                                                                                                                                                                                      |
| Destroyed by | Bombs, the Mattock, leaving the level                                                                                                                                                                                                                                                                                     |
| Object       | `oPushBlock`                                                                                                                                                                                                                                                                                                              |
| Found in     | [The Mines](https://spelunky.ai/wiki/mines), [The Jungle](https://spelunky.ai/wiki/jungle), [The Temple](https://spelunky.ai/wiki/temple), [Olmec's Lair](https://spelunky.ai/wiki/olmecs-lair), [Graveyard level](https://spelunky.ai/wiki/restless-dead), [High scores room](https://spelunky.ai/wiki/high-scores-room) |
| Drops        | [Gold Chunk](https://spelunky.ai/wiki/gold-chunk), [Gold Nugget](https://spelunky.ai/wiki/gold-nugget)                                                                                                                                                                                                                    |

Push blocks are made in [the Mines](https://spelunky.ai/wiki/mines)' and [the Temple](https://spelunky.ai/wiki/temple)'s rooms, on tiles of their own and from
some of the [stone blocks](https://spelunky.ai/wiki/block) the levels are built with, in [Olmec's Lair](https://spelunky.ai/wiki/olmecs-lair) from stone blocks, and in
a [graveyard level](https://spelunky.ai/wiki/restless-dead)'s crypt. Unlike any other block, the player can move one: walking into it pushes it along, and pushed
over an edge it falls. Bombs and the [Mattock](https://spelunky.ai/wiki/mattock) break it like any block.

## How it works

**Clip: Pushing a block.** The player walks into a stone block and pushes it slowly along the floor to the edge of a drop; it falls, lands on the floor below, and he drops down after it. ([video](https://spelunky.ai/wiki/media/clips/push-block/push/clip.mp4))

The clip shows a block pushed off a ledge: the player walks into it, pushes it slowly along the floor to the
edge, and it falls to the floor below[^2].

### Pushing

Walking into a push block on the ground, not ducking, the player pushes it: he presses against it, and the code
that moves him moves the block a pixel for each pixel he moves into it, unless something solid is beyond it[^3][^1]. In play that's
half a pixel a step (15 a second), a block's width in 32 steps, where he walks at 3 pixels a step[^2]. After a moment of it, he's drawn pushing[^4]. Only the player pushes blocks: the code allows it to characters
alone, not monsters[^5].

A block stuck against something solid stops, but the player pushing it doesn't: he creeps into it, and once his
middle is inside, he's crushed. That's [Crushed by a pushed block](https://spelunky.ai/wiki/push-block-crush).

### Falling

Each step a push block has nothing solid under any part of it, it falls, gaining
0.6 pixels per step of speed a step, up to 8 pixels per step, and stops on
the first solid thing below it, with a thud[^6][^7]. In the clip it doesn't drop until it has been pushed wholly
past the ledge. It only falls while it's in the view; one off screen hangs where it is until the view comes to
it[^8]. One that falls out of the level is gone[^9].

### In lava

A push block in [Lava](https://spelunky.ai/wiki/lava) sinks a twentieth of a pixel a step, taking any push blocks stacked on it down with
it[^10][^11].

## Locations

| Where                                                                                                        | How                                                                                                           |            |
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | ---------- |
| [The Mines](https://spelunky.ai/wiki/mines)                                                                  | Each push block tile, with a 1 in 4 chance                                                                    | [^12]      |
| [The Temple](https://spelunky.ai/wiki/temple)                                                                | As the Mines                                                                                                  | [^13]      |
| [A graveyard level](https://spelunky.ai/wiki/restless-dead)                                                  | Both push block tiles of its crypt, always                                                                    | [^14][^15] |
| Where there are stone blocks: the Mines, the Temple and [Olmec's Lair](https://spelunky.ai/wiki/olmecs-lair) | Each stone block standing on a brick, Temple stone or a hard block, and not beside lava, with a 1 in 4 chance | [^16]      |

The [high scores room](https://spelunky.ai/wiki/high-scores-room) has the one the player pushes onto its reset button[^17]. In custom levels it's the [level editor](https://spelunky.ai/wiki/level-editor)'s tile `B`[^18].

## Interactions

- **[Spear Traps](https://spelunky.ai/wiki/spear-trap)** strike at a push block in front of them as at a monster[^19].
- **[Arrow Traps](https://spelunky.ai/wiki/arrow-trap)** fire at a push block falling through what they watch: their sensor counts a
  block by its speed[^20], which it has
  only while it falls, as pushing moves it a pixel at a time without one[^21][^22].
- **Breaking it.** A [Bomb](https://spelunky.ai/wiki/bomb) or the [Mattock](https://spelunky.ai/wiki/mattock) breaks a push block like any block, leaving
  rubble[^23], but its destroy event is its own: unlike an area's
  rock, it doesn't take what stands on it or bring down a lamp hanging under it[^24].
- **[The City of Gold](https://spelunky.ai/wiki/city-of-gold).** Every push block there is gold, and breaks into three
  [Gold Chunks](https://spelunky.ai/wiki/gold-chunk) and a [Gold Nugget](https://spelunky.ai/wiki/gold-nugget)[^25][^26].

## Tips

- Pushing is slow, a sixth of walking pace: a block pushed across a room takes seconds.
- Stop pushing once the block stops, or be crushed ([Crushed by a pushed block](https://spelunky.ai/wiki/push-block-crush)).
- A push block pushed into a pit or over a ledge makes a step to climb back up by.

## Trivia

- A push block is drawn with the stone block's picture, and level generation turns some stone blocks into
  push blocks once a level's walls are set up[^16], so a stone
  block and a push block look the same until one is pushed.
- The code that lets things push blocks says it lets only the player, and that it can be edited to let monsters
  push them too; it never was[^5].

## FAQ

### How do you push blocks in Spelunky Classic?

By walking into one on the ground. It moves ahead of the player half a pixel a step, a block's width in about 32 steps, until something solid is in its way.

### Can a push block crush you in Spelunky Classic?

Yes, if the player keeps pushing one that's stuck against something solid: the game moves him into the block anyway, and once his middle is inside it, he's crushed. That's [Crushed by a pushed block](https://spelunky.ai/wiki/push-block-crush).

### What happens to a push block in lava in Spelunky Classic?

It sinks, very slowly, a twentieth of a pixel a step, taking whatever push blocks are stacked on it down with it.

### Why are push blocks gold in the City of Gold?

In the [City of Gold](https://spelunky.ai/wiki/city-of-gold) every push block is drawn in gold, and one broken there scatters gold rather than rubble: three [Gold Chunks](https://spelunky.ai/wiki/gold-chunk) and a [Gold Nugget](https://spelunky.ai/wiki/gold-nugget).

## See also

- **Related:** [Spear Trap](https://spelunky.ai/wiki/spear-trap), [Arrow Trap](https://spelunky.ai/wiki/arrow-trap), [Lava](https://spelunky.ai/wiki/lava), [City of Gold](https://spelunky.ai/wiki/city-of-gold), [Block](https://spelunky.ai/wiki/block), [Crushed by a pushed block](https://spelunky.ai/wiki/push-block-crush)

## References

[^1]: [`scripts/moveTo.gml:39-93`](https://spelunky.ai/wiki/source/scripts/moveTo#L39-L93)

[^2]: Clip [push-block/push](https://spelunky.ai/wiki/push-block#clip-push-block-push)

[^3]: [`scripts/characterStepEvent.gml:138-176`](https://spelunky.ai/wiki/source/scripts/characterStepEvent#L138-L176)

[^4]: [`scripts/characterSprite.gml:57`](https://spelunky.ai/wiki/source/scripts/characterSprite#L57)

[^5]: [`scripts/canPushMoveableSolids.gml:1-6`](https://spelunky.ai/wiki/source/scripts/canPushMoveableSolids#L1-L6)

[^6]: [`scripts/gameStepEvent.gml:235-256`](https://spelunky.ai/wiki/source/scripts/gameStepEvent#L235-L256)

[^7]: [`objects/oMoveableSolid/create.gml:5`](https://spelunky.ai/wiki/source/objects/oMoveableSolid/create#L5)

[^8]: [`scripts/gameStepEvent.gml:238-239`](https://spelunky.ai/wiki/source/scripts/gameStepEvent#L238-L239)

[^9]: [`objects/oPushBlock/other_outside.gml:1`](https://spelunky.ai/wiki/source/objects/oPushBlock/other_outside#L1)

[^10]: [`objects/oPushBlock/step.gml:3-9`](https://spelunky.ai/wiki/source/objects/oPushBlock/step#L3-L9)

[^11]: [`scripts/scrMoveableSolidRecurseDrop.gml:1-10`](https://spelunky.ai/wiki/source/scripts/scrMoveableSolidRecurseDrop#L1-L10)

[^12]: [`scripts/scrRoomGen.gml:344`](https://spelunky.ai/wiki/source/scripts/scrRoomGen#L344)

[^13]: [`scripts/scrRoomGen4.gml:341`](https://spelunky.ai/wiki/source/scripts/scrRoomGen4#L341)

[^14]: [`scripts/scrRoomGen2.gml:79-114`](https://spelunky.ai/wiki/source/scripts/scrRoomGen2#L79-L114)

[^15]: [`scripts/scrRoomGen2.gml:353`](https://spelunky.ai/wiki/source/scripts/scrRoomGen2#L353)

[^16]: [`scripts/scrSetupWalls.gml:457-471`](https://spelunky.ai/wiki/source/scripts/scrSetupWalls#L457-L471)

[^17]: Room [`rHighscores`](https://spelunky.ai/wiki/source/rooms/rHighscores), as the room editor placed it

[^18]: [`scripts/scrCreateTileObj.gml:106-109`](https://spelunky.ai/wiki/source/scripts/scrCreateTileObj#L106-L109)

[^19]: [`objects/oSpearTrapTop/step.gml:21-28`](https://spelunky.ai/wiki/source/objects/oSpearTrapTop/step#L21-L28)

[^20]: [`objects/oArrowTrapTest/collision_oMoveableSolid.gml:5-26`](https://spelunky.ai/wiki/source/objects/oArrowTrapTest/collision_oMoveableSolid#L5-L26)

[^21]: [`scripts/moveTo.gml:57`](https://spelunky.ai/wiki/source/scripts/moveTo#L57)

[^22]: [`scripts/gameStepEvent.gml:236-256`](https://spelunky.ai/wiki/source/scripts/gameStepEvent#L236-L256)

[^23]: [`objects/oPushBlock/destroy.gml:1-11`](https://spelunky.ai/wiki/source/objects/oPushBlock/destroy#L1-L11)

[^24]: [“Most blocks but an area's plain rock skip what breaking a block does.”](https://github.com/851-labs/spelunky/blob/2ba0b2f3329e4e7cb0b8e1d4f72866306b27d714/docs/quirks.md?plain=1#L73), [docs/quirks.md §1](https://github.com/851-labs/spelunky/blob/2ba0b2f3329e4e7cb0b8e1d4f72866306b27d714/docs/quirks.md#1-bugs-and-leftovers-in-the-11-source)

[^25]: [`objects/oPushBlock/create.gml:5`](https://spelunky.ai/wiki/source/objects/oPushBlock/create#L5)

[^26]: [`objects/oPushBlock/destroy.gml:12-23`](https://spelunky.ai/wiki/source/objects/oPushBlock/destroy#L12-L23)

### Source code

- [`objects/oPushBlock/create.gml`](https://spelunky.ai/wiki/source/objects/oPushBlock/create)
- [`objects/oPushBlock/step.gml`](https://spelunky.ai/wiki/source/objects/oPushBlock/step)
- [`objects/oPushBlock/destroy.gml`](https://spelunky.ai/wiki/source/objects/oPushBlock/destroy)
- [`objects/oPushBlock/other_outside.gml`](https://spelunky.ai/wiki/source/objects/oPushBlock/other_outside)
- [`objects/oMoveableSolid/create.gml`](https://spelunky.ai/wiki/source/objects/oMoveableSolid/create)
- [`scripts/moveTo.gml`](https://spelunky.ai/wiki/source/scripts/moveTo)
- [`scripts/canPushMoveableSolids.gml`](https://spelunky.ai/wiki/source/scripts/canPushMoveableSolids)
- [`scripts/gameStepEvent.gml`](https://spelunky.ai/wiki/source/scripts/gameStepEvent)
- [`scripts/characterStepEvent.gml`](https://spelunky.ai/wiki/source/scripts/characterStepEvent)
- [`scripts/scrSetupWalls.gml`](https://spelunky.ai/wiki/source/scripts/scrSetupWalls)
