=== The History of Angband === This file was updated for Angband 2.9.0 by Robert Ruehlmann and Toni Rantala. Make sure to read the newsgroup ("rec.games.roguelike.angband"), and to visit the Official Angband Home Page ("http://thangorodrim.angband.org") for the most up to date information about Angband. Angband 2.9.0 has an incredibly complex history, and is the result of a lot of work by a lot of people, all of whom have contributed their time and energy for free, being rewarded only by the pleasure of keeping alive one of the best freeware games available anywhere. The version control files, if they existed, would span more than ten years time, and more than six different primary developers. Without such files, we must rely on simpler methods, such as change logs, source file diffs, and word of mouth. Some of this information is summarized in this file. Please be sure to read the copyright information at the end of this file. Moria version 0.1 (25th March, 1983 Robert Alan Koeneke) ======================================================== - First came VMS Moria by Robert Alan Koeneke (RAK), Student/University of Oklahoma and Jimmey Wayne Todd Jr. (JWT), Student/University of Oklahoma - Details about the history of the various flavors of "moria", the direct ancestor to Angband, can be found elsewhere, and a note from Robert Alan Koeneke is included in this file. Note that "moria" has been ported to a variety of platforms, and has its own newsgroup, and its own fans. Moria version 1.0 (1st May, 1984 Robert Alan Koeneke) ===================================================== - Dungeon Generator (RAK) - Character Generator (RAK & JWT) - Moria Module (RAK) - Miscellaneous (RAK & JWT) Moria version 2.0 (10th July, 1984 Robert Alan Koeneke) ======================================================= - Town Level & Misc (RAK & JWT) Moria version 3.0 (20th November, 1984 Robert Alan Koeneke) =========================================================== - Internal Help & Misc (RAK) Moria version 4.0 (20th January, 1985 Robeet Alan Koeneke) ========================================================== - Source Release Version (RAK) Moria Version 4.8 (Robert Alan Koeneke) ======================================= - The last version developed by the original authors, R.A. Koeneke, etc., at the Univ Oklahoma. This is written in VMS Pascal, and is only available for VAX/VMS systems. All other versions of moria are based on this program. (Sometimes referred to as VMS Moria 4.8.) Umoria version 4.83 (14th May, 1987 James E. Wilson) ==================================================== - This version was developed by Jim Wilson at UC Berkeley. It is written in UNIX/C and is much more portable than the original sources. These sources, at one time or another, were ported to VMS, IBM-PC, Atari ST, Amiga, Macintosh, Apple IIGS, VM/SP, Archimedes, are probably others too. This version fixes very many bugs, spelling errors, and inconsistencies in the original Moria 4.8 sources. This version has no help facility like the original program. It has character rerolling (in the later versions), but few other changes from the original game. (This version has many names, e.g. Umoria 4.87, UNIX Moria 4.87, PC-Moria 4.83, PC-Moria 4.873, Mac Moria 4.87, etc. Just about anything with a .83/.85/.87 in the name is a version of this program.) This is based on the Moria 4.8 sources. UMoria version 4.85 (26th October, 1987 James E. Wilson) ======================================================== UMoria version 4.87 (27th May, 1988 James E. Wilson) ==================================================== UMoria version 5.0 (2nd November, 1989 James E. Wilson) ======================================================= UMoria version 5.2 (9th May, 1990 James E. Wilson) ================================================== - Other contributors: D. G. Kneller - MSDOS Moria port Christopher J. Stuart - recall, options, inventory, and running code Curtis McCauley - Macintosh Moria port Stephen A. Jacobs - Atari ST Moria port William Setzer - object naming code David J. Grabiner - numerous bug reports, and consistency checking Dan Bernstein - UNIX hangup signal fix, many bug fixes and many others... ***************************************************************************** Copyright (c) 1989 James E. Wilson, Robert A. Keoneke This software may be copied and distributed for educational, research, and not for profit purposes provided that this copyright and statement are included in all such copies. ***************************************************************************** Angband version 1.0 (1990 Alex Cutler, Andy Anstrand) ===================================================== - In 1990, Alex Cutler and Andy Astrand, with the help of other students at the University of Warwick, created Angband 1.0, based on the existing code for Umoria 5.2.1. They wanted to expand the game, keeping or even strengthening the grounding in Tolkien lore, while adding more monsters and items, including unique monsters and artifact items, plus activation, pseudo-sensing, level feelings, and special dungeon rooms. Angband version 2.4 (9th May, 1993 Sean Marsh, Geoff Hill, Charles Teague) ========================================================================== - Over time, Sean Marsh, Geoff Hill, Charles Teague, and others, worked on the source, releasing a copy known as "Angband 2.4.frog_knows" at some point, which ran only on Unix systems, but which was ported by various people to various other systems. One of the most significant ports was the "PC Angband 1.4" port, for old DOS machines, which added color and various other significant changes, only some of which ever made it back into the official source. Angband version 2.5 (5th December, 1993 Charles Swiger) ======================================================= - Then Charles Swiger (cs4w+@andrew.cmu.edu) took over, sometime in late 1993, cleaning up the code, fixing a lot of bugs, and bringing together various patches from various people, resulting in several versions of Angband, starting with Angband 2.5.1 (?), and leading up to the release of Angband 2.6.1 (and Angband 2.6.2) in late 1994. Some of the changes during this period were based on suggestions from the "net", and from various related games, including "UMoria 5.5", "PC Angband 1.4", and "FAngband". - This version is savefile compatible with angband 2.4_fk, but I would definitely make backups of your favorite character when testing this. :-) - This includes a number of bug fixes from the net and from UMoria 5.5, PC Angband 1.32 (?), and FAngband. Big thanks are owed to C. Teague and D. Kahane, and undoubtedly many other people as well. Note that this version does not include anything I considered too revolutionary, so I'd like to still call it angband, not "x"angband where "x" is your letter of choice :-).... - new lighting - fixed potion identification - fixed missing attack for 'kicks you' (mystics) - resist fear intrinsic added, though not really used anywhere - monster fear - added autoroller from PC code - CFT's new speed code - mana penalty for armour based on weight (doesn't seem to change much), and gloves of free action/dexterity don't cause the additional mana penalty - print amount of gold stolen - print object stolen - artifacts likely to resist enchantment/disenchantment & other attacks - monsters can pick up things (but not 'X' getting Slay 'X' weapons, etc) - if blind then messages change - serious updating also redo 2ndary effects, this was a pain in the butt - fix up earthquake effects to not destroy artifacts & some other things - the names of the Phial, Star, & Arkenstone change if not identified - fixed up naming code a little, also renamed monster descriptions & fixed miscellaneous spelling errors whenever I ran across them - can check what artifacts have been generated while not wizard for convenience only, if you don't like, don't use.... - add y/n to word of recall spells... - fireball effects now have differing radii - giant pits added - vastly more sanity checking in level generation - more sanity checking in compact_monsters & create/summon monsters... - more uniques have appropriate escorts - destroyed levels added - player ghost/save bug fixed - be a little nicer about out-of-depth monsters on the early levels.... ...and added moria 5.5 'sleeping dragon' code - fixed up the artifacts a little (like being frost brand and not RC, etc) added TR_BLESS_BLADE & TR_ATTACK_SPEED) Ringil is still +1 speed, though. added another resistance to one or two items ala Fangband - Defenders & Slay Evil weapons are BLESS_BLADE, Slay Undead are HOLD_LIFE. - prayer penalty for priests not using blessed edged weapons - cleaned up the display a little - hopefully reset stats correctly when gaining or losing.... - better messages when an item gets destroyed - minimum weight for multiple attack calc reduced from 5 to 3 - prevented free bashing from detecting an invisible monster - added pseudo-probing when you look at the monster... - fixed the "you seem to be missing a book" message - fixed *enlightment* potion - revamped enchantment code - scrolls of aquirement and *aquirement* auto-identify themselves when used - rods immune to lightning - can't create up staircases on town level - add delay timing code so that bolts, etc can be seen - dispelling things in sight prints their names and not it/and the converse - tweaked self knowledge messages for clarity - tweaked death.c and save.c for better messages and prompting Angband version 2.6 (4th September, 1994 Charles Swiger) ======================================================== - Angband 2.6.1 was primarily targetted towards Unix/NeXT machines, and it required the use of the low level "curses" commands for all screen manipulation and keypress interaction. Each release had to be ported from scratch to any new platforms, normally by creating visual display code that acted as a "curses" emulator. One such port was "Macintosh Angband 2.6.1", by Keith Randall, which added support for color, and which formed the basis for the first release of Angband 2.7.0. Angband version 2.7 (1st January, 1995 Ben Harrison) ==================================================== - During the last half of 1994, I (Ben Harrison) had been playing with the Angband source, primarily to investigate the possibility of making some kind of automatic player for Angband, like the old "rogue-o-matic" program for the game "rogue". The difficulty of compiling a version for the Macintosh, and the complexity of the code, prevented this, and so I began cleaning up the code in various ways for my own personal use. - In late 1994, Charles Swiger announced that he was starting a real job and would no longer be able to be the Angband maintainer. This induced some amount of uproar in the Angband community (as represented by the Angband newsgroup), with various people attempting to form "committees" to take over the maintenance of Angband. Since committees have never given us anything but trouble (think "COBOL"), there was very little resistance when, on the first day of 1995, I made my code available, calling it "Angband 2.7.0", and by default, taking over as the new maintainer of Angband. Or, at least, that is how I remember it... - Angband 2.7.0 was a very clean (but very buggy) rewrite that, among other things, allowed extremely simple porting to multiple platforms, starting with Unix and Macintosh, and by the time most of the bugs were cleaned up, in Angband 2.7.2, including X11, and various IBM machines. Angband 2.7.4 was released to the "ftp.cis.ksu.edu" site, and quickly gained acceptance, perhaps helped by the OS2 and Windows and Amiga and Linux ports. Angband 2.7.5 and 2.7.6 added important capabilities such as macros and user pref files, and continued to clean up the source. Angband 2.7.8 was released to the major ftp archives as the first "stable" version in a year or so, with new "help files" and "spoiler files" for the "online help", plus a variety of minor tweaks and some new features. Angband version 2.7.8 (1st January 1997 Ben Harrison) ===================================================== - After Angband 2.7.8 was released, I created a web site to keep track of all the changes made in each version (though a few may have been missed), and acquired the use of a new develoepement ftp server to supplement the official "mirror" server. This web site is now permanently located at the Official Angband Home Page (http://thangorodrim.angband.org/). Unfortunately, the next six versions were numbered Angband 2.7.9v1 to Angband 2.7.9v6, but really each were rather major updates. Angband 2.8.0 and 2.8.1 were released using a more normal version scheme. Angband 2.8.2 and 2.8.3 add a few random features, clean up some code, and provide graphics support and such for a few more platforms. - It is very hard to pin down, along the way from 2.6.2 to 2.7.8, exactly what changes were made, and exactly when they were made. Most releases involved so many changes from the previous release as to make "diff files" not very useful, since often the diff files are as long as the code itself. Most of the changes, with the notable exception of the creation of some of the new "main-xxx.c" files for the various new platforms, and a few other minor exceptions generally noted directly in comments in the source, were written by myself, either spontaneously, or, more commonly, as the result of a suggestion or comment by an Angband player. - The most important modification was a massive "code level cleanup" that made all of my other modifications much simpler and safer. This cleanup was so massive that in many places the code is no longer recognizable, for example, via "diff -r", often because it was rewritten from scratch. - The second most important modification was the design of a generic "z-term.c" package, which allows Angband to be ported to a new machine with as few as 50 lines of code. Angband 2.7.8 thus runs without modification on many machines, including Macintosh, PowerMac, Unix/X11, Unix/Curses, Amiga, Windows, OS2-386, DOS-386, and even DOS-286. - It would be difficult to list all of the changes between Angband 2.6.1 and Angband 2.7.8, because many of them were made in passing during the massive code level cleanup. Many of the changes are invisible to the user, but still provide increased simplicity and efficiency, and decreased code size, or make other more visable changes possible. For example, the new "project()" code that handles all bolts, beams, and balls, the new "update_view()" code that simplifies line of sight computation, or the new "generate()" code that builds new levels in the dungeon. Many changes have been made to increase efficiency, including the new "process_monsters()" and "update_monsters()" functions, and the new "objdes()" and "lite_spot()" routines. The generic "z-term.c" package yielded efficient screen updates, and enabled the efficient use of "color". - But anyway, here are a few things that come to mind, in no particular order, and with very little time or effort. Somehow I managed to put off updating this file to the very end, and it will just have to do for now. - color - macros - keymaps - user pref files - generic feature array, with template file - generic object array, with template file - generic artifact array, with template file - generic ego-item array, with template file - generic monster array, with template fils - generic vault array, with template file - binary image files for the template files - special stat effect tables - a special table of spells - a special table of options - inventory tagging - inventory restrictions - using objects off the floor - various new runtime options - the new "destroy" command - the new "examine" command - the new "note" command - the new "dump screen" command - the new "load screen" command - the new "un-inscribe" command - the new "change visuals" command - the new "change colors" command - the new "change macros" command - the new "save game" command - the new "fire" vs "throw" commands - rearranged equipment slots - a standard bow slot - an extra inventory slot - an underlying keyset - refueling torches - better monster memory - nicer targetting mode - object stacking - the recall window - the choice window - the mirror window - new high score code - special lighting effects - intelligent monsters - new monster flags - text formatting code - much cleaner store code - generic spell projections - scrolls of *identify* - maximize mode - preserve mode - new inscription code - new message recall code - new spell and prayer code - massive cleanup of effects code - new object allocation routines - powerful (but simple) on line help - robust savefile cheat preventers - new official cheating options - new blindness code - new hallucination code - optimized object description code - new keypress input routines - actual object discounts - fractional (assymptotic) speed - postponing updates/redraws - run-time price determination - better wizard commands - the automatic player - launchers of extra shots - elemental ignore flags - new ego-item types - new player ghost creation - no more sliding objects - no more sliding monsters - new object flags - new chest trap code - regularized the artifact code - regularized the ego-item code - new monster abilities - new monster spell attacks - some new store owners - run-time skill computation - player kills vs anscestor kills - better room illumination code - better group monster code - table access through pointers - more redefinable constants - slightly new screen layout - extreme code cleaning - extreme optimizations Angband version 2.7.9v1 (Ben Harrison) ====================================== - I may have missed some other changes, since I just started a complete change log with this version. - Filling a level with too many objects no longer causes nasty visual errors. - Generating a level with "too many" objects or monsters now causes the level to be regenerated, with no "annoying" messages. - The *enchant* weapon and *enchant* armor scrolls were fixed. - The Borg is very different (and for the better). - The "l_list"/"r_list" arrays have been absorbed by "r_info". The "x_list"/"k_list" arrays have been absorbed by "k_info". The "v_list" array is now "a_info", and "e_info" was added, for "ego-item" info. - The "init.c" file is MUCH faster and prettier. - The "main-cur.c" file is gone (ancient curses support), and the "main-cap.c" file is complete (play without "curses"). - All high starting stats affect starting gold negatively. The auto-roller shows max-stats before asking for min-stats. - Multi-hued and Clear monsters look better with "use_graphics". - Several arrays are now malloc'd instead of staticly declared. Several tables have been moved into "init.c" or "birth.c". Several tables have been modified to use 40 (not 80) bytes. - Monster death messages via missiles now resemble by spells. - The "bash monster" code has been removed. - All "commands" that take directions check for "legality" first. All "commands" that take directions will "attack" monsters in way. The "get_a_dir()" spawned "get_aim_dir()" and "get_rep_dir()". - There are new global "running" and "resting" variables. - Granite is harder than quartz is harder than magma. Quartz is actually rather hard, consider a digger. - There are "generic" routines to "lose"/"gain" a stat - Some "Random" checks now use "percentage" code. - Spiking is now the only command that does not ask for an item. - There is now a "generic" option manager, with an option table. You can now specify "forced values" for options in pref files. - A few variables and defines were renamed for consistency. A few more variables have more precise types (bool,byte,s16b). - The "make macro" function is simpler, and also easier to use. - The "message recall" code is hyper-efficient, space-wise anyway. - There is a generic "get_spell()" routine for casting and studying. - Studying spells/prayers takes a turn, and requires a book choice. - Curing of various maladies takes (blind, etc) place right away. - Curse weapon affects only weapons, curse armor only body armor. - There is now a "get_lib_path()" function for each machine. - The "lib/README" and "lib/RECORD" files have been "moved". The "lib/README" file is now required (to verify "lib" folder). The "lib/RECORD" file (high scores) is portable between platforms. - There is now a maximum limit (of 128) on all "depth" values. You cannot descend below level 128 (6400 feet) except as a wizard. - You can customize the macro/message/quark support in "config.h". - The ego-item indexes have been re-arranged, and renamed, etc. There has been some modification of the ego-item "textual names". Each "ego-item" can only apply to a given "equipment slot" now. - The "attack to cause earthquakes" is now an actual blow effect. - You now get a "You die." message when you die, ala "nethack". - A lot of code is now conditional on "SET_UID", which is cleaner. - You get better messages if the "lib/RECORD" file is "locked". Empty and missing files ("load.txt" or "time.txt") are different. A missing "permissions" file defaults to maximal permissions. An empty "permissions" file defaults to "standard" restrictions. - The stores are now a slightly more complex structure. - An explicit "break" is placed in the message recall at birth. - The dungeon generation code has been cleaned up some more. - Support for the "ACORN" Risk OS has been added. - The "Q" key (suicide) has been re-installed for roguelike keyset. - The internal direction "5" is now "target" and "zero" is nothing. - The "inkey()" function now handles ALL keypress input. - The "use_stat" array is now recalculated by "calc_bonuses()". - The "handle_stuff()" function is slightly cleaner/faster. - The "hardcoded arrays" have removed except from "save-old.c". - Genocide (and mass genocide) no longer work on Unique monsters. - The "name" and "text" fields of various arrays have been optimized. You can now specify a "description" for objects, artifacts, ego-items. This description, however, is not currently used for anything. - The "player ghost" code is still a hack and a half. - Sometime soon we should see variable energy actions. - Sometime soon we might see a separate "unique" array. - Some of the "ego-item extensions" are now actual "ego-items". Thus, a "Mace of Kill Evil (+1 to WIS)", and other such items. - All "boosted" ammo is an ego-item, usually "of Wounding". - The "recharge" scode has been "fixed" and now handles stacks. - Turning off haggling results in fixed prices being displayed. Haggling and then turning off haggling also works "correctly". - Picking up an item describes the entire resulting slot. - Low dexterity no longer penalizes disarming ability. - Clearing the screen now induces an actual screen clear. Clearing a portion of the screen now takes (x,y,w,h). - Some unused functions (umask, chmod, etc) were removed. Angband version 2.7.9v2 (Ben Harrison) ====================================== - Throwing an object no longer causes a SEGV error. - Bashing non-doors no longer creates open doors. - The "destroy traps/doors" effects now works. - The Macintosh "save bug" was squashed by using "absolute" path names. - The "great" objects (ego-items and artifacts) are now more common. - Several of the "main-xxx.c", "Makefile.xxx", and "pref-xxx.prf" files were updated. - The "main-ibm.c" file absorbed the "main-wat.c" and "main-286.c" files, and uses the new "TERM_XTRA_FROSH" command for efficiency. - Some "typos" in various files were fixed. - The cursor is no longer misplaced in the "choose_sex()" function. - Monsters can no longer be summoned, created, or teleported, on top of a glyph of warding. - The priest prayer "Confuse Creature" was renamed "Scare Monster", and the mage spell "Confusion" was renamed "Confuse Monster". - The mage spells of the "Resistance" variety are no longer worth as much experience. - The priest prayers of the "healing" variety now heal more than the corresponding potions (Nd10 vs Nd8). - Several hard-coded numerical constants were replaced by symbolic constants (player race, player class, etc). - Various functions were optimized. - The "note_spot()" function is used more often. - When the area around the player is "forgotten", for example, by earthquake, darkness, or sunset, and the memorize torch lit grids option is set, the grids near the player are now re-memorized. - Some "color" glitches in "main-gcu.c" were fixed. - Some of the on-line help files and such were updated. - The "preserve" mode now only preserves "unknown" artifacts. Angband version 2.7.9v3 (January 24th, 1996 Ben Harrison) ========================================================= - The "main-ibm.c" file had to be rewritten several more times. It now handles all known environments correctly. It was given a new default color scheme, and a method to allow the user to choose among several pre-defined color sets. The keypress code was cleaned up once and for all, and the "main-win.c" file was changed to use the same macro triggers, and a new "pref-ibm.prf" file was created using the new triggers. - A pre-compiled version using "main-ibm.c" for DOS-286 is now available. - The "main-x11.c" and "main-xaw.c" files now support the "mirror" window, and correctly handle the "TERM_XTRA_CLEAR" command. - Some minor bugs in "main-cap.c" and "main-gcu.c" were fixed. - The "repeat count" is now used for various things, such as the "quantity" of the "drop" or "destroy" command, if it is not being used for anything else. - The "show reduced map" command was optimized a lot. - There is a new "recall most recent message" command ("ctrl-O"). - The "notice_stuff()" function was broken up into several generic "set_xxx()" functions, to handle "changes" in various "properties" of the player, such as "blindness" or "paralysis". This now only made the game faster, but also provided better "world semantics", and fixed some "bugs" involving "blindness", "see invisible", etc. - One of the shop-keepers had an incorrect tolerance of zero. - Importing pre-2.7.9 no longer causes "Calris" to become re-cursed, as long as the "uncursed" inscription is still present. - When an object is picked up (or a trap is disarmed) in a dark hallway or room, a "marked" floor grid is no longer left behind. - The "note_spot()" function is now called when an object is dropped into a grid (by the player or monsters). Also, neither "note_spot()" nor "lite_spot()" are called during dungeon level generation. - Objects and terrain features now have separate "memorized" flags to prevent visual glitches when memorized objects are picked up by the player or by monsters. This had the side effect that "detected" dungeon objects converted from pre-2.7.9v3 savefiles will lose their "detection" status, leaving behind a "known" floor grid. - The "earthquake" spell now correctly creates "wall" grids. - The "monster health bar" is now updated after a monster casts a "heal" spell on itself, drains mana/charges to heal self, or is hit by a "heal monster" attack. - The "staff of darkness" now attempts to blind the player. - Aiming a wand of wonder on the ground at itself can no longer destroy the wand, since this could have "messy" results. - Several uses of the "saving throw" now have better "semantics" and/or "messages". - The "get_item()" function no longer has any visual glitches. - The "get_spell()" function now correctly uses the "mirror" window. - The player's total gold is now displayed in the Home. - The "Giant clear centipeed" is now "clear". The "Giant purple worm" now resists poison. The "Umber Hulk" is now a light umber "X" monster. The "clear" monsters are now "white" in the recall window. - The "color scheme" of several monsters has been changed. See the new "r_info.txt" file for more information. Most of the changes involve new color schemes for "elemental" monsters (dragons, hounds, etc) and "people" monsters (mages, warriors, etc). - The object distribution was cleaned up slightly. The artifact damage sides were brought in line with the underlying object damage sides. - A nice generic quick-sort function now allows all of the sorting to be done by one optimized function, and allows many more things to be sorted at low cost. - The character description screen was cleaned up a bit, making room for on-screen display of blows/round and shots/round. - The "options", "pref", and "macro" commands were made into full screen commands starting at line two, and were cleaned up a lot. - A new command was added to directly specify a "user pref command", as if it came from a "user pref file". - The Borg was given a few patches, and was optimized some more. Also, it was taught to consider all possible equipment combinations, and to use the home to "stockpile" certain items. - The glyph of protection now uses the "semi-colon" symbol. - Several terrain features got new colors, and the special lighting effects now only affect floor grids. The result is much faster, and still rather interesting to watch. - Some patches for EM/ESA and Amiga and DOS-286 were added. - More optimizations were performed (visual display of the map grids, full screen map, running, the Borg, the player command loop, message memorization, update monster). - Several messages about traps now include the name of the trap. Angband version 2.7.9v4 (Ben Harrison) ====================================== - Running no longer stops next to secret doors (early release bug). - Wimpy monsters no longer induce cuts/stuns (early release bug). - The "disturb_other" option now induces disturbance when the player status changes. This includes various subtle changes in "food", "cuts" and "stuns", that do not induce actual messages. - The "tombstone" picture is now loaded from "lib/file/dead.txt". - The "character dump" code has been cleaned up and optimized. - The "list artifacts" and "list uniques" commands now use a generic "display file" method using a temporary file. - The "list artifacts" command can now be used in the dungeon, since it does not show the unknown artifacts on the dungeon floor, or in the player inventory. - You can now put "tab" characters in "help" files and other text files used by Angband. They are expanded using eight character tab stops. - There are nice new generic "my_fgets()" and "my_fputs()" functions. - Cheating death now restores your hitpoints and spellpoints, and your food, and such, and "recalls" you to the town. - The "main-xaw.c" file now uses the "GRAPHIC_xxx" defines, and uses the color set from "main-x11.c" which is apparently "better". - The "handle_stuff()" routine, and the functions which induce it, were cleaned up and verified. - The player can now directly drop/sell "equipment" items in stores. - The player inventory is correctly combined and reordered in stores, and the "do_cmd_redraw()" function works in almost all situations. - The "character_icky" flag is now used only to indicate that the "dungeon" is not currently displayed in the main window. Most of the special screens were modified to allow the use of "msg_print()". - The character display is no longer shown when loading a saved game, for increased efficiency and code simplification. - The "notice_stuff()" function has been completely removed, and broken out into various "set_xxx()" functions, and the functions that update the bonuses, mana, and spells. This should increase efficiency and enforce more correct semantics for blindness and related things. - Each store has been given an additional two "base items" from which to choose its "stock", making certain items more common (low level books, lanterns/oil, boots/armor, scrolls of identify/recall, and arrows/bolts), and the temple sells more potions of restore life levels and no potions of restore wisdom. - The "halberds" now do "3d5" damage not "3d4", some of the artifacts have been given slightly different rarities or minimum levels, the "electric" and "acid" brands now do "x3" damage not "x5" or "x2", and a few monsters have been given new abilities. - The "fiddle" flag is now used only to show extra debugging messages. - There are new "main-win.c", "main-ibm.c", "main-ami.c", and "main-acn.c" files. - There are some new spoiler files, and an "info.tar.gz" spoiler archive. Many (but not all) of the files have been updated for Angband 2.7.9v4. - Items can no longer provide "immunity" to poison, only resistance, this affected only a single artifact, and simplified some code. - The "food" code needed some work. There is now a generic "set_food()" function, and much simpler "digestion" code. The result is faster, has fewer possible bugs, and is much more sensitive to player speed. - The eyes, icky things, jellies, oozes, molds, and mushrooms are no longer "animals". - The "animal nest" code now uses the "animal" flag to choose contents. - Some more attr/char changes were made to the monster list, for example, the "snakes" are now a special race using the "J" symbol. - Some of the global arrays were made non-dynamic for efficiency. - Monster pits/nests now include all "acceptable" non-unique monsters, including invisible, teleporting, and multiplying, monsters. - Repeated commands are now handled by the command itself. The "repeat" count is not displayed until the command is actually repeating. - The player can no longer target non-projectable monsters, except via the "target a location" command. This allows the use of macros which assume that the "nearest" target is actually projectable. - The player can no longer "accidentally" run into a wall, running now stops next to embedded treasure and rubble, and the running code has been optimized some more. - The "attr/char" info from the "I" lines in the "x_info.txt" files have been split out into a separate "G" line to fix some "sscanf()" problems. - The user can now modify the attr/char of terrain feature zero (used for "unseen" grids), object zero (used eventually for "stacks" of items), and monster zero (used for the "player"). - Mushrooms of restore strength now cost 350 gold. - There are now new command line arguments to activate "graphics" mode (-g) and "sound" mode (-v), when supported. - The "auto-scum" code now accepts any non-boring feeling on the first four dungeon levels. - The chance of out-of-depth monsters has been doubled, in such a way that it is "possible" to get monsters which are up to 10 levels out of depth. - Out of depth monsters now contribute more to the level rating. - Autorolling is now "aborted" after a million rounds, and uses the same "semi-efficient" method on all machines. - Several of the "stat tables" have been adjusted slightly, the main change is that the player should get multiple blows more easily. - The "main-ibm.c" file now uses new "true color palette code", and allows the use of the new "color specification" methods. - Faulty use of the "GetAppDir()" function in the Macintosh version may have been "fixed". - Invisible traps can be given different attr/char codes from floors, but the attr/char codes for invisible traps are never used. - The "trapper" and "lurker" monsters are now "translucent". - The "main-x11.c" file now handles the "mirror" window correctly. - Cursed shovels can no longer have a positive "pval" bonus. - There is a new "interact with colors" command which allows the user to modify the internal representations of various colors, on systems which support such modification, such as the Macintosh. - The special "Term_user(0)" command is now be reserved for "weird" stuff like changing graphics/sound mode, or executing "shell" commands. - The "command.txt" file has been updated to correctly describe the new "Interact with macros", "Interact with visuals", "Interact with colors", "Interact with options", and "Interact with the system" commands. - Most of the commands available in the dungeon are now available in stores, though the "keymaps" are ignored. - Various things are now updated more often in stores. - The "Term_pict()" function, and the related hooks, now take an attr/char pair instead of a picture index for optimal usage. - Trap doors are no longer improperly created at dungeon level 99. - The create staircase spell now "memorizes" the new stairs. - Angband now autoloads the "user.prf" and "user-xxx.prf" user pref files, plus one of "font-xxx.prf" or "graf-xxx.prf" as appropriate. - The "pref-xaw.prf" file now simply includes "pref-x11.prf". - A typo in the "pref-ibm.prf" file was fixed, and part of the file was split off a "font-ibm.prf" file. The "pref-win.prf" file now simply includes "pref-ibm.prf". - The Windows version has a new "graf-win.prf" file that "correctly" encodes the various bitmap entries using the new row/col metaphor, plus a "font-win.prf" file with the "non-bitmap" attr/char mappings. - Various "graf-xxx.prf" files were fixed to handle the four new items, and/or the change from "seedy looking human" to "novice paladin". - The "Ettin" monster was restored to full hitpoints. - The "dehex()" function was fixed. - The "look" / "target" commands now start at the "closest" location. - The "message recall" command now allows the use of the "/" key for a primitive "search" ability. Angband version 2.7.9v5 (Ben Harrison) ====================================== - Many of the source files were reorganized for various reasons. - Several "Makefile.xxx" files were updated for the new files. - Some changes were made to the "term.c" package to optimize stuff, and to allow the use of the new "Term_pict()" hook in various situations. Most "main-xxx.c" files needed some minor changes, look for "TERM_XTRA_BEVIS", "TERM_XTRA_INVIS", and "scan_events". - The "teleport player" spells now act instantaneously. - You are now correctly notified when you can learn new spells. - Changing equipment now correctly updates the lite radius. - The running code has been optimized some more, and now stops next to rubble, and can now take a "maximal run distance" argument. - Various options have been removed, modified, or moved around. - The "disturb" options now work "better" with "telepathy". - The "show uniques" and "show artifacts" no longer crash if the "tmpnam()" function fails. In fact, there is a new "path_temp()" function to acquire a temporary file name, since the standard one seems to fail on many machines. Also, these commands now use the same interface as the "on line help" commands. - The "request_command()" function is now used in stores, allowing the "keyset" and "command macro" code to work in stores. Using "p" and "s" to "buy" and "sell" in stores is handled by a hack. - Creating a new character using a reduced savefile will not clear the "aware" flags on objects. In "player_wipe()" in "birth.c", change "if (k_ptr->has_flavor) k_ptr->aware = FALSE" into "k_ptr->aware = FALSE". - Every call to "get_mon_num()" and "get_obj_num()" should check for "failure" (a return value of zero), since otherwise, weird things may happen, including the creation of bizarre "player" monsters, and division by zero errors if you "look" at it. These checks must be done AFTER any "global restrictions" are reset. - The Borg no longer has problems "swapping" his rings. - Using "angband -n" now correctly loads the old savefile. - The Cloaks of Aman, Cloaks of Stealth, and Boots of Quiet, should all say "(+X to stealth)" not just "(+X)". - The "user abort" code in "borg-ben.c" needs a little work. - The "main-win.c" file (and support files) are almost ready. - The "main-ami.c" file (and support files) are almost ready. Angband version 2.7.9v6 (13th April, 1996 Ben Harrison) ======================================================= - The savefile loading process was repaired and improved. It is now possible to correctly load pre-2.7.0 savefiles, including old "MacAngband 1.0" savefiles, old "MacAngband 2.0.3" savefiles, old "PC Angband 1.4" savefiles. - The Borg has been updated, and is no longer included with the official source archive, but can now be found in "/angband/Borg/", along with various other materials related to the Borg. There is a new "Borg" section on the Official Angband Home Page. - The "debug" commands have been separated from "wizard mode", with their own "savefile marker" flag, and independant verification of usage, similar to the method used for the "borg" commands. - The "-w" option will now allow you to correctly restore a dead character, using the "cheat death" code. The "cheat death" code now kicks in after the player has "died", and cancels the "death". - The "update_view()" and "update_lite()" functions were optimized (again) since "update_view()" is a major bottleneck when resting. - The class titles were restored, with one title per five levels. - The source files were re-formatted, using four space indentation per block, and aligned stand-alone curly braces. A few of the "main-xxx.c" files were ignored because they were beyond repair. - The "mirror" window can now be used to show debugging messages (currently used only for the Borg). - The "mirror" window can now be used to show an overhead view of the map (normally updated only when the map sector changes). - The "windows" now work correctly with the Windows version. Note that the scrolls bars were removed, and all windows are resizable, up to the maximum size of 80x24. - The "lib" folder now "works" with older Macintosh computers. - Memory wiping now clears inscriptions generated by "sensing". - Reading unknown scrolls of identify is no longer dangerous, and using unaware wands/staffs/etc now works correctly with the choice window. - The "handle_stuff()" function was broken into three sub-functions, "notice_stuff()", "update_stuff()", and "redraw_stuff()", each using a separate bit flag set, for various reasons. The "notice_stuff()" function now handles everything which can only be done between player turns, including pack rearrangement. - The colors for "main-ibm.c" and "main-win.c" were changed slightly to match the "official" colors (red, light red, and violet), and "main-win.c" was changed to use the new "color_table" array. The "Term_user()" hook in "main-win.c" is now used to allow the user to force complex color or palette abilities. - All messages are now split if they exceed 72 characters. - The "msg_print()" and "get_xxx()" functions have been changed, primarily to simplify the "msg_print()" function. The top line of the screen should now, in general, be used only for "messages", temporary queries, and certain special full screen interactions. - Player ghosts are no longer created, nor loaded from savefiles. They will now be restored until the player ghost code has been completely rewritten. - The refueling code was repaired and improved. - Item inscriptions now resist destruction by stacking. - Changing the "rogue-like commands" option works "better". - Some more options were removed or modified slightly. - Artifacts are marked "(charging)" when they are charging. - The "DELAY_R_INFO_TEXT" compilation option is now functional, and allows the "monster race descriptions" to be read from disk as needed, instead of keeping them in memory and using 60K. - The "verification" code was moved from "init_file_paths()" to "show_news()", allowing system-specific path modification. Angband version 2.8.0 (12th October, 1996 Ben Harrison) ======================================================= - Use "Rand_div()" instead of the faster but less random "Rand_mod()", and save the RNG state in the savefile. - New methods are needed for loading/saving savefiles with the new terrain feature flags, and to save normal options and window options so that future option changes will not cause trouble. - Messages are now memorized as complete strings. The message recall window shows one message per line, using the '4' and '6' keys to "slide" the viewing area left and right to view long messages. - The "look" command now starts on the player. - Monsters are now healed when they drain charges from the pack. - The "options" interface was cleaned up somewhat. - The "z-term.c" function was optimized and verified some more. - Object destruction now uses correct pluralization rules. - The "overhead map window" is redrawn whenever the player moves. - Stupid monsters now rarely wake up when illuminated. - Pack combination now performs its own "reorganization", avoiding bizarre "rearrangement" messages. - There is a new function to combine "paths" with "files", which allows the use of "absolute filenames" and "tilde filenames" in certain situations, such as the "character dump". - Using a "count" with the "destroy" command will bypass "verification" unless the "other_query_flag" option is set. - The "wield" and "takeoff" commands now use the "w" and "t" keys (like the original keyset) for the underlying commands, and the "[" and "]" keys are now unused. The "_" key can now be used to enter a store, and walking onto a store generates this "keypress". The "ctrl-e" command was replaced by the "ctrl-i" (tab) command, to "flip" any "windows" displaying the equipment or inventory. - There are some new "sub-window flags" which induce various new displays in sub-windows, including "recall old messages" and "display complete spell list". - The various "windows" are now handled in a more generic manner, using a set of 8 pointers to "term" structures, and, for each, a set of "usage" flags, accessable via a new "options" screen, which, in combination with the new "p_ptr->window" field, allows the game to determine what should be displayed in each window. - All of the source files were "indented" and cleaned up a bit. - The "main-mac.c" file was cleaned up quite a bit, and, among other things, now allows "monster recall" to "wrap" at the window edges. - The "resurrection" code now works, and "cheating death" now marks your social class as zero (and counts deaths in your age), as well as marking your savefile as having cheated death, which disables placement on the high-score list. - There is now a generalized "c_roff()" command, which provides colored, word-wrapping, multi-line output, and which is now used for the monster recall code, which may thus be "colored" at some point. - An object inscription of the form "^x" will induce verification of the command "x" while the object is being worn. Inscribing "^;" on a shovel will thus prevent attacking (or walking) with the shovel, while inscribing "^+" on your weapon will prevent digging with it. - Several options were added, removed, modified, combined, etc, and the "option.txt" helpfile was updated accordingly, so read it. - New options allow the "look" command to see everything on the current panel, and for the "list" commands to "wrap" at the edges of the list, and for new "special lighting effects", and for new "optimizations" of various things, and for new "disturbance" criteria, etc. - The "map_info()" function was optimized, and the "special lighting effects" were completely rewritten. - Shop-keeper rotation is no longer optional, and is four times as common as before. Buying the last item from a shop now induces a possible shop-keeper rotation, plus the creation of new stock. - The "feature types" can now take an index of another feature type which they should "mimic", allowing the generic "conversion" of secret doors into walls, all locked/jammed doors into closed doors, all walls into the same wall, and hidden treasure into normal veins. Floors and invisible traps often bypass this field for efficiency. - The general store now buys and sells basic ammunition. - New object/monster allocation table routines have been written, which optimize various things, including the generation of pits and nests, and the summon/escort code. Monster nests now contain up to 64 different types of monsters. - Thrown objects (and fired missiles) now rarely "disappear" unless they are thrown at a monster (intentionally or accidentally), or if they attempt to land in a crowded area. - The "inkey()" code was cleaned up somewhat. The "default action" code in the X11 keypress code needs to be tested. - The hard-coded "feature" codes were replaced with constants, plus a few hard-coded "offsets" from the "shop"/"trap"/"door" constants. - Several fields and variables and such were renamed, primarily to migrate from "inven_type *i_ptr" to "object_type *o_ptr", and from "fdat" and "ftyp" to "info" and "feat" for cave grids. - The "delay()" function has been migrated into another "Term_xtra()" hook, using the "TERM_XTRA_DELAY" action. All standard "main-xxx.c" files were changed to use the new method. The "delay_factor" is now "cubed" when used to give a better "range" of delay values, ranging from a single millisecond to almost a full second. - Chests are now quite a bit "better" than they used to be. - The windows no longer continuously "shrink" in the Windows version, the pixmaps are not "garbled", and double-clicking savefiles works. - Ancient "Archimedes Angband 1.2" savefiles can now be parsed. - Dungeon generation now uses "stack" memory instead of heap memory, since the Windows version appeared to be fragmenting memory for no apparent reason. - Artifacts are no longer lost due to "aborted" level generation. - The "showing" ('=') action (which displays matching lines in yellow), and the "finding" ('/') action (which changes the current line), are now available in the online help, listing uniques/artifacts, and the message recall, and both actions remember "previous" settings. - Starting a new character should reset the "cheat" options. - The "main-gcu.c" file needs to play games with "bool" to prevent conflicts with various versions of "curses". - The "polymorph" code was slightly broken. - Certain versions (DOS, Windows, etc, but not Unix or Macintosh) require the "O_BINARY" flag in the "fd_make()" and "fd_open()" routines in "util.c" or the "lib/data/*.raw" files get broken. Some compilers do not support the "O_CREAT" flag. (?) Angband version 2.8.1 (3rd April, 1997 Ben Harrison) ==================================================== - The "use_sound" and "use_graphics" flags were restored, but must be set by "main-xxx.c" files which support them based on the "arg_sound" and "arg_graphics" flags. - Some more sound support has been added. - The "player sex" concept was genericized into a table. - Monster death and chest death now use "drop_near()". - The "drop_near()" function was changed to use a "better" method for determining where an object should fall, and it seems to work well with the new "stacking" code. The radius of the drop zone was increased. - Various "resistance tables" have been added as sub-screens of the "character description" screen. - The race/class restrictions have been relaxed, and "illegal" combinations are labelled "for advanced players only". - Some onscreen instructions have been added to "birth.c" for display during initial player creation. - The "z-term.c" package has been optimized (again), causing some changes. The "Term->pict_hook" function now takes a length, an array of attrs and an array of chars, instead of a single attr and char. The "Term->text_hook" function still takes a "string", but it is no longer "null-terminated". The "cursor" is now erased and redrawn on every non-trivial refresh. Trivial refresh calls now have no effect. - The old "use_sound" and "use_graphics" flags have been changed to "arg_sound" and "arg_graphics", and now have the semantics that the user has requested the use of sound or graphics. These flags are ignored by the game itself, and now the appropriate "main-xxx.c" file must interpret these flags "correctly" (or ignore them). - Macintosh Angband now supports basic "graphics" (using the same pixmap array as Amiga Angband), allows each window to be scaled to any desired size, allows the use of non-mono-spaced fonts, and supports simple "sounds". - The "main-x11.c" and "main-xaw.c" files have been fixed. - Whenever the "r" key may be used to activate on-screen monster recall, it may also be used to disable this on-screen recall. - Searching will no longer find "traps" on non-chest objects. - Cheating death no longer induces screen weirdness. - Leaving a store no longer induces screen weirdness. - Pack overflow is now handled at the start of the players turn, not the end, which has various subtle effects. - A new monster flag was introduced to force "nasty" monsters to refrain from using spell attacks until the player has had a chance to react to their birth. - A new monster flag was introduced to prevent monsters from being processed during the turn of their birth. This allowed the removal of the "m_fast" and "o_fast" arrays, and some code. - The "other_query" option is now used exclusively to activate verification of "use object on ground" commands, which can be used to select objects from the middle of object stacks. The default behavior is to accept the top-most acceptable object. - Stacks of objects on the dungeon floor, and monsters carrying objects, are now stored in the savefile, but the "order" of the objects in both stacks in not currently maintained. - Monsters can now "carry" objects if a special "testing" option is activated. Looking at a monster described all of objects being carried by the monster. When a monster dies, all of the objects being carried are dropped in the monster grid before the standard monster drop is calculated. When a monster is deleted, all objects being carried are deleted as well. Any objects picked up or stolen by the monster will be carried. - Objects can now "stack" on the ground if a special "testing" option is activated. Looking at a stack of objects describes each object in turn. The map displays the picture of the uppermost "memorized" object in each grid, if any. - Objects may now "combine" on the ground with similar objects when they are dropped into the same grid. - Unidentified missiles will no longer stack with identified missiles, even if they are identical. - Objects are no longer restricted to a single rating bonus. - Inscriptions on store items are removed when purchased. - Cleaned up the messages involved in taking off equipment. - Cleaned up the use of "temporary" objects. - You can no longer drop equipped cursed items in your home. - Running may work better around closed doors, but more investigation is needed. - The "you are confused" message is now used whenever the player specifies a direction but gets a different one. - The detection spells now "detect" terrain/objects/monsters even if they are already "visible" or "detected", and give a message about successful detection. The "door" detection spells now detect all doors, not just secret doors. The monster detection spells now make every detected monster "visible" for one player turn. - Using the "finder" string now activates the "shower" string, and the "shower" string now hilites only the matching portion of each line, if any. - A problem with the interactive creation of new macros using "main-x11.c" or "main-xaw.c" has been repaired. - The player's current mana/hitpoints are no longer adjusted when the maximum mana/hitpoints change, except to enforce maximum limits. Among other things, gaining a level no longer raises the player's current mana/hitpoints immediately. This prevents some bizarre implications of the old adjustment semantics. - The "target" and "look" commands have been combined. Both allow the user to "examine" nearby "interesting" grids (or all grids), setting a target if desired. The "target" command requires grids to contain "targetable" monsters to be considered interesting, and uses the "space" key to jump immediately to the next "interesting" grid, instead of furthur examining the grid containing the monster. The "return" key will always step through the description (forever), and the "+" key will always jump to the next "interesting" grid. - The monster recall window is now maintained in a more intelligent manner. Whenever the player attacks a single monster, that monster race will be auto-recalled. Note that player spells which affect multiple monsters, or which work by affecting all monsters in line of sight (even if only a single monster is thus affected), will not trigger auto-recall. The "monster recall window" is now updated whenever "interesting" information (flags, attacks, spells) is learned by the player while the monsters are being processed. - Scrolls/Staffs of darkness now blind before bringing darkness. - The messages about remaining spells/prayers to be learned are now more detailed and correctly pluralized. - It is no longer possible to accidentally accept a shop-keepers initial (non-final) offer by hitting return. - The player now gets experience from killing monsters based on his "maximum" player level, not the "current" player level. - All artifact activations now include a brief visual description. - Inability to create a glyph of warding is now mentioned. - Scrolls of identify/recharging/enchantment no longer describe themselves when they are read. - The "stat display" now indicates which stats cannot be improved by quaffing stat potions, using a "bang" instead of a "colon". - There is an optional "pref-gcu.prf" file which allows basic use of the standard VT100 keypad keys and arrow keys. - The basic "tunnel" command is now selected using "T" (or "^T" in the roguelike command set) if needed. The standard "open" and "disarm" commands must be used on chests, and the standard "bash" command may be used on locked doors. - The "+" keypress (as well as the various "control" combinations such as control-direction or control-keypad, which map to the "+" keypress) is now a new "alter" command, which will take a direction, and perform the "obvious" command that direction, that is, attack monsters, tunnel into walls (or veins or rubble), disarm traps, bash jammed doors, open closed (or locked) doors. This command always takes a full turn, and will have no effect if there is no "obvious" command, in particular, this command will only induce movement when used to bash jammed doors or disarm traps, so it can be used to attack adjacent grids without moving into those grids. - Opening doors now takes energy. - The sub-window processing has been optimized, especially for the cases when they are not being actively used. - The "display objects" window option is now used to allow an object kind to be "recalled" in a window. Currently, this is used to provide the old "display spell choices" functionality, using the same display code as the "browse" command, with the browse, study, cast, and pray commands auto-tracking whichever book is used with the command. - Wearing unidentified artifacts no longer allows artifact identity detection via the "list artifacts" command. - Direction "5" is no longer accepted for commands such as "run" or "close", so running in place is no longer a fatal error, and in fact, "5" acts like "escape" for these commands. - Creating a character dump no longer messes up the screen. - The "shower" hiliting in "files.c" has been repaired. - Digestion can no longer be negative or non-existant. - Changing the terrain feature of a grid has been made into a general function, catching some weirdness involving things like the memorization of new glyphs of warding in dark rooms. - Several spoiler files have been updated. New directories have been created at the ftp site for help files and spoiler files. Angband version 2.8.2 (1st September, 1997 Ben Harrison) ======================================================== - 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. Angband version 2.8.3 (9th February, 1998 Ben Harrison) ======================================================= - A new archive was uploaded that fixes the problems contained in the first (useless) upload, which is not (hopefully) available anywhere. 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. - 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, along with "Makefile.emx" and "pref-emx.prf", which not only allows the use of standard macros ala "main-ibm.prf", but which supports the full set of eight windows. - Some minor random cleanups were done. - At this point, the "defective" archive was uploaded, but was only available for two days. It contained all the bugs mentioned above. - 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. Angband version 2.8.5 BETA (5th September, 1999 Ben Harrison) ============================================================= - Incorporated various patches. - Cleaned up various things. - Defined and used some useful constants (stores, stats, options, etc). - Added four new "blocks" of options ("birth", "cheat", "adult", "score"), where "birth" options can appear in user pref files, "birth" and "cheat" options can be changed via "Interact with options", "adult" options are copied from corresponding "birth" options at birth, and "score" options are set whenever the corresponding "cheat" options are set. - Moved the "maximize", "preserve", and "auto_roller" birth-time questions into the "birth"/"adult" options, and reduced the old birth-time questions to just the sex/race/class questions, and added a new question to allow the use of the "Interact with options" command before character birth. - The player may now select a random sex/race/class. - Changed the old "maximize"/"preserve" flags into "adult" options. - Added "point_based" birth option to enable point based character creation. - Added "ironman" birth option to disable the use of stairs up and recall. - Added "no_stores" birth option to disable the use of stores and the home. - Added "no_artifacts" birth option to disable the creation of artifacts. - Added "rand_artifacts" birth option to enable the Greg Wooledge random artifacts patch (with a few minor changes), using "init3.c" to hold the majority of the new code. You must enable a compilation option to get support for this option. Characters using this option must continue to use the same version of the random artifacts code forever. - Added "auto_more" option to disable the display of messages to the main window. This option should only be used when another window is being used to display messages. This option will cause message display used for "prompting" purposes, such as that used during savefile loading, to work incorrectly. - Added "smart_monsters" option to activate new monster intelligence code. - Added "smart_packs" option to activate new pack monster intelligence code. - Added "easy_open" option to make the open/disarm/close commands assume the "obvious" direction if one exists. - Added "easy_alter" option to open doors and disarm traps on movement. - Added "easy_floor" option to make interaction with floor objects cleaner. - Added "show_piles" option to display piles of objects using a special attr/char. - Added "center_player" option to scroll the map to center the player whenever possible, along with an updated "Map sector" prompt to show the fractional map sector information. - Added "run_avoid_center" option to disable "center_player" when running. - Added "scroll_target" option to allow targetting of grids not on the current panel. - Added "load"/"append" commands to "interact with options" command. - Unified "load user pref file" sub-commands. - The player "basename" now defaults to "PLAYER" when appropriate, allowing its use during player birth for user pref file loading prompts. - Removed the old "testing_stack" and "testing_carry" options (making them standard features), so now multiple objects can stack in one grid, and dying monsters will drop objects they have picked up. - Use the new "score" options instead of the "noscore" cheater hack. Now the "noscore" variable is used only for marking the use of wizard mode, debug commands, borg commands, and cheating death. - Display sex/race/class as it is chosen during birth. - Objects held by monsters are no longer lost during savefile loading. - Changed "Acquire" and "Access" in most comments to "Get". - Made VERSION_EXTRA slightly more "official". - The object "discount" field has been overloaded to contain information about "special inscriptions" (from object sensing), by using values above 100 for inscriptions and below 100 for discounts. - Changed "50% off" discount plus an "on sale" inscription (when shopkeepers retire) to a simple "40% off" discount. - Added a new "10% off" discount. - Include both "normal" inscriptions and "special" inscriptions in object descriptions, if room is available. - Minor tweaks to "main-gcu.c", including better color support, and support for multiple "windows". - Minor tweaks to "main-emx.c". - Moved rings of poison resistance to dungeon level 40 (was 60). - Minor improvements to the refueling code. - Ensure generation of at least one of each quest monster on quest levels. - Denial of "^g" verification in stores no longer browses to the next page of objects. - Earthquake can no longer leave living monsters embedded in walls. - It is no longer true that "resist chaos" implies "resist confusion". However, all base objects and artifacts which provide "resist chaos" explicitly provide "resist confusion" as well. - Detect doors now detects locked and jammed doors. - The player's speed can no longer run off either end of extract_energy. - All adverse monster conditions are shown on the health bar, and the monster health bar now changes when monster conditions change. - The 'c' debug command permits the entire third column of entries to be created. - Entry into debug mode is only confirmed once per character, not once per session. - The "update_flow()" function uses FLOW_MAX, instead of TEMP_MAX. - The player can now interrupt the special rest commands. - The "chest_traps" array is no longer accessed with a negative index. - The "earthquake()" function now uses ddd_ddx/ddd_ddy instead of ddx/ddy. - The "cheat_know" option now saves the monster into a correctly sized chunk of memory. - The "say_comment_6()" function can no longer run off the end of its array. - The 'I' command displays multiple pages of info correctly. - The character display now indicates sustained bonuses and immunities. - Keymaps are dumped in the same format as they are read. - Random teleport can no longer interrupt entering a store. - The "ALLOW_TERROR" option is now disabled by the "ANGBAND_LITE" option. - The debug command 'e' now allows current and maximum experience to be altered. - Secret doors the player reveals are sometimes locked or jammed. - The spell lists now use color, and distinguishes between spells which have not yet been learned, and which cannot yet be learned. - Destroyed levels are now less common. - Arrows now break less often. - Rods now sort based on recharge time. Wands/Staffs now sort based on charges. Lites now sort based on fuel. - The "object_desc()" function has been cleaned up, and a "safer" version can now be selected via a compilation option. - The "summon_kin" monster flag has been added, and given to some monsters, to allow the summoning of monsters with the same symbol as the caster. - The "summon_hi_demon" monster flag has been added, and given to some monsters, to allow the summoning of powerful daemons. - A new command ("^V") has been added to repeat the last command, including the identity of spells and objects, quantities, and directions. - Targetting code permits '.' to be used to select the target. - The "word of recall" code has been centralized. - On systems where Angband is running set-[ug]id, players may put a ".angband.prf" file in their home directory and have it read. This probably violates some security compilation options. Angband version 2.9.0 (27th March, 2000 Robert Ruehlmann) ========================================================= - After the release of Angband 2.8.3 Ben's free time was more and more occupied by his work. He released a beta version of Angband 2.8.5, introducing many new features, but couldn't give as much attention to maintaining the game as he wanted to. So in March 2000, I (Robert Ruehlmann) offered to take over Angband and started to fix the remaining bugs in the Angband 2.8.5 beta. The resulting version has now been released as Angband 2.9.0. The Official Angband Home Page ("http://thangorodrim.angband.org/") serves not only as the most up to date description of Angband, but also lists changes made between versions, and changes planned for upcoming versions, and lists various email addresses and web sites related to Angband. - Chaos resistance no longer automatically grants confusion resistance. All normal items and standard artifacts with chaos resistance now provide confusion resistance as well. - Two-handed swords appear earlier now. - Added an optional point-based character generator. - Added randomized character generation. - Moved the questions about the autoroller, maximize, and preserve mode to a new option screen. - Added an option to display piles of items with a special symbol - Allowed secret doors to be looked or stuck - Items with an '=g' inscription will be automatically picked up - Added options to automatically select the direction when opening doors/chests and disarming traps. - Added an option to display piles of items on the floor as lists. - Arrows break less often now. - Refilling a latern from another latern leaves an empty latern now. Empty laterns are no longer displayed as choice for refilling. - Added random artifacts. Note that importing characters created with older versions of the random artifacts generator is not supported. - Scrolling while targetting. - Improved monster AI. - Increased the maximum number of vaults to 64. - Very high or low speed modifiers no longer cause problems. - Entry into debug, wizard, or borg mode is only confirmed once per character, not once per session. - The debug command 'e' now allows current and maximum experience to be altered. - Boldor, Gabriel, Khamul, Murazor, Tselukas, Draebor, Hoarmurath, Thuringwethil, Omarax, Qlzqqlzuup, and Feagwath can now summon similar monsters. - Master quylthulg, Emperor Quylthulg, Qlzqqlzuup, Murazor, Pazuzu, Lungorthin, Gothmog, Sauron, and Morgoth can now summon greater demons. - Ancalagon the Black can now breath fire. - Objects carried by monsters are now loaded properly. - A command to repeat the last command has been added ('n' in original, ''' in roguelike keyset). - At character creation, some extra difficulty options are available (no artifacts, no stores, no up stairs/recall). - The "special" inscriptions ("cursed", "worthless", "good", ...) are now handled outside the normal inscription system, and so neither overwrite, nor are overwritten by, normal inscriptions. - Made destroyed levels rarer. - The quest monsters (Sauron and Morgoth) are now always generated on levels 99 and 100. - Fixed a bug in the "know complete monster info" cheat option. - The spell-list now uses color. - The disarm traps spell will now work on the locks of doors, revealing secret doors and unlocking locked doors. - The 'detect doors' spell can now detect locked and jammed doors. - Monsters crushed by an earthquake spell are now killed. - Fixed a bug that could cause problems when entering illegal values while haggling with a shopkeeper. - Support for Adam Bolt's tiles. - Support for transparency and lighting effects. - Added class and race dependent player graphics. - Cleaned up the new code introduced in the 2.8.5 beta version. - Fixed the bug with opening a door you are standing on with the easy_open patch. - Random artifacts with chaos resist can now get confusion resist too. - Fixed a bug that added a discount to a cursed item when wielding it. - The fear resistance of level 30+ warriors is now correctly displayed. Compilation changes: - Added a compile.txt file with compile guides for various systems and compilers. - Added a makefile for the free Borland C++ 5.5 compiler. - Removed lots of compiler warnings. - Fixed a problem when compiling Angband on newer (glibc-based) Linux systems. - Added a compile-time option to allow players to put an .angband.prf file in their home directory and have it read on systems where Angband is running set-[ug]id. Default is off. - Added support for compiling a Linux SVGALIB version with graphics. - Added support for the use of the 8x8 and 16x16 tiles in the X11 version. Windows specific changes: - You can select between the "old" tiles, the new tiles, and ASCII mode. - The Windows version no longer requires changes to angband.ini when installing. The angband.ini file will be created when you first start the program, so it doesn't need to be present in the binary archive. That also allows easy updates to newer versions, since the settings in the angband.ini are not overwritten when installing a new version over an old one. - The windows can be resized and the (graphical) tiles will adjust automatically to the new size. - Added the "Show scores" command to the menu. - Fixed a bug that created all files as "read-only" (causing the game to fail when saving the game). - Fixed a bug that caused all numbers to be registered twice by the game, leading to "double-steps". - Fixed a bug that didn't free the used bitmaps correctly when closing the game. DOS-specific changes: - Graphics, sounds, and music options You can switch the graphics/music/sound options from the user menu (press ! to get there). The volume of the sound and the music can be adjusted from 0 (min) to 255 (max). All changes to the screen-resolution and the selection between the old and the new graphical tiles will be active after you restart Angband. - Terminal windows The windows can be activated from the "Angband options screen" (press the '=' key to get there) in the "Window flags" menu. Just toggle the display you want for "Term-1" and "Term-2". - Added a stone-background to the terminals. - Midi jukebox DOS-Angband automatically plays midi-files from the "lib/xtra/music" folder in your Angband-directory. - Sound Events DOS-Angband will play samples from the "lib/xtra/sound" folder to the corresponding Angband-event. You can configure the available samples in the "lib/xtra/sound/sound.cfg" file. Multiple sounds per event are supported. - "Classic mode": If you want the old display, just start Angband with the '-mibm' option ('Angband.exe -mibm'). ***************************************************************************** Copyright (c) 1997 Ben Harrison, James E. Wilson, Robert A. Koeneke This software may be copied and distributed for educational, research, and not for profit purposes provided that this copyright and statement are included in all such copies. Other copyrights may also apply. All changes made by Ben Harrison and Robert Ruehlmann are also available under the GNU GENERAL PUBLIC LICENSE. Note that this doesn't influence the current distribution, since parts of the source are still only available under the old Moria/Angband license. Until all parts of Angband are distributed under the GPL the only valid license remains the original Moria/Angband license. ***************************************************************************** === A Posting from the Original Author === From: koeneke@ionet.net (Robert Alan Koeneke) Newsgroups: rec.games.roguelike.angband,rec.games.roguelike.moria Subject: Early history of Moria Date: Wed, 21 Feb 1996 04:20:51 GMT I had some email show up asking about the origin of Moria, and its relation to Rogue. So I thought I would just post some text on the early days of Moria. First of all, yes, I really am the Robert Koeneke who wrote the first Moria. I had a lot of mail accussing me of pulling their leg and such. I just recently connected to Internet (yes, I work for a company in the dark ages where Internet is concerned) and was real surprised to find Moria in the news groups... Angband was an even bigger surprise, since I have never seen it. I probably spoke to its originator though... I have given permission to lots of people through the years to enhance, modify, or whatever as long as they freely distributed the results. I have always been a proponent of sharing games, not selling them. Anyway... Around 1980 or 81 I was enrolled in engineering courses at the University of Oklahoma. The engineering lab ran on a PDP 1170 under an early version of UNIX. I was always good at computers, so it was natural for me to get to know the system administrators. They invited me one night to stay and play some games, an early startrek game, The Colossal Cave Adventure (later just 'Adventure'), and late one night, a new dungeon game called 'Rogue'. So yes, I was exposed to Rogue before Moria was even a gleam in my eye. In fact, Rogue was directly responsible for millions of hours of play time wasted on Moria and its descendents... Soon after playing Rogue (and man, was I HOOKED), I got a job in a different department as a student assistant in computers. I worked on one of the early VAX 11/780's running VMS, and no games were available for it at that time. The engineering lab got a real geek of an administrator who thought the only purpose of a computer was WORK! Imagine... Soooo, no more games, and no more rogue! This was intolerable! So I decided to write my own rogue game, Moria Beta 1.0. I had three languages available on my VMS system. Fortran IV, PASCAL V1.?, and BASIC. Since most of the game was string manipulation, I wrote the first attempt at Moria in VMS BASIC, and it looked a LOT like Rogue, at least what I could remember of it. Then I began getting ideas of how to improve it, how it should work differently, and I pretty much didn't touch it for about a year. Around 1983, two things happened that caused Moria to be born in its recognizable form. I was engaged to be married, and the only cure for THAT is to work so hard you can't think about it; and I was enrolled for fall to take an operating systems class in PASCAL. So, I investigated the new version of VMS PASCAL and found out it had a new feature. Variable length strings! Wow... That summer I finished Moria 1.0 in VMS PASCAL. I learned more about data structures, optimization, and just plain programming that summer then in all of my years in school. I soon drew a crowd of devoted Moria players... All at OU. I asked Jimmey Todd, a good friend of mine, to write a better character generator for the game, and so the skills and history were born. Jimmey helped out on many of the functions in the game as well. This would have been about Moria 2.0 In the following two years, I listened a lot to my players and kept making enhancements to the game to fix problems, to challenge them, and to keep them going. If anyone managed to win, I immediately found out how, and 'enhanced' the game to make it harder. I once vowed it was 'unbeatable', and a week later a friend of mine beat it! His character, 'Iggy', was placed into the game as 'The Evil Iggy', and immortalized... And of course, I went in and plugged up the trick he used to win... Around 1985 I started sending out source to other universities. Just before a OU / Texas football clash, I was asked to send a copy to the Univeristy of Texas... I couldn't resist... I modified it so that the begger on the town level was 'An OU football fan' and they moved at maximum rate. They also multiplied at maximum rate... So the first step you took and woke one up, it crossed the floor increasing to hundreds of them and pounded you into oblivion... I soon received a call and provided instructions on how to 'de-enhance' the game! Around 1986 - 87 I released Moria 4.7, my last official release. I was working on a Moria 5.0 when I left OU to go to work for American Airlines (and yes, I still work there). Moria 5.0 was a complete rewrite, and contained many neat enhancements, features, you name it. It had water, streams, lakes, pools, with water monsters. It had 'mysterious orbs' which could be carried like torches for light but also gave off magical aura's (like protection from fire, or aggrivate monster...). It had new weapons and treasures... I left it with the student assistants at OU to be finished, but I guess it soon died on the vine. As far as I know, that source was lost... I gave permission to anyone who asked to work on the game. Several people asked if they could convert it to 'C', and I said fine as long as a complete credit history was maintained, and that it could NEVER be sold, only given. So I guess one or more of them succeeded in their efforts to rewrite it in 'C'. I have since received thousands of letters from all over the world from players telling about their exploits, and from administrators cursing the day I was born... I received mail from behind the iron curtain (while it was still standing) talking about the game on VAX's (which supposedly couldn't be there due to export laws). I used to have a map with pins for every letter I received, but I gave up on that! I am very happy to learn my creation keeps on going... I plan to download it and Angband and play them... Maybe something has been added that will surprise me! That would be nice... I never got to play Moria and be surprised... Robert Alan Koeneke koeneke@ionet.net