Wizard mode

From NetHackWiki
Revision as of 20:53, 11 March 2008 by Mniot (talk | contribs) (Strategy: rearranged some things, dried out the writing a bit. "Strategy" is a rather generous word in god-mode...)
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

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 in order 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, Linux and VMS have proper user accounts. On 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.) If you are compiling your own NetHack, remember to change WIZARD and WIZARD_NAME macros in config.h to your own username, so that you need not create a new user account to play NetHack in wizard mode!

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!

You cannot enter wizard mode at any public server!

Commands

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

Key Explanation
^E detect secret doors and traps
^F do magic mapping
^G create monster
^I identify items in pack
^O tell locations of special levels
^T do intra-level teleport
^V do trans-level teleport
^W make a wish
^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 command 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 traps, certain dungeon features (fountains, thrones, sinks, pools, lava, graves, trees and iron bars), artifacts, unique objects, 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").

Tips

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

Want to instead send a tame flesh golem against Vlad? Use ^V and type "?" to get a menu of significant dungeon levels. Choose "tower1", the top of Vlad's Tower. Use ^F to map the level, ^W to wish for a light source, and ^T to teleport to Vlad's throne room. Finally, use ^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:

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 ^W wish for an altar of your alignment ("lawful altar", "neutral altar" or "chaotic altar"), then wish for "100 Umber hulk 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.

Special rooms and levels

If you want to test shopkeeper behavior or see a lot of soliers, 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.