%%%%
pick-up
Picking up and dropping items
Navigation and selecting items
Use the usual navigation keys (arrow keys, pgdn/pgup, home, end) to select
items, and Space/. to toggle whether the selected item will be picked up or
dropped. Pressing an item's letter key will also toggle its pickup/drop state.
Press Return to accept the current set of items.
Entering a number before selecting by letter will toggle just that quantity of
a stack of items.
Regular expressions
You can press Ctrl-F to enter a word (or a regular expression). All matching
items will be selected.
Category shortcuts
You can quickly select items by type by pressing:
! potions ( weapons ) ammunition [ armour
/ wands | magical staves ? scrolls : books
" amulets = rings } miscellaneous
Global selects: , select all * invert all - deselect all
; select last unequipped
Note that for dropping, the , command uses the drop_filter option, which
narrows the range of items to be (de)selected. The default is all useless items.
Disabling autopickup via the drop menu
On the drop menu, items you select after pressing \ will be marked with a *
instead of the usual +. Autopickup for these items will be disabled when you
leave the menu. To return to the normal selection mode, press \ a second time.
%%%%
known-menu
Known items menu
Navigation and selecting items
Use the usual navigation keys (arrow keys, pgdn/pgup, home, end) to select
items, and Space/. to toggle the autopickup mode for the selected item type.
Pressing an item type's letter key will also toggle its autopickup state.
Selecting item types
Item types displayed in grey use the default autopickup options set in your
configuration file. (Items that are useless to your character are displayed
in dark grey.) Selecting a type of item overrides those options
(indicated by white text), and toggles the item between the states:
+ Items of this type will be picked up automatically.
- Items of this type will not be picked up automatically.
Autopickup can also be toggled for all unknown items of a given category.
Category shortcuts
You can quickly select all item types in a given category by pressing:
! potions ? scrolls ( ammunition " amulets
= rings / wands | magical staves
Global selects: * invert all ^ reset all to default
Viewing unknown and known items
\ and - toggle between the known and unknown items menus. Note
that none of the above features are available from the unknown items menu.
Restoring autopickup defaults
Pressing Ctrl-D followed by an item letter or a category shortcut
cancels the override and restores the selected item or items to their default
settings.
Regular expressions
You can press Ctrl-F to enter a word (or a regular expression).
All matching items will be selected.
%%%%
stash-search.prompt
Searching the stash-tracker
You can search for items and dungeon features by name (or a substring of the
name). In the list of search results, you can select a search result by its
hotkey to travel to its location.
Some examples of search strings:
mutation find all potions of mutation, including potions in shops.
throwing net finds every single throwing net and piles of nets.
shop lists all shops. Press ! and a shop's letter for the stock.
Lair:2 find everything known to be on Lair:2.
/D:[2-4] finds everything on Dungeon levels 2-4. Regexes are allowed!
Note that /D:[3-10] will not work as intended, since [x-y] is a
regex character range.
rPois finds all items with an rPois resistance.
rC++ finds all items with an rC++ resistance.
+3 finds all items with a +3 enchantment.
/Lair.*axe and axe && Lair both show all axes in the Lair.
Some shortcuts:
. lists everything on your current level.
.. lists all items you know.
0 to 9 lists all items at the specified waypoint.
* lists all items at all waypoints.
@< lists everything matching < on your current level.
/< lists items matching < as a regular expression.
=< lists items containing < as a substring.
You can also examine shops and items in the search results by pressing ? and
then selecting the hotkey for the search result. This will give a description
of the item or the contents of the shop.
The stash search string is case-insensitive.
Searching by item properties:
You can search for spell names (such as Ignite Poison) to find spellbooks
that contain the spell.
You can search for artefact item properties (such as /prevents.*teleport)
to find artefacts that have the property.
You can search by some additional item properties: artefact or
artifact will find identified artefacts, ego or branded
will find non-artefacts with a brand and unidentified items which may be
branded, throwable will find things you can throw, dropped will
find items you have dropped, in_shop will find items in shops, and (if
the autopickup_search option is enabled) autopickup will find items that
would be automatically picked up.
Skill names (such as Polearms or Long Blades) will find all weapons that
train that skill. You can also look for melee weapon and ranged weapon.
You can also search by item types such as book or manual or jewellery.
For armour slots, use helmet (all headgear), gloves, shield, and body.
Use armour && !!body to list all armour pieces except for body armour.
Finding Dungeon Features:
You can search for dungeon features by name: all shops will be found by a search
for shop (including shops that do not have "shop" in their name); other
dungeon features can also be found by name: dispersal trap, altar,
etc. You can also search for altars by deity name: Zin.
Non-regex operators:
You can use !! to negate a search string, && for a boolean AND, || for
boolean OR, and <<<< >> for grouping.
For instance, to find rings (jewellery) but not ring mail you could use:
ring && !!mail
Note that / and = apply to individual patterns, not the entire query:
you should search for armour && /r(C|F|Pois|Elec), not
/armour && r(C|F|Pois|Elec).
%%%%
level-map
Level Map ('X' in the main screen):
Esc : Leave level map (also Space or any unused key).
Dir. : Move the cursor.
Shift-Dir. : Move the cursor in larger steps (7 by default).
- or + : Scroll level map 20 grids up or down.
. : Start travel (also Enter and , and ;).
(Moves cursor to the last travel destination if still on @.)
[ or ] : Examine the next higher or lower level.
(Moves cursor to the staircase destination if a known staircase is
highlighted.)
G : View another level by choosing a branch and depth.
o : Move the cursor to the next autoexplore target.
{ or } : Zoom out or in (tiles only).
Travel exclusions
e : Create a travel exclusion, change its radius, or remove it.
R# : Create a travel exclusion with a specified radius or change
its radius to #, where # is a number from 1 to 8.
E : Cycle through travel exclusions.
Ctrl-E : Erase all travel exclusions on the level.
Waypoints
w : Set waypoint to current position.
W : Cycle through all waypoints on the level.
Cycle through features
<< or > : Cycle through up or down stairs.
^ : Cycle through traps.
\ or Tab : Cycle through shops and portals.
I : Cycle forward through all items.
O : Cycle backward through all items.
_ : Cycle through altars.
Other
v : Examine the last remembered state of the indicated tile.
! : Annotate level.
Ctrl-C : Clear monster memory.
Ctrl-F : Forget level map.
Ctrl-U : Restore forgotten level map.{{
if you.wizard() then
return "\n\n"
.. "Wizard commands\n"
.. "T : Teleport to cursor.\n"
.. "Ctrl-X : Completely wipe out map."
end }}
%%%%
interlevel-travel.branch.prompt
Interlevel Travel (choose a branch):
Use the shortcut letter for a branch to select the branch for travel.
Once you select a branch, you will be prompted for a depth in that
branch (more help is available there).
Tab : Repeat last interlevel travel.
. : Travel to a level in the current branch.
<< : Go up the nearest stairs.
> : Go down the nearest stairs.
Ctrl-P : Travel to a level in the branch above this one.
* : Show available waypoints (if any are set).
0-9 : Go to the numbered waypoint.
_ : Show available altars (if any are discovered).
%%%%
interlevel-travel.depth.prompt
Interlevel Travel (go to a specific level in the selected branch)
Type in the level number you want to go to and press Enter, or use:
Enter : Go to the default level.
0 : Go to the entrance to the current branch.
<< : Change the default to one level above the current.
> : Change default to one level below the current.
- or p : Change default to the branch above this one.
$ : Change default to deepest visited level in this branch.
^ : Change default to the entrance to the current branch.
%%%%
interlevel-travel.altar.prompt
Interlevel Travel (go to an altar):
Use the shortcut letter (the initial of a god, with TSO being replaced by 1)
to select the altar for travel.
Once you select a god, you will begin travelling to the nearst altar.
Enter : Repeat last interlevel travel.
%%%%
annotate.prompt
Annotate (select level):
Enter or . : Annotate current level.
any letter : Annotate a level in the branch corresponding to the letter.
<< : Annotate the level upstairs.
> : Annotate the level downstairs.
Ctrl-P : Annotate a level in the branch above this one.
! : Show list of dungeon branches.
%%%%
skill-menu
Skill management
You gain experience for killing monsters (and very few other activities). This
experience is used to train skills. The skill screen allows you to select which
skills to train.
By pressing its letter, you can cycle if and how a skill is trained:
- deselected Skill will not be trained.
+ selected Skill will be trained.
* focused Skill will be weighted higher for training.
Pressing a capital letter selects that skill and deselects all the others.
This shortcut is useful when you want to train only one skill.
Training can be done in two modes, which are toggled with the / key.
- automatic: Skills are weighted based on your use of them.
- manual: Experience is spread evenly across all activated skills.
In training target mode you can set skill training targets: target skill levels
at which training of the skill will be automatically disabled.
How fast you train a skill is governed by the following factors:
- aptitude: Shown white in the Apt column. Higher numbers mean that less
experience is needed to advance a skill. Depends on species.
- skill manuals: Rare books giving an aptitude bonus of +4 in one skill.
On top of that, there are some effects which directly modify a skill, for
example having trained a related skill (crosstraining), or certain god powers.
Reduced skills are shown in magenta, and enhanced skills in green.
The training percentage (in brown) shows the relative amount of experience
which will be used to train this skill.
Apart from (de)selecting skills, you also have the following toggles:
/ : Switch between automatic and manual training modes.
* : Display all skills, even those which aren't currently useful.
? : Allows you to read the descriptions of skills.
_ : Show or hide skill level modifications (god powers, crosstraining).
! : Switch between displaying training percentage, skill cost, or training
targets.
%%%%
spell-library
Spell Library
! : Cycle between Memorise, Describe, Hide, and Show pages.
Ctrl-F : Filter the list of spells shown with a regex.
? : Show this help.
By default, the spell library opens to the Memorise page; to begin memorising a
spell, just press its letter. To read a spell's description, first switch to
the Describe page by pressing !, then press the spell's letter.
Most characters will not be interested in memorising the majority of spells that
accumulate in their spell library; this is where the Show and Hide pages come in
handy. To hide a spell from the Memorise and Describe pages, press its spell
letter from the Hide page. Hidden spells can be shown again from the Show page.
The auto_hide_spells option can be useful; when enabled, all newly discovered
spells are hidden by default.
Ctrl-F can be used to filter the list of spells. Any filter set in this way will
persist until the spell library is closed and reopened, or until a new filter is
set with Ctrl-F. If Enter is pressed at the prompt without entering any text,
that will reset the filter to none.
You can filter spells by name and by spell school.
%%%%
wiz-monster
Create specified monster
To create a monster with the default equipment for its species, simply enter
the species name, such as kobold or Yiuf.
A hydra can be given a specific number of heads by calling it an n-headed
hydra (with a maximum of 20 heads):
four-headed hydra
To set the colour a (very) ugly thing takes when it is first created, use:
white very ugly thing
The valid colours are brown, cyan, green, purple, red and white.
A mutant beast can be customised by prefacing it with a maturity level and/or
hyphen-separated set of traits, as follows:
mature shock-weird mutant beast
The valid maturity levels are larval, juvenile, mature, elder and primal. The
facets are sting, bat, fire, weird, shock and ox.
A slime creature's size can be set to other than normal using the prefixes
large, very large, enormous or titanic:
very large slime creature
If a monster is a member of a band, you can request that it be eligible for
band members by adding the keyword band to the name. For instance:
orc warlord band
Specifying band doesn't force bands to be placed - it requests that the game
use the normal chances of creating a band. A band will only be placed if there
is space for it.
A monster can be given specific items by following the monster name with a
semi-colon and then with an item list. For example:
orc ; rapier | quick blade . chain mail | plate armour
will generate an orc wielding either a rapier or a quick blade and wearing
either chain mail or plate armour. Randarts and ego items are only generated
if they are explicitly requested. Note that any items that the monster was
originally generated with will be removed and destroyed. This can be used to
force a monster to have no items whatsoever:
orc; nothing
For further information, see docs/develop/levels/syntax.txt, section ITEMS.
Any reference to a slash (/) should be replaced with a pipe (|) and any comma
(,) with a full stop (.).
The same syntax is also used to create a specific type of dancing weapon:
dancing weapon; rapier
Limitations: If a monster is given a random launcher, there is no way to force
the ammo type to match the launcher type. As a special case, however, a
launcher dancing weapon is always generated with some suitable ammunition.
You can specify that a monster will always generate a corpse by using the tag
always_corpse, or that it will never generate a corpse with never_corpse.
By default, monsters are generated asleep. This is changed by prefixing the
name with generate_awake.
generate_awake boulder beetle
A prefix of patrolling prevents it from walking out of sight of the the place
where it was created.
You can set the monster's god using the god: specifier as follows:
orc god:the_shining_one
If the monster is to be a gift of the specified god, this should be suffixed
with god_gift:
orc god:the_shining_one god_gift
Note that the monster will not be considered a god gift unless god_gift is
explicitly set.
You can set the monster's faction by specifying att: one of:
* att:hostile -- the default
* att:friendly -- tame, will follow you
* att:neutral -- hostile to both you and att:hostile monsters
* att:good_neutral -- hostile to att:hostile
* att:fellow_slime -- tame, won't follow you
Monsters can be given colours that override their default colour:
col:darkgrey fungus
The colour any can be given, in which case a random colour will be chosen.
You can override the displayed monster tile using the tile: specifier as
follows:
rat tile:mons_giant_bat
In tiles version, this would create a monster that uses the "mons_giant_bat"
tile, but is otherwise identical to a rat. In ASCII mode, this will do
nothing.
If you want to place a random monster suitable for the level the map is
generated on, you can use
random
If you want to place a random monster suitable for some other place, you can
use a place: tag in the monster spec:
place:Abyss
Using place: implies that you want a random monster. You can also request
zombies from random monsters suitable for some other depth as (e.g.):
place:Elf:3 zombie
The available modifiers are zombie, skeleton, simulacrum, and spectre.
Overriding Monster Names
Individual monsters can be given names as follows:
kobold name:Durwent
This will cause the monster to appear as "Durwent the kobold". Spaces can be
placed in the name by substituting them with the _ symbol. It is worth noting
that "the <" will be appended to all names, which should be considered
when coming up with them.
There are three different modifiers that can be used on a name:
name_adjective, name_suffix and name_replace. name_adjective makes the
name act as an adjective. For example:
kobold name:ugly name_adjective
Will cause "An ugly kobold", "The ugly kobold hits you", and so on.
name_suffix does the same, but after the monster's base name:
kobold name:wearing_mittens name_suffix
Will give "A kobold wearing mittens", "The kobold wearing mittens hits you",
and so on.
name_replace causes the base name to be replaced by given name, as if the
monster was a unique:
kobold name:Durwent name_replace
Will result in "Durwent" rather than "Durwent the Kobold". The corpse will
still be a "kobold corpse of Durwent".
name_species uses the name for corpses as-is, without prefixing it with
"kobold corpse of X" for name_replace. It also avoids the usual name tag
that displays above unique and renamed monsters in local tiles.
In combination with name_replace or name_species, there are two further tags
that can be used when renaming monsters, but not giving them an actual "name":
name_descriptor, and name_definite.
For example:
kobold name:goblin name_replace
Will result in "goblin hits you". However, adding name_descriptor from the
above flags will result in "The goblin hits you" and in the description of the
monster, "A goblin".
kobold name:goblin name_replace name_descriptor
The name_definite flag ensures that it is never referred to as "a" or "an",
but that the definite object is always used. Therefore, you will see "The
goblin hits you", as per above, but also "The goblin" in its description.
Setting name_definite will automatically set the flag name_descriptor,
therefore meaning that:
kobold name:goblin name_replace name_definite
is exactly the same as:
kobold name:goblin name_replace name_descriptor name_definite
name_zombie can be used to redefine already zombified monsters (including
skeletons, simulacra and spectrals).
Finally, name_nocorpse will cause the name to be completely ignored for
corpses. For example:
wizard name:sad name_adjective name_nocorpse
will result in "a sad wizard" that leaves "a wizard corpse".
For instances where space in definitions is limited, you can use abbreviated
forms of these tags:
* name_suffix -> n_suf
* name_adjective -> n_adj
* name_replace -> n_rpl
* name_species -> n_spe
* name_descriptor -> n_des
* name_definite -> n_the
* name_zombie -> n_zom
* name_nocorpse -> n_noc
Overriding Monster Stats
Further monster customisation can be made by using hd and hp. These two tags
allow you to completely overwrite the original hit dice and hit points of a
monster:
kobold hd:20
Creates a kobold with a hit dice of 20. As its hp is randomised, based on its
hit dice, this will also be re-rolled. Monsters with a specific hit point
value will not have this value change.
You can also have a specific value for hit points:
kobold hp:20
Creates a kobold with 20 hit points. This is also useful for monsters (such as
statues) which come with non-randomised HP values.
Monsters can be marked as summoned by using dur and sum tags. The dur tag
accepts an integer between 1 and 6 inclusive. The sum tag accepts the name of
a spell (parsed as per the spells tag, described below) or any of clone
(Rakshasa), animate (from animate dead), chaos (made from pure chaos), miscast
(summoned from by spell miscast effect), zot (summoned by a Zot trap), wrath
(summoned by a god in an act of retribution), aid (summoned by a god in order
to give aid).
Of the spells, shadow_creatures has the most significant effect, in that
monsters will dissipate into the shadows rather than disappear in a puff of
smoke. Using non-summoning spells will also have no effect.
Tagging a monster with seen will override the system and force that monster to
be marked as already viewed; this means that it won't generate messages such
as "A kobold comes into view".
Overriding Monster Spells
Monster spell sets can be overridden with a spells: tag, used as follows:
*goblin spells:throw_flame.50.wizard
*ancient lich spells:symbol_of_torment.26.wizard; glaciate.51.wizard
(a list of spell slots, consisting of a spell name with spaces replaced with
underscores, a frequency of casting and set of spell slot flags specified
afterwards with ., with slots separated by ;. There should be no spaces around
the ; or after the spells: prefix)
Spell names must exactly match the names in spl-data.h, with spaces replaced
by underscores. Spell frequencies are an (x in 200) chance that that spell
will be cast. Spell flags include:
* natural, magical, demonic, wizard, or priest - the manner in which this
spell is being cast. Wizards and priests can be silenced and will trigger
appropriate conducts (Trog will appreciate killing wizards, Beogh will
appreciate killing priests). Magical, demonic, and wizard spells are subject
to anti-magic effects. Natural spells do not generate noise.
* emergency - the monster will only cast the spell when low on health.
* breath - the spell is a breath weapon, and using it triggers a breath
timeout during which the spell cannot be cast again.
* no_silent - the spell cannot be used while silent, even if it is an ability
type normally not subject to silence.
* instant - the spell does not expend the monster's energy; they may take
another action on the same turn.
* noisy - forces the spell to make noise even if it is a natural ability.
You may use none specify that a slot should be left empty. You can force a
spell-less monster with:
orc wizard spells:none
Setting enchantments
You may give a monster any number of enchantments. It may start hasted, blind,
have permanent RMsl, etc. The syntax is ench:<:<:< or
perm_ench:<:<. The < and < fields may be
omitted.
For example:
* orc perm_ench:blind perm_ench:mad
* dream sheep ench:sticky_flame
* stone giant dur:1 ench:berserk
%%%%
macro-menu
Editing macros and keymaps
To edit a current macro/keymap, select from the menu using the arrow keys or
by hotkey. (Hotkeys that are used to navigate the menu can be selected by
arrow keys). To create a new mapping by entering a key, use the [~] key
or the corresponding menu item, and then enter the key. This allows you to
create (and edit) mappings that use menu keys. Use the [!] key to switch
to keymap editing mode (see below for more information on keymaps).
Macros allow remapping keys that are sent to the game when inputting
commands. This can be used to redefine a command key, or to define an unused
key. They map a key to a sequence of keystrokes, and keystrokes do carry over
into submenus.
Example 1: mapping e to p would let the `e` key trigger the same
command as the `p` key (which on the default settings is autofire).
Example 2: mapping 1 to the sequence zaf would let the `1` key
cast a spell that is on the letter `a` with default targeting.
Example 3: mapping F1 to Q&a would let the F1 key quiver the spell
that is on letter `a`.
Keymaps are lower-level key substitutions that replace keys entirely with
a sequence of keystrokes. They are recommended for changing keys uniformly to
deal with alternative keyboard layouts. Keymaps are contextual, and the
default/"regular" context is used anywhere that a non-specialised context is not
active. Macros take the result of keymaps as input.
Example: In some European keyboard layouts, the § symbol replaces ~. Therefore,
it could be useful to keymap § to ~ in both the regular and menu keymap contexts
so that the main menu and macro menu become a bit easier to access. (In other
layouts, this applies instead to ½.)
When used for mapping commands, keymaps can have unexpected side effects: e.g.
mapping 1 to zaf via keymap is not recommended, because this will
make it hard to type `1` when entering a skill target.
Keycodes: Both macros and keymaps accept keycodes when describing the
action, in the form of \{n} to enter keycode n. (Use \\ to
enter a backslash.) For example, use \{9} to enter the keycode for the
tab button. You can bind macros and keymaps by keycode by using ~~
at the macro edit menu.
Saving: Bindings edited at this menu are saved in a .macro file in your
save directory. They will be overridden by settings in your options file. See
the `macro` command in options_guide.txt for more information.
%%%%
console-keycodes
Keycodes for console and webtiles
Keycodes can be entered as numbers, or in some cases, human readable strings.
The following tables give both the numeric keycode, and the string; modified
keys generally must be entered by number. When entering a keycode as part of a
macro action, it should be wrapped using the following syntax for keycode n:
\{n}. This should also be used when defining a keycode by number in your
rc file. Example: when defining a macro that triggers F1, you can write
"\{F1\}" or "\{-265}". For named keys as part of a macro definition, the \{}
may be omitted.
Positive numeric values are ASCII character codes. Negative values are
crawl-internal keycodes for special keys. The sign is required for these to
be interpreted correctly. Keyboards vary quite a bit, and so not all of these
bindings are available on all keyboards; cases where there is often variation
are indicated specifically below.
The following is a quick-reference for some of the main keys you might want to
bind.
8: Backspace (and/or Delete, depending on keyboard)
9: Tab
13: Enter (and/or the Return key, depending on keyboard)
27: Esc
-233: Shift-Tab
-222: Ctrl-Tab (on some keyboards)
-255: Delete (on some keyboards)
-265: F1 -264: F2 -263: F3 -262: F4 -261: F5
-260: F6 -259: F7 -258: F8 -257: F9 -256: F10
Keycodes up to F22 are defined, but may not work on all builds. (On webtiles,
F11 and F12 are reserved.)
Number pad and navigation keys:
On many keyboards, numlock switches between the number keys and
navigation keys. Modifiers for these keys may not work on all keyboards. When
modified number pad keys do work, Shift and Ctrl typically treats those keys as
modified navigation keys regardless of numlock status.
Navigation keys:
-245: PgDn -234: Shift-PgDn -223: Ctrl-PgDn
-246: PgUp -235: Shift-PgUp -224: Ctrl-PgUp
-247: Clear -236: Shift-Clear -225: Ctrl-Clear
-248: End -237: Shift-End -226: Ctrl-End
-249: Home -238: Shift-Home -227: Ctrl-Home
-250: Insert -239: Shift-Insert -228: Ctrl-Insert
-251: Right -240: Shift-Right -229: Ctrl-Right
-252: Left -241: Shift-Left -230: Ctrl-Left
-253: Down -242: Shift-Down -231: Ctrl-Down
-254: Up -243: Shift-Up -232: Ctrl-Up
Number pad keys:
-1007: NP7 -1008: NP8 -1009: NP9
-1004: NP4 -1005: NP5 -1006: NP6
-1001: NP1 -1002: NP2 -1003: NP3
-1000: NP0
-1010: NPenter
-1012: NP/ -1015: NP* -1016: NP+ -1018: NP-
-1019: NP. -1021: NP=
Some number pad punctuation keys may not be distinguished from their "regular"
counterparts, again depending on keyboard and build.