Counting how many times you were bad at stairs

Tell me if you’ve been here before: You’ve collected the necessary runes, opened the gate to zot, stolen the precious artifact, and dodged the swarming forces of pandemonium, only to get to the dungeon entrance and… You can't go down here!.

I love this interaction! No game is complete without me trying to go down the upstairs after mastering the dungeon. It happens to me all the time and each time I feel like I am watching this video again.

I’m serious too - I am, genuinely, tickled every time this happens. I am curious how many times I’ve failed to comprehend stairs direction so I implemented a counter.

You can't go down here! Stair failure counter: 13

It uses persistent storage so the counter is shared with all games! It won’t count past failures of course but the counter will persist between games. It works offline for all games and online for all games with the same account and server.

To use it, add this to your settings file.

{
function getOrDefault(table, key, default)
  if table[key] ~= nil then return table[key]
  else return default end
end

stairs_updated = false
function c_message(text, channel)
  if string.find(text, "can't go up here!") or string.find(text, "can't go down here!") then
    c_persist["stairs failures"] = getOrDefault(c_persist, "stairs failures", 0) + 1
    stairs_updated = true
  end
end

function print_stairs_failures()
  if stairs_updated then
    crawl.mpr("Stair failure counter: " .. c_persist["stairs failures"])
    stairs_updated = false
  end
end

function ready()
  print_stairs_failures()
end
}

If you already have c_message or ready hooks in your rc, don’t add those functions again. Instead, add the content of these functions to your existing functions. They can be added to the top of existing functions without issue, if you’re not sure.

2 Thanks