# Angband -- Bugs

This page lists known "bugs" in recent versions of Angband.

## Table of Contents

- Bugs that did get fixed
- Bugs that will get fixed
- Bugs that might get fixed

## Bugs in Angband 2.8.3 that got fixed in the 1998-02-11 archive

- A new archive was uploaded that fixes the problems mentioned below. You have the new archive if the very last option on the first page of options mentions "Audible bell".
- The "depth_in_feet" option has been restored due to popular demand. The "show_flavors" option has instead replaced the "inventory_colors" option, which (like the old "hilight_seams" option) can be simulated by clever use of a user pref file (use attr 0x01 for all "E" entries). The "show_flavors" option is grouped with the other "show_xxx" options. The "lib/help/options.txt" help file was updated.
- Two occurances of "benh@voicenet.com" were changed to "benh@phial.com".
- Becoming aware of an object via purchasing the object in a store now induces pack reordering, as does quaffing potions of self knowledge.
- The map scrolling the occurs when the player gets too close to the edge of the map has been delayed until after the move is complete, preventing the annoying situation in which the player is redrawn, some messages are displayed, and then the map is redrawn.
- The "-s" command line argument now works when no high scores exist.
- Bad assumptions about the return value of "isupper" have been fixed.
- Accept (but convert to underscore) all non-alphanumeric characters when building the player "basename" from the player "fullname". This affects the names used for new savefiles on some systems, and the names used for player-specific user pref files on all systems.
- The character description screen now shows the correct Shots/turn, and no longer displays the maximized stat indicator in the wrong column.
- The "window option flags" that control the "display_player()" dumps were renamed to reflect their actual purpose.
- User pref file expressions now treat all printable characters except space and brackets as "token" characters, allowing correct processing of hyphenated race names (an add-on to "graf-xxx.prf" is available to choose an "appropriate" player picture based on race and class).
- Previously, when using "main-win.c", "main-mac.c", or "main-ami.c", the "SAVEFILE_MUTABLE" flag told the game to pick a new name for the savefile whenever the player name changed. This flag has been removed, and now, on those platforms, the game will only pick a new name for the savefile when a brand new character has just been created and the savefile has no name yet. This means that, on these machines, changing your name will no longer change the name of your savefile!
- A brand new "main-emx.c" file was obtained.
- Some minor random cleanups were done.

## Bugs in Angband 2.8.3 that will be fixed in the next version

- The "sounds" in the Macintosh version are horrible.
- Make new "ext-mac", "ext-win", "ext-dos", "ext-ibm", etc, files.

## Bugs in Angband 2.8.3 that might get fixed in the next version

- There are new "main-emx.c" and "Makefile.emx" files in my email, and at the ftp site.
- The "main-ami.c" file (and a few others) is woefully out of date.
- Need the ability to "record" a macro action.
- The "graf-xxx.prf" file always uses the "white" spell effect pictures and the "bluish" flavored object pictures. This should be fixed.
- 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.
- 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.
- Turning off "testing_stack" when a stack of objects exists, and then saving the game, will create an unloadable savefile.
- 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".
- 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.
- 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.
- It looks like ball spells which affect multiple monsters may be causing the health bar to auto-track one of the monsters.
- 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 are checked.
- 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.
- 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.
- Perhaps monster breath attack power should be based on their health.
- 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.
- 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.
- 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 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.
- 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, and have this work with the code that only dumps newly created macros. Perhaps we should combine the "command macros" and "keymaps" into new and improved "keymaps", and use "macros" just for honest to goodness macros.
- Perhaps add an option to display stacks using a special symbol.
- Add an option to provide "full" descriptions for identified objects, but be careful about objects in non-home stores.
- Perhaps certain monsters should have "torch-lite" of some radius.
- 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" motion.
- 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.
- 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".
- Allow "escape" (and return) to make default choices during birth.
- 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.
- 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". messages.
- 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 multi-player code.
- 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 "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.
- 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.
- 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.
- 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 changes.
- 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.
- Do something, perhaps a complete object list re-order, to allow stacks to maintain the proper order across savefiles.
- 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.
- 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.
- 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 "description" fields.
- 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.
- 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.
- The 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, or gravity.
- 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 be introduced.
- 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 description.
- Some people have requested an expensive "real-time shimmer" of the multi-hued monsters.
- 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