Angband -- Changes
This page lists "changes" in recent versions of
Angband.
Table of Contents
Changes made for Angband 2.8.3
-
The "lib/file/news.txt" file was redesigned. Various of the online
help files were updated slightly. Much commenting was performed.
-
The old "depth_in_feet" option has been removed, and in its place, a
new "show_flavors" option has been added, to allow object flavors to
be shown even on "aware" objects (except in stores).
-
The "misc_to_attr"/"misc_to_char" arrays have been activated, and are
being used for both "spell effects" and "object flavors", which will
allow "lib/user/font.prf" and/or "lib/user/graf.prf" to specify better
attr/char codes when they are available. It is no longer possible to
force a flavored objects to change its "appearance" when identified.
-
The inventory, equipment, and browsing commands now display a special
prompt of the form "(xxx) Command: ", where "xxx" indicates what type
of special display mode is active, and then they prompt for a command.
The "total weight" is no longer displayed in the prompts.
-
The character display screens have been cleaned up and consolidated
into two screens. Both display the player name, sex, race, class,
title, hitpoints, mana, and complete stat info. The "standard" one
also displays age, height, weight, status, maximize, preserve, level,
experience, gold, burden, bonuses, infravision, skills, and history.
The "special" one also displays player level and various flags which
are known to be induced by equipment (or inate abilities).
-
The "NOT" expression in user pref files has been fixed.
-
The "interact with macros (and keymaps)" screen now uses a more user
friendly method for macro/keymap creation.
-
Command macros have been replaced by keymaps (or normal macros). Macros
are now really intended to be used only as a simulation of real hardware
based macros, with the ability to manage them at a software level.
-
Keymaps may now specify a command count, so, for example, you can now
make a keymap from "s" to "05s" to induce semi-repeated searching, but
then you would have to use "d" or "\s" or "01s" to sell single items.
Pre-supplying an explicit command count will allow the keymap to be
used without its numeric count, so, for example, typing "01s" in the
example above would search for one turn.
-
Keymaps have been changed. For each "mode" (original and roguelike),
each "keypress" can be mapped to any sequence of keys, as with macros.
This sequence of keys will not be matched against macros or keymaps,
and so every "command key" in the sequence must be an "underlying" one.
The "interact with macros" command now allows dumping of all keymaps for
the current mode to a file, and for interactive modification of keymaps.
Keymaps can appear in user pref files. The default mappings for both
keysets are listed in the main "pref.prf" file. Commands which take a
direction now extract the legal directions from the bodies of keymaps
for the current mode. Note that a keymap may specify a sequence of
several actions, and if the "flush_failure" option is set, then any
failures will cancel any pending actions.
-
Nar the Dwarf now has the "ONLY_ITEM" flag.
-
Objects from the second page of a store are now always have indexes
from "m" to "x", and you may get/purchase objects from either "page"
of the display. The "m" and "p" and "s" store commands will be, at
some point in the future, removed. Start using "g" and "d" instead.
-
A new "main-dos.c" file has been created to leverage the "Allegro"
graphics library for DOS-386 machine. It can now be compiled with
the standard "main-ibm.c" file as a backup method. Both files have
been cleaned up somewhat. The "main-ibm.c" file now sets the cursor
visibility correctly, and cleans up the video mode on exit.
-
The "Term_save()" and "Term_load()" calls have been wrapped in new
"screen_save()" and "screen_load()" functions, with a static variable
to make sure they are never called incorrectly. The "character_icky"
and "character_xtra" flags have been converted into counters.
-
The "main-win.c" file now recognizes "keypad 5" (and various other
special keys, such as "pause").
-
The "main-win.c" and "main-mac.c" files no longer allow the game to be
saved when it is in an inconsistant state.
-
The "bell()" function now takes a string to add to the message recall,
and it may be extended at some point to use the "plog" method to show
error messages to the user, but this would require special code for
some of the "main-xxx.c" files.
-
It is now officially illegal to "resize" the primary Angband window
(this is enforced by the "z-term.c" package), which must be at least
24x80 in size. This change has made a lot of code faster and safer.
-
The "target" code was wrapped lightly in an interface. The "macro"
and "quark" and "message" packages were wrapped lightly as well.
-
The "dispel" prayers now do the "correct" amount of damage, that
is, for some number D between 1 and N, where N is some multiple
of the player level, all appropriate monsters take D damage.
-
The "main-xaw.c" file now saves all keypress events in "old_td",
which should fix some old bugs.
-
The "update_flow()" function was optimized.
-
The "Borg" and "Debug" commands now always prompt for acceptance of
the first usage per session, with plenty of warnings, unless a new
option is set.
-
Multi-page self knowledge displays have been fixed.
-
A source only beta release of Angband 2.8.2 with the changes below
has been released for testing purposes only.
-
Minor cleanups (comments, indentation, and such).
-
Most global array variables are now dynamically allocated.
-
Allow "special" artifacts to be created in any order.
-
Only the "cave_set_feat()" function may change features.
-
Cleaned up "generate.c" with some higher level functions.
-
Optimized "message_add()" and "object_desc()" functions.
-
Major optimizations of various "cave.c" functions.
-
New "project_path()" function (using actual range).
-
New "update_view()" code (absorbed "update_lite()").
-
The entrances to shops are now more widely illuminated.
-
Compilation option for "new field of view algorithm".
-
Compilation option for "complex wall illumination".
-
Option "hidden_player" to hide player when running.
-
Option "verify_destroy" to verify object destruction.
-
Option "verify_special" to verify unsupported commands.
-
Option "allow_quantity" to allow quantity specification.
-
There is a new "project_path()" function for calculating projection
paths. Range is now correctly applied to diagonal projections. All
"ball" attacks now auto-explode if they reach maximum range.
-
The "update_view()" function was optimized, and absorbed the
"update_lite()" function. The "display torch lit grids in yellow"
option now affects only grids which are not perma-lit. There is a
new version of the "update_view()" algorithm which is much better.
-
A new bitmap file has been uploaded for Windows Angband, and
the precompiled archive has been recreated using the new file.
-
New "ext-mac" and "ext-win" archives have been uploaded.
Changes made for Angband 2.8.2
-
The "help" files have been cleaned up and updated (a little).
-
Filling up the object array in "drop_near()" and "place_object()"
will no longer result in the possible permanent loss of artifacts.
-
The "sounds" have been cleaned up somewhat, but they are still
really stupid.
-
The "show_choices" option, if active, and if only one sub-window
is being used to display inventory or equipment, will temporarily
take control of that sub-window to make sure it always displays
the "relevant" screen during item selection. This is independant
of the "ctrl-e" command, which changes the "default" display.
-
The useless "display spell info in a sub-window" option has been
replaced with a new "display player flags in a sub-window", using
the new "display_player(2)" method. The only way to see a list
of spells is to activate "object recall" in a window (possibly
the same one in which "monster recall" is active), and then you
will see your "most recently selected spellbook" spells. Also,
stat modifiers are always "known" in the "player flags" display.
-
The heroism and beserk strength potions no longer affect maximum
health, but they still do a small amount of healing when used.
-
The "color" handling was cleaned up in "main-win.c", "main-mac.c",
and "main-x11.c". The default colors for "dark gray" and "blue"
were made slightly "lighter".
-
The source files were cleaned up. Various comments were updated.
-
The "xtra object flags" from old savefiles are ignored. Some new
flags (resist fear, lite, dark) have been added to the "resist" set.
-
Objects now lose their "marked" flag when picked up from the ground.
Old savefiles will be repaired.
-
The "other_query_flag" option allows the user to choose items from
floor stacks, instead of just auto-choosing the first legal item.
-
The spoiler file generation code had a few syntactic flaws.
-
The "graphics" support for the Amiga, Macintosh, and Windows versions
have all been unified, and they all use the same "graf-xxx.prf" file.
-
The "main-win.c" has been rewritten, and seems to work. It now uses
the "standard" bitmap file, and can handle any "tile size", whether
or not there is a font available in that size, though the interface
is pretty annoying.
-
Five more (obvious) types of ego-ammo are half-added to the game.
-
The "cheating" options are handled in a standardized manner.
-
Using the "option" screen now induces a complete "redraw" because
people get confused otherwise. The "do_cmd_redraw()" command now
completely redraws the current "lite" and "view" regions.
-
When the player dies, the "savefile" is now untouched until after
the "tombstone" is displayed. This will facilitate some forms of
savefile abuse which were disabled a few versions back.
-
Warriors now get intrinsic "resist fear" at player level 30.
-
When saving the game, monster/object compaction is now synchronized,
preventing a variety of bizarre bugs.
-
The "z-term.c" file no longer induces occasional graphics glitches.
-
Paralysis attacks on a paralyzed player always do at least one hp of
damage. This should prevent "infinite paralysis" from floating eyes.
Being paralyzed or stunned now prevents regeneration just like being
cut or poisoned (or starving).
-
The "main.c" file now allows specific "visual display systems" to be
chosen, and allows "command line args" to be passed to the underlying
"main-xxx.c" file. The "main-x11.c" and "main-xaw.c" files are better.
-
The "rubble" terrain is now a "pile of rubble".
-
Some code has been cleaned up somewhat, including the "sector" code,
the "haggling" code, the "running" code, the "get_item()" code, and
the "object_forge" code.
-
Some functions have been optimized, including "update_view()",
"update_lite()", "update_mon()", and "process_monsters()".
-
The old "cave" variable was split into several global two dimensional
arrays, one for each field in the old "cave_type" structure. All of
these new variables, and some of the old variables, are now allocated
in global memory, instead of dynamically on the heap, for efficiency.
-
The "option" variables were moved into the player structure as an
array of bool's, and the global "option" structures were broken out
into several different arrays. The old "allow_stack" options were
replaced by the new stack/carry options. The "show_details" option
now defaults to TRUE.
-
The old negative "c_ptr->m_idx" semantics have been restored. The
player grid now always contains a "c_ptr->m_idx" value of -1. A new
"monster_swap()" function has been added to swap the locations of any
two monsters and players, by location. A new "player_place" function
has been added to control initial player placement.
-
Savefiles containing dungeons with illegal depth, size, or player
location (including all old "town" levels) will be ignored, and the
player will be placed in a newly generated town level. Any savefile
checksums from old versions are also ignored.
-
The "town" is now centered in a large field of solid walls, and the
panel always causes the town to be "centered" on the screen, except
when the "view world" command is being used. All dungeon levels are
now the same size, though smaller levels may be created if desired
by filling the rest of the dungeon with perma-walls.
-
The "cur_hgt" and "cur_wid" variables have been replaced by direct
reference to the DUNGEON_HGT and DUNGEON_WID compilation constants,
which replace the old MAX_HGT and MAX_WID compilation constants.
-
The "tval_to_char" array has been removed. The "use_color" option
has been converted into an "inventory_colors" option, which allows
the "tval_to_attr" array to be used. You must now redefine all the
standard colors to "white" to totally disable the use of color, and
even that will only affect the physical appearance.
-
You must now use the "repeat count" method to specify any quantity
above one for any command, including the buy/sell store commands.
The "zero" count may be used to special "all" of a stack, which
also disables the confirmation for the "destroy" command.
-
High stats are now displayed "correctly" (not as "18/***").
-
The use of various pointer variables was standardized.
-
The "resistance" screen was cleaned up, more flags were added,
footers were added, the columns are now color coded by parity,
and the equippy chars use the actual object attr/chars.
-
All of the "do_cmd_xxx()" functions now take no arguments, so
"do_cmd_help()" lost an argument, and "do_cmd_walk()" and
"do_cmd_stay()" were broken into sub-functions.
-
Only walking and running induce standard player movement. This has
affected the semantics of bashing and disarming.
-
The "extra shots" and "extra might" flags were turned into flags which
are modified by "pval". The artifact launchers were slightly rebalanced,
changing Cubragol from "M*4" to "M*3", Belthronding from "M*6,D+3" to
"M*6,D+1", and Bard from "M*4,D+3" to "M*5,D+2".
-
The object flags were reorganized slightly for various reasons. Some
of the object flags were renamed. The "RES_FEAR" object flag was added.
All objects which grant immunity also grant resistance, for consistency.
-
The "p_ptr" structure was cleaned up somewhat, and absorbed many global
variables, as well as a few newly created ones.
-
The initialization of options was moved into "init2.c" and "load2.c"
where it belonged. The "X"/"Y" actions can now be used in "pref.prf"
to set "default" options, and in "user.prf" to set "override" options.
-
The ability to conditionally evaluate sections of user pref
files based on the current "system", and/or player class or
race or name has been added. The standard user pref files
have been converted to use this method. The "RACE.prf" and
"CLASS.prf" files are no longer included explicitly, and any
old files should be moved into "user.prf" with conditionals.
The game now loads "pref.prf" during initialization, one of
"font.prf" or "graf.prf" during "reset_visuals()", and then
"user.prf" and "PLAYER.prf" after a character is prepared.
-
The "wizard" flag no longer grants telepathy, but there is a new
"detect all monsters" debug command.
-
Offscreen monsters can be "visible" if appropriate, and messages about
such monsters will mention the fact that they are currently "offscreen".
-
Telepathy on "weird mind" monsters will now work on some monsters,
all of the time, instead of on all monsters, some of the time.
-
Monsters now stay fully visible while detected, so that, for example,
the "center map" and "redraw" commands will not cancel the effects of
"detect monsters". The "mflag" repair code has been rewritten.
-
The player can now tunnel through doors, they are harder than anything
except granite. You may also tunnel through secret doors, and there is
a (small) chance you will find the door while digging.
-
New "floor_carry()", "monster_carry()", "monster_place()" functions
were created, unifying a lot of redundant code. Objects can now combine
when picked up by monsters.
-
Normal commands which take a direction now verify that the direction
makes sense before applying confusion and attempting the action. It
is now illegal to attempt some actions on an unknown grid. The "alter"
command chooses the action based on the requested grid, which may or may
not work if the player is confused.
-
The recall window updating code has been optimized, and is only performed
when the player is about to type a command.
-
A bug in "excise_object_idx()" meant that if you picked up an object from
the middle of a stack, then the objects below that one will be "invisible"
until you save/restore.
-
The "main-mac.c" file was modified to use the "modern" names for all
"Toolbox" functions, to allow compilation with the latest version of
CodeWarrior. Note that the resulting executable cannot read "Unix"
style text files.
-
The "toggle choice window" command was restored to "^E", so that the
"tab" key ("^I") can be saved for something special in the future.
-
A new command, "knowledge", has been created, and bound to the "~"
(and "|") key, absorbing the old "known artifacts" and "known uniques"
commands, and adding a new (silly) sub-option for "known objects".
-
The "object_flags_known()" function now assumes that the player knows
the "standard" properties of all ego-items.
-
The "update_view()" function was excessively optimized, so that in
certain circumstances, certain perma-lit wall grids were not memorized
or displayed when they should have been. Making all perma-lit walls
"translucent" would have fixed all these problems, and would make the
game faster, but would cause annoying visual and semantic weirdness
when a dark hallway was placed next to a lit room.
-
The official source upload contains a bad Makefile, some bad function
stubs in "main.c", and a disabled "username()" function in "util.c".
The "Makefile" may by default generate an executable called "testing".
-
Some early uploads contained a bug which caused the "sex" of new
characters to be an illegal value.
Go back to the
Official Angband Home Page
See also Ben Harrison's Home Page /
Ben Harrison /
benh@phial.com