SpelunkyFan wiki

A Spectacles for sale

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

A Spectacles for sale is a quirk of Spelunky Classic in which four wares' price messages change their wording past level 2, as A SPECTACLES FOR $8800.

When the player picks up a ware in a shop, the Shopkeeper names it and its price. Each ware writes that message when it's made, and past level 2 the shop writes it again with the higher price, in a form of its own. For most wares the two read the same, but four read differently past level 2.

What happens

#

In a Clothing Shop on level 5, the player picks up the Spectacles, and the Shopkeeper prices them: A SPECTACLES FOR $10400. He runs and jumps out of the shop with them [1].

Shoplifting from a Clothing Shop. In a Clothing Shop on level 5, the shopkeeper prices the spectacles the player picks up at $10,400. He runs and jumps out of the shop with them, which puts them on, and the shopkeeper fires after him and misses.

Why

#

Each ware's create event writes its message from its base price, as the Spectacles' does: "SPECTACLES FOR $8000." [2]. On a level past the second, the shop raises the price by a tenth of the base price a level, and writes the message again:

    if (global.currLevel > 2)
    {
        with obj
        {
            cost += (cost/100)*10*(global.currLevel-2);
            if (shopDesc == "") buyMessage = "A " + string_upper(type) + " FOR $" + string(cost) + ".";
            else buyMessage = shopDesc + " FOR $" + string(cost) + ".";
        }
    }
scripts/scrShopItemsGen.gml:182-190, from spelunky.gmk, Spelunky Classic 1.1's source, © 2008, 2009 Derek Yu and Mossmouth, LLC (Spelunky User License v1.1b).

A ware with a shop name (shopDesc) keeps it: the bow, the bomb bag and box, the Pitcher's Mitt, the paste, the spring shoes and the gloves. Every other ware gets "A", its type in capitals and the price. Most of those messages already read that way ("A COMPASS FOR $3000." [3]), but four don't [4]:

WareOn levels 1 and 2Past level 2
SpectaclesSPECTACLES FOR $8000.A SPECTACLES FOR $8800. (level 3)[5]
Spike ShoesSPIKE SHOES FOR $4000.A SPIKE SHOES FOR $4400. (level 3)[6]
JetpackJETPACK FOR $20000.A JETPACK FOR $22000. (level 3)[7]
Rope pileEXTRA ROPE FOR $2500.A ROPE PILE FOR $2750. (level 3)[8]

The Shopkeeper shows the message of the ware the player holds while it has a price [9].

Reproducing it

#

Pick up the Spectacles, the Spike Shoes, the Jetpack or a rope pile in a shop on level 3 or later. Every one of the four for sale past level 2 shows it. The replay of the clip finds a Clothing Shop on level 5 and picks up the Spectacles: "A SPECTACLES FOR $10400.", frame 926 [10]. A Rare Shop on level 5 prices the Spike Shoes "A SPIKE SHOES FOR $5200." [11], and on level 2 the Jetpack keeps its own "JETPACK FOR $20000." [12].

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 fingerprints of the replays pin the messages. No option turns it off.

FAQ

#
Why does the Shopkeeper say "A SPECTACLES" in Spelunky Classic?

Past level 2 the game writes each ware's price message again, with the higher price. A ware with no shop name of its own gets "A", its type in capitals and the price, which reads well for most wares but not for the Spectacles or the Spike Shoes.

Which wares' messages change past level 2?

Four: the Spectacles ("A SPECTACLES FOR ..."), the Spike Shoes ("A SPIKE SHOES FOR ..."), the Jetpack ("JETPACK FOR ..." becomes "A JETPACK FOR ...") and the rope pile ("EXTRA ROPE FOR ..." becomes "A ROPE PILE FOR ..."). The others' come out the same, or keep their shop name.

Does the wording change the price?

No. The price in the message is the ware's real price, which goes up a tenth of its base price for each level past the second.

See also

#

References

#
  1. Clip clothing-shop/theft
  2. objects/oSpectacles/create.gml:7-8
  3. objects/oCompass/create.gml:7-8
  4. Quirk 1 (docs/quirks.md)
  5. objects/oSpectacles/create.gml:8
  6. objects/oSpikeShoes/create.gml:8
  7. objects/oJetpack/create.gml:8
  8. objects/oRopePile/create.gml:8
  9. objects/oShopkeeper/step.gml:72-84
  10. Replay fidelity/replays/item-seed-77-spectacles.txt
  11. Replay fidelity/replays/item-seed-7-spike-shoes.txt
  12. Replay fidelity/replays/item-seed-35-jetpack.txt

Source code

#