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.

# Thrown monsters' full push

From the spelunky.ai wiki: <https://spelunky.ai/wiki/thrown-monster-full-push>. Verified against the spelunky.ai port [v0.1.11](https://github.com/851-labs/spelunky/releases/tag/v0.1.11) on 28 October 2026.

Thrown monsters' full push is a quirk of Spelunky Classic in which a thrown monster pushes the one it hits with all its speed, a thrown item with 0.3.

| Quirk     |                                                                                                                                                                                                                                                                             |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Status    | GML + Oracle                                                                                                                                                                                                                                                                |
| Where     | [`objects/oEnemy/step.gml:169-179`](https://spelunky.ai/wiki/source/objects/oEnemy/step#L169-L179)                                                                                                                                                                          |
| Pinned by | `fidelity/replays/action-throw-monster-full-push.txt`                                                                                                                                                                                                                       |
| Row       | [docs/quirks.md §1, Bugs and leftovers in the 1.1 source](https://github.com/851-labs/spelunky/blob/main/docs/quirks.md#1-bugs-and-leftovers-in-the-11-source): “A thrown item pushes the monster it hits with 0.3 of its speed, and a thrown monster with all of its own.” |

A thrown item that hits a monster hurts it and pushes it along at 0.3 of the item's speed. A thrown monster, stunned
and flying, hurts the monsters it hits the same way, but pushes them with all of its speed, as the line that would
cut it to 0.3 is commented out. So a [Rock](https://spelunky.ai/wiki/rock) knocks a [Caveman](https://spelunky.ai/wiki/caveman) back a little, and the Caveman,
thrown, sends a [Yeti](https://spelunky.ai/wiki/yeti) across the room.

## What happens

The player throws a Rock at a charging Caveman: it stuns the Caveman and knocks it back a little, with 0.3 of the
Rock's speed. He picks the stunned Caveman up and throws it on the run into a Yeti, which takes all of the
Caveman's speed and flies to the far wall[^1].

**Clip: A thrown monster pushes with all its speed, a thrown rock with 0.3.** The player throws a rock at a charging caveman: it stuns the caveman and knocks it back a little, with 0.3 of the rock's speed. He picks the stunned caveman up and throws it on the run into a yeti, which takes all of the caveman's speed and flies to the far wall. ([video](https://spelunky.ai/wiki/media/clips/quirks/thrown-monster-full-push/clip.mp4))

## Why

A thrown item's step sets the monster it hits moving at the item's speed, `obj.xVel = xVel`[^2], and after the hit sets it again, to 0.3 of that:

```gml objects/oItem/step.gml:350
                obj.xVel = xVel * 0.3;
```

[`objects/oItem/step.gml:350`](https://spelunky.ai/wiki/source/objects/oItem/step#L350), from `spelunky.gmk`, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC ([Spelunky User License v1.1b](https://spelunky.ai/LICENSE.txt)).

The first line is dead: nothing between reads it. A stunned monster moving faster than 2 pixels a step runs much the
same check in `oEnemy`'s step, with the first line kept for a monster that isn't stunned or dead itself:

```gml objects/oEnemy/step.gml:169-179
// moving projectile
if (status == 98)
{
    if ((abs(xVel) > 2 or abs(yVel) > 2))
    {
        obj = collision_rectangle(x, y, x+16, y+16, oEnemy, false, true);
        if (obj)
        {
            if (not obj.invincible and obj.type != "Magma Man")
            {
                if (obj.status < 98) obj.xVel = xVel;
```

[`objects/oEnemy/step.gml:169-179`](https://spelunky.ai/wiki/source/objects/oEnemy/step#L169-L179), from `spelunky.gmk`, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC ([Spelunky User License v1.1b](https://spelunky.ai/LICENSE.txt)).

But its second line is commented out, `// obj.xVel = xVel * 0.3;`[^3], so the first one stands, and the monster it hits takes all of its
speed[^4].

## Reproducing it

Stun a monster, pick it up, and throw it on the run into another: the one it hits flies off at the thrown one's
speed. Throw a Rock at the same monster and it moves only a little. Play does it with every thrown item's hit and
every stunned monster thrown or knocked into another ([Throwing](https://spelunky.ai/wiki/throwing)). The replay of the clip's staged scene, a
custom level, has a Rock, a Caveman and a Yeti in a corridor. The Rock, thrown standing at 8 pixels a step, stuns
the Caveman and knocks it back at 2.4. The stunned Caveman, thrown on the run at 6.9, stuns the Yeti, which takes all of
its speed, 6.7, and flies to the far wall[^5].

## In the port

The spelunky.ai port reproduces it exactly: it's in docs/quirks.md's list of the 1.1 source's bugs[^4], and the oracle's fingerprint of the replay pins both pushes. No option turns it off.

## FAQ

### Why does a thrown Caveman send other monsters flying?

A stunned monster that hits another passes on all of its speed, where a thrown item passes on 0.3 of its. The line that would cut it to 0.3 is commented out.

### Does a thrown monster push one that's stunned or dead?

No. A monster that's stunned or dead itself keeps its own speed when a thrown monster hits it.

### Do monsters knocked flying by other means push too?

Yes. Any stunned monster moving faster than 2 pixels a step does, thrown by the player or knocked flying.

## See also

- **Related:** [Throwing](https://spelunky.ai/wiki/throwing), [Rock](https://spelunky.ai/wiki/rock), [Caveman](https://spelunky.ai/wiki/caveman), [Yeti](https://spelunky.ai/wiki/yeti)

## References

[^1]: Clip quirks/thrown-monster-full-push

[^2]: [`objects/oItem/step.gml:256-263`](https://spelunky.ai/wiki/source/objects/oItem/step#L256-L263)

[^3]: [`objects/oEnemy/step.gml:262`](https://spelunky.ai/wiki/source/objects/oEnemy/step#L262)

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

[^5]: Replay `fidelity/replays/action-throw-monster-full-push.txt`

### Source code

- [`objects/oItem/step.gml`](https://spelunky.ai/wiki/source/objects/oItem/step)
- [`objects/oEnemy/step.gml`](https://spelunky.ai/wiki/source/objects/oEnemy/step)
