SpelunkyFan wiki

Stone blocks without gold

Verified against the spelunky.ai port v0.1.11 on .

Stone blocks without gold is a quirk of Spelunky Classic in which a stone block on a Temple level breaks without a trace, so the City of Gold's give no gold.

In the City of Gold, every block of stone is gold, and breaking one gives three Gold Chunks and a Gold Nugget. One in ten is a stone block rather than temple stone, drawn gold all the same, and it gives nothing: level generation marks every stone block of a Temple level to break cleanly, which leaves no rubble and no gold.

What happens

#

A bomb in the City of Gold breaks a stone block and the block of temple stone beside it. The temple stone gives three chunks of gold and a nugget; the stone block, the same gold to look at, gives nothing [1].

A stone block in the City of Gold gives no gold. A bomb in the City of Gold destroys a stone block and the gold temple block beside it. The temple block gives three gold chunks and a nugget; the stone block nothing, as level generation marked every stone block of a Temple level to break without a trace.

Why

#

The Temple's room script makes about one block in ten of its 1 and 2 tiles a stone block (oBlock), and the rest temple stone (oTemple) or, for a 1 tile one time in a hundred, the Jungle's earth [2]. In the City, a stone block's create event gives it the gold sprite [3]. Then scrEntityGen's Temple branch turns some stone blocks into arrow traps, and so that those go without rubble, it sets the flag on all of them first:

    with oBlock
    {   
        cleanDeath = true;
        if (not isInShop(x, y))
scripts/scrEntityGen.gml:497-500, from spelunky.gmk, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC (Spelunky User License v1.1b).

Nothing sets it back on the blocks it leaves [4]. A stone block's destroy event makes its rubble, or in the City its gold, only without the flag:

if (not cleanDeath)
{

    if (not global.cityOfGold)
objects/oBlock/destroy.gml:1-4, from spelunky.gmk, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC (Spelunky User License v1.1b).

So a stone block bombed or dug on a Temple level leaves nothing, and one in the City gives no gold. The temple stone has no such flag, and gives three chunks and a nugget [5]. The Mines' pass over stone blocks doesn't set it, so theirs leave rubble [6] [7].

Reproducing it

#

Bomb or dig the blocks of the City of Gold: about one in ten gives no gold. On any Temple level, a stone block leaves no rubble. The replay, with seed 9, reaches the City as a sacrifice pit, and the player throws a bomb onto a stone block by the entrance. It breaks that block and the temple stone beside it, and only one nugget and three chunks fly: the temple stone's [8].

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 [7], and the oracle's fingerprint of the replay pins the blocks and the gold. No option turns it off.

FAQ

#
Why do some gold blocks in the City of Gold give no gold?

One block in ten of the City is a stone block, drawn gold like the rest. Level generation marks every stone block on a Temple level to break cleanly, and a block that breaks cleanly makes neither its rubble nor, in the City, its gold.

How can I tell a stone block from a temple block in the City of Gold?

You can't by its look: both are drawn as gold. Only breaking it tells, by whether gold flies.

Do the Temple's stone blocks leave rubble?

No. A stone block bombed or dug on any Temple level vanishes without rubble, where the Mines' stone blocks leave theirs.

See also

#

References

#
  1. Clip quirks/city-stone-block-no-gold
  2. scripts/scrRoomGen4.gml:317-327
  3. objects/oBlock/create.gml:3-4
  4. scripts/scrEntityGen.gml:497-524
  5. objects/oTemple/destroy.gml:21-32
  6. scripts/scrEntityGen.gml:145-171
  7. Quirk 1 (docs/quirks.md)
  8. Replay fidelity/replays/city-of-gold-seed-9-sacrifice-pit.txt

Source code

#