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.

# Yetis never charging

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

Yetis never charging is a quirk of Spelunky Classic in which a Yeti has a charge but its sight never sets it off, only the Cavemen and Hawkmen near the player.

| Quirk     |                                                                                                                                                                                         |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Status    | GML + Oracle                                                                                                                                                                            |
| Where     | [`objects/oEnemySight/collision_oCharacter.gml:1-17`](https://spelunky.ai/wiki/source/objects/oEnemySight/collision_oCharacter#L1-L17)                                                  |
| Pinned by | `fidelity/replays/enemy-yeti-sight-never-charges.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 yeti never charges.” |

A [Yeti](https://spelunky.ai/wiki/yeti) is written to charge, as a [Caveman](https://spelunky.ai/wiki/caveman) does: it has a charge, at 3 pixels a step, and it
sends sight checks ahead of it every 6 steps. But when a sight check reaches the player, it sets off only the
Cavemen and [Hawkmen](https://spelunky.ai/wiki/hawkman) near him, so a Yeti's sight can set off a Caveman, but never a Yeti. The only thing that
sets a Yeti charging is a [Piranha](https://spelunky.ai/wiki/piranha)'s bite, and no generated level has both.

## What happens

A Yeti's sight check reaches the player, and a Caveman walled in under him starts charging. The Yeti that saw him
never charges: it walks up and throws him[^1].

**Clip: A yeti's sight sets off a caveman, but never the yeti.** A yeti's sight check reaches the player, and a caveman walled in under him starts charging. The yeti that saw him never charges: it walks up and throws him. ([video](https://spelunky.ai/wiki/media/clips/quirks/yeti-never-charges/clip.mp4))

## Why

A Yeti's create event names its charge, `ATTACK = 2`[^2], and its step
runs it: 3 pixels a step the way it faces, turning at walls[^3]. While it
stands or walks, it sends a sight check, `oEnemySight`, every 6 steps[^4][^5]. The check's collision
with the player is what sets monsters charging:

```gml objects/oEnemySight/collision_oCharacter.gml:1-8
with oCaveman
{
    if (distance_to_object(oPlayer1) < 100 and status < 98)
    {
        status = 2;
        playSound(global.sndAlert);
    }
}
```

[`objects/oEnemySight/collision_oCharacter.gml:1-8`](https://spelunky.ai/wiki/source/objects/oEnemySight/collision_oCharacter#L1-L8), 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 same follows `with oHawkman`, and there's no `with oYeti`[^6]. So the Yeti's sight sets off the Cavemen and
Hawkmen within 100 pixels of the player, and never a Yeti. The only code that sets a Yeti's `status` to 2 is a
Piranha's bite: a Piranha goes for the nearest live Caveman, or with none the nearest Shopkeeper, Hawkman or Yeti,
if it's swimming, and sets what it reaches charging[^7]. Piranhas live
only in the Jungle and Yetis only in the Ice Caves[^8].

## Reproducing it

Let any Yeti in the [Ice Caves](https://spelunky.ai/wiki/ice-caves) see the player: it walks up to him, and never charges. The replay of the
clip's staged scene, a custom level, has a Yeti on the player's floor and a Caveman walled in under him. The Yeti's
sight check reaches the player, and the Caveman, which can't see him, charges; the Yeti walks on, sends more checks,
and throws him when it reaches him[^9]. In another
custom level, with a Yeti swimming in a pool with two Piranhas and nothing else for them to go for, their bite sets
it charging, turning at the walls[^10].

## 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[^8], and the oracle's fingerprint of both replays pins who charges. No option turns it off.

## FAQ

### Do Yetis charge at the player in Spelunky Classic?

No. A [Yeti](https://spelunky.ai/wiki/yeti) has a charge, and looks for the player as a Caveman does, but its sight sets off only the Cavemen and Hawkmen near him. The Yeti walks up and grabs him instead.

### Can anything make a Yeti charge?

Only a [Piranha](https://spelunky.ai/wiki/piranha)'s bite, on a Yeti that's swimming. No generated level has both, so it takes a custom level with a Yeti and Piranhas in water, and no Caveman, Shopkeeper or Hawkman for the Piranhas to go for first.

### Why did a Caveman charge when a Yeti saw me?

Any monster's sight check that reaches the player sets off every Caveman and Hawkman within 100 pixels of him, whichever monster sent it ([One caveman's sight alerting the rest](https://spelunky.ai/wiki/caveman-sight-alerts-others)).

## See also

- **Related:** [Yeti](https://spelunky.ai/wiki/yeti), [Caveman](https://spelunky.ai/wiki/caveman), [Hawkman](https://spelunky.ai/wiki/hawkman), [Piranha](https://spelunky.ai/wiki/piranha)

## References

[^1]: Clip quirks/yeti-never-charges

[^2]: [`objects/oYeti/create.gml:16`](https://spelunky.ai/wiki/source/objects/oYeti/create#L16)

[^3]: [`objects/oYeti/step.gml:126-136`](https://spelunky.ai/wiki/source/objects/oYeti/step#L126-L136)

[^4]: [`objects/oYeti/step.gml:65-74`](https://spelunky.ai/wiki/source/objects/oYeti/step#L65-L74)

[^5]: [`objects/oYeti/step.gml:115-124`](https://spelunky.ai/wiki/source/objects/oYeti/step#L115-L124)

[^6]: [`objects/oEnemySight/collision_oCharacter.gml:10-17`](https://spelunky.ai/wiki/source/objects/oEnemySight/collision_oCharacter#L10-L17)

[^7]: [`objects/oPiranha/step.gml:77-117`](https://spelunky.ai/wiki/source/objects/oPiranha/step#L77-L117)

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

[^9]: Replay `fidelity/replays/enemy-yeti-sight-never-charges.txt`

[^10]: Replay `fidelity/replays/enemy-yeti-piranha-charge.txt`

### Source code

- [`objects/oYeti/create.gml`](https://spelunky.ai/wiki/source/objects/oYeti/create)
- [`objects/oYeti/step.gml`](https://spelunky.ai/wiki/source/objects/oYeti/step)
- [`objects/oEnemySight/collision_oCharacter.gml`](https://spelunky.ai/wiki/source/objects/oEnemySight/collision_oCharacter)
- [`objects/oPiranha/step.gml`](https://spelunky.ai/wiki/source/objects/oPiranha/step)
