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.

# The stolen ware left unequipped

From the spelunky.ai wiki: <https://spelunky.ai/wiki/stolen-ware-unequipped>. Verified against the spelunky.ai port [v0.1.12](https://github.com/851-labs/spelunky/releases/tag/v0.1.12) on 28 October 2026.

The stolen ware left unequipped is a quirk of Spelunky Classic in which a ware carried out of a shop ahead of the player stays in his hands unworn.

| Quirk     |                                                                                                                                                                                                                                                    |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Status    | GML + Oracle                                                                                                                                                                                                                                       |
| Where     | [`objects/oPlayer1/step.gml:541-557`](https://spelunky.ai/wiki/source/objects/oPlayer1/step#L541-L557)                                                                                                                                             |
| Pinned by | `fidelity/replays/item-seed-7-spike-stomp.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): “Whether stealing a ware equips it depends on which leaves the shop's room first.” |

Carrying a ware out of a shop unpaid angers the [Shopkeeper](https://spelunky.ai/wiki/shopkeeper) and makes the ware the player's, and a
piece of equipment, such as the [Spike Shoes](https://spelunky.ai/wiki/spike-shoes), goes on as if bought. But two pieces of code take
the theft, the player's and the ware's, and only the player's puts it on. Whichever leaves the shop first
decides it, so a ware carried out ahead of the player stays in his hands, unworn, until he picks it up again.

## What happens

In a [Rare Shop](https://spelunky.ai/wiki/rare-shop) on level 5 that opens to the left, the player picks up the Spike Shoes, priced at
$5,200, and heads left out of the shop with them, jumping as he leaves. The Shopkeeper turns on him and fires, but
the shoes, out of the shop first, stay in his hands rather than going on[^1].

**Clip: Shoplifting from a Rare Shop.** In a Rare Shop on level 5 that opens to the left, the player picks up the spike shoes, priced at $5200, and runs and jumps out of the shop with them. The shopkeeper turns on him, but the shoes, out of the shop first, stay in his hands rather than going on. ([video](https://spelunky.ai/wiki/media/clips/rare-shop/theft/clip.mp4))

Out of the shop, he puts the shoes down and picks them up again, which puts them on, and then stomps a Caveman
with them[^2].

**Clip: Spike Shoes stomp a caveman.** Out of a shop with stolen spike shoes still in his hands, the player drops them and picks them up again, which puts them on. Then he drops onto a caveman just as it gets up from being stunned, and the one stomp kills it. ([video](https://spelunky.ai/wiki/media/clips/spike-shoes/stomp/clip.mp4))

## Why

The player's step takes a theft when he's outside the shop's room with a ware that still has a price: it runs
`scrStealItem`, which puts a piece of equipment on, and angers the Shopkeeper[^3]. The ware's own step takes a theft when the ware is outside
the shop, and it only angers the Shopkeeper and makes the ware free:

```gml objects/oItem/step.gml:17-25
    // stealing makes shopkeeper angry
    if (isRealLevel())
    {
        if (cost > 0 and forSale and not isInShop(x, y))
        {
            global.itemsStolen += 1;
            scrShopkeeperAnger(0);
            cost = 0;
        }
```

[`objects/oItem/step.gml:17-25`](https://spelunky.ai/wiki/source/objects/oItem/step#L17-L25), 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)).

Once its `cost` is 0, the player's check no longer runs, so whichever is out first takes the theft. The ware
is held 4 pixels ahead of the player[^4], but it tests where the step
before put it, while the player tests where he's just moved. Walking, at 3 pixels a step, it's out first only
when a step leaves him 1 pixel short of the room's edge; otherwise both are out on the same step, and the
player's step comes first, so the ware goes on. With the run key, faster than 4 pixels a step, the player is
always out first, and jumping out upwards, he crosses first[^5]. A free ware goes on when it's picked up[^6].

## Reproducing it

Steal a piece of equipment by leaving the shop forwards so that it crosses the room's edge ahead of the
player. It happens in normal play. The replay of the clips jumps out of a Rare Shop to the left with the Spike
Shoes: the shoes leave the room a step before the player, so the Shopkeeper is angered (frame 1429) but the
shoes stay in his hands. He puts them down (1463) and picks them up again, and they go on (1471)[^7]. Running out on the ground with a Cape puts it
on at once[^8]. The Ankh is never for sale, so it's never
left this way.

## 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[^5], and the oracle's fingerprint of the replay pins the theft, the unworn shoes and when they go
on. No option turns it off.

## FAQ

### Why didn't the stolen Spike Shoes go on in Spelunky Classic?

They left the shop before the player did. A stolen ware goes on only if the player is out of the shop first; if the ware, held in front of him, crosses first, it's made free and stays in his hands.

### How do you put on a stolen item that stayed in your hands?

Put it down and pick it up again (down and the action key). Picking up a free piece of equipment puts it on.

### How do you steal a ware so it goes on at once?

Leave the shop ahead of it: hold the run key, which moves the player more than the 4 pixels the ware is held ahead of him each step, or jump out upwards. Walking out forwards, both usually cross on the same step, and it goes on too.

## See also

- **Related:** [Shopkeeper](https://spelunky.ai/wiki/shopkeeper), [Spike Shoes](https://spelunky.ai/wiki/spike-shoes), [Rare Shop](https://spelunky.ai/wiki/rare-shop), [Clothing Shop](https://spelunky.ai/wiki/clothing-shop)

## References

[^1]: Clip rare-shop/theft

[^2]: Clip spike-shoes/stomp

[^3]: [`objects/oPlayer1/step.gml:541-557`](https://spelunky.ai/wiki/source/objects/oPlayer1/step#L541-L557)

[^4]: [`objects/oItem/step.gml:41-42`](https://spelunky.ai/wiki/source/objects/oItem/step#L41-L42)

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

[^6]: [`objects/oPlayer1/step.gml:1297`](https://spelunky.ai/wiki/source/objects/oPlayer1/step#L1297)

[^7]: Replay `fidelity/replays/item-seed-7-spike-stomp.txt`

[^8]: Replay `fidelity/replays/item-seed-35-cape.txt`

### Source code

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