u/Happy-Click7308

▲ 40 r/nethack

[3.4.3 / 5.0.0] I analysed 160,000 nethackrc files to optimise my own (v long and stupid post)

About Hardfought

I mention NAO and 3.4.3-NAO quite a few times in this post. Rest assured: what works on 3.4.3-NAO works on 3.4.3-hdf. The latter is based on the former, after all, and includes all the classic patches and enhancements.

Are configs necessary?

No, not really. MalcolmMasher uses a ridiculously minimal config, for example, and still often ascends wishless, genocideless, streaking games with difficult characters. I, on the other hand, spent hours researching for this post and testing various configs and my winrate is below 30%.

Don't put stupid shit in your config

While looking through these lines, I saw a non-zero amount of presumably real personal information, racial slurs, weird ASCII art, questionble inks and stories written in comments. These files are public, even if you might assume that no-one will ever read them.

Before you ask

  • Yes, you can write the config in lower-case if you want (ie. options=windowtype:curses) is totally valid syntax in both 3.4.3 and 5.0.0.
  • Yes, you can use the equals sign = as : in compound options if you want (ie. OPTIONS=windowtype=curses) is also valid syntax in both 3.4.3 and 5.0.0.
  • Yes, you can use whitespace in-line, but preferably don't, because some compound options don't parse it well. For example:
    • OPTIONS = autodig and OPTIONS= windowtype :curses are valid, but
    • OPTIONS = windowtype: curses is not
  • Yes, you can use OPTION as an alternative for OPTIONS.

Options proper ('OPTIONS=')

Options from default files

My estimation is that just over half of all configs are copies of the default configs provided by NAO or very, very minimal modifications. Through sheer volume, the options in these default files are the most 'popular'. Most of them are totally unobjectionable.

As a baseline, I'll be estimating that about 75,000 configs were fairly unique, although you may be surprised to hear that only about 23,500 configs out of over 160,000 were completely unique; every other file had at least one duplicate amongst the set.

menucolors

The single most popular option, menucolors is set by over 99% of all configs. And for good reason: it improves the UI with no real disadvantages. (Popular menucolor configurations are detailed in a section below.)

menucolors was actually a patch for 3.4.3 and is thus found in both 3.4.3 and 3.6+ configs; it kept the same name, unlike, for example, statuscolors which became statushilites.

showexp

I can't believe this is still off by default. Needless to say, having a mechanic as central as your experience points on the main HUD is pretty helpful.

time

Another option that is inexplicably off by default. Tracking in-game time is important for praying and eating safely and optimally as well as various other things, like estimating your luck.

autodig

Again, why is this off by default? Digging is super useful at all stages of the game and having a shortcut to do it is a no-brainer. The only disadvantage I can think of is that you might accidentally mine a wall you didn't want to, but... just don't wield a pick-axe?

color

This is actually on by default, but you can set it in the config anyway. If your terminal is not capable of displaying colour in 2026, all I can say is that I admire your patience and foolhardiness.

boulder:0

Incredibly, the large rock class symbol ` is still the default, making Soukoban a nightmare for anyone without this or similar. Only 12 configs had boulder:O, which I was expecting to be more popular. boulder:8, boulder:' and boulder:* each have cult followings, but boulder:0 remains the favourite.

showscore

Useful for tracking whether the game considers you a beginner.

msg_window:reversed

This is the default these days, and could be abbreviated to msg_window:r. In 3.4.3, however, it was on single-message by default, so it doesn't hurt to have it.

suppress_alert:3.4.3

This hides the "Note: Please use #quit if you wish to exit the game" when quivering projectiles. This message is useless clutter if you know how to exit, so this option is handy.

!autopickup, noautopickup

Autopickup is already off by default in 5.0.0, but it used to be on by default. This wouldn't be so bad – actually, I think it's quite convenient – but there were no exceptions configured, so autopickup would make you stuff every chest, corpse and loadstone into your bag as soon as you walked over them.

Obviously, the best option is to have it on and configured properly, but that opens up another can of worms: are spellbooks worth auto-pickupping? What about gems? Having it off by default allows everyone to decide for themselves.

fruit:slime mold

How boring. By the way, the other most popular fruits are mango, kiwi, brain, strawberry, pineapple, durian, pizza, fruit, potato, papaya, pomegranate, avocado, guava, peach, blueberry muffin, cherry, apple, banana, and kumquat.

Some names that I thought were clever were arch lichen, slime mold. You die..., chocolate Amulet of Yendor, cup of gnomish minestrone, +plump helmet roast+, thoroughly melted snow cone, and lich-ee.

number_pad:1

This is one of the more divisive options in the community. There were:

  • 64,091 instances of number_pad:1 (Numpad movement)
  • 488 instances of number_pad:2 (DOS-compatible numpad movement)
  • 15 instances of number_pad:3 (Telephone keypad movement)
  • 9 instances of number_pad:4 (DOS-compatible telephone keypad movement)
  • 15,473 instances of number_pad:0 (Vi movement, explicitly set)
  • 130 instances of number_pad:-1 (Vi movement for QWERTZ)

However, since the NetHack default is value 0, the remaining ~80,000 configs with neither one set are technically in the Vi keys faction, making it the more popular option by volume.

In my opinion, numpad movement is quite advantageous since it prevents typos involving confirmation messages; I have broken a wand of wishing once while trying to quickly (a)pply a key (on 'i', with the wand on 'o') to a door to the north-west ('y').

The paranoid_confirmation options fix this issue (though missing in 3.4.3), however, and laptop players don't really have a choice, so I think this conundrum will stay with us for the time being.

hitpointbar

I think this option is very advantageous. Seeing a bar go down when you take significant damage is much better feedback and helps shock you back into your senses if you're playing lazily.

statushilites

Statushilites are pretty great; they make it easier to read your status quickly and make feedback about stat changes, power usage, and encumberance more apparent. The defaults are as follows:

> OPTIONS=hilite_status:condition/slime/red&inverse

> OPTIONS=hilite_status:condition/hallu/yellow

> OPTIONS=hilite_status:condition/foodpois/red&inverse

> OPTIONS=hilite_status:condition/stun/red&bold

> OPTIONS=hilite_status:condition/conf/orange

> OPTIONS=hilite_status:condition/termill/red&inverse

> OPTIONS=hilite_status:characteristics/up/green/down/red

> OPTIONS=hilite_status:power/<33%/red&bold

> OPTIONS=hilite_status:power/<50%/orange&normal

> OPTIONS=hilite_status:power/<66%/yellow&normal

> OPTIONS=hilite_status:power/<100%/green&normal

> OPTIONS=hilite_status:power/100%/grey&normal

> OPTIONS=hilite_status:hitpoints/<15%/red&inverse

> OPTIONS=hilite_status:hitpoints/<33%/red&bold

> OPTIONS=hilite_status:hitpoints/<50%/orange&normal

> OPTIONS=hilite_status:hitpoints/<66%/yellow&normal

> OPTIONS=hilite_status:hitpoints/<100%/green&normal

> OPTIONS=hilite_status:hitpoints/100%/grey&normal

> OPTIONS=hilite_status:cap/burdened/yellow/stressed/orange/strained/red&bold/overtaxed/red&inverse/overloaded/red&inverse&blink

> OPTIONS=hilite_status:hunger/satiated/yellow/hungry/orange/weak/red&bold/fainting/red&inverse/fainted/red&inverse&blink

> OPTIONS=hilite_status: gold/up/yellow/down/brown

hilite_pet

Good. Lets you tell your pet apart from a monster with the same glyph without farlooking.

lit_corridor

statuscolors

This is the 3.4.3 patch option that is the ancestor of statushilites. For similar reasons, it enjoys default status on 3.4.3 configs. Their default configuration was:

> STATUSCOLOR=hp%100=green,hp%66=yellow,hp%50=orange

> STATUSCOLOR=hp%33=red&bold,hp%15:red&inverse,hp%0:red&inverse&blink

Other popular options

These are not from default configs and have between 3,000 – 10,000 instances; this may sound like a small number, but I think they'd better be classified as 'options popular amongst those who care about options'. Again, roughly half of all configs were quite literally default, and I'd guess that another 20–30% have very minimal changes.

bones

Bones are pretty advantageous and fun, and enabled by default; relatively few configs had them explicitly disabled, and quite a few had them explicitly enabled. However, there's still the chance of running into someone's Yeenoghu...

autoopen

This is enabled by default, but a fair number of people explicitly set it as well. I couldn't imagine playing without it.

windowtype:curses

If you can use it, you probably should. However, the fact that TTY is the default and that 520 people had it explicitly set means that the vast majority of people apparently play on TTY; or just don't know about curses. The horror...

By the way, about 400 people still have cursesgraphics set, even though I'm pretty sure 3.4.3's patched curses understands the windowtype option. At least on Hardfought it is so.

hilite_pile

Another useful option with no real drawbacks, this one is especially convenient in places like Castle where you tend to end up with tons of items all over the place and may have an extra polywand or two.

sortloot:full

This is still none (no sorting) by default for some reason. full makes it much easier to look through item piles for stuff you actually want.

autoquiver

Disabled by default, but I don't think there's any harm in this; if it autoquivers something stupid, you can just cancel your f action – the rest of the time it saves you the trouble.

use_darkgray

I'm not sure this option does anything anymore; it was a useful non-vanilla option in 3.4.3 to make black dragons and unicorns and such draw as dark gray, but these glyphs are already drawn in the correct colour in newer versions, even on TTY mode. It also does nothing with curses on, which didn't stop a lot of people from having both windowtype:curses and use_darkgray in their configs anyway.

paranoid_hit, paranoid_remove, paranoid_quit

Deprecated by paranoid_confirmation, these are useful in 3.4.3 for obvious reasons and can be game-saving from time to time.

hp_monitor

This is an extremely deprecated option that has been rendered vestigial by statuscolors, curses, and vanilla 3.6, which has statushilites. Safe to remove.

safe_pet

This has been enabled by default since 3.4.3, but many explicitly set it anyway. Killing your pet is not very useful at any stage of the game – and not just because of the harsh penalties – so it makes sense.

showbuc

This is a patch option for 3.4.3 that I think does the same thing as implicit_uncursed. Despite not existing in 3.6, almost 150 people had it in various 3.6 configs.

dark_room

This is on by default and makes it easier to tell which parts of a room you can actually see right now and which might have monsters hiding. No real disadvantage.

DECgraphics, IBMgraphics, symset:DECgraphics, symset:IBMgraphics

Well, you heard it here first: DECgraphics is about thrice as popular as IBMgraphics. I thought that these options had been completely done away with in newer versions in favour of the symset option, but both of them still work in 5.0.0, despite not being in the Guidebook.

!cmdassist, nocmdassist

This feature is on by default and is intended to help new players remember how to do certain things, but it's of no use to more experienced players. By the way, negating with ! is more popular than with no.

fixinv

This is also on by default and rightfully so. Makes it much less obnoxious to drop and pick up items, one of the things that you do more than anything else in the game.

!sparkle, nosparkle

I think this option looks pretty good until about Castle when the amount of rays and resisted attacks starts going up significantly. On the Plane of Fire with conflict on it makes each turn take multiple seconds.

showrace

This is divisive; there's an argument to be made that it helps dwarvish players remember not to genocide themselves, but on the other hand, the '@' is iconic and arguably easier to spot on confusing floor layouts. I think either way is fine.

sortpack

Luckily this has been the default since 3.4.3, but it's such a good option that I totally get why people explicitly set it, just in case.

pickup_types:$

The first autopickup configuration. I think this is fair enough until about Castle, but at least I tend to stop picking up gold in Gehennom on most characters; at some point the encumberance is not worth the chance of maybe getting +1 protection at some point in the future, and a Gehennom-worthy character can steal anything they want from shops anyway.

confirm

Attack-confirm on peacefuls. It's on by default, obviously. You can turn this off if you want every weapon to feel like Stormbringer, dear God...

Less popular options dump

Here is a list of options with 299 – 2999 instances. I think this cutoff is pretty arbitrary, but it had to be set somewhere.

> 2931 OPTIONS=verbose

> 2901 OPTIONS=showborn

> 2869 OPTIONS=pushweapon

> 2799 OPTIONS=checkpoint

> 2796 OPTIONS=prayconfirm

> 2693 OPTIONS=mail

> 2650 OPTIONS=travel

> 2579 OPTIONS=silent

> 2517 OPTIONS=menustyle:full

> 2515 OPTIONS=pickup_burden:unencumbered

> 2278 OPTIONS=sound

> 2153 OPTIONS=help

> 2122 OPTIONS=menu_headings:inverse

> 2060 OPTIONS=null

> 2054 OPTIONS=perm_invent

> 2019 OPTIONS=hilite_hidden_stairs

> 2000 OPTIONS=noeight_bit_tty

> 1965 OPTIONS=noignintr

> 1941 OPTIONS=nolootabc

> 1940 OPTIONS=noautopickup

> 1937 OPTIONS=noextmenu

> 1923 OPTIONS=sparkle

> 1920 OPTIONS=runmode:walk

> 1904 OPTIONS=pickup_thrown

> 1858 OPTIONS=paranoid_confirmation:Confirm quit attack pray wand Remove

> 1790 OPTIONS=nowin_edge

> 1743 OPTIONS=pickup_burden:stressed

> 1704 OPTIONS=noshowrace

> 1702 OPTIONS=runmode:teleport

> 1692 OPTIONS=!legacy

> 1680 OPTIONS=nouse_inverse

> 1669 OPTIONS=standout

> 1626 OPTIONS=rest_on_space

> 1615 OPTIONS=nostandout

> 1506 OPTIONS=sortloot:none

> 1503 OPTIONS=hilite_obj_piles

> 1451 OPTIONS=!implicit_uncursed

> 1432 OPTIONS=norest_on_space

> 1418 OPTIONS=!autodig

> 1409 OPTIONS=vt_tiledata

> 1409 OPTIONS=msghistory:20

> 1397 OPTIONS=!rest_on_space

> 1334 OPTIONS=use_inverse

> 1330 OPTIONS=pettype:cat

> 1328 OPTIONS=gender:male

> 1281 OPTIONS=gender:female

> 1253 OPTIONS=disclose:yi ya yv yg yc

> 1241 OPTIONS=nouse_darkgray

> 1229 OPTIONS=!help

> 1220 OPTIONS=noshowborn

> 1114 OPTIONS=msghistory:1000

> 1055 OPTIONS=!bones

> 1050 OPTIONS=noshowbuc

> 1025 OPTIONS=race:human

> 1012 OPTIONS=pettype:dog

> 987 OPTIONS=sortloot:loot

> 978 OPTIONS=msg_window:reverse

> 953 OPTIONS=!news

> 952 OPTIONS=monsters:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@X'&;:~]

> 906 OPTIONS=pettype:none

> 897 OPTIONS=msg_window:full

> 846 OPTIONS=guicolor

> 742 OPTIONS=popup_dialog

> 738 OPTIONS=scores:10 top/3 around/own

> 737 OPTIONS=lootabc

> 737 OPTIONS=align_message:bottom

> 724 OPTIONS=show_obj_sym

> 719 OPTIONS=menu_glyphs

> 707 OPTIONS=splash_screen

> 686 OPTIONS=runmode:run

> 666 OPTIONS=!prayconfirm

> 663 OPTIONS=!autoopen

> 661 OPTIONS=align_status:right

> 660 OPTIONS=align:neutral

> 646 OPTIONS=!lootabc

> 646 OPTIONS=disclose:+iagcv

> 607 OPTIONS=pickup_burden:burdened

> 586 OPTIONS=msghistory:60

> 584 OPTIONS=role:wizard

> 582 OPTIONS=!use_darkgray

> 580 OPTIONS=pickup_types:$!/="+?

> 571 OPTIONS=!number_pad

> 567 OPTIONS=nolegacy

> 567 OPTIONS=noautodig

> 566 OPTIONS=menu_objsyms

> 550 OPTIONS=!pushweapon

> 549 OPTIONS=cmdassist

> 546 OPTIONS=extmenu

> 530 OPTIONS=hp_notify

> 525 OPTIONS=nohilite_pet

> 520 OPTIONS=windowtype:tty

> 519 OPTIONS=statushilites:10

> 519 OPTIONS=align_message:top

> 514 OPTIONS=tombstone

> 512 OPTIONS=monsters:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@8'&;:~]

> 493 OPTIONS=align:chaotic

> 492 OPTIONS=race:elf

> 489 OPTIONS=!extmenu

> 488 OPTIONS=number_pad:2

> 473 OPTIONS=toptenwin

> 472 OPTIONS=mouse_support

> 459 OPTIONS=suppress_alert:3.3.1

> 456 OPTIONS=disclose:+i +a +v +g +c

> 456 OPTIONS=align:lawful

> 446 OPTIONS=win_edge

> 446 OPTIONS=!ignintr

> 443 OPTIONS=!mail

> 438 OPTIONS=windowborders:3

> 426 OPTIONS=news

> 419 OPTIONS=altmeta

> 399 OPTIONS=!eight_bit_tty

> 398 OPTIONS=msg_window:combination

> 396 OPTIONS=cursesgraphics

> 391 OPTIONS=fruit:mango

> 390 OPTIONS=pickup_types:$"=/!?+

> 385 OPTIONS=msghistory:50

> 379 OPTIONS=dungeon: |--------||.-|++##.##<><>_|\#{...## #}

> 375 OPTIONS=monsters:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@87&;:~]

Cases where explicit setting is unnecessary

While there are advantages to explicitly setting options that are already set as you prefer by default, I personally prefer to minimise my configs to make them easier to read later; for that reason I looked through most of the relevant options and cross-referenced with the guidebooks and wiki to confirm their default status. I've also included my own preferences, which I feel are fairly unobjectionble, though I know that we'll probably never have something like Sensible.vim for this game.

Option Default My recommendation (3.4.3) My recommendation (5.0.0) Comments
DECgraphics off on on
IBMgraphics off
UTF8graphics off off Does not exist I love the idea of this but I've never gotten it to work with curses
align Not set
align_message top bottom bottom The dungeon itself is the most important viewport; its natural location is at the top left of the screen.
align_status bottom
altmeta off
autodescribe on Does not exist on
autodig off on on
autoopen on
autopickup on / off on on Turn on only if you intend to configure it
autoquiver off on on
bones on
boulder ` 0 0
catname Not set Komafuji Komafuji
checkpoint on
cmdassist on off off
color on
confirm on
cursesgraphics Does not exist Does not exist Does not exist See above about windowtype
dark_room on Does not exist on
disclose ni na nv ng nc / ni na nv ng nc no yi ya yv yg yc yi ya yv yg yc yo
dogname Not set Horme Horme
dungeon |--------||.-|++##.##<><>_|\#{}.}..## #} Not set Not set I don't think this option does anything on curses
eight_bit_tty off
extmenu off
fixinv on
force_invmenu off Does not exist off Maybe look into this one if you have a very small screen
fruit slime mold bunch of grapes bunch of grapes
fullscreen
gender Not set female female Lets you lay cockatrice eggs
guicolor on Does not exist on
help on off off
hilite_hidden_stairs off on Does not exist
hilite_obj_piles off on Does not exist 3.4.3 version of hilite_pile
hilite_pet off on on
hilite_pile off Does not exist on
hitpointbar off on on
horsename Not set Sunbeam Sunbeam
hp_monitor Does not exist Does not exist Does not exist
hp_notify off on Does not exist This is a patch that tells you exactly how much damage you take, called showdamage in modern vanilla
ignintr off
legacy on off off
lit_corridor off on on
lootabc off
mail on
menu_glyphs off on Does not exist
menu_headings inverse bold yellow&bold
menu_objsyms 4 Does not exist 2
menucolors off on on
menustyle full
monsters abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@ '&;:~] abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@8'&;:~] Does not exist In 3.6+, use SYMBOLS=S_ghost=8 (or a glyph that you like) instead
mouse_support 0 Not a totally unpopular option
msg_wall_hits off off Does not exist
msg_window s r r
msghistory 20 Consider increasing if you feel like you miss a lot of messages you'd prefer to have seen
news on off off
null off / on on on
number_pad 0 1 1 See above discussion about number_pad
objects ])[="(%!?+/$*`0_. Does not exist
packorder ")[%?+!=/(*`0_ )[(?!%"=+/*`0_ )[(?!%"=+/*`0_ Tools are so important that I think they deserve to be closer to the top of the inventory
paranoid_confirmation pray swim trap Does not exist all This deprecates the three options below
paranoid_hit off on See above
paranoid_quit off on See above
paranoid_remove off on See above
perm_invent off on on
petattr inverse
pettype Not set Not set Not set
pickup_burden stressed unencumbered unencumbered
pickup_thrown on on on Actually, I don't know if 3.4.3-NAO has this, but 3.4.3-hdf does
pickup_types all $!/="? $!/="? Maybe add + if you play a lot of wizards
pile_limit 5 Does not exist 2
popup_dialog off off Does not exist 3.4.3 curses only, makes it harder to price-id in my opinion
prayconfirm on on Does not exist
pushweapon off Because of pick-axes
quiver_fired on on Does not exist
race Not set
rest_on_space off
roguesymset Not set
role Not set
runmode run teleport teleport
safe_pet on on on
scores 3 top/2 around 5t/2a/o 5t/2a/o
show_obj_sym on on Does not exist
showborn off on Does not exist
showbuc off on Does not exist
showexp off on on
showrace off
showscore off on on
silent on
sortloot none full full
sortpack on
sound on
sparkle on off off
splash_screen off off Does not exist
standout off
statuscolors off on Does not exist
statushilites off Does not exist on
statuslines 2 Does not exist 3
suppress_alert Not set 3.4.3 3.4.3
symset default Does not exist DECgraphics
term_cols current window size
term_rows current window size
time off on on
timed_delay on
tombstone on
toptenwin off
travel on
use_darkgray off on on See above discussion
use_inverse on
verbose on off off
vt_tiledata off on Does not exist
win_edge off off Does not exist
windowborders 2 Does not exist 2
windowtype tty curses curses
wraptext off on on

MENUCOLORs, STATUSCOLORs, and MSGTYPEs

About popular configs

Configs like Eidolos', Maud's, and dizzylizzy's have had an enormous effect on what others use, and even these three are mostly composites of others. The most beautiful one I could find was stthR's, whom Eidolos borrows quite a lot from. Anyway, the fact that these options have been passed around and copies for decades means that they are disproportionately popular, old, and hard to identify the original author of.

Most of them are of very good quality, and there's no reason to change what works. There are a few problems with copying like this though:

  • Syntax can change; for example, MENUCOLOR="{regex}"={attribute} was correct in 3.4.3 menucolors, but is not accepted by the modern vanilla menucolor engine; instead, one must write no-color&amp;{attribute}. STATUSCOLORs are now under the compound option hilite_status.
  • Options become obsolete; hp_monitor is no longer a thing, for example, but is still present in many configs.
  • Expression types are not always compatible. Eidolos' MSGTYPEs are intended to be used with msgtype_regex; vanilla does not have this capability, even in 5.0.0; so MSGTYPE=stop ".* swings itself around you!" for example will not warn you about drowning, unless they add a sea monster called .Giant eel.
  • Order matters. With MENUCOLORs, for example, the most general cases must be put at the top, so that they can be superseded by the more specific cases placed below. Otherwise your 'blessed wand called vanish' will appear a nonthreatening cyan despite having a one-third or higher chance to be a run-ending danger rod.
  • The devteam puts quite a bit of effort into ensuring that deprecated options 'work', but that's no reason to use them!

MENUCOLORs

I would post the top MENUCOLORs here, but this post is already getting too long for Reddit, and it's not very interesting because basically all of them are from eidocolors, which is a very good baseline of reasonable defaults, if a li'l dated. Eidolos himself credits a variety of people including teabing and rsarson. As I mentioned above, these on their own won't work in 5.0.0 because of the addition of no-color, but the regexes are good as expected. You're also not allowed to put comments on MENUCOLOR lines anymore, and multiple attributes is not allowed, either.

Therefore, to convert 3.4.3 MENUCOLORs into modern ones, just fix those issues. I've done that for Eidocolors here: https://cdn.miraculind.eu/.nethackrc

Lines that aren't from Eidocolors are usually in one of a few categories:

  • Eidocolor regex, but colour expression changed
  • New regexes from people with a more expansive notion of what a 'goodie' might be, like rings of polymorph and polycontrol, remove curse, taming, gold detection, etc.
  • A combination of the above; new regex and personalised colour scheme
  • Explicitly written out versions of more efficient regexes

Could one colour more things? Of course; you could colour every item in the game with some kind of 'rarity' tier like in Path of Exile or Terraria. I'm not really sure how much that would help, though, since a long sword is a great find for an early Samurai while being totally useless for a chaotic Wizard.

STATUSCOLORs, hilite_status(')

These are much less variable; most people use the defaults, and the defaults are not really bad. However, here's the top 22 custom ones:

> 1293 STATUSCOLOR=ill:red&inverse,foodpois:red&inverse,slime:red&inverse

> 1293 STATUSCOLOR=fainting:red&inverse,fainted:red&inverse&blink

> 1259 STATUSCOLOR=satiated:yellow,hungry:orange,weak:red&bold

> 1218 STATUSCOLOR=burdened:yellow,stressed:orange,strained:red&bold

> 1202 STATUSCOLOR=hallu:yellow,conf:orange,stun:red&bold

> 1200 STATUSCOLOR=overtaxed:red&inverse,overloaded:red&inverse&blink

> 932 STATUSCOLOR=pw%100=green,pw%66=yellow,pw%50:orange,pw%33=red&bold

> 443 STATUSCOLOR=hp%66:yellow

> 443 STATUSCOLOR=hp%50:orange

> 435 STATUSCOLOR=hp%33:red&bold

> 435 STATUSCOLOR=hp%100:green

> 433 STATUSCOLOR=hp%15:red&inverse

> 427 STATUSCOLOR=hp%0:red&inverse

> 212 OPTIONS=hilite_status:hitpoints/<100%/green

> 207 OPTIONS=hilite_status:gold/always/yellow

> 194 STATUSCOLOR=hp.1:red&inverse,hp<8:red,hp>50:grey

> 193 OPTIONS=hilite_status:gold/up/yellow/down/brown

> 188 STATUSCOLOR=held:red&inverse,blind:red&inverse

> 181 OPTIONS=hilite_status:carrying-capacity/burdened/yellow/stressed/orange

> 176 OPTIONS=hilite_status:hitpoints/<40%/red

> 165 OPTIONS=hilite_status:hitpoints/<60%/yellow

> 156 OPTIONS=hilite_status:hitpoints/100%/brightgreen

> 131 STATUSCOLOR=HP%14:lightmagenta&inverse

The rest are generally colour variations. There is one arguably important threshold: in versions before 3.6.0, being below one-seventh HP was considered a major problem and would let you pray back to full health. That has been changed such that prayer is less effective the higher level you are, so the 15% is a fine estimate.

Clearly, the most popular hilites fall into the following classes:

  • Imminently deathly effects: illness, food poisoning, sliming, and for some, fainting
  • Normal status effects
  • Encumberance levels
  • Nutrition leves
  • Hitpoints & power

All of these are things that are good to be aware of, especially hitpoints and status effects. Some people colour 'satiated' as green, which I disagree with, since being satiated is not really advantageous most of the time outside of Astral, and I highly doubt that all those players are from east Asia. Honestly, I don't really have any issue with the default hilites and think they are perfectly sufficient for most.

MSGTYPEs

MSGTYPEs are complicated because the 3.4.3 msgtype_regex syntax is not compatible with the globbing wildcard syntax of original messagetype and later vanilla. Therefore, the popular entries are populated by a lot of repeats, regexes 'written-out', full stops escaped vs. not escaped, and so on. The top 50:

> 4324 MSGTYPE=stop "You are slowing down."

> 4203 MSGTYPE=stop "You find it hard to breathe."

> 2329 MSGTYPE=stop "You are turning a little .*"

> 1950 MSGTYPE=stop "It constricts your throat!"

> 1872 MSGTYPE=stop "The python grabs you!"

> 1834 MSGTYPE=hide "You swap places with your .*"

> 1656 MSGTYPE=stop "Your limbs are stiffening."

> 1620 MSGTYPE=stop "You don't feel very well."

> 1607 MSGTYPE=stop "Your skin begins to peel away."

> 1606 MSGTYPE=stop "Your limbs are getting oozy."

> 1594 MSGTYPE=stop "You are turning into a green slime."

> 1532 MSGTYPE=stop "You feel deathly sick."

> 1517 MSGTYPE=stop "You are beginning to feel weak."

> 1516 MSGTYPE=stop "You are turning a little green."

> 1497 MSGTYPE=stop "Your consciousness is fading."

> 1492 MSGTYPE=stop "You can no longer breathe."

> 1491 MSGTYPE=stop "Your blood is having trouble reaching your brain."

> 1486 MSGTYPE=stop "You're turning blue."

> 1486 MSGTYPE=stop "You're gasping for air."

> 1444 MSGTYPE=stop "The kraken swings itself around you!"

> 1441 MSGTYPE=stop "The electric eel swings itself around you!"

> 1440 MSGTYPE=stop "The giant eel swings itself around you!"

> 1433 MSGTYPE=stop "The couatl swings itself around you!"

> 1290 MSGTYPE=stop "You feel much worse."

> 1264 MSGTYPE=stop "You feel even worse."

> 1181 MSGTYPE=hide "You descend .*"

> 1028 MSGTYPE=hide "You (climb|fly) (up|down) .*"

> 863 MSGTYPE=norep "You see here an .*"

> 861 MSGTYPE=norep "You see here a .*"

> 792 MSGTYPE=stop "You fail to cast the spell correctly."

> 633 MSGTYPE=stop "You are turning a little *"

> 588 MSGTYPE=stop "You feel a strange vibration under your *."

> 571 MSGTYPE=hide "With great effort you move the boulder."

> 564 MSGTYPE=stop "You see here a chickatrice corpse."

> 563 MSGTYPE=stop "You see here a cockatrice corpse."

> 492 MSGTYPE=hide "You displaced *"

> 471 MSGTYPE=stop "You hear the wailing of the Banshee..."

> 470 MSGTYPE=stop "You feel deathly sick"

> 468 MSGTYPE=stop "You hear the howling of the CwnAnnwn..."

> 458 MSGTYPE=stop "You feel much worse"

> 457 MSGTYPE=stop "You feel even worse"

> 419 MSGTYPE=hide "You swap places with .*"

> 416 MSGTYPE=stop ".Vorpal Blade."

> 408 MSGTYPE=stop "You faint from lack of food."

> 400 MSGTYPE=stop "You are beginning to feel hungry."

> 380 MSGTYPE=stop "You feel more confident in your*skills."

> 377 MSGTYPE=stop "You feel a strange vibration*"

> 371 MSGTYPE=stop "You regain consciousness."

> 367 MSGTYPE=stop "You feel weak."

> 362 MSGTYPE=stop "You feel weak now."

As is obvious, the primary purpose of these is to avoid instadeaths and problems that become worse if not dealt with immediately, like lycanthropy and bullwhip-users. Many are probably from Eidolos again, who himself credits stth and Jan Larres. Something that I was very confused by is that while most of these use the regex syntax, only 91 instances of msgtype_regex were used, which would imply that a lot of people have nonfunctional MSGTYPEs in their configs.

The more likely explanation is that I haven't quite understood something. If anyone has extra insight on this, I'd be interested to hear it. If you play on a config with regex MSGTYPEs but without msgtype_regex, do they work?

AUTOPICKUP_EXCEPTIONs

Defaults and Eidocolors (which has these) reign supreme, as usual. I was surprised to find that some people actually autopickup gems and comestibles. How do you not end up with 21489 C-rations weighing you down in the endgame?

> 764 AUTOPICKUP_EXCEPTION="<magic lamp"

> 742 autopickup_exception="<magic marker"

> 730 autopickup_exception="<magic lamp"

> 723 autopickup_exception="<Book of the Dead"

> 722 autopickup_exception="<silver bell"

> 721 autopickup_exception="<candelabrum"

> 720 autopickup_exception="<Candelabrum"

> 714 autopickup_exception="<Bell of Opening"

> 705 autopickup_exception="<*lamp called magic"

> 681 autopickup_exception="<papyrus spellbook"

> 618 AUTOPICKUP_EXCEPTION=">scroll of scare monster"

> 618 AUTOPICKUP_EXCEPTION=">loadstone"

> 569 AUTOPICKUP_EXCEPTION="<wand of wishing"

> 560 AUTOPICKUP_EXCEPTION="<wand of death"

> 557 autopickup_exception="<* named [,]"

> 555 autopickup_exception="<* called [,]"

> 536 AUTOPICKUP_EXCEPTION="<wand of polymorph"

> 508 AUTOPICKUP_EXCEPTION=">flint stone"

> 508 autopickup_exception="* corpse*"

> 495 AUTOPICKUP_EXCEPTION=">worthless piece of"

> 495 autopickup_exception="* named* junk*"

> 492 autopickup_exception="* named* worthless*"

> 486 autopickup_exception="* named [!,]"

> 486 autopickup_exception="* called [!,]"

> 480 AUTOPICKUP_EXCEPTION=">scroll called scare monster"

> 467 autopickup_exception="* named* empty*"

> 453 autopickup_exception="* named* crap*"

> 429 AUTOPICKUP_EXCEPTION="<lichen corpse"

> 392 autopickup_exception="* named* Garin*"

> 341 AUTOPICKUP_EXCEPTION="<magic marker"

> 311 AUTOPICKUP_EXCEPTION=">s corpse[^<]*$"

> 311 AUTOPICKUP_EXCEPTION=">r corpse[^<]*$"

> 311 AUTOPICKUP_EXCEPTION=">p corpse[^<]*$"

> 311 AUTOPICKUP_EXCEPTION=">o corpse[^<]*$"

> 311 AUTOPICKUP_EXCEPTION=">[^h]en corpse[^<]*$"

> 311 AUTOPICKUP_EXCEPTION=">[^e]n corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">m corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">l corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">k corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">i corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">c corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">b corpse[^<]*$"

> 309 AUTOPICKUP_EXCEPTION=">a corpse[^<]*$"

> 308 AUTOPICKUP_EXCEPTION=">g corpse[^<]*$"

> 308 AUTOPICKUP_EXCEPTION=">f corpse[^<]*$"

> 304 AUTOPICKUP_EXCEPTION="> rock[^<]*$"

> 303 AUTOPICKUP_EXCEPTION="> named empty"

> 302 AUTOPICKUP_EXCEPTION="> loadstone[^<]*$"

> 299 AUTOPICKUP_EXCEPTION=">y corpse[^<]*$"

> 299 AUTOPICKUP_EXCEPTION=">x corpse[^<]*$"

> 299 AUTOPICKUP_EXCEPTION=">v corpse[^<]*$"

> 299 AUTOPICKUP_EXCEPTION=">u corpse[^<]*$"

> 296 AUTOPICKUP_EXCEPTION=">' corpse[^<]*$"

> 286 AUTOPICKUP_EXCEPTION="> stone[^<]*$"

> 283 AUTOPICKUP_EXCEPTION="<wraith corpse"

> 283 AUTOPICKUP_EXCEPTION=">.* named empty"

> 273 AUTOPICKUP_EXCEPTION="<athame"

> 265 AUTOPICKUP_EXCEPTION="<floating eye corpse"

> 264 AUTOPICKUP_EXCEPTION=">.glob."

> 259 AUTOPICKUP_EXCEPTION=">corpse"

> 251 AUTOPICKUP_EXCEPTION="<newt corpse"

> 251 AUTOPICKUP_EXCEPTION="<lizard corpse"

> 249 AUTOPICKUP_EXCEPTION=">worthless"

> 247 AUTOPICKUP_EXCEPTION=">.:0)."

> 245 AUTOPICKUP_EXCEPTION=">scroll .* scare monster"

> 239 AUTOPICKUP_EXCEPTION="<stone called luck"

> 224 AUTOPICKUP_EXCEPTION="< luckstone"

> 221 AUTOPICKUP_EXCEPTION="< lamp"

> 218 AUTOPICKUP_EXCEPTION=">rock"

> 217 AUTOPICKUP_EXCEPTION=">* corpse*"

> 216 AUTOPICKUP_EXCEPTION=">* rock*"

> 215 AUTOPICKUP_EXCEPTION="<.* named ammo"

> 213 AUTOPICKUP_EXCEPTION="<wand of death"

> 213 AUTOPICKUP_EXCEPTION=">* junk"

> 212 AUTOPICKUP_EXCEPTION="<.* named autopickup"

> 212 AUTOPICKUP_EXCEPTION="<Amulet of Yendor named"

> 208 AUTOPICKUP_EXCEPTION=">? stone*"

> 208 AUTOPICKUP_EXCEPTION=">gray stone"

> 207 AUTOPICKUP_EXCEPTION="<wand of wishing"

> 207 AUTOPICKUP_EXCEPTION="<magic lamp"

> 207 AUTOPICKUP_EXCEPTION="<lamp"

> 205 AUTOPICKUP_EXCEPTION=">ed stone"

> 202 AUTOPICKUP_EXCEPTION=">.loadstone."

> 200 AUTOPICKUP_EXCEPTION="> glass[^<]*$"

> 199 AUTOPICKUP_EXCEPTION="<magic marker"

> 198 AUTOPICKUP_EXCEPTION=">* gray stone*"

> 195 AUTOPICKUP_EXCEPTION=">??? stone*"

> 195 AUTOPICKUP_EXCEPTION=">?? stone*"

> 194 AUTOPICKUP_EXCEPTION=">t corpse[^<]*$"

> 192 AUTOPICKUP_EXCEPTION=">z corpse[^<]*$"

> 192 AUTOPICKUP_EXCEPTION=">w corpse[^<]*$"

> 192 AUTOPICKUP_EXCEPTION=">j corpse[^<]*$"

> 192 AUTOPICKUP_EXCEPTION=">h corpse[^<]*$"

> 192 AUTOPICKUP_EXCEPTION="> flint[^<]*$"

> 192 AUTOPICKUP_EXCEPTION=">e corpse[^<]*$"

> 191 AUTOPICKUP_EXCEPTION=">* worthles*"

> 190 AUTOPICKUP_EXCEPTION=">q corpse[^<]*$"

> 190 AUTOPICKUP_EXCEPTION="> gray stone[^<]*$"

> 190 AUTOPICKUP_EXCEPTION=">d corpse[^<]*$"

> 189 AUTOPICKUP_EXCEPTION=">* loadstone*"

I think the most worth-it ones are the ones to avoid missing magic lamps and markers; I've never managed to misplace my invocation items and am curious how that'd even happen. I think it's better to look through loot piles even with autopickup on instead of relying on it to find useful stuff, but then again, I also like to polypile more than the average player, so it's probably more of a spectrum.

reddit.com
u/Happy-Click7308 — 8 days ago