Angband -- Bugs
This page lists known "bugs" in recent versions of
Table of Contents
Bugs in Angband 2.8.3 that will be fixed for Angband 2.8.4
Need new "ext-mac", "ext-win", "ext-dos", "ext-ibm", etc, archives.
Add an option to provide "full" descriptions for identified
objects, but be careful about objects in non-home stores.
Bugs in Angband 2.8.3 that should get fixed for Angband 2.8.4
The spell info for "cloud kill" lists the incorrect damage.
Allow the "c_roff" function to handle '\n' characters cleanly.
Add explicit directions on how to download the game. People just
do not understand "ftp" these days....
A cleaner, canonical, keypress macro encoding is needed. It would
be nice if there was a clean way to allow the "keypad" to be cleanly
detected. More modifier keys are needed.
An option is needed to do "auto-more", for use with the message
The haggling code can induce a dereferenced void error, due to a
hard-coded constant bug in "say_comment_6".
The "dump user pref file for keymaps" code is broken.
Allow all user preferences (colors, visuals, keymaps, macros, etc)
to be stored in a special user pref file, which is auto-loaded at
game startup, and which is auto-dumped whenever the game is saved,
replacing the original file. This file should live in the "user"
directory, with a special name. Make sure to only load the basic
user pref files before loading this one, and/or when appropriate
options are changed by the user (i.e. "use_graphics"). This file
should rarely be changed by humans, so comments should be minimal.
Make it easy to use different pixmap files for relevant platforms.
Add a section to the webpage with direct download links to the
various ftp sites, to the various relevant files.
The game needs better startup error processing, particularly,
better error messages when the "lib" directory cannot be found,
or when the sub-directories of the "lib" directory are missing.
Bugs in Angband 2.8.3 that might not get fixed for Angband 2.8.4
Perhaps moving diagonally should take 140 energy. Then we could use
200 as the minimal energy level, for a total range of 0 to 249. This
would make the game more "realistic" but might damage game play, and
could perhaps be added as an option, once the "200" change is made.
Turning off "testing_stack" when a stack of objects exists, and then
saving the game, will create an unloadable savefile.
It looks like ball spells which affect multiple monsters may be
causing the health bar to auto-track one of the monsters.
Somebody sent a patch for stupid monster wake up frequency (10/10/97).
Attacking invisible monsters while afraid needs a better message,
perhaps two separate messages.
Do something, perhaps a complete object list re-order, to
allow stacks to maintain the proper order across savefiles.
The "show_file()" function needs a key for "up one line", and
the "-" key should go back an entire page, and the prompt is
not quite right for single page dumps, and the "go to line"
should default to the current line, and the prompt should
mention the "#" and "%" commands.
Somebody claimed that monsters drop their items when a savefile is
Make preference file for "main-mac.c" similar to "main-win.c", and
create a similar file for "main-x11.c".
Better interface to the "macro" command, including a keypress for
"enter keypress, then action, then choose macro type", and perhaps
even some form of macro browsing. It would be nice to actually be
able to delete old macros. Perhaps we should combine the
"command macros" and "keymaps" into new and improved "keymaps",
and use "macros" just for honest to goodness macros.
Consider using the "control-right-brace" key as a "macro recording"
key, which would save keypresses into the "macro__buf" variable,
until the next "control-right-brace" keypress. Actually, this key
could be used as the "magic" key that I have been considering, for
which macro recording would be but one possible use.
Consider a special command, bound to "tab", which would, without
changing the screen, take control at the "inkey" prompt and allow
the use of various special "sub-functions", including a special
"enter direct keypress" interface, and a "take snap-shot" command,
and maybe even a special "exit game immediately" command.
Some people have requested a special "repeat last action" command
which could perhaps be implemented in a similar manner to macros.
The "object recall window", with room for 8 spells, showed the 9th spell
on the same line as the 8th spell, probably due to an illegal "cursor"
In a store, press "i" + "=" + + "s", and note that the command
starts out in "display" mode, because the "=" command does not clear it.
Add a wake up monster function of some kind that allows monsters
to wake up their friends, either as an action, or as a side effect.
Gravity breath attacks can "blink" you into another grid which is still
queued up to be affected by the breath, allowing Kavlax to do double or
even triple damage in a single breath. This applies to monsters also.
Allow "escape" (and return) to make default choices during birth.
Consider a new question to activate a "tutorial", by displaying a
brief introduction, choosing a standard character, and providing
important hints, via user request or a special help file, instead
of the current hack in the basic help file.
Every 'bell()' call should perhaps have a 'message_add()' call as
well, especially for debugging problems. Perhaps certain "prompts"
should also have "message_add()" calls. Perhaps a special function
for displaying prompts should be created.
Perhaps a special screen which displays all keypresses and what
actions they are bound to via keymaps, and allows changes to be
made. This might require textual names for every "command".
This might also require a new command keypress.
The "graf-xxx.prf" file always uses the "white" spell effect pictures
and the "bluish" flavored object pictures. This should be fixed.
Some people have suggested adding "current grid location" to the
primary dungeon screen.
Some people have suggested adding "experience points needed for
next level" to the character description screen, and or to the
primary dungeon screen.
The "sounds" in the Macintosh version are horrible.
The "main-ami.c" file (like a few other files) is very out of date.
There is a new "xtra-xxx.prf" file that defines "appropriate" pictures
for the player based on race and class.
New "xxx_to_attr"/"xxx_to_char" tables could be created for the
visual representations of all objects/monsters/terrain/etc, which
would allow some code and such to be removed from various places.
The code to prevent "cheating" by attr/code redefinitions should
somehow be encoded in the "*_info.txt" files, as is currently done
with the "mimic" terrain feature fields. I am not sure where I was
going with this bug.
The "z-term.h" package should take "y,x" args, not "x,y". Also,
"byte" should be used for both "attr" and "char" values. Perhaps
certain functions should take "attr" and/or "char" as "int" for
efficiency. These changes might make it harder to use "cptr" in
various functions. Perhaps a "bptr" type should be created.
The "visuals" should be specified in "text.prf" and "graf.prf", and
should not be done at all in the "lib/edit/*.txt" files (except for
the "r_info.txt" file, for now, anyway). The "visuals" should use
an encoder which allows normal characters and hexidecimal values,
and which (perhaps) does something special for "colors". Objects
with "flavors" should be initialized only by the code which assigns
"colors" to each flavor, and the colors of these objects should only
be modifiable by special "U:N:A:C" lines in user pref files. This
would disable the display of the "racial basics", and might require
"genocide" to change to a "targetted" spell.
A standard "debug" flag would be useful (perhaps use "arg_fiddle")
for analyzing problems in "visual modules".
Make sure all of the "flow" functions treat cost "zero" correctly.
The "teleport" spells should limit the "distance" argument to
reasonable values, to assist with variants.
Spells like "sleep 3" cause the monster health bar to track each
monster as it is affected, stopping on the final monster.
Note the following sequence. Step onto panel scroll grid, which
contains a trap. See "You have found a trap. You are enveloped
in flames. -more-", then player is redrawn at "scrolled" grid,
then "One of your arrows is destroyed. -more-" and finally, the
actual map is scrolled. Oops. Similar behavior may be occuring
the player is being prompted for what to do with objects which
are walked onto at the edge of the map. Perhaps "handle_stuff()"
should be called after the player moves, before grids effects
Perhaps generalize panel_bounds() to do initial assignment, based on
the player location, and only if requested, and then, if requested,
adjust the panel to "center" the player, and then, always, adjust the
panel to be legal (even in town).
The "monster_swap()" function will break if monsters are ever allowed
to move into the player's grid. It should use a "m1 < 0" comparison.
It should perhaps be the nexus for the monster movement disturb code.
The "WinZip" program fails to create empty directories, perhaps
the game should attempt to create any missing directories. This
will require even more portable code, however, unless it is done
directly in "main-win.c", "main-ibm.c", etc. If not, then empty
files should be placed into all the empty "lib" sub-folders for
those machines which are brain-dead.
Describe options which make the game faster in the help files.
Mac version leaves font files open at exit.
Move the silly "crown" picture into an external file.
Make some kind of "idiot's guide to downloading and installing angband"
for various computers.
Patrick Tracy sent "descriptions" for all the normal weapons/armor.
Jim Lyon sent a patch for cleaning up the "generate.c" file, as well
as another patch (10/09/97) that looks quite useful.
Perhaps monster breath attack power should be based on their health.
The "object_flags_known()" function should have some "cheat"
flags to allow knowledge of artifacts and ego-items.
Change "wizard" to a few "cheat" flags, such as "show_damage". Then
use "wizard" only for preventing death and restoring dead characters.
Perhaps the "cheat" options (and "noscore") should be cleaned up,
perhaps including changing "wizard" into some "cheat_xxx" flags,
and reserving eight full flags for the "Borg".
Something is not quite right about the X11 macro processing
(interupting digging may sometimes disable macros). Perhaps
the special X11 macro support should be removed or replaced
by special auto-macro generation code in "main-x11.c".
Perhaps add an option to display stacks using a special symbol.
Perhaps certain monsters should have "torch-lite" of some radius.
Using Angband on the Macintosh, if you close all the Angband windows,
switch to another application, switch back, and then re-open the main
Angband window, the game will crash, in a call to "ClipRect()". This
is one of the weirdest bugs I have ever encountered.
Add hints to the "identify symbol" prompt about special chars, or at
least provide a special "?" sub-command.
The pictures need help. Either change the walls or the doors.
The high level books all have different pictures. The flavored
objects all have "random" pictures. Some traps (glyph, summon,
teleport) look the same. Some traps (trap door, pit, spots)
look the same. All veins (magma, quartz) look the same. Many
of the "wall" pictures are not used for anything.
Perhaps "identify" (and "*identify*") should only work on items
which are "appropriate", that is, unknown (or *unknown*).
Perhaps we should have macros to get/set "cave flags", and/or
the "marked" flag (etc) on objects/monsters.
Any "blasted" objects are "restored" when the savefile is loaded.
Consider using the "TERM_XTRA_SHAPE" hook with "soft_cursor".
Try to remove some of the "Hack" and "XXX" comments.
Perhaps the "charge" on artifacts should be different from that on
rods, for example, each artifact (or dragon scale mail) could have
a "default timer" which is reset whenever the item is taken off
(or put on), so it must be worn ahead of its desired use (instead
of worn to recharge and then removed for later use).
Do something about "It moves quickly" applied to mushrooms.
Remove cycles from "main-gcu.c" via a special "Term_xtra_gcu_shape()"
function, and placing it before "Term_xtra_gcu_alive()". Move the
init/nuke functions down quite a bit. See "src-old" directory.
Macintosh version needs a better format for the preference file,
perhaps borrowed from the Windows "angband.ini" file.
Use proper terrain feature description code for "You tunnel into xxx"
and "You feel xxx blocking your way" and "There is xxx in your way".
Should have a generic "change depth" procedure.
All "special" screens should actually save, clear, use, and load
the screen. This should include "self knowledge" and "examine"
(but not "recall monster" and "inventory"). Perhaps all of these
screens should (optionally) appear on a non-primary window. This
might require a special prompt on the main screen.
Add "object_mark()" and "object_mark_p()" interface functions to
interface with the player specific object memorization flags.
Add "monster_mark()" and "monster_mark_p()" interface functions to
interface with the player specific monster memorization flags.
For "main-x11.c", need a nice way to turn extra windows on and off.
I saw "You have killed the small kobold. The spikes disappear." when
in a corridor, with plenty of space behind the kobold. This is weird.
Let monsters breathe when confused (in random directions?)
Clean up running code (treat doors and walls alike) and try to make
player stop at closed doors.
Consider using a held_m_idx field of -1 for the player's inventory.
Consider, once more, storing the player inventory in the normal
object array (but not the stores). This would simplify a lot of
the low level object manipulation code.
Some of the "p_ptr->depth" references really should be "d_ptr->depth",
such as the dungeon generation code, especially for multi-player use.
Look at the earthquake functions (in terms of multiple players).
Try to come up with a spiral function to use in the "look" and "target"
commands to remove the need for any static arrays. That is, a weird way
to traverse all the dungeon grids in a spiral path around the player,
for doing the "next/prev interesting grid" computation. This could be
(and should be) restricted to the "current panel", which should always
contain the player, though the ability to move the panel while targetting
might be really convenient. Or we could simply remove the ability to do
the "next/prev interesting grid" motion, and modify the "jump to next
interesting grid in the given direction" code with dynamic computation.
High score list should actually save "living" characters and should allow
some method for removing them at various times in some manner.
Do something with spell flags and spell order variables, including perhaps
a full translation when loading older savefiles, and the removal of the
spell order variable with forget applying to highest level stuff first.
Use bool arrays instead of bit flags for the spell flags.
Check the "main-ami.c" file, especially "town" references.
The "z-term.c" package should not "initialize" the "mem" and
"tmp" structures until they are actually used. A new function
"Term_exchange" is available to do something with "tmp". Maybe
some functions to discard (and create) those structures. Maybe
"Term_load()" and/or "Term_exchange" should be more "efficient"
about the way they load the screen.
People are working on various "random artifact" patches.
People are working on "obvious flags" patches, in which
the player "knows" certain things about certain items,
and "learned flags" patches, in which certain flags are
learned during the use of an object.
Be more paranoid when loading savefiles, in particular,
check sex/race/class indexes, and object/monster locations.
Various objects (monster, object, artifact, unique, race, etc)
should split out the pieces (if any) which are "player specific",
such as recall, preferred colors, visibility, etc, to facilitate
A new encoding is needed for the status of artifacts, so
that the "preserve" code and the "list known artifacts"
code can be simplified. Actually, both "uniques" and
"artifacts" should both have special "state" array with
values "Waiting", "Created", and "Finished".
Reduce the power of globe of invulnerability, perhaps by
adding a total damage field.
Check the artifact spoiler file generation code.
Should weird mind only be learned when actually sensed?
Should a glyph under the player protect from attacks?
The standard help files need some work. The "attack.txt" file
needs to be cleaned up. The "options.txt" needs information on
the new window and stacking options. The "version.txt" file
needs to have most of its contents moved to the web page. We
need an introductory on-line help file explaining how to play
the game, in very general terms, from start to finish.
The "hallucination" code is currently "silly" with "use_graphics",
but then, "hallucincation" is pretty silly anyway, so who cares.
Also, various "special effects" look bad with "use_graphics",
because the "misc_to_attr/misc_to_char" arrays have not yet been
used to encode a variety of "special pictures", including the spell
attack symbols and ball explosions, various player pictures, the
special "stack" picture, and the "darkness" picture. The use of
entry zero in various "picture" arrays was probably a mistake.
Add a "known monster" sub-option to the "knowledge" command.
New "cheat" options are needed for granting the player full
knowledge of artifacts/ego-items (including "hidden" flags).
The Macintosh defines some kind of "WINDOWS" constant.
Maybe all the "arg_xxx" options should simply "over-ride" the
"savefile options", and then "use_sound" and "use_graphics"
should all become normal options, and the "main-xxx.c" files
would then have to keep a special flag for "reacting" to such
Add interface to modify the names of windows, the names
of sounds, and allow both to be encoded in pref files.
Certain functions (such as the steal code) should first
make sure there is an available object, but should still
handle failure gracefully.
The "graf-xxx.prf" file contains some questionable mappings,
in particular, the colors of potions (etc) are semi-random.
Normal monster drops should have a message, if visible,
and the "atmosphere" option is set.
Consider monster inventory pre-generation, and increase
the size of the object array. Consider the possibility
of monsters carrying artifacts. Consider the possibility
of monsters using the objects they are carrying.
Make monsters which steal gold carry around "gold" items.
Perhaps "autoscum" should not work unless the player is actually
using stairs, after all, the "definition" of autoscum is based on
the ability to "scum" using stairs.
An option to bypass the "-more-" prompts for messages has been
suggested for use with the new "recall messages" window.
Certain window options should be allowed to work together, such
as the "recall monster" and "recall object" options, since some
window options are only needed temporarily, while others are only
needed when nothing else is being displayed.
The "heal" prayer does not cure poison, maybe it should.
Making the player inventory part of the dungeon objects would
be very nice for functions which pass around object indexes,
and would allow expandable player inventory, but would require
some work to make sure that player objects were protected from
various functions, much like monster objects.
Perhaps the "feeling" from out-of-depth objects should be
"capped" at some reasonable value, consider rings of speed.
Orc captains should perhaps have escorts.
Darkness breath looks weird (floors) when the player is blind.
Intelligent monsters should avoid certain spells, like useless
summon spells, and grabbing the player when the monster is fleeing.
If two items both have inscriptions, and those inscriptions are
different, then it should still be possible to merge them somehow.
Some people have requested static "shower" strings, with separate
ones for each type of file display.
The help files need to be updated and cleaned up, perhaps even
get some special formatting codes such as "advance to new page".
This might or might not work well with some kind of temp file
usage. The "my_fgets()" call is probably too aggressive.
Perhaps the "my_fgets()" call should be converted into specialized
functions working with the "fd_open()" command. Or maybe not.
New spoiler files are needed for the monsters, artifacts, etc.
Do some kind of "context help" for things like "recall messages".
Perhaps the "note" command should save the note in a special set
of string memory, which could be dumped with the character dump,
allowing all sorts of possibilities.
New savefile format for messages/notes to optimize storage.
Broken messages should not (?) allow other messages on same line.
The "display recent messages" window should split long messages,
though the current "horizontal scrolling" in not that bad.
Armor prices should be calculated relative to the *assumed*
modifiers to hit and to damage, not to zero, and then all the
armor prices should be readjusted to allow unknown armor to
be worth at most as much as known armor. Verify this.
The Lucerne Hammer should be a bladed pole-arm and not a
hafted/blunt weapon. I have been waiting on this until
the object list is rearranged. Also, there is an artifact
Lucerne Hammer designed for priests (add the "blessed" flag).
Perhaps a "map information centered around the player" window flag
would be nice, though very expensive, perhaps it should display the
"viewable" grid array, which might be slightly faster. This would
be very useful if combined with the new detailed graphics.
The "snap-shot" window flag are not ready yet, and the "over-ride"
flags have not even been implemented, much less defined.
The new "c_roff()" command should perhaps be used for the "examine
object" command, instead of just doing a multi-line phrase dump.
Perhaps the object, ego-item, and artifact files should use the
The "monsters know player resistances" option should be modified
to allow a monster to "weight" various attacks based on "predicted
damage" (much as is done by the Borg), since currently, the option
is actually counter-productive, and having a fire dragon *never*
breathe fire is slightly silly.
Perhaps the "filename parser" should be used in all situations to
convert between "canonical" filenames (leading tilde, slash divider)
to "system" filenames (no tildes, system-specific separator). This
would simplify some things and complicate others.
Using stairs takes a turn, perhaps this is bad, note that recall,
for example, does not. Perhaps entering a new level should always
start the player with zero, or perhaps full, energy. Remember that
loading a saved game often acts like entering a new level.
Player ghosts have been removed for now, until they can be added
as "special" unique monsters, with "fill-in" names.
Monsters attempt to open closed doors even when walking around
the closed door would be a more reliable method.
The IBM archive MUST be extracted with the "pkunzip -d" option, or
the "lib" sub-directories will be lost, and the game will not work.
This should be detected at game startup and a verbose explanation
should be given.
Several "main-xxx.c" files should probably use some of the new
flags in "term.c", including "always_text", "higher_pict", etc,
and should perhaps use "white space" instead of "black space".
A "bubble" sort is still used to select monsters in pits and during
object spoiler file generation.
Various Monsters and Objects are perhaps "Excessively Capitalized".
Something needs to be done about monster distribution.
The standard "pluralization" rules are slightly incorrect, for example,
"staff" should become "staves". But few people actually care.
The four "druj" monsters never get to use their melee attacks.
Some default color mappings are needed for the "pref-ibm.prf" file.
Various "main-xxx.c" files should actually "resize" the sub-windows
instead of simply shrinking the displayed region, which will allow
the recall window (and such) to correctly "wrap" various things.
Various "main-xxx.c" files need work to take advantage of the new
"z-term.c" methods. The new "main-x11.c" and "main-xaw.c" files
are more or less done, but need to use the "angband_color_table".
There is a new "TERM_XTRA_REACT" ability that various "main-xxx.c"
files should probably support.
Sometimes "main-mac.c" does not refresh the screen when a dialog
box or other application obscures the main window (or a sub-window).
More support is needed for the "sound()" function.
Various people have reported unexplainable "level feelings".
Some people have requested a method for changing the titles of the
various windows, in particular, the main window. This would simplify
things like running multiple sessions of Angband simultaneously. The
window titles are currently taken from a global array of strings, but
this only effects the name the window is created with.
Some people have requested that "messages", monster recall, and
various other things, be "colored" in some meaningful way, and
that these colors be used in the message recall window as well.
Some people have suggested that the "description" fields for objects
and such be used to provide code for the "examine item" command, with
short textual descriptions of the object perhaps supplemented by stuff
generated by the game, like in the "monster recall" code. And then
perhaps an "auto-recall" option for the recall window for objects.
Some people have suggested a "backstab" or "theft" attack for rogues.
Some people have requested that feather falling resist trap doors,
Some people have requested the ability to memorize "negative" info
about monsters, for example, to be able to notice when a monster
can *not* open doors, or is *not* invisible.
Some people have requested "quest" levels, and someone sent
some code to implement the "dragon" quest, more or less, and
perhaps a general method of encoding "hard-coded levels" should
Some people want the "character dump" to include killed uniques,
found artifacts, number of each monster killed, etc.
Some people have requested that the "monster tracking" code
be correctly implemented.
Some people have requested a new method for stats, for example,
starting at "000" and ranging up to "250" naturally, and then
up to "399" (etc) with equipment bonuses.
Some people have requested that more types of "monster status"
(as in "unhurt" or "wounded") be used.
Some people have requested that "unused" blows not take energy,
allowing multiple attacks to be spread among wimpy monsters.
Some people have requested the ability to have the color of the
objects in the inventory match the color of the object on the
ground, or to have pictures of the item appear next to the item
Some people have requested an expensive "real-time shimmer" of the
Some people have requested that the object_level in monster drops
be calculated from a more interesting formula using the monster
level and the dungeon level.
Some people have requested the use of a limit on the total number
of "boosted" dice on ego-items, and of increased boosting odds.
Some people have requested than "unknown" weapons and armor and
launchers display the "default" damage, armor, and multipliers,
instead of the "actual" values.
Go back to the
Official Angband Home Page
See also Ben Harrison's Home Page /
Ben Harrison /