Wizard mode

From NetHackWiki
Revision as of 02:21, 5 November 2015 by Scorchgeek (talk | contribs) (Unix: add more detail about the possible dangers of the suggested sudoers line)
Jump to navigation Jump to search

In NetHack, wizard mode is a debug mode in which the player may try out anything they might want to test. Games played in wizard mode do not contribute in the record file but do appear in the logfile.

Entering wizard mode

Public servers

You cannot enter wizard mode on any public server.

Windows

To get to the wizard mode, you must start the game with the command nethack -D -u wizard. The -D stands for debug and -u name names you wizard, which must be done to enter the wizard mode.

In Windows, for the sake of convenience, you can create a shortcut to wizard mode, so you don't have to access the DOS prompt to enter the above command every time. Right click on the NetHack icon and choose "create shortcut". Right click on the shortcut and choose "properties". In the "Target" text box, type the following, including quotes:

  • "<file path and file name>" -D -u wizard

For example, it may look like this:

  • "C:\Program Files\NetHack\nethack-343-win\NetHackW.exe" -D -u wizard

Unix

On Debian/Ubuntu, starting NetHack as root using "sudo /usr/games/nethack -D" gets you into wizard mode.

It is possible to give users passwordless access to wizard mode using the sudoers file. However, this is extremely dangerous unless the shell escape feature has been compiled out of your version: since wizard mode NetHack is running as root in this configuration, anyone who can start NetHack in wizard mode can press ! to get a root shell! The sudoers line could go something like ALL ALL = /usr/games/nethack -D -- substitute a different path if required.

Unix, Linux and VMS have proper user accounts. In general, on many of these systems, NetHack actually requires that you be logged in as the user wizard, and then start nethack with nethack -D (Otherwise, NetHack drops you to explore mode.). In general, you can easily create this user with the command "adduser wizard" (requires admin rights), then change user with "su wizard".

If you are compiling your own NetHack, remember to change WIZARD and WIZARD_NAME macros in include/config.h to your own username, so that you need not create a new user account to try NetHack in wizard mode!

Mac OS X also has proper user accounts, so you need to create a user named wizard (short name form, not full name). When logged in as that user, you can enter wizard mode by pasting

cd /Applications/NetHack.app/; ./Contents/MacOS/nethack -D

into Terminal.app, which lives in the utilities folder. If you didn't install NetHack into the global applications folder, you will have to adjust the "/Applications/NetHack.app/" part accordingly.

If you are on Unix/Linux, and do not want to recompile NetHack just to enter wizard mode, you can use gdb to enable wizard mode, in a similar manner to "memory cheats", but with a more elegant touch. Run gdb using the command gdb /usr/games/nethack, replacing /usr/games/nethack with the location of your NetHack executable. Some text will scroll by, but you can ignore it for now. Type run and press enter, NetHack should start. Create your character, or restore your save file, just as you would to play normally, then press control-c. NetHack should freeze up if you are using X11, or might disappear completely with the text console version. The terminal you started gdb in will have a prompt. It will replace NetHack in console mode, or it will be in the terminal for X11 NetHack. At the gdb prompt type set main::flags.debug = 1 and press enter, then type cont and press enter. Congratulations, you are now in wizard mode!

Commands

Wizard mode has several commands that are not present in the normal game:

Key Explanation
ctrl + E detect secret doors and traps
ctrl + F do magic mapping
ctrl + G create monster
ctrl + I identify items in pack
ctrl + O tell locations of special levels
ctrl + T do intra-level teleport
ctrl + V do trans-level teleport
ctrl + W make a wish
ctrl + X show attributes including intrinsic attributes
Extended command Explanation
#levelchange change experience level
#lightsources show mobile light sources
#monpolycontrol control monster polymorphs
#panic panic test
#polyself polymorph self
#seenv show seen vectors
#stats show memory statistics
#timeout look at timeout queue
#vision show vision array
#wmode show wall modes

You can view the list of wizard mode commands at any time by pressing ? and then k, provided that you are in wizard mode. In any case the extended command #? shows you a list of all available extended commands.

You can also use some additional environment variables to help you debug: WIZKIT, SHOPTYPE, SPLEVTYPE, and NH_HEAPLOG

Wishing

Wishing has much fewer limits in wizard-mode: you can wish for all traps (except for holes/trap doors on levels with undiggable floor), certain dungeon features (fountains, thrones, sinks, pools, lava, graves, trees and iron bars), artifacts, unique items, exact number of charges or plusses on items that have those, exact number of stackable items and altars with exact alignment (for example, "chaotic altar").

Bones

Whenever you enter a new dungeon level, if a bones file exists for that level, the game will ask you if you want to load that file. Otherwise, it will generate it normally.

Tips

Suppose that you want to try an experiment by fighting a flesh golem with a wand of lightning. Enter wizard mode, then use ctrl + W to ask for a "wand of lightning" or an "uncursed wand of lightning (0:99)". Use ctrl + I to verify the identity of the wand. Then use ctrl + G and request a "flesh golem". You can also use ctrl + T to teleport away from the flesh golem (even on a non-teleport level), since ctrl + G will cause it to spawn next to you.

Want to instead send a tame flesh golem against Vlad? Use ctrl + V and type "?" to get a menu of significant dungeon levels. Choose "tower1", the top of Vlad's Tower. Use ctrl + F to map the level, ctrl + W to wish for a light source, and ctrl + T to teleport to Vlad's throne room. Finally, use ctrl + G and request a "tame flesh golem" to spawn your pet.

Powering your character

There are some shortcuts to improve your character, so that you can skip straight to whatever you're testing:

  • #levelchange to set your level to whatever is appropriate. This is capped at 30 and doesn't give you the kind of stats that an actual level 30 character would have (extra HP/MP from potions, maxed out stats from exercise, etc)
  • Wish for "15 blessed potion of gain ability" to boost your attributes.
  • Wish for "10 blessed potion of full healing" to boost your maximum HP or "10 blessed potion of gain energy" to boost max Pw.
  • Wish for armor to reduce your AC. You could wish for a typical ascension kit, or if you just want (near) invincibility, over-enchanted items like a blessed fireproof +50 cloak of magic resistance and a blessed +50 silver dragon scale mail.
  • Wish for artifacts.
  • Wish for absurdly overenchanted weapons. A +20 Grayswandir will kill virtually every monster in one hit, and a stack of +50 silver daggers can be used as ridiculously powerful projectiles. Weapons with extremely high enchantments, like +127, will often miss due to integer overflow in the to-hit calculations (specifically, if the total bonus exceeds 127, it will wrap around into the negatives).
  • Intrinsics are hard to gain. The best bet is either the appropriate ring or blessed tins of dragon meat. If you need many intrinsics, you can also wish for an uncursed amulet of magical breathing which will help you eat more corpses. Wizard mode characters already have free access to controlled teleportation without the intrinsics.
  • Create a tame Rider

If you're doing more than a quick delve in wizard mode, you may want to use the wizkit, which lets you give your character a list of items at the start of the game without having to wish for each one.

Prayer

Even wizard mode wishes will increase your prayer timeout. The wizard mode #pray command lets you "force the gods to be pleased", so this might not be a problem. If you want to make your god happy, you can ctrl + W wish for an altar of your alignment ("lawful altar", "neutral altar" or "chaotic altar"), then wish for "50 Umber hulk (or whatever other monster you please) corpses" and #offer away!

Dealing with chameleons or doppelgangers

If you are playing with #monpolycontrol but annoyed that some offscreen monster is repeatedly polymorphing, then wishing for "2 uncursed scrolls of genocide" and genociding "chameleon" or "doppelganger" will work.

Levelcide

If you read a blessed scroll of genocide and choose "*", every monster on the level will be immediately removed, but no species are genocided. This is useful if you need privacy for complex experiments, or if you are severely overwhelmed by an immense horde. This method kills peaceful and tame monsters, so don't use it if you want to keep alive your pet, the Quest leader, priests, etc. However, the death of any peaceful or tame monsters has no effect on luck or alignment that you would get from killing peaceful or tame monsters normally.

Special rooms and levels

If you want to test shopkeeper behavior or see a lot of soldiers, use the environment variable SHOPTYPE to guarantee that the appropriate room is generated on every level, so you won't have to hunt for it. (SHOPTYPE=! for a potion shop and SHOPTYPE=s for a barracks)

Use SPLEVTYPE to guarantee that you get, for example, the Catacombs version of Mine's End.

Death

You can die in wizard mode just like any other game. However, if you do die, you have the option to Die? (yn) and deny death like explore mode. If you do choose to die, and are on an eligible level, you will get the option to Save bones? (yn) as well. If you die by, say, genociding yourself, you will get the prompt as well. The only time this will not work is if you levelport to a negative dungeon level; you can deny death, but you will find yourself on the surface and escape the dungeon.

Other

Wizard-mode games will prompt whether to Unlink bones? when entering a bones level. Answering 'y' will delete the bones file, 'n' will keep it.

SLASH'EM

In SLASH'EM, in general, you can get into wizard mode by passing -uwizard -Z instead.

On Debian/Ubuntu, you need to start Slash'em as root using:

"sudo /usr/games/slashem -uwizard -Z".

Wizard mode in SLASH'EM can be even more broken, thanks to the larger number of objects and artifacts. Some of those can grant powerful extrinsics that would be far harder to obtain in vanilla (but of course, this is wizard mode, it doesn't really matter). For example, if you have a ring of invisibility, a shimmering dragon scale mail, Nighthorn (or an amulet of reflection, though that means you can't have the next one on at the same time), an amulet of magical breathing, and a cloak of magic resistance (the armor and cloak can be both +127 for needlessly overpowered defense), you can become, for all intents and purposes, excruciatingly hard to get at to all but the deadliest monsters, even in SLASH'EM. For extra protection, it is very easy in wizard mode to be crowned ((coaligned altars + unicorn corpses) + (diamonds + coaligned unicorns)).

UnNetHack

After enabling the showdmg option, the amount of damage inflicted will be printed during fight.

See also