From 6adb570984828b2c36de2952c18e722641fbf802 Mon Sep 17 00:00:00 2001 From: dshaligram Date: Wed, 22 Nov 2006 08:44:28 +0000 Subject: Merged stone_soup r15:451 into trunk part 2 (non-source changes). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@453 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/CREDITS | 29 + crawl-ref/INSTALL | 277 +++ crawl-ref/README.crawl_ref | 13 - crawl-ref/README.stone_soup.txt | 72 + crawl-ref/build_nt.txt | 41 - crawl-ref/docs/buglist.txt | 423 ----- crawl-ref/docs/build_nt.txt | 56 - crawl-ref/docs/changes.340 | 1860 ------------------- crawl-ref/docs/changes.400 | 3278 --------------------------------- crawl-ref/docs/changes.stone_soup | 230 +++ crawl-ref/docs/crawl.txt | 1250 ------------- crawl-ref/docs/crawl_macros.txt | 245 +++ crawl-ref/docs/crawl_manual.txt | 1876 +++++++++++++++++++ crawl-ref/docs/crawl_options.txt | 1026 +++++++++++ crawl-ref/docs/keys.pdf | Bin 0 -> 33431 bytes crawl-ref/docs/keys.txt | 206 +++ crawl-ref/docs/lualicense.txt | 34 + crawl-ref/docs/messlog.txt | 562 ------ crawl-ref/docs/mt19937.txt | 40 + crawl-ref/docs/obsolete/buglist.txt | 423 +++++ crawl-ref/docs/obsolete/changes.340 | 1860 +++++++++++++++++++ crawl-ref/docs/obsolete/changes.400 | 3278 +++++++++++++++++++++++++++++++++ crawl-ref/docs/obsolete/messlog.txt | 562 ++++++ crawl-ref/docs/obsolete/todo.txt | 456 +++++ crawl-ref/docs/obsolete/versions.txt | 782 ++++++++ crawl-ref/docs/pcre-license.txt | 68 + crawl-ref/docs/tables.txt | 151 ++ crawl-ref/docs/todo.txt | 456 ----- crawl-ref/docs/versions.txt | 782 -------- crawl-ref/init.txt | 751 ++------ crawl-ref/mac/68K_Stub.r | 144 -- crawl-ref/mac/Crawl.r | 303 --- crawl-ref/mac/Crawl4.mcp | Bin 211299 -> 0 bytes crawl-ref/mac/Precomp (Common).h | 75 - crawl-ref/mac/Precomp (Mac-D).pch++ | 16 - crawl-ref/mac/Precomp (Mac-R).pch++ | 19 - crawl-ref/mac/Precomp (Posix-D).pch++ | 17 - crawl-ref/mac/Precomp (Posix-R).pch++ | 18 - crawl-ref/readme.txt | 16 +- 39 files changed, 11770 insertions(+), 9925 deletions(-) create mode 100644 crawl-ref/CREDITS create mode 100644 crawl-ref/INSTALL delete mode 100644 crawl-ref/README.crawl_ref create mode 100644 crawl-ref/README.stone_soup.txt delete mode 100644 crawl-ref/build_nt.txt delete mode 100644 crawl-ref/docs/buglist.txt delete mode 100644 crawl-ref/docs/build_nt.txt delete mode 100644 crawl-ref/docs/changes.340 delete mode 100644 crawl-ref/docs/changes.400 create mode 100644 crawl-ref/docs/changes.stone_soup delete mode 100644 crawl-ref/docs/crawl.txt create mode 100644 crawl-ref/docs/crawl_macros.txt create mode 100644 crawl-ref/docs/crawl_manual.txt create mode 100644 crawl-ref/docs/crawl_options.txt create mode 100644 crawl-ref/docs/keys.pdf create mode 100644 crawl-ref/docs/keys.txt create mode 100644 crawl-ref/docs/lualicense.txt delete mode 100644 crawl-ref/docs/messlog.txt create mode 100644 crawl-ref/docs/mt19937.txt create mode 100644 crawl-ref/docs/obsolete/buglist.txt create mode 100644 crawl-ref/docs/obsolete/changes.340 create mode 100644 crawl-ref/docs/obsolete/changes.400 create mode 100644 crawl-ref/docs/obsolete/messlog.txt create mode 100644 crawl-ref/docs/obsolete/todo.txt create mode 100644 crawl-ref/docs/obsolete/versions.txt create mode 100644 crawl-ref/docs/pcre-license.txt create mode 100644 crawl-ref/docs/tables.txt delete mode 100644 crawl-ref/docs/todo.txt delete mode 100644 crawl-ref/docs/versions.txt delete mode 100644 crawl-ref/mac/68K_Stub.r delete mode 100644 crawl-ref/mac/Crawl.r delete mode 100644 crawl-ref/mac/Crawl4.mcp delete mode 100644 crawl-ref/mac/Precomp (Common).h delete mode 100644 crawl-ref/mac/Precomp (Mac-D).pch++ delete mode 100644 crawl-ref/mac/Precomp (Mac-R).pch++ delete mode 100644 crawl-ref/mac/Precomp (Posix-D).pch++ delete mode 100644 crawl-ref/mac/Precomp (Posix-R).pch++ (limited to 'crawl-ref') diff --git a/crawl-ref/CREDITS b/crawl-ref/CREDITS new file mode 100644 index 0000000000..f538d8d79a --- /dev/null +++ b/crawl-ref/CREDITS @@ -0,0 +1,29 @@ +The Dungeon Crawl Stone Soup team (Peter Berger, Nat Lanza, Haran Pilpel, Erik +Piper, David Ploog, Darshan Shaligram) would like to thank: + +* Linley Henzell, the author of Dungeon Crawl, for writing this great game. + +* Brent Ross, Dungeon Crawl 4.0/4.1 maintainer. Stone Soup owes a lot to his + ideas and code in Crawl 4.1. + +* Other members of the 4.0 Crawl development team: Michal Valvoda, Guus Sliepen, + Brian Robinson, Mark Mackey, Gordon Lipford, Daniel Ligon, Jesse Jones, Josh + Fishman, Don Brodale. + +* Everyone else who has contributed to Crawl in the past. + +We'd also like to thank members of the Dungeon Crawl community who have +contributed to Dungeon Crawl Stone Soup: + +Matthew Cline +Elethiomel +Ben Goetter +R. Dan Henry +Benoit Hudson +Ryan Kusnery +Erkki Nurmi +Yuuma Oohara +Pedro +Johanna Ploog +David Rose +Johan Strandell diff --git a/crawl-ref/INSTALL b/crawl-ref/INSTALL new file mode 100644 index 0000000000..6e8e26f1ee --- /dev/null +++ b/crawl-ref/INSTALL @@ -0,0 +1,277 @@ +Install instructions for Dungeon Crawl Stone Soup (DCSS) +-------------------------------------------------------- +(Last updated on 20061107 for Dungeon Crawl Stone Soup 0.1.3.) + +Building Dungeon Crawl Stone Soup +--------------------------------- +Crawl Stone Soup is known to compile successfully on the following platforms as +of version 0.1: + +- Any Unix with a recent gcc (and g++), GNU make and libncurses, including + Linux and Mac OS X. +- Microsoft Windows NT/2000/XP. The game will also run on Windows 9X and ME. + DOS binaries can also be compiled on Windows NT+. + +The only supported compiler is gcc (available on almost all Unixes, and as djgpp +for DOS, and MinGW for Windows). + +Other platforms are unsupported, but you should be able to build Crawl on +pretty much any operating system with a modern C++ compiler (full support for +the standard C++ library, in particular , the collection classes and + is necessary) and the curses library. + + +Optional libraries +------------------ +Crawl can be built with some optional features: +* Sounds +* Regular expressions +* Lua support + +Crawl Stone Soup also uses a level compiler to compile special level +definitions; to make changes to the level compiler, you'll need the flex and +bison/byacc tools (Other lex/yaccs may also work). More details are available +below. + +Sounds must be enabled by editing AppHdr.h (uncomment SOUND_PLAY_COMMAND on +Unixes or WINMM_PLAY_SOUNDS on Windows). + +Regular expressions require libpcre on non-Unix operating systems. On Unixes, +the standard POSIX regular expression support is adequate for Crawl's needs. + +Lua support requires liblua, which you can build by downloading the sources from +www.lua.org. On most Unixes, you can also use the native package management +system to easily install lua. + + +Makefile system +--------------- +Crawl uses a selector makefile (under source/makefile) to control what platform +it's building for. Your first step in building Crawl should be to edit +source/makefile and point it at the correct platform makefile. For instance, if +you're building for Windows, you'd use MAKEFILE=makefile.mgw to build with MinGW +for Windows (# is used for comments in makefiles). + +Consult the operating-system specific sections for detailed information on +building Crawl. + + +Building on Unix (Linux, *BSD, Solaris, etc.) +--------------------------------------------- + +* Prerequisites: + +GNU gcc and g++, GNU make, libncurses or libcurses. + +flex and bison are optional but highly recommended. Recent versions of byacc are +also fine. + +* Building: + +* cd to the source directory (you can safely ignore the dolinks.sh and + domake.sh scripts). + +* Edit makefile and make sure that MAKEFILE=makefile.unix is uncommented and + all other MAKEFILE= lines are commented out. + +* Edit AppHdr.h and check that SAVE_DIR_PATH, SAVE_PACKAGE_CMD and + LOAD_UNPACKAGE_CMD are set correctly for your system. If you do not want your + saves packaged in a zip archive, it's safe to comment out SAVE_PACKAGE_CMD and + LOAD_UNPACKAGE_CMD. + +* If you don't have flex or bison, edit makefile.unix and set DOYACC := n. If + you want to use byacc instead of bison, edit makefile.unix and set YACC := + byacc. On some Linuxes you may not have lex symlinked to flex, in which case + you'll have to set LEX := flex in makefile.unix. + +* Run make to build the normal (non-wizard) Crawl. On systems such as Solaris, + you may have to use gmake for GNU make. Make sure your make identifies itself + as GNU make when you do make --version. + +* If you have Lua, you can edit AppHdr.h and uncomment + // #define CLUA_BINDINGS + then add -llua to your LIB = line in makefile.unix, and rebuild to compile with + Lua support. + + +Building on Mac OS X +-------------------- +You can follow the Linux instructions to build Crawl (but note you still need to +install Xcode to get gcc and make), or alternatively you can use Xcode. + +* Crawl has been tested with Xcode 2.4 under OS X 10.4.7 on both PPC and Intel + machines, but is likely to be buildable with earlier versions. + +* Make sure Xcode is installed. Xcode should be available on the OS X install + DVD if you haven't already installed it. + +* Open the Xcode project (Crawl.xcodeproj) under the "source" directory. + +* Hit Build in Xcode. + +* The default build configuration, Release, will build a ppc/i386 Universal + binary suitable for play on all OS X 10.3.9 or newer systems. The other build + configurations are intended for development and may not result in a binary + that can be distributed to others. + +* You can also use makefile.osx, which will run xcodebuild from the command line. + +* If you have Lua installed, you can add your lua headers and liblua library to + the 'Crawl' target in the Xcode project, uncomment the '#define CLUA_BINDINGS' + line in AppHdr.h, and rebuild to compile with Lua support. + + +Building on Windows +------------------- + +NOTE: Building for Windows+MinGW on Windows 9x/ME may work, but we've not tested +it. You may be better off using the DOS build instructions if you're on 9x/ME. + +We've also not tested or updated the makefile for Borland C++. We strongly +recommend using MinGW if possible. + +* Install MinGW from http://www.mingw.org. The MinGW 5.0.2 installer is best so + you don't have to fiddle with individual packages (you can mess with the + individual packages if you like to, of course). If you want to edit the level + compiler, also get the flex and bison packages (available from the GnuWin32 + project on Sourceforge: http://gnuwin32.sourceforge.net/). + +* Make sure you have g++ and mingw32-make in your path. + +* cd to the the Crawl source directory. + +* Build Crawl by running + mingw32-make MAKEFILE=makefile.mgw + +* If you have Lua and/or libpcre, you can edit AppHdr.h and uncomment + these lines: + // #define CLUA_BINDINGS + and + // #define REGEX_PCRE + Note that there are multiple // #define REGEX_PCRE lines in AppHdr.h - find + the one in the Windows-specific section. + +* If you have flex and bison, edit makefile.mgw and set DOYACC := y. + +* Add -llua and -lpcre to the LIB line in makefile.mgw as: + LIB = -lwinmm -static -llua -lpcre + and build Crawl to include Lua and regex support. + +* When you're done, you should have crawl.exe under a "rel" subdirectory. + + +Building on DOS +--------------- + +* Install djgpp from http://www.delorie.com/djgpp/. Don't forget to include C++ + support when the Zip picker asks for what you want. You may also have to + download GNU make as a separate package. It's important to follow the install + instructions carefully, because bad installs can produce rather confusing + error messages. + +* Make sure gxx and make are in your PATH. + +* If you want to modify the level compiler, install the djgpp flex, bison and m4 + packages and set DOYACC := y in makefile.dos. + +* cd to the Crawl source directory. + +* Build Crawl by running + make MAKEFILE=makefile.dos + +* If you have Lua and/or PCRE, edit makefile.dos and change this line: + CFLAGS = -D$(OS_TYPE) $(EXTRA_FLAGS) + to + CFLAGS = -D$(OS_TYPE) $(EXTRA_FLAGS) -DCLUA_BINDINGS -DREGEX_PCRE + Add -llua and -lpcre to the LIB line in makefile.dos, like so: + LIB = -llua -lpcre + then build Crawl. + +* When the build is done, crawl.exe should be in the source directory. + +***************************************************************************** + +The level compiler +------------------ +(NOTE: The level compiler is not in its final form yet; these instructions are +likely to change for future releases.) + +Crawl uses a level compiler to convert the human-readable level design (.des) +files in the source/dat directory into code that's compiled into Crawl. + +If you're using one of the standard makefiles, the steps described in this +section are performed automatically: + +The level compiler source is in the source/util directory (levcomp.lpp and +levcomp.ypp). The steps involved in building the level compiler are: + +* Run flex on levcomp.lpp to produce the levcomp.lex.cc lexer. +* Run bison on levcomp.ypp to produce the levcomp.tab.cc parser and + levcomp.tab.h +* Compile the resulting C++ source files with mapdef.cc (in the main source + directory) and levcomp.cc to produce the levcomp executable. + +Once you've built the level compiler, run it on the .des files in source/dat and +append the results to mapdefs.ixx: + +levcomp(.exe) mapdefs.ixx < dat/vaults.des +levcomp(.exe) -a mapdefs.ixx < dat/splev.des +(the -a option tells levcomp to append to mapdefs.ixx instead of overwriting the +existing contents.) + +When mapdefs.ixx is built, Crawl can be compiled as before. mapdefs.ixx is +#included in maps.cc. + +For convenience on systems that don't have flex/bison, pre-generated +intermediate files are provided under source/prebuilt. The makefiles provided +with the Crawl source distribution will use these pre-generated files +automatically if flex/bison is not available. + +If you're using an Integrated Development Environment and don't want to modify +the level design files at all, a pre-generated mapdefs.ixx is provided in +source/prebuilt - you can add source/prebuilt as an include directory and build +Crawl as before. (This is not necessary if you're using Xcode on OS X +- the Xcode project provided with the source distribution is aware of the level +compiler and will build and use it automatically.) + +***************************************************************************** +Optional Libraries +------------------ + +Lua +--- +NOTE: When linking in Lua, the makefile LIB line usually looks like this: + +LIB = -llua + +If you're using Lua older than 5.1, though, the Lua library comprises of *two* +libraries: liblua and liblualib (yes, confusing), so you need + +LIB = -llua -llualib + + +Getting Lua: + +On Unixes your package management system is the best way to get Lua. Make +sure to install the development headers and not just the naked library. + +On Windows, Lua binaries are available on luaforge.net. You should find links to +get binaries from www.lua.org. + +On DOS, you get the joy of compiling Lua yourself. It's not hard, and you can +use the existing Windows support in the Lua makefiles with some minor +modifications, but you may be better served using the official Crawl Stone Soup +binaries if you want Lua with your Crawl and don't want to compile Lua. + + +PCRE +---- +On Unixes, you're better served by the existing POSIX regular expression +support. If you want PCRE, your package management system is again your best +bet. Remember to install development headers, not just the plain library. + +On Windows, PCRE binaries are available from +http://gnuwin32.sourceforge.net/packages/pcre.htm + +On DOS you get the joy of building PCRE yourself. It's a little more annoying +than building Lua (you have to roll your own makefile), but not by much. diff --git a/crawl-ref/README.crawl_ref b/crawl-ref/README.crawl_ref deleted file mode 100644 index 776e48758b..0000000000 --- a/crawl-ref/README.crawl_ref +++ /dev/null @@ -1,13 +0,0 @@ -Dungeon Crawl Reference Notes -------- ----- --------- ----- - -What you have downloaded is *not* Linley's Dungeon Crawl. It's a parallel -effort, currently not quite a fork. - -The goal of this version is to provide a stable base platform for -experimentation and patches, and to fill in the gaps during times when -Dungeon Crawl's main maintainer is not available. - -Please do not send bug reports for this code to the main Dungeon Crawl -maintainers -- the odds are good that the code that's causing you problems -isn't code they wrote, and they won't be able to help you. diff --git a/crawl-ref/README.stone_soup.txt b/crawl-ref/README.stone_soup.txt new file mode 100644 index 0000000000..97b91c7c05 --- /dev/null +++ b/crawl-ref/README.stone_soup.txt @@ -0,0 +1,72 @@ +Dungeon Crawl (Stone Soup) +------- ----- ------ ----- + +(If you'd like to dive in and start playing Crawl right away, see readme.txt.) + +What you have downloaded is *not* Linley's Dungeon Crawl. This is a somewhat +experimental branch of the Dungeon Crawl Reference project (codenamed Stone +Soup). Note that this is a branch, and is NOT the official Dungeon Crawl +Reference. + +The goal of this version is to build on Dungeon Crawl Reference (which aims to +be the stable base platform for experimentation and patches, and to fill in the +gaps during times when Dungeon Crawl's main maintainer is not available) with +good features drawn from sources such as Brent Ross' 4.1.2 alpha, and ideas +from the community of Dungeon Crawl players and to keep development on Dungeon +Crawl moving without destablizing game balance. + +Please do not send bug reports for this code to the main Dungeon Crawl +maintainers -- the odds are good that the code that's causing you problems +isn't code they wrote, and they won't be able to help you. + +----------------------------------------------------------------------------- + +Dungeon Crawl Stone Soup is a game of dungeon exploration, combat and magic, +involving characters of diverse skills, worshipping deities of great power and +caprice. To win, you'll need to be a master of tactics and strategy, and prevail +against overwhelming odds. + +The following files in your main Crawl directory are crucial: + +crawl - Starts the game. +crawl.exe + +init.txt - These files (which one depends on your OS) contains the options of +.crawlrc Crawl. Since the defaults are well suited for playing, don't bother + with this in the beginning. + Note that permanent death is not an option, but a feature! +macro.txt - Playing Crawl can be made even more convenient by redefining keys + and assigning macros. It is recommended that you fiddle with these + only after a couple of games. + +The docs directory contains the following helpful files: + +crawl_manual.txt - This is the complete manual; describing all species, classes, + types of items, etc. +crawl_options.txt - Here all the options you can give Crawl are described in + detail; feel free to skip this until you feel comfortable with the + game. +crawl_macros.txt - It is wise to ignore this at first, too. (Unless you + experience serious problems with some keys, in which case you may + want to have a look at the keymaps section.) + Just remember for later that you can improve your Crawl experience + by adjusting interface options and defining your own macros. +tables.txt - Unlike some other roguelike games, winning in Crawl does not + require an exhaustive knowledge of the game's internals. However, + here are tables which may be interesting to players. The central + information therein can be deduced from other sources (like the + manual), and it is perfectly possible to win without knowing + these numbers. + +If you have questions concerning the game, or have found a bug, do not hesitate +to inquire at the newsgroup + rec.games.roguelike.misc +with your problem. Since other games are discussed over there as well, it is +polite to flag your post with -crawl-. Please read the group for a while before +posting to get a feel for the right way to post articles about Crawl. + +Stone Soup's homepage is + http://crawl-ref.sourceforge.net +Look here for downloads of the most recent version (source and binaries). +Stone Soup is supported on Linux, Windows, OS/X, and DOS, and will probably +compile and run on any reasonably modern Unix. diff --git a/crawl-ref/build_nt.txt b/crawl-ref/build_nt.txt deleted file mode 100644 index 4b5b4645ab..0000000000 --- a/crawl-ref/build_nt.txt +++ /dev/null @@ -1,41 +0,0 @@ -Notes for building crawl with VACPP ------------------------------------ -* when including source, make sure source type is - defined to be 'cpp' - VACPP doesn't know how to - handle .cc extensions. -* include libw32c.cc as a source object; - ignore the other lib*.cc files -* define the macro WIN32CONSOLE -* MUST build with signedchars = yes -* MUST build with emumsize = 4 -* target architecture should probably be 486 machines. - - According to jmf, targetting Pentium class machines - implies Pentium-specific instructions which are - actually slower on PPro/PII/PIII machines. - -Other than this, it's pretty straightforward. - - -Notes for building crawl with Borland C++ 5.01 ----------------------------------------------- -Don't bother. Borland C++ 5.01 has a broken -STL library that requires manual patching to get -around. Use the free commandline tools from Borland -instead. - -Notes for building crawl with Borland C++ 5.5 free commandline tools --------------------------------------------------------------------- -* make sure your ilink32.cfg contains entries for at least lib and lib\psdk, - for example: - -L"g:\bcc55\lib;g:\bcc55\lib\psdk" - (This may already be done if you've set up Borland for use with VIDE) - -* cd to the source directory and edit 'makefile' - * set MAKEFILE=makefile.bor - * comment out the OTHER=-j2 line - * remove EXTRA_FLAGS=... from command (set flags in makefile.bor instead) - -* finally, type 'make all' ('make' may default to 'make debug' which isn't - quite supported yet using the free tools) - diff --git a/crawl-ref/docs/buglist.txt b/crawl-ref/docs/buglist.txt deleted file mode 100644 index c9a33b3b8c..0000000000 --- a/crawl-ref/docs/buglist.txt +++ /dev/null @@ -1,423 +0,0 @@ - Bugs Outstanding - - -Compiling - - -COMP01. [unknown - no date]: -makefile.sgi for IRIX does not work -- no clue why - -COMP02. [unknown - no date]: -DJGPP may puke up a lung on some of the very long functions if -compiled using certain options -- sometimes simply running make -again will work; sometimes changing the options will force compile - - - - -Critical Errors - - -CRIT01. [BCR - 10 Jan 2000]: weird crash bug: trying ctrl-numbers -(for control movement under Linux) from the top of the keyboard and -ctrl-4 apparently kills the program -- ran it in the debugger and -it said it got a SIGQUIT signal in libc_read - -CRIT02. [unknown - no date]: -skeletal warrior cast a spell and seg-faulted the game in the Abyss - -CRIT03. [unknown - no date]: -sometimes leaving the Abyss through an exit sends game into an -infinite loop -- hard to replicate, though - -CRIT04. [unknown - no date]: -using stairs/portals sometimes misplaces the player, either into -solid rock or onto bogus levels -- e.g., level 28 of the dungeon, -level -1 of a sub-dungeon - -CRIT06. [jmf - 31 mar 2000]: -Taking down stairs onto new level sometimes hangs the game. -Hard to replicate. - -CRIT07. [jmf - 31 mar 2000]: -Dungeons sometimes generated that feature off-the-edge corrodors. -Monsters or player moving too close causes segfault. - - -Platform Specific - - -PLAT01. [unknown - no date]: -Linux: various odd effects when playing in term -- may be -terminfo's fault - -PLAT02. [DLB - 12 Jan 2000]: -Playing under Linux, I am encountering an atrocious "garbaging" of -the screen in Wizmode -- the screen fails to update properly after -using the wizmode help function (&-?) ... has anyone else -encountered this. Also, keypad support is very spotty under Linux, -or at least mine ... - - [BCR - 12 Jan 2000]: - Yeah, Linux support is still far from perfect. I've never been able - to get shift or ctrl numpad keys to work in Linux, and have had - various display problems. The wizmode help actually uses the same - function as the regular help, so it should behave the same. - - [DLB - 20 Mar 2000]: - Still no support under Linux console for keypad when in 'X'-map - mode - -PLAT03. [BWR - 13 Jan 2000]: -The escape key no longer seems to be cancelling my actions (ie. -looking at spell lists, maps, etc.). This is a desired feature -because I typically don't trust space in roguelike games. (This is -under Solaris.) - - [DLB - 13 Jan 2000]: - I noticed this "feature" under Linux, as well ... guess I am not - the only one. - - [BWR - 18 Jan 2000]: - I've looked at the escape problem and the problem is that at some - point the keypad( stdscr, FALSE ) line turns into a TRUE. This ends - up cooking escapes (it has to pause for a bit to wait to see if its - an escape sequence and this screws up all the checks for escape). - I've moved this into the #ifndef SOLARIS block with the scrollok. - Everybody here uses roguelike keys except for those people who are - luck to get terminals that will output the actual numbers in one of - their modes, or have hacked their xmodmap to handle the keypad (to - do pretty much the same). - -PLAT04. [BWR - 20 Mar 2000]: -There's one other bug that we seem to have here (under Solaris). -Occasionally the game hangs when changing levels. At first it was -only happening to one person, so I thought it had something to do -with his environment (I know he's giving incorrect term types to -get colour, as well as doing some magic with xmodmap to get the -keypad to work on some terminals), but it did happen to me once so -I know its real. Nothing really special about the stairs I used, -they were regular dungeon (I've noticed his games have hanged in -sub-branches) and I had no monsters around me. This could be a -problem with either level generation (I was going to a new level) -or with the save level function. Don't have much time to look at -either... keep your eyes open for it, if it doesn't happen anywhere -else, its probably with the SOLARIS or SAVE_GAME_DIR code. - -PLAT05. [BCR - 9 Mar 2000]: -Its not a big deal, but 2 and 8 on the numpad still don't work with -ctrl for disarming traps. We should at least stick it in the -buglist. (This is under Windows NT.) - - [LRH - 13 Mar 2000]: - Re: the bug with ctrl-2 and -8 not working: IIRC The last time this - happened it was as a result of the keyin variable in which - keypresses entered in the main input loop are stored having been - set either signed or unsigned, I don't remember which (just that it - was the wrong one). The problem is that the values for ctrl-2/ 8 - are above 127, so when the variable declaration was changed they - either started or stopped wrapping. - Of course, it's a while since I've done any coding, so don't - believe everything I say. - - [BCR - 13 Mar 2000]: - I spent some time debugging today and it seems that the ctrl-8/2 - problem under NT is a library bug. The external getch() function - doesn't return when you hit those keys. This maybe be a DJGPP - thing. I have the borland compiler on this comp too, so if I get - some time I will try setting it up and seeing if the problem is the - same there as well... - - - - -Display - - -DISP01. [Graeme Dice - 10 Jan 2000]: -(small, cosmetic) bug with the new, cool XP-left-for-skills -display: when one gains skills such that 3-4 digits of XP are -removed, the right parenthesis is not removed (^R fixes) - -DISP02. [unknown - no date]: -missing space when printing gold amounts? - -DISP03. [unknown - no date]: -hunger status not redrawn with level change -- happens when -engorged and I think also when full - - [BWR - no date] - should be fixed now - - [JDJ - no date] - still not fixed - -DISP04. [unknown - no date]: -check for screen length problems and fix them -- e.g., map -centering is still off base, line 12 (should this be shifted for -longer windows?) - -DISP05. [BWR - 18 Jan 2000]: -Speaking of the help screen, the help for the fast scroll on the -map screen is still wrong: the commands are +/- not +/& like it -implies. - -DISP06. [Tloma Desk - 7 Feb 2000]: -When gaining level during zapping some bolt towards the top of the -screen, part of bolt is drawn at the bottom of the screen. - -DISP07. [DLB - 17 Mar 2000]: -the key for list weapons is not displayed after issuing a '?' -command - -DISP08. [DLB - 18 Mar 2000]: -The spell "Detect creatures" should be "Detect Creatures" (both -words capitalized) when viewing list of spells known. - - - - -Items - - -ITEM01. [LRH - 12 Jan 2000]: -When you eat a poisonous corpse while poison resistant, it always -makes you ill (ie diseased) -- Should this be fixed? - - [BWR - 12 Jan 2000]: - Almost certainly. Doesn't make sense to punish players like this. - -ITEM02. [unknown - no date]: -"-5 stone" heavily enchanted to do *more* damage and costs 100 - -ITEM03. [unknown - no date]: -jewelry shop generated "+6", a missile weapon - -ITEM04. [unknown - no date]: -found "an amulet of Cekugob" (an unrandart) that should identify as -"the amulet of Cekugob" -- a 'V' check indicated none of its -powers, but at least some of them were being applied to my -character - -ITEM05. [unknown - no date]: -an item is cursed if its "iplus" value is "big enough" -- however, -"big enough" is >80 in some places, >130 in others, and perhaps ->120 in others (I'm not sure about the >120; I recall seeing it but -can't find it now). Right now I have an artifact ring that I can't -uncurse since the value used when uncursing is 130 and the value -used when sticking is 80 -- the uncursing code checks against 80 on -one hand and against 130 on the other - -ITEM06. [CDL - 18 Mar 2000]: -I had just had a level 7 Spriggan Venom Mage, with all of his 24 -HP, die from reading a scroll of immolation. The official cause of -death was listed as "killed by bad targetting". - - [DLB - 18 Mar 2000]: - Appears that item_use::read_scroll() for - SCR_IMMOLATION hands off a value of beam.thing_thrown as KILL_YOU - to bang::explosion() and is eventually handled by these lines: - - if ( beam[0].thing_thrown == KILL_YOU - || beam[0].thing_thrown == KILL_YOU_MISSILE ) - ouch(hurted, 0, KILLED_BY_TARGETTING); - else if (beam[0].flavour == BEAM_SPORE) // cdl - ouch(hurted, 0, KILLED_BY_SPORE); - else - ouch(hurted, beam[0].beam_source, KILLED_BY_BEAM); - - Problem is, there is no KILLED_BY_EXPLOSION, so unless someone - wants to add that case, KILLED_BY_BURNING (now used by "liquid - flames" in acr.cc only) would be the closest fit ... - Maybe a better long-term solution would be to add to the KILLER - enum cases for KILL_YOU_EXPLOSION and KILL_MON_EXPLOSION and work - from there ??? Right now KILL_YOU and KILL_MON serve double duty - for both direct (non-missile) and explosion kills -- separate them - out??? - -ITEM07. [Tloma Desk - 7 Feb 2000]: -Magical staves are identified by fighting with them. - -ITEM08. [Tloma Desk - 7 Feb 2000]: -Weapon descriptions are not complete - "It's ... enchanted to do -more damage." part is missing - -ITEM09. [ - 17 Mar 2000]: -Reading scroll of detect curse discovers artifact names. - -ITEM10. [CDL - 19 Mar 2000]: -My current character has a spell staff of destruction with these -spells: - - Spells Type Level - a - Throw Frost Ice/Conjuration 2 - b - Bolt of Cold Ice/Conjuration 5 - c - Lightning Bolt Air/Conjuration 6 - -I am unable to cast Throw Frost with it, but can cast the other two -spells. I can't figure out the problem, but when I added enough -print statements, the problem went away. :( -There's something odd going on here, as -dungeon::spellbook_template() gets called once with "spellbook" 13, -rather than with 53 (the above staff). - - - - -Monsters - - -MONS01. [unknown - no date]: -artefact weapons of Holy Wrath wielded by undead - -MONS02. [unknown - no date]: -monsters shout upon seeing a player who cannot see them - -MONS03. [BWR - 13 Jan 2000]: -Another thing that was noticed in this version. Polymorphing -Sigmund (or any other named monster) resulted in "a giant beetle" -changing its form. My guess is some confusion on which table is -being indexed. - -MONS04. [BWR - 27 Jan 2000]: -On the subject of summoning, a little thing (bug) that has been -noticed around here... summoned monsters that die overtop of -corpses, take the corpse with them. - -MONS05. [ - 17 Mar 2000]: -You can use Yedremewhatewer "enslave undead" invocation to enslave -shapeshifter acting as an undead. When it changes, the enslavement -stays. I am not certain if this is a bug or a feature. - - - - -Characters - - -PLYR01. [unknown - no date]: -currently possible to gain zero hp when gaining a level -- -safeguards should exist to prevent negative values, if not -guaranteeing at least 1 hp per level - -PLYR02. [BWR - 12 Feb 2000]: -calc_hp() and calc_ep() need to be called before you.hp is set so -that race-classes that start with 5 Fighting don't start with 18/19 -hps (see Ogre Fighters). - - - - -Inventory - - -INVN01. [unknown - no date]: -full inventory doesn't account for possible item stacking or for -picking up gold - - [DLB - 19 Mar 2000]: - When a player's pack is full, he/she is unable to pick up gold from - the ground. This, at least should be allowable, if not also item - stacking (see parent comment). - -INVN02. [unknown - no date]: -inventory count bug: inventory counter occasionally gets out of -sync (should either be moved or fixed) - - - - -Combat Related - - -COMB01. [unknown - no date]: -EV seems to get screwed up after transforms -- it seems to get at -the transform value when the player has no armour (calculated -correctly once armour is on) - - - - -Magic - - -MAGI01. [LRH - 12 Jan 2000]: -The burn_freeze function (which covers the spells burn, freeze, -crush and arc) doesn't set a friendly creature targetted by it to -hostile. It should. And I really should have gotten around to -implementing these spells for monsters, so that ghosts can use -them. - -MAGI02. [LRH - 13 Jan 2000]: -Summon Shadow Creatures is now Ice/Summoning -- this seems very -odd. - - [BWR - 13 Jan 2000]: - Same here. - -MAGI03. [CDL - 18 Mar 2000]: -This is in player.cc: - -if (you.sure_blade) -{ - if (you.confusing_touch > 15) - mpr( "You have a strong bond with your blade." ); - else if (you.confusing_touch > 5) - mpr( "You have a bond with your blade." ); - else - mpr( "Your bond with your blade is waning." ); -} - -The "confusing_touch"es in the body should probably be -"sure_blade"s. - - - - -Teleportation - - -TELE01. [unknown - no date]: -if you have teleport control you'll see a prompt that says: -"You may choose your destination (press '.' or delete to select)." -I somehow got into the habit of immediately blowing by this prompt -without ever reading it so I was always flailing around whenever I -tried to teleport. I've changed show_map() so that it accepts '\r' -as well as '.' (which should be much more intuitive) but I don't -see a check for the delete key in show_map() so I think the prompt -is wrong - -TELE02. [unknown - no date]: -teleport control is really wacky -- I'd expect to be able to use -the return key to select the square but it seems to key off one of -the keypad keys - - - - -Targeting - - -TARG01. [unknown - no date]: -targeting is off at times (possible rounding errors) - -TARG02. [unknown - no date]: -fired beams sometimes take the wrong route and can't hit targets in -LOS - - - - -Codebase - - -CODE01. [unknown - no date]: -in monsters enum, values 250 to 310 should be reserved for Uniques, -but 260 to 280 are occupied by other monsters -- should move them -if it won't mess anything else up (if moved, remember to alter -ouch.cc check for placing 'a' is put in front of the unique's name -in the scores) -- not really a bug. - -CODE02. [unknown - no date]: -from the code, it appears that dropping items takes zero time - diff --git a/crawl-ref/docs/build_nt.txt b/crawl-ref/docs/build_nt.txt deleted file mode 100644 index c6c7373eae..0000000000 --- a/crawl-ref/docs/build_nt.txt +++ /dev/null @@ -1,56 +0,0 @@ -Notes for building crawl with VACPP ------------------------------------ -* when including source, make sure source type is - defined to be 'cpp' - VACPP doesn't know how to - handle .cc extensions. -* include libw32c.cc as a source object; - ignore the other lib*.cc files -* define the macro WIN32CONSOLE -* MUST build with signedchars = yes -* MUST build with enumsize = 4 -* target architecture should probably be 486 machines. - - According to jmf, targetting Pentium class machines - implies Pentium-specific instructions which are - actually slower on PPro/PII/PIII machines. - -Other than this, it's pretty straightforward. - - -Notes for building crawl with Borland C++ 5.01 ----------------------------------------------- -* must alter the Tool information for CppCompile to - 'understand' .cc extensions (in Advanced Tools Settings) -* include libw32c.cc as source; ignore other lib*.cc files -* define macro WIN32CONSOLE -* MUST build with "Unsigned Characters" OFF -* MUST build with "Allocate Enums as Ints" ON -* MUST set search directories so that the Crawl Source directory - is searched before the BC5\INCLUDE directory. -* target architecture should probably be 486 machines - (see note for VACPP) -* helps to set Warnings to "Selected Subset only" or you - get ZILLIONS of warnings. I usually turn off all the - "Code Efficiency" warnings. :) -* for best results, specify following in target expert: - - Win32 Console Application (.exe) - - _Everything_ unchecked - - Static linking - -Notes for building crawl with mingw ------------------------------------------- -* In makefile specify makefile.w32. Other notes: - - make sure your path includes mingw binaries - - set LIB to your mingw lib directory - - set INCLUDE to your mingw include directory - - the makefile defines WIN32CONSOLE like above - - -Wall will generate a fair number of warnings -* Tested on Win98 and Win2000. -* Current build is not statically linked. -* See notes above for target arch code gen switches -* This is currently tested only with 2.95.2 - I anticipate no problems with mingw 3.0.1 but - haven't had time to update yet. -* This also currently doesn't statically link - - diff --git a/crawl-ref/docs/changes.340 b/crawl-ref/docs/changes.340 deleted file mode 100644 index 2891d5c976..0000000000 --- a/crawl-ref/docs/changes.340 +++ /dev/null @@ -1,1860 +0,0 @@ - Version 3.40 Changelog - - Note: - - This file documents the progressive development of Crawl 3.40. Much - of it discusses specific changes to the codebase that may prove - uninteresting to non-programmers. The devteam has made no great - effort to clean up our comments. - - Do you seek a more accessible overview of the latest changes? Those - answering "yes" should read the versions.txt entry for Crawl 3.40 - instead. - - -============= -Contributors: -============= -Gordon Lipford (lipford@ca.ibm.com) -Linley Henzell (linley.henzell@student.adelaide.edu.au) -Jesse Jones (jesjones@halcyon.com) -Daniel Ligon (makmorn@qis.net) -David Loewenstern (loewenstern@home.com) -Brian Robinson (bcr19374@pegasus.cc.ucf.edu) -Brent Ross (bwross@csclub.uwaterloo.ca) -Josh Fishman (fishman@cs.nyu.edu) -Don Brodale (lar@bway.net) - - -Oct 30, 2000 (Brent Ross) - -- add macro/function for Control('A') and such. - -- remove "move[0]" (struct dist) - -- remove "&beam[0]" (struct bolt) - -- fixed some problems with elemental resistances - -- added "easy_confirm" to rc file - -- improved vampire's spell selection - -- added merfolk race - -- added wanderer class - -- split out the monster speaking function from monstuff.cc - -- fewer param monam() => ptr_monam() - -- restore abilities potion gives no message - -- move monster spells out of mon-util and into mon-spls - -- added inv_randart_wpn_properties() - -- fix berserk for mutations and others (paralyze too strong). - -- make pandemonium gates rarer, special named demon pandemonium levels too - -- does exp_needed require the species param -- removed - -- returned Swords as "Orbs of Fire" - -- returned quokka (added to low level regular dungeon monsters) - -- easy_open is now an option - -- added show_uncursed and easy_butcher options. - -- slight modifications to divine retribution - -- make weapon classes depend on different stats (USE_NEW_COMBAT_STATS) - -- added/move startup messages to the new block after initialise() - -- option to safeguard accidentally auto-removing and dropping armour - -- added starting message describing chacter race/class - -- make yesno() take a flag for "safe" cases... and option - -- fixed the file locking mechanism - -- moved some SOLARIS defined stuff (which really isn't Solaris dependant) - to MULTIUSER. - -- write player_title() as interface to skill_title() which will do the - best calculating and call skill_title (which is still needed for ghosts) - -- fixed bug: runes were being generated in the hive - -- fixed bug: examined clouds wrongly identified - -- added Simulacrum spell (creating a new Ice spell... I'm surprised - that Ice/Necromancy aren't very closely related... this will help - fix that). - -- added Ball Lightning spell (replacing Electric Orb). - -- fixed best_skill to use skill_points and species difficulty, instead - of just the base level (which gave preference based on the order of - the skills... this will only have that happen if the skill points - are also equal, which is much less likely). - -- adjustments to the spellbooks, and spellbook aquirement - -- Warp adjustments - - removed bend, warp/distortion brand from play - - - warp brand was raised in level and the miscast effects were - added to the spell start and end (to limit the spell should it - ever be brought back). - - - translocations also doesn't help with the miscast effects of - distortion brands (it was reducing the terror wielding one, and - these weapons easily outclass other brands for bonus damage and - powerful effects... they should never be anywhere near usable - as a reliable swap weapon, player's should have to seriously think - before deciding to use one... and have to risk some real damage - or banishment if they use them frequently). - - - reduced frequency of summoning "spatial vortices" as a miscast - effect -- people were reliably getting them by dropping warp - branded weapons (and it's random movement makes it much less - a threat to the player, who will sit back and watch it mow down - the other monsters in the room (who won't see it as a threat)) - - - added Far Stike as a level one spell (the other spells were very - overpowered (distortion weapons are gross and dangerous, using - that code as "balanced" is wrong unless you're bringing over the - danger as well... all three of warp attacks were also range 1, which - is silly for Warpers, who should be world-class plinkers, not close - combat munchkins). It's a much limited spell that allows the player - to "hit" a monster in LOS (yes, that means like striking/airstrike - so it's not really another magic missle) with their weapon - (limits being: no magical special effects, no enchantment bonus, - slow to cast (weapon swing is part of it, but it's also a spell - so it will never take less than 10), max damage limited by - translocation skill and weapon, with strength bonus/penalty - applied, can be resisted (maybe change this to evaded?)). This - should probably be the only translocation combat spell... let them - go elsewhere for strong offensive. - - - made it so that blink will at least teleport the player to a square - two squares away (makes blink a bit more usable, because it removes - the annoying "I could have walked here" feelings). - - - added Swap, which allows the player to swap places with an - adjacent monster. Isn't really that abusable as it uses the - same swap code that's used for friendly monsters and that - doesn't currently have insta-kill potential... that can be - fixed later, but right now I'm calling it a "feature". Should - it be fixed, this spell could be changes to give a higher resist - and in insta-kill situations the monster could be allowed to - "scatter" to any of the immediate surrounding squares as a - save against death (player could get this too). - - - added Apportation, a simple utility spell that will move light - objects to the player - - - added Evocation a high level teleport surrounding monsters - away spell (even if resisted the monster still might be blinked) - - -- fixed BUG: nagas gaining breathe fire mutation (twice in this case) seem - to lose the spit poison ability - - -- made it so that MULTIUSER will look for ~/.crawlrc (Un*x-type standard) - -- pain, disrupt, far strike do a minimum of 1pt of damage to make up - for the monsters saving throw (that 1pt is only really good early - on when the character can use it to help stay alive, later on it - means almost nothing... so it helps out begining characters, and - makes the fact that the spell is going to be resisted fairly often - at those levels a little less painful). - -- made sure stabbing had a point of starting damage (it's silly to apply - multipliers to zero or negative damage). - -- returned "Toxins" to "Envenomations" - -- spider form now makes spell casting slightly more difficult. - -- changes "book of Assassinations" to "book of Stalking" (less confusing) - -- fix for "buggy helmets"... normal helmets with item_dam == 0 were not - being handled in the code (before they defaulted to nothing)... might - still exist, but should be rarer (there is a chance that the high - values of item_dam also occur). - -- fix for "buggy potions"... potions ids were being generated in a wider - range than there was descriptive words. - -- lowered the magic resistance of the really low level monster to allow - first level characters to deal with them better. - -- enums for item_descriptions - -- enums for monster bands - -- added enums for monster spell templates (still need to be applied) - -- fixed enchant_monster() so that slow and haste will work through it. - -- changed player_fast_run() into player_movement_speed() and got rid - of ATTR_WALK_SLOWLY as well... player_movement_speed() returns the - movement rate so it's no longer "have running == 6". - -- modified swap_monsters to handle habitats. - -- tweaked failure rate for Trog Haste (which was in with the other haste - and using Invocations). - -- power level caps for spells (checks for most spells to verify that - the effect is limited in some way as protection against potential - extremely high power casting). Adjustments to spell damages/to-hit - to work with the lower caps (that the play will run up against). - -- added wizard command for filling up skill experience pool - - 29.july.2000 (Jesse Jones) - - * Changed NUM_SPELL_TYPES to 14 (from 32767!). - * Misc very minor CodeWarrior tweaks. - * Moved the source files into a new "Source" directory. - * Switched to using bounds checked array classes for most arrays. - * Fixed several places that were indexing past the end of arrays. - * Renamed environ::sh_x, sh_y, sh_greed, sh_type, and sh_level so they start with shop. - * Renamed MNG NON_MONSTER, MNST MAX_MONSTERS, ITEMS MAX_ITEMS, ING NON_ITEM, - CLOUDS MAX_CLOUDS, CNG EMPTY_CLOUD, and NTRAPS MAX_TRAPS. - * Fixed end_game so that it works with filenames longer than 6 characters. - * Disabled USE_WARPER_BETTER_WEAPON. - * Fixed misspelled "jewelry". - * Removed SPELL_SWARM from the Book of Summonings. - * Added Josh's "pick appropriate conjuration spellbook" code. - * Added Gordon's Manticore fix. - * Added the lnchType fix to the monster throw code. - * Added Gordon's revised title changes. - -28.july.2000 (Gordon Lipford) - - all changes are GPL'd by Gordon Lipford (c) 2000 - in the event that the original Crawl license is found to be non-GPL, - special permission to use the changes with Crawl is hereby granted. - - Bug Fixes: - * Manticores will now use their spikes. They weren't being given any - inventory in place_monster(), and then the throwing routine checked - for inventory before letting them throw.. - * Player::level_change(): fixed up hit point penalty for halfings and - gnomes (incomplete coding of HP adjustment). Rewrote hp and mp gained - due to level so that it couldn't happen again. - * item_use::wield_weapon(): smoothed out Translocator 'save' vs distortion - effects when wielding/unwielding. - * smoothed out hp bonus for fighting skill (in integer math, always - divide _last_). - * enchant weapon scrolls will affect missiles now (no branding though), - if they aren't already heavily enchanted - same as weapons. - - Changes: - * Completely reworked throwing for players _and_ monsters. Monsters are - not nearly as good as players for the most part, but can still be - rather scary. Hit Dice are (approximately) substituted for player skill, - and monsters of high intelligence are much better shots now. - - targeting any missile weapon benefits from high dex and throwing skill. - In fact, effective bow/xbow/sling skill is limited to twice one's - throwing. A warning is given on the skills screen if this limit is - hampering the player. - - darts, slings, and crossbows are easy to use. Bows and thrown weapons - are harder, but bows improve a _lot_ with skill. - - thrown weapons generally suck, but not horribly badly - they're still - useful in a pinch if you have decent strength and throwing skill. - - Strength has a different effect on the damage done from missiles: - - Slings and bows benefit from strength, up to a point determined by - the launcher's magical damage bonus. The launcher damage bonus is - _not_ added into the damage calculation. - - Thrown weapons benefit directly from strength, albeit at a lower rate. - - Crossbows do not benefit from strength at all. - - Crossbows benefit directly from magical launcher damage bonuses. - - * changed some of the class titles - * updated display_mutations() so that more than 20 mutations will - cause a -more- prompt and screen clear. - -28.july.2000 (Michal Valvoda) - - Changes in mutations::void display_mutations(void) - - added innate abilities and weirdness to "Mutations & Other weirdness" - screen and renamed it to "Innate abilities, weirdness & mutations". - Innate abilities are colored LIGHTBLUE - - -22.july.2000 (Josh Fishman) - - all changes are GPL'd by Josh Fishman (c) 2000 - in the event that the original Crawl license is found to be non-GPL, - special permission to use the changes with Crawl is hereby granted. - - * AppHdr.h: - added #defines: - - USE_SKILL_POOL_DRAIN - - comment out to remove LRH's old skill-pool drain code, which makes the - xp-pool drain faster when it is very full - - USE_WARPER_BETTER_WEAPON - USE_WARPER_SPELL_BEND - - start warpers with a {dagger/quarterstaff} of Distortion, or with the - spell Bend, depending on which is commented out. the former is - particularly evil for ogre-mages, since their default weapon can't dissect. - - * abl-show.cc: - - Changed some `you breathe foo's to `you exhale foo's. - - Made transformation, species & mutation breath weapons mutually exclusive - (so a naga with the `breathe flame' mutation can't spit poison). THIS IS - NOT TOTALLY DONE, but somewhat better than before. - - + Added failure probabilities for some (not yet used) Invocations. - - * beam.cc: - - + Added BEAM_LAVA for player spell Bolt of Magma - + N.B.: in some places hellfire and lava were conflated; I tried to - separate them, but may have introduced bugs. - - - * describe.cc: - - + Many changes to monster descriptions. - + Chunk-of-flesh description now depends on your race, but not enough. - For example, carnivores ought to like non-rotten meat. - + Spell descriptions: - - added Bolt of Magma - - changed Freeze, Sleep and Mass Sleep to reflect new `Slow Snakes' code - - Shadow Creatures has old description, to reflect its school - - Summon Large Mammal -> Call Canine Familiar - + Some changes to god descriptions - - - * dungeon.cc: - - + Fixed "Entering..." bug (line 7215 or so) - - - * it_use2.cc: - - + Added ZAP_MAGMA (for Bolt of Magma) - + Fixed POT_MIGHT effect - - - * it_use3.cc: - - + Fixed staff_spell() (wasn't letting player pick first spell sometimes). - + STAFF_SMITING no longer gives you a one-choice menu, it just does it. - + Non-Spell Staves no longer say "This staff has no spells in it." when - (I)nvoked, they say "Nothing appears to happen.". - + Less abusive message for putting on non-jewellery (with free spelling - error!) - + Jewellery messages now feature "put on" in some places where "wear" was. - - * mon-data.h: - - + Added flags M_COLD_BLOOD and M_WARM_BLOOD where IMO appropriate. - - - * mon-pick.cc: - - + Removed MONS_RAKSHASA_FAKE from generateable monster lists. - + Added Wargs, Wolves and Bears to generateable monster lists. - - Wargs in Orc Mines - - Wolves & Bears in the Lair - + Moved mon_entry[] from within function to outside; made init code - into its own function. - - - * monstuff.cc: - - + Monster wounds messages: mon HPs left: was 1/4-1/3 => "horribly", now 1/6-1/3 - + (Glowing) Shapeshifters are no longer allowed to use Mage and Priest - special powers, but still get their shape's physical abilities. So a - shapeshifter in the form of an orc priest can't smite you, but one in - dragon form could breathe fire. - + Some spelling & grammar fixes to mon_speaks; MUCH MORE WORK NEEDED HERE! - - - * newgame.cc: - - + Implemented USE_WARPER_BETTER_WEAPON and USE_WARPER_SPELL_BEND - - + Stalkers: - - skills: no more THROWING or DARTS, now SPELLCASTING and ENCHANTMENTS - - book: Book of Assassination - + Draconians: - - No longer allowed to be Enchanters -- they so suck at Enchantments - - ... but now allowed to be Transmuters, since they're good at Transmigrations - + Kobolds now allowed to be Death Knights. - + Halflings now allowed to be Crusaders. - + Removed strange random 1st level spell code -- now always give players the - 1st spell in their spell-books. - - - * player.cc: - - + Players transformed into Dragons and Air now protected from poison - (as monsters of those types are immune). - + Players transformed into Air no longer get air-magic boost, but still do - get earth-magic penalty. - + Centaurs and Spriggans don't lose their fast-running w/ BLADE_HANDS any more. - - - * religion.cc: - - + simple_god_message() simplified - + Reduced number of colors in god_speaks(). - + Changed some gain/lose piety messages to reflect what power was gained/lost. - + Changed penence messages to reflect that gods don't summon, they send. - - - * skills.cc: - - + Sludge Elves now bad at Enchantments, good at Transmigrations, worse - at all forms of Elemental Magic (was experimental, not sure if it - was discussed on crawl-dev). FIXME: change back? - - - * spell.cc: - - + Added SPELL_BOLT_OF_MAGMA. - + Spell type code now uses bitfields. - - - * spells.cc: - - + Spell type code now uses bitfields. - - - * spells2.cc: - - + Weapon branding code now works (brand_weapon()). - - er, except for what may be a bug at the end: `power << 1' => `power * 2' - + Ozocubu's Refrigeration and Freeze can now slow cold-blooded creatures. - + summon_things now correctly pluralizes. - - - * spells4.cc: - - + Added case TRAN_AIR to your_hand(). - + apply_area_one_neighboring_square() no longer gives unlimited trys. - + cast_summon_large_mammal() no longer generates hogs or sheep, now just - Jackals, Hounds and War Dogs. - + cast_sticks_to_snakes() gives MONS_SNAKE for low-level large object snakes - (as opposed to MONS_BROWN_SNAKEs). - + sleep_monsters() is now only called from hibernation-spells: - - Now cold resistance negates. - - `Slow Snakes' (cold blood => may be slowed as well as put to sleep) - + Fragmentation & Shatter: - - Statues and magic traps no longer destroyed - + Shuggoth Seeds: seed now requires MH_NORMAL, warm-blooded host - - - * spl-book.cc: - - + Books of Minor Magic changed, hopefully for the better! - - BoMM-II man still need some help; Ozocubu's Armour replacement? - + Book of Flames loses BOLT_OF_FIRE, gains BOLT_OF_MAGMA - + Book of Frost gains SLEEP, loses FREEZING_CLOUD - + Book of Ice gets MASS_SLEEP and FREEZING_CLOUD - + Changes to Enchantment books - + New Book of Assassination - + spellbook_template() copying loop used to count from 1 to SPELLBOOK_SIZE, - I made it count from 0 (to fix the "can't-get-to-first-spell-in-staff" bug). - - - * spl-data.h: - - + Spell structure now has one field for "level" (instead of 3 identical ones). - + Spell schools are now encoded as bits in an unsigned int instead of in a - special structure. - + Some spells moved back to their old schools (from my (bad) recent changes). - - - * spl-util.h & spl-util.cc: - - + Changes to use new, simple spell structure. - - - * view.cc: - - + Removed "if (do_updates) mpr("Stealth checks...");" from DEBUG builds - (it's too annoying). - + Enum'd monster noises. - - -21.jun.2000 (Michal Valvoda) - Changes: - monstuff.cc - - completely reworked mons_speak routine - - removed silence check required to call mons_speak (line 749) - - lowered chance to speak to one_chance_in (7) (line 749) - describe.cc - - added many new monster descriptions (deep elves, unique monsters - like Sigmund, Terence etc., killer bee larva ...) - - changed some existing descriptions - made them more detailed - - in case of some "smell" message add MUMMY check - - -19.jun.2000 (Gordon Lipford) - Changes: - - * replaced old losight() function with new one. It doesn't quite - match the old one, but it's close enough. - * externalized setLOSRadius() and added normal_vision and current_vision - fields to the player structure. We have variable light sources, voila! - - - Note that using a radius of 0 screws up map memory and looks really dumb. - I am not going to try to fix this. - - In a similar vein, bumping into something should draw it on the map - if you didn't know it was there already (ie you fumble blindly into a - wall). I'm not going to do this either. :) - - * changed all level 1 'handle' references to level 2 'FILE *' for better - portability. Whenever a function needs a File Descriptor, I have - substituted fileno(handle) for just 'handle'. - * added Windows 32 bit Console support. Screen redraws, loading, saving, - and highscore updates are now VERY fast on Windows machines, even playing - from a shared network drive. The NT DOS VDM, at least, was !@$#* crap. - - -17.mar.2000 [Josh Fishman] - - Bug Fixes: - - * ability.cc: ABIL_BREATHE_FIRE gained power if player had MUT_SPIT_POISON - -- changed to bonus if player has MUT_BREATHE_FIRE - * beam.cc: poison_monster: fixed so TSO only gets pissed if it's YOUR - poison (my broken code had him angry if ANY poisoning occured) - * spells.cc: changed many miscast messages to passive "You are caught in" - (rather than "You conjure up") because miscast_effect is called for all - sorts of stuff (particularly divine punishments). - - - Structural Changes: - - * moved much spellbook code to new file, spellbook.cc - * removed a host of DUR_ entries; replaced with - DUR_WEAPON_BRAND - * cast_selective_amnesia(bool): was (void); bool used to determine if - failure (and memory loss) is allowed. Sif Muna's invocation guarentees - success. - - New Functions: - - * Confined to spells4.cc - - -17.03.2000 [Don Brodale] - - BugFixes: - - * damage taken by player (misc.cc) for CLOUD_MIASMA was wrong -- - operator precedence at fault; - * SPWPN_FROST changed to RING_SUSTAIN_ABILITIES in - player::player_sust_abil() for EQ_LEFT_RING conditional (noted by - Jukka); - * misc::itrap() MI_AXE -> WPN_HAND_AXE and mstuff2::mons_trap() - MI_SPEAR -> WPN_SPEAR, MI_AXE -> WPN_HAND_AXE to fix inappropriate - item generation (noted by Brent); - * newgame::new_game() stairs to Hall of Blades now - "you.branch_stairs[STAIRS_VAULT] + 4" not - "you.branch_stairs[STAIRS_CRYPT] + 4" to fix overmap inconsistency - described by Jukko and confirmed by Linley; - * dungeon::items() recoded to fix generation of skill manuals of - SK_GREAT_SWORDS but not of SK_POISON_MAGIC and SK_INVOCATIONS - (noted by Brent); - * MS_STING was cased in mstuff2 to be BEAM_FIRE causing it to set - scrolls afire (noted by ) -- changed to - BEAM_POISON, as it should have been all along; - * CMD_LIST_WEAPONS in acr::input() '(' -> ')' (noted by Brent); - * CMD_LIST_WEAPONS in liblinux::init_key_to_command() '(' -> ')' to - match above change; and - * half a bugfix: in food::eat_meat() Amulet of the Gourmand no - longer renders contaminated or poisonous flesh clean -- now have - to apply the other half enabling eating of rotten food as though - it were [presumably] underlying corpse effect type. - - Structural Alterations: - - * commented many many of the header files -- need to comment and - check rest, but can we keep these up to date, please?; - * cleared out all tabs (some 500+ of them); - * *massive* checking of function declarations in most of the source - files and resulting clean-up of #includes and *.cc versus *.h - declaration -- too many to list here, if anyone wants to see it, - let me know; - * #ifdef/#defn protection added to overmap.h, preventing multiple - inclusions; - * version.h -- BUILD_DATE advanced to "17 mar 2000" and VERSION - changed to "3.40pr30"; - * standardized ordering of #includes atop files, alphabetized last - set of #includes within each file, removed of duplicate entries - where found; - * duplicate #includes for message.h removed from files already - #include-ing externs.h (which in turn #includes message.h); - * removed setting you.redraw_hunger to 1 immediately prior or after - calls to food::food_change(), as the function sets this value - itself; and - * replaced (here and there) the sum of "n calls to random2(a)" with - "random2avg( (n*(a-1))+1, n )" -- for low values of n, - distribution of returned value is analogous and this approach - offers option to tweak distribution of value returned, too. - - New Functions: - - * food::can_ingest() added and inserted where appropriate -- option - to suppress message included in case we want to tie routine to - inventory list command to display whether something is edible by - player. - - Changes to Existing Functions: - - * message added for change in burden state *to* unencumbered -- - don't know why there wasn't one in the first place, but actual - message may require tweaking - * acr.cc variable newc changed from type int to char to match value - returned from newgame::new_game() - * monplace::create_monster() automatic variable "int pets" removed - -- didn't do anything except sit there and retain zero valuation - * effects::lose_stat() recoded to use STAT_RANDOM (see below) - * food::food_change() coding simplified as it was really far more - complex than it had to be and confused, to boot - * food::is_carnivore() removed -- replaced by food::can_ingest() - (see above) - * food::eat_from_floor() automatic variable "int gloggj" removed, - all it held was returned value of eating(), but was never used - * mutation.cc redundant codings replaced with calls to - player::increase_stats() -- look for the comments: nulled-out - gain/loss message strings for mutations affected by change - * spells0::undead_can_memorize() -> undead_cannot_memorize() and - recoded for more reasonable usage, to permit restriction of - certain spells solely to the dead, and to allow the 'true' undead - to use spells that the 'hungry' dead cannot (not possible before), - etc. - * view::losight() variables see, see_section, and behind are now - bool and not (int / short int / char) -- some clean-up called for - but I wasn't up for it - * barehand_butcher added to food::butchery() to clarify coding - * spells1::cast_fire_storm() variable summd its association with - monster_place() removed - * player::how_hungered() recoded so as to avoid need for goto: - statement -- the accursed goto - * standardized (to some extent) the way in which mons_lev.cc f(x)'s - are coded - * mutation::perma_mutate() rewritten for clarity, taking advantage - of left-right evaluation of && conjoined conditionals - * effects::recharge_wand() clean-up / clarified - * spells1::cast_revivification() clarified a little bit - * monstuff:mons_in_cloud() cleaned-up, optimized, and enumerated -- - no longer relies on (env.cloud_type[cl] % 100) - * view::cloud_grid() cleaned-up - * ouch::lose_level() lost some code that simply called random2() to - no particular end - * mons_lev::mons_level_abyss() -> mons_lev::mons_abyss(), to be more - in line with mons_pan() as both simply check whether a monster - "belongs" - * functions that now return bool instead of char: - + effects::forget_spell(); - + effects::lose_stat(); - + effects::recharge_wand(); - + fight::monsters_fight(); - + food::butchery(); - + food::eat_from_floor(); - + misc::scramble(); - + mons_lev::mons_level_abyss(); - + monstuff::curse_an_item(); - + monstuff::mons_speaks(); - + mstruct::mons_pan(); - + mutation::delete_mutation(); - + mutation::give_bad_mutation(); - + mutation::give_good_mutation(); - + mutation::mutation(); - + mutation::perma_mutate(); - + player::you_resist_magic(); - + transfor::can_equip(); - + transfor::transform(); and - + monplace::empty_surrounds(). - * functions that now return bool instead of int: - + transfor::remove_equipment(); - + monstuff::wounded_damaged() -- this may have to change if we - add more types of monster hurt than wounded and damaged; - + dungeon::treasure_area(); and - + view::check_awaken(). - * functions that now return unsigned char instead of int: - + player::player_energy(); - + player::player_fast_run(); - + player::player_spec_air(); - + player::player_spec_cold(); - + player::player_spec_conj(); - + player::player_spec_death(); - + player::player_spec_earth(); - + player::player_spec_ench(); - + player::player_spec_fire(); - + player::player_spec_holy(); - + player::player_spec_poison(); - + player::player_spec_summ(); and - + player::player_sust_abil(). - * spells2::burn_freeze() now returns char instead of int; - * dungeon::place_monster() parameter "char allow_bands" changed to - "bool allow_bands" to clarify how this parameter is, in fact, - used; - * dungeon::place_monster() parameter "int type_place" - changed/renamed to "bool is_summoning" to clarify how this - parameter is, in fact, used; - * dungeon::spotty_level() takes bool instead of char for first and - third parameters (seeded and boxy); - * food::eating() returns void instead of int -- always returned 0 - and the returned value never used elsewhere; - * food::ghoul_eat_flesh() takes bool instead of char for only - parameter; - * item_use::wield_weapon() takes bool instead of char for only - parameter; - * misc::dart_trap() takes bool instead of int for first parameter; - * misc::down_stairs() takes bool instead of char for first - parameter; - * misc::fall_into_a_pool() takes bool instead of char for first - parameter; - * misc::handle_traps() takes bool instead of char for third - parameter; - * monplace::empty_surrounds() takes bool instead of char for fourth - parameter; - * monplace::mons_place() parameter "int type_place" changed/renamed - to "bool is_summoning" to clarify how this parameter is, in fact, - used; - * mstuff2::monster_abjuration() takes bool instead of char for - second parameter; - * mstuff2:monster_teleport() takes bool instead of char for second - parameter; - * player::increase_stats() takes unsigned char instead of char for - only parameter, extended to handle random stat boost; - * spells1::ice_armour() takes bool instead of char for second - parameter; and - * spells3::dancing_weapon() takes bool instead of char for second - parameter. - - Enumerations and Defines: - - * MONS_MOLLUSC_LORD (255) added to enum MONSTERS -- deprecated but - still referenced; - * NUM_WANDS added; - * STAT_RANDOM and NUM_STATS added; - * NUM_DURATIONS added and kept at 30 (rather than true value) - because setting it lower (I think) would cause savefile - compatibility problems -- not fully useful unless we wish to break - savefile compatibility; - * MI_AXE (9) and MI_SPEAR (11) removed from enum MISSILES (see - above); - * enum MAP_SECTIONS added for dungeon.cc / maps.cc interaction -- - not fond of how maps are applied, so this may be temporary; - * enum MONSTER_CATEGORIES and mstruct::monster_category() added to - clarify certain conditional tests and keep comparison on - MONS_foobar to equality or inequality for ranges -- this will be - expanded and attached to similar entries in m_list.h (I ran outta - time!); - * enum CORPSE_EFFECTS added -- members mimic C_foo #defines and add - a few new ones and another for rotting [see food::eat_meat()] -- - again, I ran outta time to extend application; - * misc::in_a_cloud() fully enumerated out, no longer relies on - switch (env.cloud_type[cl] % 100); and - * much more general enumeration across codebase. - - -06.03.2000 [Brent Ross] - - * removed strength loss from berserk penalty (acr.cc); - * added Trog code to berserk (fight.cc, acr.cc); - * reverted Berserkers and Paladins to their original weapons/skills - -- actually, Paladins changed to sabres on Linley's suggestion - (newgame.cc); - * removed learning from stave combat (fight.cc); - * made vorpal weapons less common, other egos more common? - (dungeon.cc); - * changes to makefile.sol; - * increased armour penalty for spellcasting, lowered the reduction - to penalty for armour skill (spells0.cc); - * armour changes: elven armour is better for spellcasting, dwarven - armour for AC from skill -- for everyone (player.cc, spells0.cc); - * paralysis leaves player easier to hit (player.cc); - * reduced Xom's prayer reponse rate (religion.cc); - * added penance and gift timeouts for gods (files.cc, extern.h, - religion.cc, newgame.cc, ability.cc): - + divine_retribution() (religion.cc, decks.cc, spells.cc); and - + added god_speaks() so that the other gods can use colourful - text. - * indented code; - * improved the demonspawn AC mutations by boosting the number of - levels for the lower ones; - * extended spellbooks to 8 spells maximum ... restored levitation to - Air, removed "Summon Elemental" from Ice (their "elemental" is - really an Ice Beast, not benefitting from summoning Water - Elementals); and - * added Confusing Touch as a first level spell for enchanters and - Sure Blade as a second level spell -- removed wand and gave them - some enchanted darts. - - -23.02.2000 [Don Brodale] - - BugFixes: - - * implemented Linley-suggested bugfix in misc.cc:down_stairs() to - fix "Abyss bug" that was actually a/the "Pandemonium bug"; - * copied over new makefile.sol posted by bwross; - * typo in dungeon.cc limited weapon given to elven mage-types to - whips and sabres *only*; - * item descriptions added to itemname.cc for BOOK_PARTY_TRICKS and - BOOK_CANTRIPS (jmf/bcr forgot to do so?); - * spells2::summon_elemental() would create sleeping elementals when - summoned hostile to spellcaster; and - * spells2::summon_things() -- apparent reversal of - MONS_ABOMINATION_SMALL and MONS_ABOMINATION_LARGE [jdf flagged it - first] fixed by correcting improper enumeration (see below). - - Gameplay Changes: - - * stalkers, assassins, and venom mages begin the game with knowlege - of Poison Potions (c.f., Paladins/Healers possessing knowledge of - Healing Potions). - - Structural Alterations: - - * externs.h now #includes enum.h -- already de facto standard, now - openly the case; - * moved files not directly related to current build into subfolder - labeled "misc"; - * moved files removed from or "left behind" by the current build - into subfolder labeled "unused"; - * proper #includes for decks.cc now in place; - * redundant #include defines.h in invent.cc and mstruct.cc removed, - already #include'd by externs.h; - * changed some formulas resembling "menv[bk].type = - MONS_ABOMINATION_SMALL + (random2(2)) * 26;" to conditional on - coinflip(); and - * flipped many conditional clause orderings to place function calls - last to take advantage of short-circuit logic. - - New Functions: - - * stuff::coin_flip() to replace random2() when desired result is - simply true or false -- does not use rand() or random() for return - value, getting around "iffy" rand() implementations for low order - bits (from *Numerical Recipies in C*); - * stuff::one_chance_in() to clarify conditionals like ".. && - random2(foo) == 0 .." -- !one_chance_in() more intuitive than - !random2(), too; - * stuff::stepdown_value() to replace [and generalize] repeated - conditional chains in spells2.cc; - * stuff::table_lookup() to randomly return a value from an unbounded - value list and associated probabilities; and - * food::is_carnivore() to handle set conditional evaluation in - food.cc and itemuse.cc. - - Changes to Existing Functions: - - * item_name::initial() -> item_name::clear_ids() to clarify what - task this function performs; - * extended random22() to accept any number of 'dice' for averaging, - renamed to random2avg(); - * extended random40() to accept any limit, renamed random2limit(); - * "fixed" item_use::drink_fountain(); - * "fixed" spells2::cast_twisted() a bit -- needs more fixing still; - * nested [in place of stacked] strings of conditional statements in - player::you_resist_magic(), beam::check_monster_magres(), - skills2::clac_ep() to eliminate needless value checking; - * changed create_monster() call in spells2::summon_butter() to - duration 22 [from 21] to match other summoning spells; - * altered staff description routine in describe.cc to prepend "This - staff"; - * dungeon::box_room() optimized for efficiency -- lopsided odds for - placement of one (and only one) additional door reflects original - algorithm [I cannot explain why it should be this way]; - * dungeon::city_level() clarified and optimized; - * dungeon::place_shops() optimized a bit; - * dungeon::plan_4() optimized a bit -- removed variable boxy_type, - as it was useless; - * dungeon::prepare_swamp() optimized slightly; - * dungeon::generate_abyss() logic clarified; - * it_use2::zappy() -- changed func_pass[5] for ZAP_ICE_STORM to - BEAM_ICE (23) from BEAM_COLD (3) in accordance with comment and - spell description; - * shopping::shop_getch() removed entirely and replaced by - stuff:get_ch() -- differed only in that the former returned char - and the latter unsigned char [variable ft in shopping::in_a_shop() - changed to unsigned char as a result]; - * spell::surge_power() -- replaced successive tests with one complex - conditional to reduce number of tests required; - * spells2::summon_swarm() cleaned-up to make creature selection - clearer; added giant mosquito; red wasp -> wolf spider - [reversion]; killer bee larvae -> scorpion [as commented]; - * spells2::summon_undead() cleaned-up by replacing successive - conditional calls to rand2() with one switch call to rand2() per - loop-through -- if odds look funny, it represents evaluation of - original coding; - * removed double assignment of numsc from spells2.cc:summon_swarm() - and spells2.cc:summon_undead(); - * newgame::class_allowed() cases now uniformly list >disallowed< - species for all classes [except hunter]; - * newgame.cc:init_player() -- eliminated redundant you.level_type - initialization, general clean-up; - * recoded describe::describe_potion() and describe::describe_food() - to handle redundant wordings -- more cases involved, but fewer - textual chunks duplicated; - * functions that now return bool instead of int: - dungeon::place_specific_trap(), fight::jelly_divide(), - spells::which_spellbook(), and spells0::spell_type(); - * functions that now return bool instead of char: - item_use::drink_fountain(), monstuff::random_near_space(), - player::wearing_amulet(), spells::learn_a_spell(), - misc::go_berserk(), spells2::brand_weapon(), and stuff::see_grd(); - * invent::invent() is now takes bool instead of char for second - parameter; - * overmap::print_level_name() now returns bool and takes bool as - third parameter, which also means that already_printed is now type - bool, too; - * player::player_see_invis() now returns unsigned char instead of - int; and - * spells3::you_teleport2() now takes bool instead of char. - - Changes to Variables: - - * nulled out Great Swords array entries in skills2.cc -- no longer - used; - * uncommented the last four entries to the skills[][] array and - deleted the fourth -- entries now match size of array as declared - elsewhere; - * converted some integer constants (foo = 59) to single-quoted - characters (foo = ';') where appropriate; and - * int item_sacr in religion::altar_prayer() deleted, as it was - unused; - - Changes to In-Game Messages and Textual Elements: - - * VERSION set to "3.40pr" so people know this is not the final - release; - * BUILD_DATE set to "23 Feb 2000" -- I think we should use month - abbreviation to avoid numerical confusion; - * minor tweaking of messages relating to undead players; - * special statue transformation message for gnomes added; - * grammatical clean-up and rewording of all spell descriptions in - describe.cc -- all checked, some changed a little; - * "book of Useful Magic" -> "book of Practical Magic"; - * "book of Poisonings" -> "Young Poisoner's Handbook" (movie - reference); - * "book of Envenomations" -> "book of Toxins"; - * "book of Storms and Fire" -> "book of the Tempests"; - * "Anita" ->"Snorg" within its m_list.h entry; - * "Sneaker" -> "Sneak" for stealthy types (did one become an old - tennis shoe?); - * "Assassin" -> "Blackguard" for stabbing to avoid confusion with - character class; - * "Thief" -> "Covert" for stealthy types to avoid confusion with - character class; - * "Axe Maniac" -> "Halberdier" for polearms -- category includes - more than axes, so this is a better fit and avoids repetition of - another "top level" skill name; - * "Bombardier" -> "Flinger" for slings, as it is more descriptive of - a slinger's actions; - * "Crazy Person" -> "Whirler" and "Really Crazy Person" -> "Crazy - Person" for slings -- the joke still remains, but some dignity is - restored to slingers everywhere; and - * "Igniter" -> "Firebug" and "Burner" -> "Arsonist" for Fire Magic. - - Enumerations and Defines: - - * COLORS #define applied to numerical values still present in - m_list.h; - * COLOR #defines applied to it_use2::zappy() for ZAPs not switched - over from value numbers; - * COLOR #defines applied to remaining codebase, where I could find - references still using numerical values -- I think I overdid it a - bit and need to go back and fix a particular set of replacements; - * #define NO_MUT (in mutations.cc) replaced by last member in - MUTATIONS: NUM_MUTATIONS; - * #define NO_EQUIP replaced by last member in EQUIPMENT enum: - NUM_EQUIP; - * removed #defines (and references to them) for Tome of Destruction - and Manuals in dungeon.cc -- superceded by BOOKS; - * replaced 501 with ING where appropriate -- only scattered - instances of bare 501's left in the source code; - * MLAVAfoo and MWATERbar #defines restricted to use only in certain - header files [m_list.h monsstat.h newmonst.h], with the exception - of MLAVA4 used in monstuff.cc (what is it?) -- I'll clean these up - later, but other than this, they are no longer used in the - remainder of the codebase; - * CLOUD_ENERGY -> CLOUD_PURP_SMOKE; - * CLOUD_STICKY_FLAME -> CLOUD_BLACK_SMOKE; - * MONS_SMALL_ABOMINATION -> MONS_ABOMINATION_LARGE and - MONS_LARGE_ABOMINATION -> MONS_ABOMINATION_SMALL -- mistakenly - reversed in enum sometime before; - * MONS_ANITA -> MONS_SNORG -- regenerates and described as being a - hairy troll, so must be Snorg; - * MONS_FAKE_RAKSHASA -> MONS_RAKSHASA_FAKE; - * MONS_SMALL_ZOMBIE -> MONS_ZOMBIE_SMALL; - * MONS_BIG_ZOMBIE -> MONS_ZOMBIE_LARGE; - * MS_SUMMON_LESSER_DEMON -> MS_SUMMON_DEMON_LESSER -- I like - hierarchies; - * MS_SUMMON_DEMON_1 -> MS_SUMMON_DEMON_GREATER -- _1 too similar to - _I = potential typos; - * MS_GERYON -> MS_SUMMON_BEAST -- more descriptive of actual - function; - * MS_SLOW_DUP -> MS_CONFUSE -- what it is according to - monstuff.cc:handle_wand() - removed deprecate comment from enum.h; - * NWPN_VAMPIRE_S_TOOTH -> NWPN_VAMPIRES_TOOTH -- just too awkward as - it was; - * added BURDEN_STATES -- applied to you.burden_state; - * added DEMON_CLASS -- applied throughout; - * added HUNGER_STATES -- applied to you.hunger_state; - * added SPELLBOOK_CONTENTS -- applied throughout; - * added UNDEAD_STATES -- applied to you.is_undead; - * added SHOPS -- applied to env.sh_type[]; - * expanded CLOUD_TYPES: _SMOKEs, _MIASMA, _DEBUGGING, and most _MONS - variations; - * expanded DUNGEON FEATURES to include elements 208,209,210 (Dry - Fountains VII and VIII and the PermaDry(tm) Fountain, - respectively); - * expanded OBJECT_CLASSES to include OBJ_GEMSTONES; - * expanded SYMBOLS to include SYM_DEBUG; - * expanded ZAPS to include added ZAP_ISKS_CROSS -- current use - commented out in zappy(); and - * mass enum'ing all over the codebase -- you name it, I tried to - enumerate it. - - -10.01.2000 [Brian Robinson] - - * From Josh Fishman: - + lots of enumming, mostly spells; - + Paladins get a long sword and long sword skill to start; - + Spriggans may now be stalkers; - + poisoning something already poisoned gives extra naughty; - + more powerful staves added; - + armour skill no longer affects penalty to spellcasting for - wearing armor; - + summon small mammals spell improved; and - + Vehumet will protect against spell failures and preserve - intelligence. - * large characters receive a smaller spellcasting penalty for - bearing large shields; - * easy crawl bug in wizard mode fixed; - * wiz commands for controlled blink and create up staircase added; - * wiz help fixed so that all wiz commands now have help; - * subspecies selection in newgame.cc changed to prevent duplication - of information -- see the newgame.cc for details; - * Ogre berserkers now start with Club skill level 3 and Maces skill - level 1 -- the reverse of all other races, because they begin with - clubs rather than axes; - * Troll berserkers start with Unarmed skill level 3 and Dodging - skill level 2, but no weapon skills -- because they start without - weapons; - * Halflings may now be assassins and warpers; and - * Thieves start with more gold: random2(10) * 6 + random2(10) * 4. - - -30.12.1999 [Brian Robinson] - - * linuxlib.* axed - * versions.txt updated to reflect new release - * version and build date #defines in version.h updated - * a little more explanatory info added to init.txt - * some completed tasks eliminated from todo.txt and bugs.txt - * disclaimer added to this file - - -27.12.1999 [Linley Henzell] - - * USE_NEW_RANDOM tuned to reasonable pace when an FP coprocessor is - absent - * many minor tweaks - - -09.12.1999 [Linley Henzell] - - * new berserk code works with ctrl+direction attacks - * savefiles deleted after death (under DOS, at least) - * xp no longer awarded for killing creatures created friendly - * a few new low-level monsters - * new init.txt options: - + colour-code play-screen map, like the 'X' map - + remove monsters and clouds from map - * horned characters can wear caps and hats - * class names switched back into lower case (where appropriate) - * informed when a monster's enchantments wear off (if in view) - * more information provided when looking at a monster - * monsters no longer cast animate dead when corpses aren't in sight - * most abilities can be used while hungry (not starving) - * monster invisibility can now wear off (it couldn't before) - * deflect/repel missiles enchantments now affect missile traps - * dexterity affects shield use - * monster AI improvements: - + strong monsters only pick up missiles if already carrying - some - + some improvements made to monster path-finding - * USE_NEW_RANDOM rand() removed -- randart code relies on random() - * ghosts deal 2/3 as much damage; xp value reduced - - -18.11.1999 [Daniel Ligon] - - * shop prices right-justified - * yellow Xom patch fixed - * Xom will sometimes answer prayers - * evasion strengthened - * killed-by list enumerated; added "killed by an exploding spore" - * many calls to 'random() % x' replaced with 'random2(x)' - * calls to random3() and random4() eliminated - * Makhleb's minor destruction toned down - * amulets placed in the discovery listing - * beginning spells fixed for kobold summoners - * invisible undead referred to as "it" - * Spriggan assassins permitted -- speed/low food requirements - (Spriggan) greatly complement hand crossbow (assassin) - - -15.10.1999 [Brian Robinson] - - * can acquire() food: royal jellies given to non-ghouls; royal - jellies or chunks to ghouls (attempted a variety of foods; proved - too big a pain) - * '#define XOM_ACTS_YELLOW' added to AppHdr.h - * acr.cc:srand() added for USE_NEW_RANDOM to work properly - - -14.10.1999 [Brian Robinson] - - * fixed: problem where some super-long strings in describe.cc got - cut up, causing a compiler error (where possible, please try to - keep lines < 80 characters) - * describe_god() enumerated in describe.cc - * makefile.sgi option added to Makefile (doesn't work) - * fixed bugs culled from bugs.txt - * EasyCrawl(tm) door opening: walking into door opens it, running - into door opens the door and stops player - * GOD_NO_GOD case added to describe.cc:describe_religion() (it was - an acr.cc special case, but that's gone now) - * '#include ' added to fight.cc and spells2.cc because both - call sprintf() (would compile/link properly without it under Linux - but not DOS) - * makefiles .dos, .emx, and .sol tweaked - - -12.10.1999 [Brian Robinson] - - * version string changed to "3.40" and '#define BUILD_DATE' added to - version.h for output alongside version number - * '#define USE_NEW_RANDOM' added to AppHdr.h - * duplicate/completed items removed from todo.txt (may have missed - some -- only cut those marked "done") - * inspect item command (in shops) changed to 'v' - * contents of oldmakefiles directory archived as oldmake.zip - * make distclean now deletes *.sav, *.lab, core, and *.0* (DOS and - Linux) - * fixed: some class names in newgame.cc were not capitalized - * new random number generator added -- should be a little better - than old RNG; uses rand() rather than random() to generate number - (#define USE_NEW_RANDOM to enable) - * wizmode fixes: - + some creatures (e.g., necrophage) reduce max_hp (NAB: - reduction to zero normally means death) -- in wizmode, - negative max_hp results, triggering "you died, but its okay" - message every turn; added "you.max_hp = abs(you.max_hp)" to - the 'h' wizard command to correct negative max_hp - + stethoscope unmapped from 's' key -- terribly annoying for - me, since I can't rest with '5' under Linux (can still - stethoscope by targetting or looking) - + WIZARD compiled binaries append "Wiz" to any scores they - generate - + help screen added, accessed by keying in '&' then '?' (lists - wizard commands in a fashion similar to normal help screen) - + bugfix: Daniel's command code blocked wizard command - * Daniel's patches: - + '#define XOM_ACTS_YELLOW' to render Xom's messages in yellow - + bugfix: Abyss crash bug - + new wizmode commands: "banish" and "Xom acts" - * 'v' and 'V' commands swapped -- examining an item seemed more - likely (to me) than version check, so "examine" now lowercased - * wizard option added to Makefile (same as debug but includes - -DWIZARD) - * weapons of reaching used to attack one monster behind another may - instead hit the monster inbetween - * giant races penalized less for using large shields; normal-sized - monsters may be penalized slightly more, but only by one or so - * debug.cc:error_message_to_player() added to output: - "You have encountered a program bug. - Please exit the level and save." - (previous instances of this message replaced with calls to this - function) - * haste and slow counters in acr.cc changed to take into account - amulet of resist slow: haste subtracts random2(2) each turn - (rather than one -- which could have led to infinite haste, but - let's not worry about that) and slow subtracts five (one - previously) each turn - - -02.10.1999 [Brian Robinson] - - * help screen reformatted to spot entries more readily (at a - glance); added "more" capability so that [command summaries > - screen size] prompt user for more, preventing screen overflow - * amulet of maintain speed changed to the amulet of resist slowness: - old item description mentioned both resist slow and a speed bonus, - but the code only implemented resist slow -- wearing the amulet - now grants +10 to any hasting and also to maximum possible hasting - * some silly messages involving hasting and slowing changed - * messages indicating spell-casting failure added to the raise dead - functions, but I'm not sure they work (coding very confused here; - may only work some of the time) - * '#ifdef LINUX'-ed the acr.cc code [lines 663 - 676] which uses - variables declared in another '#ifdef LINUX' block (something may - be screwed up because I'm not sure what's going on here) - - -29.09.1999 [Brian Robinson] - - * highscore() fixed so that it doesn't take so long - * scores output padded with some whitespace to improve appearance - * bugfix for 'a' being in scores (see bugs.txt and ouch.cc) - * comments added to enum.h showing where unique monsters are - * first argument removed from view.cc:draw_border() (same value - always passed) - * bugfix: player's score not always saved - * some problems with the new makefiles noticed while compiling under - DOS: any platform with its own library (e.g., liblinux) should be - +='ed to OBJECTS in appropriate system-specific makefile - * Makefile: noopt (no optimization) added to allow me to compile - under DOS without headaches - - -28.09.1999 [Daniel Ligon] - - * linuxlib.* renamed to liblinux.* - * keypad for ncurses (Linux port) enabled - * liblinux.cc:kbhit() will always return 0 - * big lookup table added to liblinux.cc to convert keypresses into - commands - * enumerated commands added to both enum.h and big switch statement - in acr.cc - * Brian's makefiles added - - -24.09.1999 [Brent Ross] - - * bugfix for evasion - * macro.cc:getch_mul() reverted - * red devils have probablistic chance for (trident|demon trident|no - weapon) - * demon tridents correctly coloured - * xp spending cap/MAX_SPENDING_LIMIT - * broad axe, spiked flail, and great flail less common - * floating point operations in update_corpses() reduced - * all demonspawn scales/plates can be given at one or two levels - * max_hp ceiling displayed when player's max_hp reduced - * from Linley: - + portal fixed so that it doesn't go below level 27 - + fixed checks for translocating in the Abyss - + added fix for going to Pandemonium or the Abyss from Hell - + note about using '+' for targeting added to various prompts - + ghosts fade away only if they have fewer than half their hp - - -12.09.1999 [Linley Henzell] - - * "Over-map" added - * messages can be coloured -- just call set_colour() before mpr() - * wild magic effects do more harm; increased likelihood of higher - levels of effect - * blink may not work and teleport takes longer in the Abyss - * a few unrandarts tweaked - * rewrote part of dungeon.cc weapon generation function; added - weapon rarity function - * some monsters receive a wider range of weapons - * many high-powered demons have greater speeds - * several changes to skills.cc; having many xp in the pool increases - the cost of exercising - * threshold values increased for special "you hit" messages and some - grammar patched -- see fight.cc - * three 'silly' monsters removed: dorgi, sword, and guardian robot - * haste has a direct effect on time_taken, rather than being treated - separately -- see player_speed() - * boots of levitation allow permanent hovering - * random events in Hell are much nastier - * clouds can be overwritten by other clouds, sometimes -- see - place_cloud() - * monster mutation spell affects monsters as polymorph - * new init.txt variable [verbose] determines level of detail about - randarts and other magical items in character dump - * monsters can cast 'direct' spells (e.g., smiting) over other - monsters if targeting player - * giants given the correct number of rocks - - -09.09.1999 [Brent Ross] - - * damage lowered for some new weapons; tridents made heavier - * some changes from Dustin Ragan added to the newgame screens - * spellcasting reduced by weapon size [weight and/or speed] - * from Linley: - + verified helmet/helm colour initialisation to LIGHTCYAN - + swapping item letters outputs both items affected - + '=' fixed to '==' in randart.cc line 1515 - + bugfix: more scrolling problem under DOS - + bugfix: problem with the ctrl-direction keys under DOS - + subspecies selection made into compile time option - + horns mutation removed as a possibility for minotaurs - * Great Swords skill removed -- great swords/triple swords treated - as long swords - * Trolls + troll leather changed to no effect - * gdbm stuff removed -- makes things simpler; better security can - wait for new savefile implementation - * hand-and-a-half weapons: - + no bonus if weapon is cursed - + 1-1/2 hand weapons don't get the speed bonus past 10 - + two-handed weapons can get as fast as speed 7 with skill - + +random2(3) to hit - + +random2(3) to dam [all two-handed weapons] applied after - skill multipliers (i.e., with the dwarf and orc modifiers) - * multiple shield blocks in a turn becomes increasingly difficult - * fighters get dodging or armour skills on basis of starting armour - * shields and large shields slow down attacks - - -27.08.1999 [Brent Ross] - - * character dump includes '*' for level 27 skills - * removing the "skill_change /= 2" line from spell skills was a bit - hard on early spellcasters (it seems reasonable to give to - low-level characters and phase out by mid-game, when it isn't - needed) - * bugfix: "Crush" required conjurations (hold over from Throw - Pebble) - * bugfix: having 1 xp in the pool permitted a lot of free practising - * penalty increased for heavy armour, now more in line with the new - shield penalty (are these values high enough?) - * Linley's new weapon suggestions added: axe, spiked flail, great - mace, great flail - * damage increased for some maces and flails (swords are quick and - accurate, maces and flails hit harder) - * "Boots" changed to "Barding" in centaur/naga equipment lists - * crystal plate mail somewhat resistant to corrosion - * +/- markers added to skills screen for benefit of monochrome - displays - * bugfix: labyrinth problems - * bugfix: LOS corner problem - * bugfix: can now make with -DWIZARD - * spellcasting/invocation interference removed - * weapon additions: broad axe [rare, 15, +3, 17], trident [9, -2, - 16], and demon trident [evil -- wielded by red devils: 15, -2, 16] - * polearms/whips of reaching added - * gladiators given choice of starting with trident - * '#define USE_NEW_BERSERK' removed - * bugfix: incorrect display of barding AC value - * quite a bit of cleanup (converting ints to enums in the old code) - * draconian AC gains clean-up; removed level four increase and gave - two AC at start - * knife added; guaranteed on the first three levels - * bugfix: memorizing spells was impossible on some terminals - - -08.08.1999 [Brent Ross] - - * bugfix: Orange Brains could hang game (MS_SUMMON_LEVEL spell in - Abyss) - * bugfix: monsters should no longer occur "under" the player - * bugfix: portals weren't closed on way out, but hell gates were - removed (now all are closed) - * bugfix: cannot unlearn spells outside the array bounds - * bugfix: manuals should auto-identify on the first read - * bugfix: Healing book was available from acquirement/Sif Muna - * missile launchers no longer train/use associated skill when used - as melee weapons (bows/xbows will train/use maces/flails, slings - use no skill) - * Zot traps will no longer message their effects on monsters unless - monster within LOS - * bugfix: liquid flame could wrap around and last a long time - * bugfix: whatever caused "program bugs" to occur in the Abyss - * bugfix: number of cards in Decks of Power defaulted to 0 and thus - gave 255 cards - * Nemelex fixed to give cards instead of Bone Lanterns and Geryon - Horns - * bugfix: food was not updating with cards - * bugfix: quick blades were getting free actions - * spell points update when Invocations gained - * granularity of skill gain upped to reduce "stage three": - + number of learns from manuals upped to accommodate - + monster xp values reduced to limit "stage two" effect - * power of smiting again reduced (seems reasonable now) - * teleport control restrictions (some areas will not allow - controlled teleport) - * runes may be stacked - * invocations and spellcasting learning interfere with one another - (like elemental magic) - * increased rate of skill cost per level - * removed division by two for cost of spellcasting skills - * greater rarity for unique artefacts (all seem to enter quickly - into any game, except the Sword of Power, for which the 50% chance - against creation probably kept it out of my last game for a while) - * evasion/shields were too good: - + shield blocking difficulty raised a bit (from base 10 to 15) - + player's evasion rolled in the monster to-hit check (so that - a player with an EV of 30+ can still be hit)... added a 1/15 - chance of hitting regardless (players already got this - advantage). - * *.h guards moved to after the headers (cosmetic) - - -30.07.1999 [Brent Ross] - - * bugfix: visiting Abyss from Hall of Blades resulted in an Abyss - populated by blades - * bugfix: problems with highscore entries running off end of the - line - * electrical and poison resistances no longer absolute -- 1/3 damage - taken on successful resist (still no poisoning for those with - poison resistance) - * storm dragon breath can be resisted - * draining will drain available xp pool, too - * spell levels moved to a function to prevent amassing a large - number of negative spells (forgot spell that didn't exist) - * spellcasting more difficult to get - * bugfix: plants stalking stairs - * dragon armours reverted to original values -- resistances and - benefits given are good enough (basic heavy armours were the ones - in real need of improvement) - * bugfix: distortion weapons (from Jesse) - * bugfix: deflect missiles status wasn't listed on '@' - * slime pit runes are only "possible" runes -- unlikely to get four - of them now - * stats added to "elf" dummy monster to allow elf zombies to live - * added redraw after projected noise - * bugfix: objects (runes, orb) were clobbered by items given to - monsters. - * monster descriptions with huge gaps in them were fixed - * bugfix: shapeshifters shouldn't polymorph into dancing blades - (numbers for names) - * acquirement() better than before for jewelry - * skills screen can handle more than 26 skills - * levels of poisoning shown for '@' - * traps more difficult to disarm as dungeon level increases - * traps might trigger during attempts to disarm - * all traps handled by handle_traps() - * are the new traps too hard on monsters? (probably yes, so they - take old damage amounts for now) - * player_light_armour() added, which returns true if the player is - in light or no armour - * bugfix: non-flying monsters were flying over traps - * polymorphed monsters not much of an easy xp trick anymore - * xp calculation takes into account a monster's speed - * plant learning capped (no more than first two levels of fighting - skills) - * some support added for explosions destroying potions/food on - ground are only the correct things being destroyed? -- check - bang.cc and destroy_item() - * wearing heavy armour provides a minium percentage of damage - reduction: - + percent = (skill + base AC of body armour) - + still needs application to monsters, but monsters don't - convieniently know whether they possess hard armour (let - alone armour skill) so this can probably wait - * extra protection from shrapnel attacks provided by heavy armour - only - - -13.07.1999 [Brent Ross] - - * entrance to the Labyrinth blocked until debugged - * wizmode code in acr.cc fixed; changed some commands to more easily - remembered letters; added an identify - * fixed some cases where cursed jewelry plusses are assumed to be - based off 100 (creation code and many other cases suggest that - it's 150) - * random weapons, armour, and jewelry from acquirement() are now - uncursed - * demonspawn horns smoothed out so it's possible to get two levels - * ranger changed to hunter - * some gmon_use values changed (from Linley) - * life protection descriptions changed - * hunger_inc and ATTR_LIGHTNING_RESIST moved to functions in - player() -- the attribute is now replaced with - ATTR_DIVINE_LIGHTNING_PROTECTION (used to denote Makleb or Xom - protecting player from a lightning attack) - * checks added for the curses keypad enums - * learning curve for throwing skill lowered - * hand crossbows reduced in power - * learning curve for traps and doors skill lowered - * played with spellcasting staff identification - * player ghosts fixed: - + monsters regenerate hp while player is off level - + ghosts regenerate and teleport away when player leaves the - level - * assassins changed from ninja to hand crossbow types; given - enchanted dagger as well to help hand-to-hand - * throwing exercise added to darts, hand axes, daggers, and spears; - throwing skill bonus added for them, as well -- see item_use.cc - * scythes, halberds, and glaives given a chance to be weapons of - speed - - -07.07.1999 [Brent Ross] - - * breath from ice-breathing dragons won't destroy walls - * life protection now a (level/3) chance - * bugfix: the 120/150 hp ghost thing - * anticheat code and security db added for multiuser systems - (requires gdbm) - * only picking up items has associated delay with autopickup, - walking over uninteresting stacks shouldn't cost any extra time - * berserk players fail the check_awaken() test with monsters and do - not spend experience on stealth - * dexterity added to stealth - * ogre magi given short swords instead of daggers - * stabbing stun effect toned down - * stabbing dex bonus toned down -- now limited by stabbing - * assassins start with a dagger; thieves start with short sword and - dagger - * stat mods reversed for thief and assassin; assassins given unarmed - combat - * wizard stat mods changed to +7 int/+3 dex, making them smarter - than other spellcasters - * draconian rangers no longer start with leather armour - * stealth toned down a bit (and again) in player.cc:check_stealth() - * to-hit reduced for throw fire/frost and sting -- see - it_use2.cc:zappy() - * bugfix: repel/deflect missiles problem -- changed bad REPEL - reference in acr.cc - * message added to unwielding vampiric weapons - * new keypad support hacked up for Unix - * shots used up 1 in 3 times - * bonus for crossbows' to hit and dam (item_use.cc) - * magic resistance for elves (player.cc) - * autopickup delay upped to 3 (one and two seem to be no delay at - all) - * opposing elemental staves can be identified (items.cc, spell.cc) - * zipfile removal added to ouch.cc to prevent cheating - * bugfix: view.cc STABBING check should be STEALTH for the no-yell - check; lowered to a straight percentage check - * Dwarven/Orc rangers given Dodging 1 (they were a bit short on - skills) - * HOrs get orcish bolts (newgame.cc) -- added MISSILES check in - HILL_ORC check - * gladiator/fighter modifications: (newgame.cc) - + fighters: skills -- fighting 3, weapon 2, dodging/armour 2, - shields 2, stabbing/stealth 1, throwing 2; stats -- str +7, - dex +3 - + kobold/troll/ogre fighters: same as before - + gladiators: skills -- fighting 3, weapon 3, dodging/armour 2, - shields 1, unarmed combat 2; stats -- str +6, dex +4 - + comparision to previous values: - o fighters: lost unarmed combat; +1 shields and +1 - throwing - o gladiators: -1 dodging/armour and -1 shield; +2 unarmed - combat - o stat bonuses swapped - o armor for gladiator/fighter switched - - -22.06.1999 [Brent Ross] - - * new ranger weapon variations (halfling slingers, dwarven - crossbowers) - * Ranger/Reaver problem fixed -- 'R'angers are now 'r'angers (so - capital letter R used only once) - * stealth improvements: - + monsters don't yell (2 * skill) % of the time -- see - view.cc:monster_grid() - + large races lose *2 modifier, small races receive *5/2 -- see - player.cc:check_stealth() - o Huge (x1): Troll, Ogre, Ogre Mage, Centaur - o Awkward (x3/2): Minotaur, Draconians - o Normal (x2): Everyone else - o Small (x5/2): Halfling, Gnome, Kobold, Spriggan, Naga - (Naga's aren't small, but they're good) - + BEH_CHASING_I set for sleeping monsters who are stabbed - + now a (skill + dex)% chance of stabbing fleeing or confused - monsters -- see fight.cc - + backstab effectiveness depends on the monsters behaviour: - o sleeping monsters are easy targets -- lots of damage - potential - o fleeing and confused monsters -- not as much damage - potential - o other cases have even less damage potential - + backstabbing more effective for daggers: daggers add dex/3 - damage before the multipliers -- see fight.cc - * fight.cc:monster_dies() modified so that *any* summoned creature - killed by player/pet won't call done_good() - + Elivion/TSO/Zin have to be passed through (not a problem - because they can't abuse summoning, anyway) - + this could use a better fix (i.e., tracking who summoned - which monsters would help a lot) - * (Linley's suggestion) monster polymorph fixed to avoid NO_EXP - monsters: added "mons_flag(targetc, M_NO_EXP_GAIN)" to do-while - loop - * (Jesse's suggestion) teleport control/blink spell combo removed: - CONTROL_TELEPORT check removed from random_blink() - * racial bonus added to worn armour in player_AC() - * patched hunger status display bug: added food_change() and redraw - to down_stairs - - -17.06.1999 [Brian Robinson] - - Note: I've tried to annotate all my changes in the code with my - initials [BCR] so you can grep for them to find my changes. - - * some small cleanup here and there - * new makefile written for Linux - * changes to the make process which should spare us future - headaches: - + OS_TYPE variable in the makefile that is automatically made - into a #define during make process (should make it easy to - keep the makefiles straight on the OS) - + moved OBJECTS variable containing the list of the *.o files - to a file called make.obj which is included into the makefile - (should save a little space and keep all makefiles consistent - on object requirements) - * defines.h indented and added a header - * some newgame.cc oddness fixed: various system dependent name - checks were all messed up in a bunch of nested #ifdef stuff - (sorted it out) - * '#define MACROS' now does something: if defined, macros.h and - macros.cc files will be used, otherwise they won't (right now, - Crawl will not work correctly under Linux with MACROS defined -- - see bugs.txt) - - -14.06.1999 [Brent Ross] - - Some changes I added from Linley: - - * bugfix for the Geryon bug - * message added for berserkers chopping up corpses in rage - * some incorrect enums in it_use3.cc (for Asmodeus's staff) changed - * demonspawn xp penalty lowered to 140% - * Elyvilon sacrifice code fixed to limit abuse - * priest.cc and priest.h renamed to abyss.* - * spellcasting penalties for wearing shields upped to +5/+15/+30 - from +0/+5/+15 [buckler/shield/large shield] - * random stat increase added for Draconians - - -13.06.1999 [Brent Ross] - - * Spriggans fully separated from the giant races, creating a - separate block for tiny races in the armour wearing code - * cursed rings identify themselves as "sticky cursed" when put on - * weapon slot updates if player eats food that is being wielded - * bugfix: black and grey scales reversed for demonspawn (with - regards to number of levels gained) - * for spells1.cc, blink() and random_blink(): weapons check removed - because scan_randarts should be only requirement - * bugfix: teleport control now works properly on blink (dependent on - order of includes and target compiler/system) - * #ifndef checking added around all *.h files to avoid problems - similar to those above - * full spell listing line added to character dumps - * creaky doors are [DEX + (Stealth + Traps) / 2] checks; check added - on closing doors, as well - * base values of heavy armour upped by 1 or 2 points - * spells3.cc:you_teleport() was another case of only checking the - weapon slot for a property (hopefully, I've changed all these into - scan_randarts) - * mutation.cc:demonspawn() had MUT_FAST twice; changed the second to - MUT_SHOCK_RESISTANCE (as the comment claimed) - * strength damage bonus had an ugly discrete nature to it; - multiplied the dammod values by 6 to get a smoother version of the - same function - * bugfix: screen needed to be refreshed after spell slot changes - * new equipment listing commands: - + ')' lists current, swap a, swap b, and default 'f'ire weapons - + ']' lists worn armour - + '"' lists worn jewelry (NB: '=' already used elsewhere) - * bugfix: "shoot_skill = you.skills[SK_THROWING]" in item_use.cc was - wrong (should clearly be CROSSBOWS when using a crossbow) - * bugfix: handle_traps in misc() used env.trap_known instead of - trap_known (env.trap_known doesn't seem to be referenced anywhere - else) - * bugfix: Vehumet's gift was still not quite correct - * magical staves detection: staves may be detected over time or - whenever appropriate magic is cast, depending on skill levels - * Call Imp raised to a level three spell (too powerful for level - two) - * a little checking code added to dungeon.cc for monster armour - plusses - * bugfix: more line was misplaced on the recognized item screen - * mix of my/DML's improvements applied to the temp file purging - system - - -02.06.1999 [David Loewenstern] - - * Makefile.dos added - * define.h updated for compatibility with DJGPP - * items.cc, monstuff.cc, mstuff2.cc, and spells.cc cleaned up - (mostly corrected misassignments, unsigned<->signed, unused vars, - etc.) - * enums added to monstuff.cc, mstuff2.cc, beam.cc - * enum.h updated as per above - * autopickup added - * '&' command functions only in debug mode - * remove_ring() now uses inventory letter - * fight.cc features more colourful "hits" (should be useful later to - differentiate weapons) - * bugfix: displaying top scores when no scorefile previously had - existed - - -30.05.1999 [Jesse Jones] - - * highscore() will print more scores on larger windows - * worn cloaks no longer prevents wearing or removing body armor - * worn armor can be dropped if it's uncursed - * armor can be worn without removing the old armor - * missing ponderous armor message added - * from Brent: - + bugfix: weapon line didn't always redraw after casting Blade - Hands - + detect_items() uses '~' instead of '*' - + char_dump.cc dumps failure rates - * wear_armour() changed to allow Spriggans to wear bucklers - * quit only pops up save changes dialog if game_has_started is true - (Mac) - * AppHdr.h replaces config.h - * all *.cc files include their header immediately after the AppHdr - file - - -??.05.1999 [Brent Ross] - - * GNU indent 1.91 [-bad -bli0 -i4 -npcs -npsl] applied to get the - intended BSD indentation style into the code; sorted through some - things indent won't fix (more cleanup needs to be done -- notably, - vertical whitespace and breaking up big lines -- but should be - more readable now; no more column 0 code!) - * various changes to make code work with NUMBER_OF_LINES instead of - 25 - * compile-time option to change default view to non-ibm graphics - * ^R redraw screen command; screen redraws added to appropriate - places - * query added for normal saves (^X doesn't ask) - * ^Y works now; ^Z suspend for Unix systems - * refresh call added to beam.cc so beams are always visible - * various things to deal with multiuser environment: - + compressing save files - + permissions handling - + global lib directory for game files - + changes in name validation and file name structure (added - uid) - * adjust item letter function now swaps items (instead of failing) - * Selective Amnesia spell description is less confusing - * targeting more intuitive for Angband players (t/space accepts - targets), behaves better about canceling spells (added better - abort) - * unarmed combat fixed to the correct amount of time - * bugfix: hunger/noisy wield bug where effects were not removed - * bugfix: air staffs didn't grant resist lightning, yet took it away - (i.e., left the resist with a value of 255, quite good unless you - put on something of resist lightning later) - * rings/wands/scrolls and such output a message when they are - identified by use - * fixed several cases where wielded object changed but the screen - didn't update - * bugfix: a triple level of a demonspawned mutation was never - granted - * patched bug where the inventory is full yet the count is wrong - (this entire thing should be cleaned up) - * curses attributes fixed so that alternate character sets aren't - used under Solaris (this is probably good for any *nix not on a - IBM alternate character set box) - * water and earth elementals fixed for same - * stone lined the finishing room so you can't dig through? - * some rather silly ways of clearing areas of the screen (under - curses) removed; proper curses functions used instead (much - faster) - * bugfix: going up or down stairs would clear the food status - * bugfix: incorrect substitutions of new enums (i.e., "AC += - SP_HIGH_ELF; /* troll */") - * bugfix: stat increases where comment noted "/* str or dex */", but - "str or int" given instead - * Troll's food consumption increased to better balance the race - * Vehumet's gift giving code fixed to actually do what is intended - * experience pool information added to front page - * some of the duplicated titles (traps and doors) changed - * stairs leading out of sub-dungeons changed to '<' character, to - reflect the key required - * portals coloured on the level map; all portals in Pandemonium are - intentionally the same colour - * kobolds receive stat increase every five levels - * bugpatch: Demonspawn sometimes don't receive their mutations - * Armour skill a bit better: get more in combat, a little more - frequently otherwise; EV penalty is now recovered at skill/2 - * Sword of Power reduced in power (now +20 cap, HP/13 - 3) - * creaking doors partially depend on skills (dex + traps + stealth, - with benefits of last two dropping after a total of 10) instead of - simply luck; levitation isn't a sure way to avoid this now - * wield update inserted after reading scroll of recharging - * high score file extended to SCORE_FILE_ENTRIES items (currently, - only the first 15 are ever displayed) - * USE_NEW_BERSERK: - + berserk counter decrements faster when not attacking - (currently using triagular progression) - + butchery is not penalized (in fact, it resets penalty - counter); eating isn't either (no reset, though) - + exhausted counter added to count berserk fatigue - + hopefully this will become part of a new, better standard - berserk - * skills fit onto screen by wrapping the first column (if required) - * bugfix: RAP_PREVENT_TELEPORT and the like didn't do anything - because they checked only the weapon, instead of using - scan_randarts (hopefully, all the cases of this are fixed now) - * bugfix: wield-amulet-that-you're-wearing bug - * redraw for weapon when Blade Hands expires - * #defines: - + CRAWL_NAME -- auto sets player's name - + CRAWL_PIZZA -- string describing player's choice of pizza; - greater likelihood of incidence than others - + USE_BSTRING_H -- handles the bstring.h/string include problem - + NUMBER_OF_RUNES_NEEDED (defaults to 3) -- allows compiled - games to limit entrance to Zot's domain only to those with a - certain number of runes - + USE_CURSES -- for things specific to curses and not just - PLAIN_TERM. - + USE_TCHARS_IOCTL, USE_UNIX_SIGNALS, USE_SELECT_FOR_DELAY -- - to solve various *nix variant problems should people need or - want them - + USE_ASCII_CHARACTERS -- sets the default to non-IBM character - set - + SAVE_DIR_PATH -- useful for setting a global lib directory - for save files, bones files, and the score file - + SHARED_FILES_CHMOD_VAL -- useful with SAVE_DIR_PATH on - multi-user systems - + SAVE_PACKAGE_CMD, LOAD_UNPACKAGE_CMD, PACKAGE_SUFFIX -- for - people who want to use a program to compress and bundle their - save games when they're not playing (not pretty, but good - enough until we invent a better save file system) - * "(q to drink)" added to fountain description when player steps - over one - * Greater Healings base upped to 50 - * Demonspawn transmuters added - * Spriggans and Halflings consume less food (-1) - * wizard's hats and caps are randomly coloured - * carrying capactiy less dependent upon strength; pulled - carrying_capacity code into a single function (as it's called from - various different places); encumberance levels represent fractions - of carrying capacity instead of earlier constant values - * named artefact weapons slightly rarer; Sword of Power has 1 in 2 - check - - -??.05.1999 [Jesse Jones] - - * bugfix: appeared to be three bugs involving extra semi-colons - * file names can be longer than six characters and can include - spaces - * some debugging macros added - * bugifx: dragon() wasn't handling fire drakes, which meant beam - color was uninitialized. - * getstr() only adds printable characters to the buffer (Mac) - * mons_spells() now returns a struct instead of using an int array - -- affects mstuff2.cc, mstuff.h, and handle_wand() - * mons_near() now returns a bool. I've changed code like - "mons_near(o) == 1" and "mons_near(i) != 0" to "mons_near(o)" and - "!mons_near(i)" - * print_description() no longer indexes past the end of the string. - * minor changes made to the code to allow compilation with the - "require function protypes" warning - * UNUSED template function added to config.h - * rewrote describe.cc and describe.h: - + reformatted - + string objects used in place of hard-coded char arrays - + ten new functions split out from describe_item() - + get_item_description() and is_random_artifact() added - * rewrote chardump.cc - + reformatted - + string objects used - + seven functions split out from dump_char - + dumps artifact info - * reformatted viewwindow2(); added some ASSERTs; split out - get_ibm_symbol() - * reformatted monster() and split out ten(!) new functions - * reformatted mons_spells() and mons_cast(); mons_spells() case 49 - uses RED instead of (bogus) 20 for color - * some ASSERTs added to seekmonster() - * DEBUG renamed to WIZARD - * DEBUG_BUILD renamed to DEBUG - * manage_corpses() renamed to handle_time() - * code changed to use new CORPSE_BODY and CORPSE_SKELETON enums - * struct.h deleted - * player::elapsed_time added (holds the total amount of elapsed time - in the game) - * level and game save routines tweaked to include a variable sized - chunk of extra data - * save level code saves a timestamp; load level code uses timestamp - to update corpses and chunks - * many player struct members renamed - * all of the monsters, item_struct, and ghost_struct members renamed - * comment blocks added to the top of all files - * TRACE debug function added - * you and env are no longer arrays - * bugfix: display_char_status() displayed the wrong message if the - player had magic contamination - * look_around() no longer prints a prompt (so things like blink and - open door no longer prompt "Press '?' for a monster description.") - * show_map() accepts '\r' along with '.' - * Cekugob no longer conveys resistances to fire and cold - * spellbook_contents() prints unknown spells in light blue - * show_map() draws shops in yellow diff --git a/crawl-ref/docs/changes.400 b/crawl-ref/docs/changes.400 deleted file mode 100644 index e5d853b1f0..0000000000 --- a/crawl-ref/docs/changes.400 +++ /dev/null @@ -1,3278 +0,0 @@ -9 August 2001, Michal Valvoda - * Gordon's destroy_item() fix included - * Complete clean-up of dungeon.cc::give_item() + few changes - for example - - Until now was a lot of items colored twice (by give_item() - and by item_colour()) and sometimes differently - - every item goes to right MSLOT-no more MISCELLANY in MSLOT_POTION - - magical items (wands, scrolls, potions) distribution - * repel undead is working again (in turn_undead() was missing call for - behavior_event()) - * added messages for rotting chunks/corpses in player's inventory - * message when Corona wears out + few other new messages - * fixed some (I hope that all) problems with "polymorph other". - As side effect of some solutions - - MONS_HUMAN and MONS_ELF are now valid and fully functional - polymorph targets - - useless MONS_ANOTHER_LAVA_THING was changed to - MONS_SALAMANDER (in case of problem switch it off in dungeon.cc, - yes, there because water and lava monsters are generated differently) - * Renamed MSLOT_UNASIGNED_I to MSLOT_MISCELLANY, added NUM_MISCELLANY - * rewrote misc. object generation to use NUM_MISCELLANY. - Not important for now but I have many new misc. objects I want to include - after release and it will help later. Also new code is much more readable - and easier to modificate. - * inteligent monsters now pick up gold - * added some new unrand artifacts - (ring of Shadows is getting a bit tired :) - * added underground rivers and lakes, - improved water generation - * 3 new compile options - #define USE_NEW_UNRANDS - switches new unrands on - #define USE_RIVERS - switches new underground rivers and lakes on - #define MISSILE_TRAILS_OFF - turns misile trails off. - - not optimal, but works well on - many computers - - defaultly unset - * other minor fixes and updates - * changes.400 updated - - Notes: - ! generation of water and lava monsters isn't very nice, an it would be - fine to change it one day - ! spells in WIZARD mode probably should be cast with some power - - - - - - - -BUGLIST: - - -LEGEND -** outstanding bug; reproduced or definitely needs fixing -xx outstanding bug report; unreproducable, currently unfixable, - or not a candidate for 4.0.0 release -== fixed and released in some form (alpha, beta, etc - see version.h) --- fixed bug, not yet released - - - - -** Various XXX and FIXME comments throughout code from Brent. - -== 1. Casting "Corona" at self shows message "The 0 hits you !" and -hurts you (same for Hibernation, maybe also other spells.) - ->> fixed Corona and Hibernation. Possible that other spells still ->> allow this goofy behavior. - -== 2. Dwarven hunters starts with CYAN leather armor (maybe also -others). It should be BROWN. - -== 3. Missing space in message "You feel verybuoyant !" (same problem -with "You feel morebuoyant !") - -== 4. No message when you quaff potion of restore abilities and nothing -happens. - -> fixed by Brent? - -== 5. Maybe there should be some message when you cast "Static -Discharge" and no monster around. - -== 6. Inscription on "Innate abilities, Weirdness & Mutations" screen -should be centered (my fault). - -== 7. Polymorph and unpolymorph messages are really odd - -e.g. I polymorphed kobold and I got message - "The stone giantThe kobold evaporates and reforms as a stone giant." - -== 8. Empty ebony casket should be DARKGREY and not BLACK. - -== 9. Rare weapons (quick blade, double/triple sword etc.) aren't as -rare as they should be. - -> line 2006 in dungeon.cc should be 1+random(10) <= rarity - -== 11. Missing space in "Elyvilondemands penance!". Of course, same -problem with other gods. - -== 12. 2 messages when wearing crystal armor about that it's too -cumbersome - -== 13. map under DOS is working bad - each next line is shifted by one -character -LRH - At line 1810 of view.cc, in the map function, there is a -for loop involved in printing the map. At present it's -for (i = 0; i < 79; i ++);. To work under DOS, the 79 should -be 80, otherwise the map is skewed to the left and looks -very ugly. - -== 14. stoneskin isn't working - if you look at cast_stoneskin() zou -will see it does nothing with AC - -> I have a fix for this - basically remove the 'else' before the -> transformation-AC-adjustment switch in player.cc::{player}_AC(). - -> There's another "bug" there, too, which is that the corresponding -> 'if' ought to include '|| you.attr[ATTR_TRANSFORMATION] = -TRAN_BLADE_HANDS'. - -== 15. Saw "a buggy helmet" - "a buggy orange potion" - "a buggy red potion" - -== 16. Buggy targeting - can't hit monsters in LOS. Could fix.. both - for throwing and beaming? - -== 17. A hill Orc Chaos Knight (Zom) started with 14/15 hit points. !? - -== 20.One more thing that needs cleaning: the new invisible monster code. - You don't get a message when your missile hits a monster, but you - *do* get a message when your missile *misses* an invisible monster. - IMO if we do make invisible monsters harder to detect than they - were, we ought to make these (absent) messages exactly opposite: - no message for miss, yes message for hit. - - -xx 21. wearing Troll Hide, read unknown scroll, ASSERT(index < SIZE) in - FixVec fails, abortion, core. - -== 22. Amulet of Rage isn't auto-identified when put on, but ability is - visible in 'A' menu. - -== 23. torment_monsters in spells4.cc asserts like crazy. It should have a line -like: - if (mon != NON_MONSTER) { - -> fixed again; player wasn't getting hit. Not adding magic resist. - - -== 24. In dungeon.cc there's a huge function called builder() with some code at - the bottom that looks like this: - - if ( you.where_are_you == BRANCH_HALL_OF_BLADES ) - { - for (bi = 1; bi < GXM; bj++) - for (bj = 1; bj < GYM; bi++) - if ( grd[bi][bj] >= DNGN_STONE_STAIRS_DOWN_I && grd[bi][bj] -<= DNGN_ROCK_STAIRS_UP ) - grd[bi][bj] = DNGN_FLOOR; - } - - The increment in the for loops should be swapped. - -== 25. A backtrace does indeed reveal the problem. From line 2432 of - monstuff.cc: - - for (count_x = 0; count_x < 3; count_x++) - for (count_y = 0; count_y < 3; count_y++) - { - good_move[count_x][count_y] = true; - -... - - if ( grd[monster->x + count_x - 1][monster->y + count_y - 1] < okmove ) - { - good_move[count_x][count_y] = false; - continue; - } - - There's a monster at (39, 69), the above loop references (38,70). - -== 26. This line - - unsigned char grik = grd[monster->x + mmov_x][monster->y + mmov_y]; - - from monstuff.cc around line 2730 is also causing an ASSERT failure. - - GDL: in fact, there are a bunch of places in monstuff.cc where fleeing - or confused monsters can try to "run off the map", apart from the - 'good move' checking in bug 25 above. - - -== 27. monsters equipped with missile weapons - commonly associated with launchers who - insist on tossing the missiles by hand. - -== 28.About line 909 of monstuff.cc is - - if ( show[monster->x - you.x_pos + 6][monster->y - you.y_pos + 6] ) - - The electric eel is at (48,36), I'm at (55,32), so we're indexing (-1,10). - The array show is 19x19, and I'm thinking the +6 should be +9. - - There's a similar construct for lava snakes a little further up. - -== 29. An indexing error in item_use.cc, line 3092 or so, after reading a scroll - of enchant armour while not wearing body armour. - - you.inv_type[you.equip[EQ_BODY_ARMOUR]] is inspected even though - you.equip[EQ_BODY_ARMOUR] is -1. - - - do - { - affected = 1 + random2(6); - } - while ( you.equip[affected] == -1 ); - - // NOTE: It is assumed that armour which changes in this way - // does not change - // into a form of armour with a different evasion modifier. - - if ( you.inv_type[you.equip[EQ_BODY_ARMOUR]] == ARM_DRAGON_HIDE - || you.inv_type[you.equip[EQ_BODY_ARMOUR]] == ARM_ICE_DRAGON_HIDE - . - . - . - ) - -== 31. I just disarmed a blade trap, and the game seemed to hang. - -Since TRAP_BLADE are of type DNGN_TRAP_MECHANICAL, this code in misc.cc, -line 1492 or so, tries to make a stack of trap items: - - if ( trap_category(env.trap_type[i]) == DNGN_TRAP_MECHANICAL ) - { - for (j = 0; j < 20; j++) - { - itrap(&beam[0], i); // places items (eg darts), which will automatically stack - - if ( j > 10 && one_chance_in(3) ) - break; - } - } - -But misc::itrap() doesn't create these blades, and instead: - - default: - getch(); - break; - -waits for input. It seems like a very strange default. Ultimately, -you can wait it out by moving back and forth. Then you find a few -questionable item where the trap was. - -== 32. Banishing self to Abyss when you are at Abyss does really - strange effects - ("The 0 hits you !" - I really don't understand why) - Propably it's connected with 0-beams problem - - some spells shows message "The 0 hits you !" when cast at player - I suggest some kind of check whenever is 0-beam casted (e.g. if - its targeted at player then shows message "It's not good idea." - or so) - -== 33. I don't know how it happened but I've found 2 off-screen corridors. - (Btw. I hopped it was fixed) -- Finally, what you've all been waiting for: a fix for the -infamous "corridor off the screen bug" (or at least one of its -aspects). In dungeon.cc in vault_grid(...), add the line -(vgrid == '\0') ? DNGN_ROCK_WALL : -amongst all of the other ones. The problem was that the -vault code was null-terminating some of the lines of the map, -causing the default of DNGN_FLOOR to be put in place of all -the '\0's. - -== 34. Potions, scrolls & wands are not updated when wielded and used. - -== 35. I've already reported this one but I remind that - - When zapping some bolt towards the top of the screen and - gaining level during it the rest of the bolt is drawn at the - bottom of the screen (at message lines) - -== 36. Missing space in message "is recalled." - e.g. "Mummyis recalled." - -== 37. Redundant space in message "You are diseased." - -== 38. Why is "demon whip of flaming" white ? I've found such one. ->> demon weapons are always given random colours. ->> MV: Should not be fixed now. - -== 39. "Summon Daeva" spell summons Angel. - Why ? "Daeva" exists and it's possible - to summon it during summon_ice_beast_etc() - -== 40. At fight.cc::monster_die() is line - ( you.religion == GOD_VEHUMET - && (!player_under_penance() - && random2(you.piety) >= 20) ) - There should be 30 and not 20, because piety equal to 30 is limit - for this ability (see religion.cc). - -== 41. It was mentioned already but - - Descriptive messages like - "It's lightly enchanted to do more damage." - can never appear because of badly placed brackets - {} - in describe.cc::describe_weapon() - Program gets on line - if ( item_dam >= NWPN_SINGING_SWORD ) - and if this fails the programs continues on the line - int spec_ench = item_dam % 30; - and it means it can't get to messages about enchantment. - - Or am I missing something ? - -== 42.In monstuff.cc::mons_speaks() is few times used sprintf() insteed - of strcat(), e.g. - - sprintf(info, " %s \"Help!\"", - coinflip() ? "yells" : "wails"); - - Problem is that in the begining _info_ contains name of the monster - but sprintf() deletes it. It means that output is - e.g. " yells "Help!"" instead of "Sigmund yells "Help!"" - -== 43. Which compile time options will be made standard? What are the the - appropriate defaults for the config file (set in initfile.cc)? These - have to be laid out before the release. - -SEPARATE_SELECTION_SCREENS_FOR_SUBSPECIES I vote no on this one. Could be made into an initfile or command - line option if people really want it, but there just aren't enough - subspecies to justify it. -ALLOW_DRACONIAN_TYPE_SELECTION This one is typically considered "cheating". Part of the fun of - being draconian is finding out what you actually are. -USE_ELVISH_GLAMOUR_ABILITY Haven't really tried out glamour. The grey elf or two I've played - that has had it has never really successfully used it. -USE_BETTER_MINOR_MAGIC_BOOKS These should be okay now. -USE_NEW_CLOUD_CODE This code is pretty cool, I sometimes wonder about potential - twinkiness at high levels with this in a corridor (where it - could fill quite a stretch reaching more than a half dozen - squares from the center of the effect in a single turn). - Maybe a safeguard should be added to keep the effect within - a certain radius from the target? -USE_SILENCE_CODE I've never been overly fond of silence. I don't like the - way it cancels enemy priests and spellcasters. -USE_HARDER_AC_RULES Things are more sane with is option, unless scaled demonspawn - transformers turn into scaly spiders. -USE_NEW_ALTAR_CODE I liked things a bit more random. I once had orcish mines with - three Ely altars (which I thought was pretty interesting). - Modifying this code so there's at least a chance of an outside - altar would be nice. -USE_NEW_MINIVAULTS These are probably okay. - -USE_GOD_COLOURS We do much worse than this right now with all the channels on. -// > USE_GOD_COLOURS -// Yes. Actually, this option should probably be either removed or replaced with -a USE_MESSAGE_CHANNEL_COLOURS option or some such (gods are just part of -this system now). Brings back to mind the possibility of specifying -non-colour-based highlighting options like "stars", "capitalized", -"indented", and such. Would have to switch from an enum to a bitfield, -and the initfile parser would have to be adjusted, but other than that -it would be simple to do. - -USE_OPTIONAL_WIZARD_DEATH Test option, don't need this. -USE_LIGHTER_MAGIC_ITEMS These are reasonable. -USE_NEW_TORMENT_CODE This is good. -USE_SEMI_CONTROLLED_BLINK It's powerful, but as long as it needs the blink spell and - a separate form of teleport control it's probably okay. - As an all in one spell it's over powered (but that's only - in the code for wizard mode testing right now). -USE_NEW_COMBAT_STATS Not sure these really have much of an effect on anyone's - game. Could be left out. -USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES Not sure about the wanderers. The ranger and spellcaster templates - might just be encouraging people to try and re-roll for twinkiness. - Might be best with just the basic warrior wander type. -USE_SKILL_POOL_DRAIN This one is pretty silly. There's no real reason to punish people - who get a large pool (mostly from killing a large monster or two). - To increase the cost because of that doesn't make much sense, and - the skill cost doesn't need to be made any tighter (it might even - be due for a bit of loosening). -USE_NEW_RANDOM Should be default, the suggestion to reverse it into USE_OLD_RANDOM - is probably good. - -From Michal: -> SEPARATE_SELECTION_SCREENS_FOR_SUBSPECIES -No. -> ALLOW_DRACONIAN_TYPE_SELECTION -No. -> USE_ELVISH_GLAMOUR_ABILITY -Yes. Works fine. -> USE_BETTER_MINOR_MAGIC_BOOKS -Yes. -> USE_NEW_CLOUD_CODE -Yes. -> USE_SILENCE_CODE -> I've never been overly fond of silence. I don't like the -> way it cancels enemy priests and spellcasters. -I don't think so.I vote for this. - -> USE_HARDER_AC_RULES -Yes. -> USE_NEW_ALTAR_CODE -> I liked things a bit more random. I once had orcish mines with -> three Ely altars (which I thought was pretty interesting). -> Modifying this code so there's at least a chance of an outside -> altar would be nice. -Agree -> USE_NEW_MINIVAULTS -Yes. -> USE_GOD_COLOURS -Yes. -> USE_OPTIONAL_WIZARD_DEATH -> Test option, don't need this. -Of course no. -> USE_LIGHTER_MAGIC_ITEMS -Yes. -> USE_NEW_TORMENT_CODE -Yes. -> USE_SEMI_CONTROLLED_BLINK -Yes. -> USE_NEW_COMBAT_STATS -> Not sure these really have much of an effect on anyone's -> game. Could be left out. -I think this one is OK, I vote for. - -> USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES -Yes. -> USE_SKILL_POOL_DRAIN -No. - -xx 44. might want to branch off a version of the source for the next release, - with the unused spells and code cut out (along with some of the - unimporant comments). The full code would naturally still be used - as the development code. - -** 45. documentation (crawl.txt, crawl.6 will probably need some changes) - -== 46. bow messages on skill screen might take up too much real estate - (things are already tight for people on 24 line terminals once they - get all the skills) - -== 47. very noisy gcc --Wall compile (it was bad before, I'm afraid I've - made it worse, it's hard to tell I get a lot of warnings from - curses that have to do with some unimportant system conflicts). - -Oh, in makefile.sol... one of the $(INCLUDES) is spelled INCLUDE - -== 48. giant spores sometimes seg fault when exploding (I added a simple check - for NULL, but that's probably not the problem) - - ugly, ugly, ugly, ugly. But fixed. the problem was that spores - were kind of cleaned up before exploding (so that the death message - wouldn't come twice), but then they fell through to the "handle - special ability" case the next time through the "monster action" loop - and all hell broke loose. - -== 50. look into why you.equip[EQ_WEAPON] (aka weapon) is used in - fight.cc::monster_fight() and monster_attack() (ie. when the - player isn't even involved!) - - > no effect in monster_attack() - > bizarre use in monster_fight() - the - attacking monster gets several attributes of the player's - weapon!!! This is clearly wrong. - > MSLOT_WEAPON was also used in a couple places where hand_use - was required. - -== 51. BUG: no "scores" file == segfault. - -> some pretty nasty bugs in the score file stuff. Cleaned up segfault -> and some ranking bugs. Scores file is now proper text; Crawl can -> still read old scores files. Scores of 0 no longer printed. No more -> segfault on non-existent file. - -xx 52. 'X' (view map) causes core dumps on terminals larger than 64 lines? - -> could not repro on Win32. Tried 65 line terminal, 'X' look no problem. - -== 53. Anyway, up on onelist.com (or egroups.com, whatever) -is an updated mon-spll.h file including the enums for -MST_foo and a couple MS_foo that Brent had missed -in the file ... note that the comments before these lines -in mon-util.cc: - -static unsigned char mspell_list[][7] = { -#include "mon-spll.h" -}; - -are duplicitous of those in mon-spll.h, and can probably -be struck (or vice versa?) ... I had also thought that there -was a MS_foo matching value 100 (the beastly equivalent -of SPELL_NO_SPELL) ... maybe Gordon can add it in? -clear application to mon-spll.h and monstuff::handle_spell(). - - -of course, one could go whole hog and add enum constants -for the "slots" in the template (actually the position *less one* -would be enummed, see handle_spell() and mons_spell_list() -for details) ... - - -these lines in monstuff::handle_spell() can be enummed -with the appropriate MST_foo enum constants: - -int msecc = ((monster->type == MONS_HELLION) ? 30 : - (monster->type == MONS_PANDEMONIUM_DEMON) ? 119 - : monster->number); - -[[ 30 == MST_BURNING_DEVIL, 119 == MST_GHOST ]] - -that 119 value also turns up in mon-until::mons_spell_list() ... but -this gets into "overlap land" because these values are stored in the -sec field of the monster struct, which stores a number of values -unrelated to spell-casting (though I guess applying the template -enum throughout the codebase is one way of sifting out when sec -values are used for one purpose instead of another ...) *ANYWAY* - -== 54.In enum.h -- - -/* these are for the player spell struct, we'll see what's what later -*/ - -#define SPELL_FOOD(x) (x) -#define SPELL_MANA(x) (x) -#define SPELL_LEVEL(x) (x) - - -All of the above can be killed, as the macros are no longer used. - -The SPELL_EXCLUSION enumeration (right below the macro -definitions) can also be killed, as I never implemented it, and in -hindsight, if it is ever to be stuck back into the player spell -data structures, there is a much better way of doing it. So, please -yank these out, before someone gets hurt :P - -So, this bit in spl-util.cc can also be axed: - -/* //jmf: commented out; add field `restriction' to spell struct if desired - // (and if anyone finds a use for such a thing) - int spell_restriction( int which_spell, int which_restriction ) - { - int this_restriction = (int) seekspell(which_spell)->restriction; - return ( this_restriction == which_restriction ); - } // end spell_restriction() - - */ - - -== 55. Minor typo: - -MST_RAKSHAKA - -should be - -MST_RAKSHASA - -so that it matches up with the monster's actual -name throughout the codebase. Nothing major, -but it will require fixing (present in enum.h and -the enummed mon-spll.h I just uploaded). - -== 56. "* * * LOW HITPOINT WARNING * * * - You die..." - - At that point, it's really too late. The warning perhaps - ought to occur at the beginning of the player's turn as - opposed to when the character takes damage. - - I've also seen two warnings in one combat turn ... can't - remember if death accounted for one of them. - -> The problem is that the check is you.hp... it should be (you.hp > 0)... -> I quick-fixed that one while I was trying to get the code out the -> door and missed. - -== 57. Hunger messages don't seem to appear, even if their color is set. - -> Gave general cleanup of food.cc; merged hunger_warning and food_change. -> removed unnecessary modification of hunger status from level save/load, -> fixed up some logic problems. - - -== 59. Lot's of the enums in enum.h have trailing commas, eg - enum CONFIRM_LEVEL - { - CONFIRM_NONE_EASY, - CONFIRM_SAFE_EASY, - CONFIRM_ALL_EASY, - }; -I don't think this is legal in ANSI C. - -> Borland C++ didn't complain with Wall, so it's not a problem. - -== 61. In libmac.cc there's a function called FlashButton. The line that calls -HiliteControl should look like this: - HiliteControl(control, kControlEntireControl); - -== 62. In message.cc mpr's definition includes default arguments. This isn't -legal C++ (only the declaration can have default arguments). The same -applies to random_near_space and simple_monster_message in monstuff.cc, -apply_random_around_player in spells4.cc, and yesno in stuff.cc. - -== 63. monspeak.cc needs to include monspeak.h at the top of the file, not -monstuff.h. - -== 64. overmap.cc includes curses.h, this should be wrapped in #if !macintosh. - -> Acutally it should be wrapped if USE_CURSES is not defined. Which it is now. - -== 65. spl-util.cc should include the standard limits.h instead of the -non-standard values.h and should use INT_MAX instead of MAXINT. - -== 66. The MacStuff directory should be deleted. - -== 67. Very Old Buglet: - Spider Form spell turns one into a black 's', which corresponds - in monsterland to a scorpion, while giving one all the features - of the noble wolf spider, represented by a brown 's'. - -== 68. It's really not that bad. Worse is the fact that I noticed that -breathe fire gives a bonus if the player is transformed (doesn't -matter what: Ice Beast, Blade Hands, or Dragon)... that's a bug. - -== 69. player.cc - If you look at line 2312 you'll see that - redraw_screen () is called. But it's problem under - DOS because redraw_screen() is defined only under - PLAIN_TERM. - See stuff.cc - there is - #ifdef PLAIN_TERM - void redraw_screen( void ); - -> got rid of all of the plain_term() wrappers around redraw_screen. -> instead, redraw_screen() becomes a no-op for non-plain term systems. -> I hate seeing #defines all over (supposedly) non-system dependent code!!! - -== 70. view.cc - at two place there is - - #ifdef DOS_TERM - puttext(2, 1, 34, 17, buffy); - #endif - - Probably it's possible to compile that with some compilers - but not all and corretly it should be - - #ifdef DOS_TERM - puttext(2, 1, 34, 17, buffy.buffer()); - #endif - -== 71. When you cast "Twist" spell and choose direction you'll always get -message -"There is no monster there!" -even if it's not true. If you want to hit monster you have to target -monster by using "*" or "+". At least this spell shouldn't ask for -direction but for target. - -xx 72. After battle with guardian naga character is told he is not carrying anything. - -> don't see how this could happen.. g. nagas can't affect player inventory. -> must have hit a key that tried to use an inv type you didn't have, or num_inv_items -> got out of whack. - -xx 73. Some initial prompts not prompt colour. I'll have to document which. - -== 74. Throwing anything left seems to cause a segfault and core file ... hmmm ... - item_use.cc, line 1294: DUMB BAD CODE! Throwing anything while weilding - nothing results in a crash. Clearly someone plays neither Transmuters nor - Monks. Clearly we need some function to safely get the current weapon. - -== 75. Throwing stuff while weak: I'm of the opinion that things thrown ought - to land at least next to the player, while currently, large things end - up at the player's feet. This annoys me - "I didn't say (d)rop, I said - (t)hrow!". - -> it's a playability issue, especially with large amounts of items and -> autopickup. All thrown objects will go at least 1 square - we'll -> consider a 'throw' of a very heavy object equivalent to 'shove' it. :) - -== 77. line 234 of mon-util.cc ought to be: - "if (mc == MONS_PLAYER_GHOST || mc == MONS_PANDEMONIUM_DEMON)" - but instead it's: - "" - - This will fix the elemental damage problem I was complaining about -- - clearly Linux does not automagically give clean pages. - -== 78. Remove trailing commas in enum.h - -== 79. Stores are still trying to sell me gold pieces, and at extortionary rates. - -== 81. + spells4.cc::418 assert failed: ASSERT( targs[i].x != 0 && targs[i].y != 0 ); - should this be ( targs[i].x || targs[i].y ) ? (YES) - -== 82. if (mons_flag(monster->type, M_SPEAKS) && one_chance_in(21) - && !silenced(monster->x, monster->y)) -{ - mons_speaks(monster); // mv: removed silence check -} - -That check for silence shouldn't be there, because mons_speaks() -handles silence by itself - see monspeak.cc (Btw. I've already removed -this check when I wrote mons_speak(), but somebody have returned -it back *grin* ). - -== 83. However, in a couple places in acr.cc, there is code like this: - - if (grd[you.x_pos][you.y_pos] == DNGN_LAVA - || grd[you.x_pos][you.y_pos] == DNGN_DEEP_WATER) - { - if (you.species == SP_MERFOLK) - { - mpr("You dive into the water and return to your normal form."); - merfolk_start_swimming(); - } - - fall_into_a_pool(true, grd[you.x_pos][you.y_pos]); - } - -== 84. // From: Daniel Ligon -[easy_butcher] -// When I see it happen, I have no weapon in hand and no weapon in the -// "a" slot. After hitting "D" to Dissect, I am prompted for a weapon. -// I can choose a cursed weapon of either known or unknown status and will -// receive a message that the weapon sticks to my hand. In both cases, -// I return to unarmed after butchering - and the weapon is now identified -// as being cursed. - -Okay, then the problem isn't with the original check... all that -needs to be done is make sure that is the target weapon (after the -call to wield_weapon which does all the validating and prompting) -isn't removed if it's cursed. Should be a fairly simple check, -although it has to validate if a weapon is wield first (of course). - -== 85. This seems to be a new bug (can't see an obvious cause)... - Brain Worms seem to have a sticky flame attack now. - -> SOMETHING was(is?) setting mon->number to be equal to mon_type. This -> was setting butterflies (MONS_BUTTERFLY == 66) to have a colour -> of 66, and brain worms (MONS_BRAIN_WORM == 69) to have the -> spell type of MST_MOTTLED_DRAGON (69). Why?? I don't know yet. - ->> turned out to be define_zombie. Random zombies were not getting ->> zombified due to some parameters getting passed incorrectly from mons_place(). ->> all quasi-zombies were getting correct mons->number set but then mon->type ->> was not being set. - -== 86. This appears in player.cc::player_hunger_rate() - - // jmf: hunger isn't fair while you can't eat - // Actually, it is since you can detransform any time you like - bwr - if (you.attribute[ATTR_TRANSFORMATION] == TRAN_AIR) - return 0; - -Some testing reveals that in fact one cannot untransform ("You're too -hungry.") nor even turn visible. If hunger was not meant to preclude -these reversions, there's a bug in the ability code. - - - Josh -I would guess that there is a bug in the ability code wrt -untransform - I have not looked at the code for this in a -while, but the "untransform" ability is likely lumped with -all other abilities in terms of forcing a check of one's -current hunger level before proceeding further into checks -and then (finally) triggering the ability. - -Trivial fix, that is where the bug is: the ability code (98% -certain) - it does not make sense to attach a hunger cost -to detransformation, unless you wanted to curse players -first learning how to transform with costs on both ends -(it takes effort to change shape, effort to change back). - -The latter model of double-ended costs associated with -transformations make sense, but I do not believe this was -the intended model in Crawl. - -xx 87. PS: I was looking through player.cc because a white imp "chilled" my - mummy assassin. Still looking for how that could happen. - -> everything seems to be WAD: -> could have been wearing two rings of fire, or dragon armour, or had a -> randart with cold susceptability. Mummy only gives resist, not immune. - -== 88. PPS: White imps seem to pick up darts & stuff, while red imps don't. - IMHO that's exactly backwards. White imps are have a much better - range attack than darts provide, while a dart-throwing red imp - would be a major pain. - -> actually the issue is gmon_use (the last parameter in mon-data.h) -> - red imps have 1 (opens doors) while white imps have 3 (doors, -> weapons & armour). sorry not explicit enough. - ->> No, make white_imp.gmon_res=1; red_imp.gmon_res=3. Current values ->> but reversed. - -== 89. PPPS: Noticed punctuation creep: "You can't weild a two handed weapon - *AND* a shield at the same time." Patriots should conserve stars. - -== 90. The eat chunks on the ground prompt is uncoloured. -Following prompts are coloured. - -== 91. Prompt & crashes: try doing an x-look while you -can't see any monsters, then press '+'. You will -get a nice, shiny new core file in your directory. - -The x-look prompt also claims to allow you to go -to the current target using 'p', but does not. 'P' -does nothing. - -== 92. Elves in their Halls seem to wear a lot of Orcish armour. - -== 93. > And finally to end on a good note... -> I've love what has been done with the coloring, the autopickup and -> the automatic door opening. This is *very* useful and as a user I -> truly do appreciate the effort here. (It would still be nice to be -> able to pick up gold when your slots are full but I'm not going to -> complain.) - -Argh. I haven't checked the latest dev source (but I will -this weekend), but is this still the case? If so, can Gordon -please put it in the bug queue as something to fix for the -upcoming release of 3.*cough* ??? - -== 94. -> I was descending through the Elven Halls, and reached level 6. On this -> level were three stairwells down to level 7, and an entrance to the -> Labyrinth. -> -> It is my habit to descend/ascend each stairwell as I find them, since -> the dungeon areas of crawl are sometimes disconnected. So I believe -> the three stairwells on this level actually did lead to level 7. -> -> After filling my gut on fresh elven meat, I descended in the Labyrinth, -> spiraled in to the Minotaur, slew it, grabbed its stash, and ascended -> back to the Elven Halls, appearing at one of the stairwells down. -> -> But now all three of the down stairwells on this level lead to the -> Labyrinth rather than level 7, and the Labyrinth is being mapped. - -I can verify that I had visited Elven Halls level 7 (I had saved a -copy of my player files before entering the Labyrinth). As it happens, -level 7 was the bottom of the Elven Halls with the Vault. - -I cleaned out the Vault, then returned to the Labyrinth. Once again -returning from the Labyrinth caused all the stairwells on level 6 to -lead to a mappable Labyrinth. - ->> Fixed. up_stairs() was not correctly setting was_a_labyrinth in ->> the call to load(), and so the labyrinth level would get saved ->> _over_ the n+1 th 'real' level. REALLY BAD. Yuck. Bleah! - -== 95. Auto-butcher + Staff of Power + dagger in off slot. -Every time a corpse is butchered max SP is reduced... - -This probably has to do with the fact that staves of power are one of -the few things that are toggled on wield/unwield (a lot of the other -properties are calculated as required). - -== 97. The routine mon-util::seekmonster() needs to check that -> -> mon_entry[(*p_monsterid)] -> -> is not -1 before returning -> -> &mondata[mon_entry[(*p_monsterid)]] -> - -== 98. In my current game, I found an entrance to the Hall of Blades on -> level 4 of the Vaults. I entered, killed a few weapons, and returned. -> Upon returning, the game crashed. When I restarted, I was on level 1 -> of the Crypt. I exited the Crypt was back at the entrance I had found -> on level 3 of the Vaults. -> - -- Fix for the Hall of Blades staircase bug... Although the -staircases leading out of the HoB are called staircases "back -to the crypt", and although the enum for them describes them -as returning to the crypt, and although climbing one of them -sends you to the crypt, they are in fact supposed to lead back -to the vaults, and the level range of the HoB has been set -accordingly. To fix: - - Change the name of the enum DNGN_RETURN_CRYPT_II to - DNGN_RETURN_VAULTS_II (may need to be _II or _III) - - Change in direct.cc, in look_around(...), "A staircase - leading back to the crypt" to "A staircase leading back to - the vaults" - - Do the same in item.cc in item_check(), where it tells you - what you're standing on - - And, finally, in up_stairs() in misc.cc, the case for - DNGN_RETURN_VAULTS_II (or whatever it's changed to) needs to set - you.where_are_you to BRANCH_VAULTS. - ->> this code needs a complete overhaul to be more comprehensible, ->> but I don't know if I'm up to it at the moment. :\ - -== 99. There was lava in the Crypt. I don't object to it, but it seems a -> little out of character, much like Josh's observation that elves wear -> a lot of orcish armour. - -== 100. Characters who might go berserk while fighting, say from the mutation -> or wielding a randart, can have go_berserk() called on them while they're -> already berserk. - ->> which is fine. Fixed up berserk messages for all possible situations - ->> no more double messages, or inappropriate ones. - -== 101. I've run across a couple Borises in my current game. It must be a -> popular name among Liches. - ->> fixed. Bad range check in dungeon.cc. - -== 102. If a monster tries to mutate you and fails due to your resistance -> to such, you get a message from mutate() - "You feel rather odd for a -> moment." and from direct_effect() - "You feel very weird for a moment." - ->> fixed all manner of mutation messages. - -== 103. Removing a ring of strength causes these messages: -> -> You are being crushed by all of your possessions. -> You possessions no longer seem quite so burdensome. -> -> since this happens in item_use::remove_ring(): -> -> case RING_STRENGTH: -> decrease_stats(STAT_STRENGTH, (you.inv_plus[ring_wear_2] % 100), true); -> increase_stats(STAT_STRENGTH, 50, true); -> break; -> -> The suppress_msg flag of decrease_stats and increase_stats does not get -> passed to player::burden_change(), which has no arguments. -> -> It is interesting to compare that code with similar code to remove the -> strength one gets from a randart ring. From it_use2::unuse_randart(): -> -> const int str_plus = inv_randart_wpn_properties( unw, 0, RAP_STRENGTH ); -> if (str_plus != 0) -> { -> you.strength -= str_plus; -> you.max_strength -= str_plus; -> you.redraw_strength = 1; -> } -> - -== 104. There is a monster named "another lava thing". Not a bad name, but -> it leads to "You kill the another lava thing!" messages. Perhaps a name -> change to "mother of all lava things" or "lava thing's cousin". - -> "another lava thing" has no stats in mon-data.h, so it was -> obviously a dummy placeholder and has been removed from possible -> generation lists. - -== 105. Assorted typos: -> -> You possessions no longer seem quite so burdensome. -> You heara loud "Zot"! -> -> File name: Minh.txt -> File name: Minh.txted successfully. - -== 106. Something causes misformatting of the descriptions for -> SPELL_APPORTATION and RING_TELEPORT_CONTROL; - -== 107. After I picked something up, I could drop one thing, but nothing after -// that. I think we ought to have periodic checks that num_inv_items is -// correct - recounting once per turn is not a significant calculation. - -Ah! There's the problem... that variable was deprecated a while back -and replaced with explicit code in the standard places (because it -was impossible to keep it up to date). If someone is actually making -use of it again then of course the entire system is going to break -down. - ->> really deprecated this time. - -== 108. Fixed apply_area_within_radius(). Makes far fewer unnecessary calculations - now. - -== 109. Fixed rendering slowdown on windows console. - -== 110. Scorefile reading doesn't pick up special characters like a-umlaut or e-ague - -== 111. I was in the Tomb, slaying mummies with style and grace, so naturally -a fair amount of cursing of my stuff took place. - -The Ring of Shadows now has an inv_plus of 100, I assume since -monstuff::curse_an_item() adds 100 to inv_plus. I can't remove it, -since inv_plus > 80. It is not labeled as cursed and scrolls of remove -curse are ineffective since inv_plus < 130. I suggest that, for now, -curse_an_item() should leave randarts alone. - -As an aside, is "artefact" a valid variant spelling of "artifact"? - - -== 112. Another result of the great Mummy slaying was that my flesh would -rot away. I think display_char_status() should list this. - - -xx 113. I came a across a butterfly which had color 66. I could not -determine why (N.B. 66 is MONS_BUTTERFLY.. what's going on?!) - -> me neither. All calls to create butterflies should go through -> define_monster(), which sets m->number to 0..15. See #85. - -== 114. in view.cc, inside the #ifdef DOS_TERM things there are some -bad things happening to the puttext calls. buffer.buffer() -should be replaced with buffer, and buffer2.buffer() (or is it -buffer.buffer2()? I forget) should be replaced with buffer2. -Otherwise it refuses to compile (this may be an incompatibility -between borland C++ and djgpp, Gordon) - -MV: Buffer.buffer() should be only buffer. Problem is with _buffy_ which -needs to be _buffy.buffer()_. - -== 115. Also in view.cc in noisy() at 1304 the distance function is -being used wrongly. Change if (dist <= distance(... to -if (dist >= distance(.... This problem caused most monsters on -a level to wake up as soon as a noise was made, and was why -characters were getting mobbed. - -== 116. the init file is broken, at least under DOS. It is reading -in the player's name okay and is finding the other options, -but when read_bool() tries to work out whether an option is -followed by "true"/"1" or "false"/"0" it fails to detect -anything and just goes with the default. I don't know how any -of the weird code in initfile.cc works (what was wrong with -the stdlib string functions?) but, at a guess, this might -have to do with the way DOS writes End Of Line in its text -files - if a line is concluded by something other than -'\0' the string code might fail. But that's just a guess. - ->> made a couple changes and it seems to work fine on win32.. ->> but this is highly dependent on the compiler's implementation ->> of the standard string template (grrr!) - -== 117. A blank/empty scorefile will not be updated; scores of 0 not kept. - -> both fixed. - -== 118. If you aren't carrying anything except money, you can't drop it (money) - -> can now specify quantity of money to drop. Accepts any value. - -== 119. My character entered the Tomb, arriving in the upper left hand corner, -at position (9,7). I tried to target, and failed the ASSERT for the -mgrd array. This took place around line 1227 of direct.cc in the -mons_find() routine. const int targ_x = you.x_pos + temp_xps - 17; - const int targ_y = you.y_pos + temp_yps - 9; - const int targ_mon = mgrd[ targ_x ][ targ_y ]; - -In this case, you.y_pos is 7, temp_yps is 1, and so targ_y is -1. - -== 120. The Amulet of Cekugob does not stop one from teleporting when one - has the teleport mutation. - -== 121. I entered Hell from level 22. When I exited Hell I was placed on - dungeon level 27. - -BWR:I believe this was the better alternative of earlier problems dealing -with returning to the main dungeon... used to be you could end up on -level zero, or on a semi-random level inside solid rock. After those -problems were fixed the portals seemed to work as above. - -== 122. When I returned to Hell, I was placed on one of the down stairwells. - -== 123. Remove which piece of jewellery? - That isn't a piece of jewellry. - -Webster has jewelry, jeweled. Changed all occurances. - - -== 124. Oops, that ring feels deathly cold. - B - a cursed amulet of the gourmand (around neck) - -xx 126. I hit a giant spore with a bolt of poison flame, and the critter -> didn't explode. It just disappeared. - -LRH writes: -Not sure exactly, but I'm pretty sure that if you do enough -damage to a spore with a single attack it will fail to explode. -The relevant code should be in monster_die(). - -== 127. A fire giant hit my Spriggan (AC: 5, EV: 13) with several fire balls -> over a few turns, but none hurt much. I didn't get any messages about -> resisting the effects. Is this the odd fire resistance problem? - ->> monster fireball damage wasn't being set correctly. - -== 128. The Spriggan has strength 10 and dexterity 21. When he wields a bow -> or crossbow, I get the message: -> -> Your relatively low strength is limiting your use of this weapon. -> -> I don't think strength has any effect with crossbow, and probably doesn't -> effect bows. - -BWR: As a side note, is the low Throwing skill message still on the skills -screen? Has anybody tested it with all the skills yet (there is a -lack of room, and the screen should fit in 24 lines). Maybe that -message would be better as a message when wielding the bow itself, -although I'm not sure how much the mechanic is required (I typically -upped Throwing skill along with Bows because it's a cheaper and faster -way to up accuracy and damage than raising Bows alone). - -== 129. The file makefile.obj seems to be missing... this is a problem - for most of the other makefiles which include it. - -== 130. The APPNAME in makefile.sol should probably be changed back to crawl. - -== 132. In spells0.cc should be also included stdio.h under DOS -because sprintf() is used. - -xx 133. > Are you going to do the player-ghost/demonlord "structure" as well? -// - Um, dare I ask, why? I've never looked at this part of the code. -BWR: -It's currently an array of chars. It would probably be easier to -understand as a struct with fields for AC, max HP, spells, resistances -and such. - -== 134. When I cast Static Discharge, I get occasional fails of the ASSERT -on line 419 of spells4.cc: for (int i = 0; i < targs_found; i++) - { - ASSERT( targs[i].x && targs[i].y ); - func( targs[i].x, targs[i].y, divided_power, 0 ); - } - -> Fixed. Brent's algorithm is sound, but his coding wasn't. :P - -== 135. When I use the Sif Muna granted ability of Selective Amnesia, I hit -an array bounds assert in seekspell() - which is exactly: - -return &spelldata[plyrspell_list[spell]]; - -The value of spell is 210 (SPELL_NO_SPELL), and so plyrspell_list[] -goes out of bounds (it is not protected by the Fix[Ary|Vec] stuff) -which then triggers spelldata[] going out of bounds. - ->> plyrspell_list[xx] being set to SPELL_NO_SPELL _before_ call ->> to spell_power. stupid logic error. - -== 136. I swung my Staff of Air: - -You miss the imp. -You miss the imp.the imp is jolted. -You are wielding a staff of air. - -== 137. I'm wearing an amulet of the gourmand, but I never seem to get labelled -as being Full (or Engorged). - ->> is this a problem? Gourmand allows you to eat rotten/contaminated flesh, ->> how could this be related? - -== 138. Trolls can eat huge amount of chunks of flesh without becoming full - -> oops. Nobody could ever get full. Stupid logic error. - -== 139. Name in INI file causes crash unless all caps. - -xx 140. Non-Beams displayed one cell at a time (thanks to Michal) - -== 141. M_SPELLCASTER removed from ball lightning. - -== 142. All beams/missiles leave a visible trail now (at least until window - redraw). Was too hard to get right w.r.t. killed creatures and cloud - trails, and most liked it the other way anyways. - -== 143. Some enchantment beam behavior fixed. - -== 144. Update & examine command-line switches & options - -// - update & verify behavior of command line switches & options -Monochrome isn't connected to anything. The "no colour" option could -be handled by imposing a set of colour macros (if they were made widely -available)... most monochrome systems can do bold/standout, although -that typically ends up backwards or ugly (if it's done via reverse). -Could possibly just be removed rather than bother with it. -The "-nb" (no black) option is obsolete with colour macroing. -Basic options to consider: -- list scores (param for top X) -- select race/class -- character name (for loading and starting new character) -- pointer to game directory (ala crawl_dir option) -- pointer to initfile (ala CRAWL_RC environment variable) -Later things can get fancy, but we should at least have those. - -xx 145. I'm playing the latest win32 binary pre-release (January 11). -The first problem is that I can't get to the religion screen. To produce -'^' with my keyboard I have to press + -followed by a space. However, in Crawl this doesn't work (it used to work -with earlier versions before this series of win32 binary pre-releases). -All I get is 'Unknown command'. - -== 146. When zapping a wand of Draining at a line of Kobolds and Big Kobolds, -: the game froze if something was killed. The game was recoverable, and -: the bug repeated itself. Killing these by hand caused no problems. -: Using this wand on other creatures caused no problems. - ->> probably related to double-whammy monsters were suffering from poison/ ->> draining. Hit dice might have gone below zero, etc. - -== 147. Any ranged attack that hits you has a chance of destroying -: your scrolls, not just fire-based ones, and they all give the message -: that your scroll has burst into flames. Confused the heck outta me -: the first time it happened. "The puff of frost hits you! One of your -: scrolls bursts into flames!" - -== 148. -: 1 other thing I just thought of. When targetting in version 3.43 -: you could use the dot on the keypad to select the target. Now, to -: use that dot, I have to use the shift button with it. - -xx 149. Also it seems like mummies have lost some of their cold resistance... I -had trouble with an ice dragon that should probably have been real easy... -on the other hand fire damage does not seem to be all that nasty to them -anymore (I dunno about the mummy monster but this seems to be the case for -mummy player chars, none of my equipment provided fire resistance). - -== 150. Fixed new description() problem. Oops. - -== 151. Changed some messages for burning and chilling monster attacks. - note that mummies _could_ be chilled by melee attacks - "chilled" in fact - means that the player resists cold. New messages are tied to actual - extra damage from fire/cold. - -== 152. Fixed "always poison/drain" on beams/bolts that didn't actually - hit (problem with side effects in check_mons_resists() -> - mons_adjust_flavoured()) - -xx 153. The level files for my characters don't seem to get deleted, even after -the character dies. I'm assuming that they're meant to be deleted, as -they used to be... or is there some reason that the game now keeps them? - -> can't repro - works fine on 2000. - -== 154. I found one of those checkerboard-like rooms with alternating wall and -floor squares (you know what I mean? The ones where you can only move -diagonally, sort of like the Hive, but occuring in the regular -dungeon?)... it was made of metal walls, and had a small open area in the -middle. There were some items which seem like they should have been -placed inside the open area, but were inside the walls instead, and -therefore inaccessible. I can't figure out how to get Crawl to dump a -screenshot, but I'll recreate it here, using X to represent a wall. -.X.XXXX -X.X.[.X -.X.X@)X -X.XX!.X -.X..XXX -X...X.X -.X.X'X. -All three of the items around my character are inside walls; examining -them says: -You see a [item name] here. -A metal wall. -You can't move on to them or anything. Note that if you shifted them all -three squares down and two to the left, they'd fit nicely in that little -open area, which leads me to suspect that possibly that's where they were -meant to be. - ->> several places in dungeon.cc where this could happen. Think I've squished ->> them. - -== 155. I'd suggest killing /unused, but only after moving oldmaps.txt -into /misc. Within /misc, scoretab.cc should probably be updated -to the new scorefile format (or killed) and untab.pl should be -killed, as it is an unreliable detab script - rh.bat seems -near useless. - -In /Docs (why is this uppercase?), NEW.txt is empty, buglist.txt -should be updated to the current status (about which, Gordon only -knows), I need to migrate messlog into changes.340, changes.340 -needs to be renamed changes.400, the remaining files need to be -updated. - -The old LOS code can die, I think I lost my fascination with it. -I don't believe anyone else was defending its existence. - -== 156. On this topic, I get tons of warnings about FixVec.h and FixAry.h -not having a final newline.   Could you add one to these? - -== 157. The compiler also noted a problem in dungeon.cc: - if (you.where_are_you == BRANCH_CRYPT || you.where_are_you == BRANCH_TOMB) - { - if (type_floor == DNGN_LAVA) - type_floor = DNGN_SHALLOW_WATER; - if (type_2 == DNGN_LAVA) - type_2 == DNGN_SHALLOW_WATER; - } -The last statement should probably be an assignment. - -== 158. Finally, I can't compile dungeon.cc at all: -dungeon.cc: In function `void link_items ()': -dungeon.cc:6395: warning: comparison between signed and unsigned integer expressions -FixVec.h: In method `FixedVector::FixedVector (TYPE, TYPE, ...) -[with TYPE = char, int SIZE = 7]': -dungeon.cc:7998:   instantiated from here FixVec.h:125: `char' is promoted to `int' -when passed through `...' FixVec.h:125: (so you should pass `int' not `char' to `va_arg') - -This also affects spells4.cc (instantiated from line 729). - -== 159. Problems with print_description() under DOS? -Stupid, stupid, stupid.. good god. used .data() instead of .c_str() - -== 160. Make Boris back into a non-Unique and give him appropriate mons_speak() - -== 161. More portable savefile format. - -== 162. Well, played with the new pre release, speed is the same (drat) and the -ghoul food bug still exists... the one where they have to eat a meat -ration to cure the 'hungry' status. Haven't hit on any other bugs yet but -I've only run 3 characters who all had very short lives. - -== 164. Direct-effect monster castings (smiting, etc) would crash the -game (forgot to set beam_source for non-beam type attacks). - -== 165. The warning messages given for wielding objects should also be given -at the start of the game (if applicable). - -== 166. Anyways, I'm starting to -think that the margin should be a little smaller, the 79 colomn one is -just too wide to read comfortably... a 70 column one should be fine. - -== 167. -// > All staves work like this - the special power can activate even if -// > you miss your foe by a mile. -// > -// > Is this desired behavior? -// -// I would think not. - -** 168. Enable loading of 3.30/1.x chars & level files. - -== 169. When casting Corona and hitting somebody I'm allways getting -additional message "Nothing appears to happen.". -eg. The goblin is outlined in light. - Nothing appears to happen. - - (silly logic problem) - -== 170. In ouch.cc is under DOS missing #include - -== 171. There is still small problem with new print_description(). - Description window for DOS is (25,1,80,25) - see for example - describe_spell(). It means that lineWidth in print_description() - can't be 70 under DOS_TERM and should be 54 or so (of course - those windows can be changed but it's much more work). - DOS term and shoul be 54. - -== 172. I started a grey elf wizard and it begins play with an orcish robe, not an -elven one. (flimsy coding) - -== 173. -"You miss the ice beast. -The ice beast hits you! -The ice beastchills you. -Ouch! That really hurt!" - -== 174. tag.h and monstuff.cc need final newlines - -== 175. tags.cc and files.cc include mem.h, but gcc doesn't come with one. - The routine memcpy is declared in string.h, which is already included - in these files, so commenting out worked for me. - -== 176. spells3.cc has the same problem with FixVec.h that dungeon.cc had - in pr6. - -I guess around line 729 or so. :) g++ -Wall -DLINUX -g -DDEBUG -c spells3.cc -FixVec.h: In method `FixedVector::FixedVector (TYPE, TYPE, ...) -[with TYPE = unsigned char, int SIZE = 7]': -spells3.cc:729: instantiated from here -FixVec.h:125: `unsigned char' is promoted to `int' when passed through `...' -FixVec.h:125: (so you should pass `int' not `unsigned char' to `va_arg') - -== 177. Was just looking at that code, and noticed the comment about the -"other five gods" (the one's the player cannot start the game -worshipping). Anyways, that comment was added there before the -always_greet option, which does meet the requirement for filling -in the extra gods (since the real purpose of always_greet is to -remind the player of some non-obvious details about their character -in case they haven't been playing in a while (ie. race, class, deity, -weapon penalty). - -== 178. Could you please put the string "-O2 -fno-strength-reduce" in your makefiles -dealing with GCC? It'll speed up the game by a *huge* amount. (The --fno-strength-reduce is to get around a bug in many versions of GCC.) -Because of the exceeding slowness in the released versions, I compiled my own -version, which leads to point - -== 179. Why in the name of Cthulu did you remove "#include " from ouch.cc? -To misquote Rufus Wainwright, "Cause all I get is instant errors/Instant errors -Instant errors". - -== 180. Update scorefile format to a delimited ACSII numeric representation. - (hmmm - will take some thought) - -xx 181. I am not sure if its a bug or not, but using pr7 on NT4, every now and -again when I die, Crawl causes a general protection fault (or whatever its -called in NT) and the game crashes. The good side to this is I don't lose -my character and can go back to my last save and keep playing. - -> When I'm having a good character going ("good" being -> 1000+ points or so), the game tends to crash when the character dies. - -== 182. I just got the mutation "you can exhale a cloud of poison" but I recieved -no special ability to activate it. At the time of the mutation, I was -wearing a ring of shadows that gave me the ability to turn invisible. -Perhaps the ring interfered with it? Hope this helps. - -> data error in mutation.cc. Fixed. Nagas now get breathe poison -> sometimes if they _would_ have got the spit poison mutation. - -jmf> That mutation ought only occur for Nagas. A non-Naga getting -jmf> the mutation is a bug. - -xx 183. Move rand(), random(), srand(), srandom() to libxxx - -> behavior is too complicated.. - - - -== 184. Files are not cleaned up in DOS - see end_game() in ouch.cc - -== 185. Fixed more monster spell crashing-if-kills-player problems. - -== 186. Quokkas have no mass, hence they never leave corpses. - -> That was there original stat, should probably be set to 200. - -== 187. I found lots of bug while using 'recall undead slave' skill. - -I noticed this bug as well. Seems the recall spell places your servants in -spaces next to you, regardless if there is already something there or not. -In effect, monsters which are stacked seem unable to move, including -hostile monsters. When the top monster leaves the space the game places a -"floor" tile there. - -> really, really dumb logic error - corrupted mgrd as a side effect!! - -== 188. Several piles of gold on the same spot should merge - ->> so should other things. Fixed item_place() and drop_gold() appropriately. - -== 189. Merfolk hunters not available, NEWGAME.CC suggests they should - -== 190. Weld potion drank should dissappear from the screen - -== 191. First the bug: While in the Abyss, I came across an orange 8. Hit x and positioned -the cursor over it to see what it was (thinking it was probably a type -of golem I'd never seen or something) and it said: - ->> There was a tiny bit of overlap between the area which got nuked and ->> the area that got transferred. Probably left pointers to invalid ->> items lying around, which would produce exactly this: - -!questionable item (c100, +0, p50, p(2)50, d0:q0) - -== 192. Now the complaint: Because you can use the letter keys to move around, -the numeric pad -has obviously been modified so that the numbers map on to the letter -keys... but there is a problem with this, namely that 7 maps on to y, -and can therefore be used to answer in the affirmative to a question. -I now realize why easy_confirm exists, since some people no doubt use -the letter keys to move and may accidentally say yes to something they -didn't intend to... but for those of us who use the numeric pad, the -option doesn't seem to make much sense, since your finger doesn't come -near the 'y' key all that often, so I just had it set to all. Then I -was in a situation with one of my best characters ever where there was -lava directly north of me and I wanted to move northwest, but my -finger hit directly between the two keys, basically hitting 8 then 7 -in rapid succession, plunging me into the lava and killing me. I -suggest one of two things; either make the numeric pad work the same -way as the letters ONLY for movement, since the only time other than -movement when you're going to receive input from the numeric pad is -when it's accidental, or at least put a warning in the init.txt where -it talks about easy_confirm saying something like "WARNING TO KEYPAD -USERS: The number 7 is mapped on to the letter 'y,' which can result -in accidentally answering yes to questions; it is suggested that you -leave easy_confirm off." - -== 193. > An orc priest who hellfired him. - ->> fixed in general non-tracer spell cleanup. Oops. - -== 194. Scrolls of immolation don't do anything. The big fireball -: appears on the screen, centred on you, but it doesn't damage you or -: any of the creatures surrounding you, and doesn't have any other -: effects. I'm assuming that this is a bug. - -> Good catch. Direct explosions were being treated as tracers. :P - -== 195. A more minor bug: if you read a scroll of teleportation, then -: start butchering a corpse, you'll continue to butcher the corpse even -: after you've teleported, successfully chopping it to pieces, even -: though it hasn't come with you. - -== 196. Well, the title says it all, but, when I reach level 27 of the dungeon the game -crashes (not a windows page fault, a 'dos page fault'). The character has not -retrieved any of the runes of zot yet, so I figure I'll try again after getting -one (or if that don't cure it 3 just in case). I'm on a windows 98 computer -running the DOS compilation of pre release 7. I also had a few times on level -26 where I couldn't move (alt tabbing out and forcing the game closed worked -but I was set back a ways... so I made it a point to level level 26 hehe). One -other thing I noticed was the dungeon clean up never happened (on level 25 but -I had no problems on that level even after the floor was full). New monsters -seemed to get weapons and armor but no more corpses once the floor was full. - -Something else I've always wondered about was the slime pits, are you supposed -to get a rune of zot out of there or does the royal jelly 'eat' it or -something, I've never gotten anything from there but it seems like it's the -kind of place that would have one (specially with a monster that is no where -else in the game sitting in a pre-fab dungeon). - - ...and then this follow-up on Feb 9th... - I mention the runes because it was level 27 I was trying to enter when it -crashed on me, I wasn't actually entering zot, just the level with all the -gateways to zot. Was just trying to go down there to get a little more exp -before I went to get the runes necessary to get into zot (the advantage of -being a mummy... you can go do things in squirly order according to whim hehe - -mannix writes: - -Just confirmed it, lvl 27 is definitely a gaurenteed crash, even with 3 -(well, 4... got two in pandemonium... should that have been possible?) I -still crashed when I tried to enter lvl 27. On the other hand I've found -some fairly nifty places to explore for exp :). Another problem I found -was that in a lot of areas the dungeon clean up is not nearly aggressive -enough, I'd go so far as to say that when it happens all non-quest items -should probably be removed, in some areas after spending a bit of time -repeatedly killing random monsters (the joys of playing a mummy hehe) item -drops would show up something like 'item 923589237 has dropped' (and -that's a sure sign of impending doom, or at least a lock up on exit). I -worked around the problem on one level by using my own clean up method... -summoning imps/demons... some of them will pick up weapons (and in places -like hall of blades that's all you'll normally see) and when they -dissappear those items are gone for good. - -== 197. : Using a spell staff of smiting in melee combat reveals the following message: -: You're wielding some sort of staff I've never heard of. (fight.cc) - -== 198. Trying to cast Apportation on a pile of gold crashes the game - (division by zero) - -== 199. Draconian Hunters start with a club instead of a bow. - -> It's a little bit worse than that... The bow is clobbered into being -> a club instead of the leather armour being turned into a robe (draconians -> shouldn't being wearing leather armour since it doesn't fit). - -== 200. Need more aggressive item cleanup. - ->> perhaps trigger this on item creation, if a spot can't be found.. go ->> through the item list destroying less valuable items or small piles of ->> gold. - -== 201. Teleporting a fish (by hitting it with weapon of distortion) might -cause misc. problems - e.g. fish is teleported again and again -(because it lands on the floor) - -> won't happen; checked & rewrote bits of monster_teleport() to be -> more readable, but the code was fine. - -== 202. I was getting mutations after wielding/unwielding weapon of -distortion - -> yes, it's in the code. Nice eh? - -== 203.Darts of bugginess found in shop - -> dumb logic in dungeon.cc::items() - -xx 204. Electric eels sometimes shoots lightning to strange (probably -random) places and not at player. - -> don't see how. - -== 205. Put in a fix for scorefile lines longer than 80 chars (will break) - -== 206. a new score at the bottom of the list would not be added. - -== 207. Misc documentation changes from Don - -== 208. Won't get "Sorry, you can't target what you can't see." when you're -just looking around.(with 'x') - -== 209. Improved 'C' command (gives XP left to go) - -== 210. Far strike & twist could not target with direction keys (they are -pseudo-direct effects, which screwed stuff up. Argh!). Changed mode -for those spells to DIR_TARGET, which means hitting a direction key will -take player into targetting mode. No doubt will be hearing gripes about -this too. - -== 211. Patched up multiuser compile. - -== 212. Quokkas don't generate corpses now. Someone else wants to revamp -the corpse system, go for it. - -== 213. Easy butcher defaults to false now. - -== 214. Options for Race & Class added to init file - -== 215. Replace mutate() calls for miscast effects with addition to mutagenic -radiation; perhaps all miscasts (may) add to this, and high level miscasts -changed to give_bad_mutation? - ->> done. all spell miscasts give small mutagens; high level spell miscasts ->> can get pretty nasty too, but still only small chances of mutation unless ->> you're also invisible/hasted/wielding nasty artifact. ->> missing a couple high level spells badly in quick succession can be really ->> nasty. I'll leave it as an easter egg. :) - -== 216. Monsters won't throw stuff if they can melee. - -== 218. Misc stylistic & code fixes from Jesse - -== 219. Charmed monsters will no longer be described as 'friendly'. - -== 220. Brave attempt made to use correct pronouns (introduced mons_pronoun) - -== 221. Shop names more visible when looking around & moving - -== 222. Can now pickup auto-combine items even with full pack - -== 223. scrolls of fear won't auto-identify if nobody is scared by them. - -== 224. "Killed by giant ant" when smitten from afar by Orc priest? - -> very subtle. Death_source can be zero, since it is an index into -> the monster array. But I didn't think it could be - if killed by -> monster#0, scores like this would be generated: -:4:0:89:Methea:0:6:3::3:14:3:0:0:0::2:0:0:0:0: -> which would be translated to "killed by a giant ant" - -== 225. Don't generate monsters in LOS? - -== 226. Get name after race & class (pretty easy now) - -== 227. Fixed up some job titles. - -xx 228. Game crash on character death; after equip list, but before hiscore list - -== 229. Massive speedup on win95/98. Fixed all cursor dance and buffering -problems. Fullscreen is still pokey on most machines, but it's finally -playable. - -== 230. No staircases to Zot on level 27 (dlevel == 26). It looks like a - piece of code in dungeon.cc::builder() may be changing stairways to Zot - to dungeon floors, regardless of level (occurs after place_branch_ - entrances()) - -== 231. crawl -plain now actually uses non-gfx character set - -== 232. All female uniques are now properly gendered (missing break statement) - -== 233. Divine resistance messaged a bit better (w.r.t. Xom, Makhleb) - -== 234. messaging for vampiric attacks fixed up. - -== 235. Monsters generated on teleport traps will have unobtainable loot! - > shouldn't generate them on tport traps any more. - -== 236. Fixed DOS include of - -== 237. Fixed overly long string in '?' screen - -== 238. More multiuser fixups. Changed default makefile to linux. - -== 239. Moved god favor messages more in line with prayer messages (too confusing - otherwise). Fixed a couple grammatical errors. - -== 240. Can't hit some monsters in LOS (rounding problem?) - Need to rewrite for integer math. :P - -== 241. Crash on long player names (duh!) - -== 242. Miscellaneous spelling/grammatical errors - -== 243. Do something about this: probably remove from compile options. But leave - bow/throwing warning in, as it is a _very_ important penalty. - - : One odd thing, though. I chose a Human Fighter with a short sword and when - : I began the game I get "Your relatively low dexterity is limiting your use - : of your weapon." Other than the three occurrences of "your" in this - : sentence, I find it odd that 10 dexterity is too low to wield a short - : sword. Or is this a bug? - - "Your relatively low is limiting use of your ." - - Would be a slight alteration to kill one "your" and actually - designate the weapon being affected (I know it is pretty clear - that the only weapon affected is the one wielded, but I like - some things spelled out). - - To avoid those excessively long weapon names with all the plusses - and things, the weapon name string should probably be just the base - weapon type (e.g., "short sword" instead of "+1, +2 short sword of - orc-slaying and back-scratching"). As the str/dex modifiers are - based on the base type and not all that other goodness, this seems - an ok thing to do. - - Anyway ... I still think that this check ought to be performed - prior to weapon selection by a player at start-up, so that he - or she knows his/her character will be handicapped by the choice - of one weapon type or another. I think that thread was raised - briefly last week or so. - -== 244. The game crashes when I start a monk. - - In skills2::wield_warning(), these two statements need to be swapped: - - int wepType = you.inv_type[you.equip[EQ_WEAPON]]; - - // early out - no weapon - if (you.equip[EQ_WEAPON] == -1) - return; - - -== 246. Rewrote monster behavior routines. - -== 247. Cleaned up some function prototypes in dungeon.cc - -== 249. Put gendering into monspeak.cc - ->> couldn't find anything.. wonder what Michal meant? - -== 250. More typos - -== 251. remove caps from filenames - -== 252. Summoned critter problems: -From: "Ben Goetter" -Sent: Thursday, March 15, 2001 9:45 PM -Subject: Crawl 4.0pr10z 13 Mar report Bug report: summoned creatures are -appearing in the same space as the -caster. (Cast spell, summoned creature not visible; move one space, -creature appears in space vacated by caster.) - -Date: Fri, 16 Mar 2001 09:00:41 PST -From: tgord -Subject: Re: Crawl 4.00 pr10zf [Yahoo! Clubs: Linley's Dungeon Crawl] -I've noticed that summoned monsters sometimes appear on the other sides of -walls now. ^^^^^^^^^^^ - - -== 253. Change messages for weidling awkward weps to show up only at - values <= -4 (for real problems) and change message to "not taking - full advantage of the weapon" or somesuch. More flavour, too.. - maybe messages like "you're too clumsy" for dex<10; others for - high (but unbalanced) stats: "You'd be (a lot) better with - that weapon if you were (stronger/more dextrous)" - -xx 254. Give Earth Elementalists a few stones (say 10-15) to help them - get started? - ->> addressed with the new, 'easier to run away from' monster AI? - -== 255. I thought someone had added the MST_* enum usage to mon-data.h, - -== 256. Would be nice if the wizard patch I put up in the files directory - made it into the code. - -== 257.PS Oh, using crawl -scores leaves the terminal in a bad mode... - stty sane is required to sort things out (either curses shouldn't be brought - up with this option, or it should be shut down properly). - -Just change the exit() call to a stuff::end() call. -// check for highscore list - must be done BEFORE libw32c init - if (Options.sc_entries > 0) - { - cprintf(" Best Crawlers -"EOL); - hiscores_print_list(); - end(0); - } The argument to end() is the exit value. That should probably be 0, -rather than 1, since there's no error here. - -== 258. This bug ( if it is a bug ) has been around for a while... it seems -: that sometimes when you poison a monster and it dies from the poison, -: it gives you exp, and other times it doesn't. Is there some logic -: behind this? A low level character of mine just barely managed to -: kill an OOD hippogriff using poison, and got gypped of the exp. =( - ->> Very old problem in beam code; poison_monster was being called ->> incorrectly. - -xx 259. I once got a corpse from a summoned snake - I hadn't been -able to reproduce it, but it's corroboration. - -== 260. Give monsters large bonus while target is MHITYOU and behavior is - BEH_WANDER, during player stealth checks - monsters will still be on - the lookout for the player. - - Give a small chance each clock tick of deleting the MHITYOU; i.e. monster - 'forgets' about the player. Stupid monsters forget faster.. - -== 261. -I was playing a transmuter, and noted that I was getting "You -punch the " messages while fighting in spider form. I'm not -getting the unarmed punch attack, so I think the verb comes from -fight::weapon_type_modify(), which doesn't take transformations into -account: - -static int weapon_type_modify(int weapnum, char *noise, char *noise2, - int damage) -{ - int weap_type = WPN_UNKNOWN; if (damage >= HIT_WEAK) - { - if (weapnum == -1) - weap_type = WPN_UNARMED; - else - { - if (you.inv_class[weapnum] == OBJ_STAVES) - weap_type = WPN_QUARTERSTAFF; - else if (you.inv_class[weapnum] == OBJ_WEAPONS) - weap_type = you.inv_type[weapnum]; - } - } strcpy(noise2, ""); switch (weap_type) - { ... case WPN_UNARMED: - if (you.species == SP_TROLL || you.mutation[MUT_CLAWS]) - { - if (damage < HIT_MED) - strcpy(noise, "claw"); - else if (damage < HIT_STRONG) - strcpy(noise, "mangle"); - else - strcpy(noise, "eviscerate"); - } - else - { - if (damage < HIT_MED) - strcpy(noise, "punch"); - else - strcpy(noise, "pummel"); - } - return damage; ... } -} - -xx 262. - -from Win32 precompiled pr10 on Windows 2000: - -You see here a white potion. -B - a white potion -Drink which item? (I choose B) -You feel much better. -Eat which item? -That banana was delicious! -B - a white potion -You finish eating. - ->> Must have had autopickup off, but I cannot reproduce.. think it ->> might have been fixed by fixes to message.cc - -== 263. When i name a character 'con' or 'Con' it freezes the game. - -== 264. Generate wandering monsters on/near stairs about 10% of the time, - regardless of player position, but disallow banding and generate a - message ("A %d enters from above/below!") if player is around. - -== 265. Has anyone else noticed that after a draconian dies, every high-score on the - screen is listed as having been a draconian? When a non-draconian dies, the - draconian is listed as having come from race "Yr". - -== 266. Cleaned up monster blinking. - -== 267. Monsters following up the stairs if they are "not aware" of the player (odd!) - -== 268. Some problems with monsters not following player position correctly, or - just plain waggling back and forth when they should be beating on the player. - Sigh.. gotta look closer at those movement routines. :P Not ready for - prime time yet. - -== 269. Simple fix to handle_behavior() - -== 270. After a while, crawl again went of bounds, this time with this - backtrace: - - #6 0x80e9119 in seekmonster (p_monsterid=0xbffff1e0) at mon-util.cc:816 - #7 0x80e91bc in mons_intel (mc=-1) at mon-util.cc:837 - #8 0x80db2a7 in behavior_event (mon=0x8247e90, event=1, param=0) - at monstuff.cc:394 - #9 0x81339c7 in noisy (loudness=8 '\b', nois_x=45 '-', nois_y=34 '"') - at view.cc:1249 - #10 0x8132927 in monster_grid (do_updates=true) at view.cc:941 - #11 0x8131bca in viewwindow2 (draw_it=0 '\000', do_updates=true) at view.cc:574 - #12 0x8052f76 in input () at acr.cc:2020 - - The bad thing here is that line #7 has mc=-1, and seekmonster() will use - that as an index. - -== 271. Could we tie this to smartitude? Killer Bees and other insects can - forget that I exist when they can't see me while Liches ought to - cast 'detect exact player loaction' and Dig or teleport their way - to me, for a LOOOOOOOONG time after I damage one. - -== 272. Cleaned up abyss generation; there was a monster leak and some very strange - code. - -== 273. Fixed minor screen redraw problem (screen should have updated before monsters' - turn, but it wasn't. Caused some odd SFX artifacts, like beams/missiles going - through walls) - -== 274. Fixed nasty bug with cornered monsters which had them looping from flee-> - cornered->seek->flee->... - -== 275. Fixed small logic error with perma-mutations - -== 276. I was invisible and an orc spotted me, shouted, and then came at me. - -== 277. gotta clean up monster target aquisition and release. Make more 'sensible' ->> Add 'persist' variable; which is # of turns a monster will go towards their ->> CURRENT target even if it is not in LOS anymore. - -== 278. Fixed type usage problem with quadrant_blink() - -== 279. Made monsters move a little more unpredictably along oblique paths - -== 280. Fixed up all cases I could find of friendly monsters frying players - (NOTE: they might still do so as part of calculated plans to help the player - out - some collateral damage is acceptable!) - -== 281. "The your cursed +1 robe is stuck to your body." - "You are a elf wizard." - -== 282. Can't pick a target with Apportation spell. - ->> works fine for me. Added a helpful message. - -== 283. It seems that sometimes monsters are not interested at you even if - you shout ("!") at them. Or is it feature ? - ->> nope, bug. Any noise coming from the player's position should alert ->> hostiles within range depending on the volume of the noise. - -== 284. Sometimes monsters (rats, bats and probably others) attacks you, - but they are still described as "not interested". - ->> fixed in direct.cc. - -== 285. I have also - made some changes to the file attributes when it is compiled with MULTIUSER - option turned on, since I think the player's save and level files should NOT - be group writeable :), but the score file should be. - ->> .sav and level files are private (600). Ghost and score files are not (664) - -== 286. There seems to be a more serious bug with summoning monsters in Crawl pr11: -: I`ve found that summoned creatures aren`t giving any experience to your -: character when they kill things any more, which makes summoners a bit crap. -: -: Also, when my Chaos Knight summoned a demon ( yquxy whatsit) it kept trying -: to eat my intelligence and mutate me, which has never happened before. -: Demons killing monsters didn`t give me any message from Makhleb either. - -Both fixed. #1 is logic problem, #2 is generic friendly fire problem. - -== 287. - I'm playing pr11, DOS version. My merfolk healer was in a situation like - this: - - ................. (water squares... - ..;;............. - ................. - ................. - ................. - ................. - ................. - ......;.......... water squares end) - ......@.......... this is solid ground - - The placing of the symbols is not accurate. - Now none of the eels could hit me with their blasts. The eel right next to - my character kept shooting straight upwards and the two eels farther away - kept missing me by my right side. At least one of them also hit the eel - right next to me. I killed the nearest eel, after which the other two just - kept missing me. My character was not invisible. - -: Also, it's not just electric eels. Storm dragons also tend to shoot in -: the exact opposite direction to the character. Looks to me like it might -: be a sign problem... - ->> ugh. bad side effect from tracer explosions. Fixed. - -== 288. Fixed whopper of a bug with generation of fast monsters which often hung - the game (especially in areas with lots of fast monsters, like the hive). - -== 289. Brent's balance patches - ->> applied all, reduced missile damages by 1 to compensate. Gave daggers ->> and spears better chances to hit. - -== 290. The "temporarily insulated" message is weak... it's kind of - confuing and looks a bit like a bug. Better would be a "god - protected you" message after the explosion... that would tell - both the source and the reason for the insulation. - ->> agreed. Changed to post-divine blast message. - -== 291. Hate to follow up to myself, but a small thing was brought to - my attention. Now that the dice for damage are one based, this - means that Magic Dart is now really the best first level spell, - this being because it uses the 3dX notation (ie dam > 100), so - it does a minimum of three damage (which isn't bad) and always - hits (which makes this too good for a spell which is very common). - - So I'm suggesting that the damage for Magic Dart be converted to: - - damage = 1 + (power / 2) (this is in it_use2.cc). - ->> changed to 1+pow/4. - -== 292. The third ability gained by followers of Zin is pestilence. This summons - a variety of bugs that hopefully will helpfully kill off whatever happens - to be bugging you. - - Trouble is, every time my character uses it at least one my little - chitinous friends gets killed. Zin doesn't like that, so my character - feels guilty. - - The same thing happens with the fifth ability, Summon Guardian, but - it's not so bad there. The summoned Angel (or Daeva, for fans of the - TSO) can generally take care of itself, although I did lose a Daeva to - a dragon once. Luckily it left behind a long sword of holy wrath to - assuage my guilt. - ->> add a flag to god-summoned critters so that their death doesn't cause ->> piety loss. Summoned friendlies will still give piety loss; the 'good' ->> gods don't appreciate you summoning beings as cannon fodder! - ->> tried to apply the god_gift flag wherever it made sense; Zin Pestilence ->> was the only place I could find. - -== 293. Finally found and fixed 'critters summoned out of LOS' bug. - -== 294. Fixed logic problem in quadrant_blink() - -== 295. Fixed buffer overflow in acr.cc during char dumps. - -== 296. Fixed minor display problem in backlight_monsters() - -== 297. Added Guus' -plain and doc patches - -== 298. CHMOD_PUBLIC now uses 664 instead of 666. - -xx 299. Actually, there was at least the comment from the newsgroup -about elven conjurors starting with the Ice/Air book (because -they're better at Air than Earth and equal in Fire and Ice). -The actual spells tend to lean a bit more to the Fire/Ice -side so I really don't see why they shouldn't have the choice -(or rather why anyone should have this auto-picked). Adding a -selection screen and an initfile option wouldn't be that hard. - -== 300. Change magic dart damage to 2+power/4 - -== 301. ->I'm wearing a ring of Shadows. When I try to take it off, it says -: >that it's stuck to me. When I 'v'iew it, it says that it has a curse -: >placed upon it. But it doesn't show up as cursed in my inventory -: >list, and scrolls of remove curse don't work. -: -: Oh... and if it helps at all: I killed a mummy at a certain point, -: with no apparent curse effect. This may be how the ring got cursed - ->> the check for randart rings was looking for 200, but the actual ->> inv_dam value for randart rings is 201. "Pluses2" of 100 is not ->> well defined in the code... :( - -== 302. Abyss go to shits after abyss_teleport() ->> wasn't setting terrain to DNGN_UNSEEN. Was using old (stupid) ->> value of 30 (white triangle!) - -== 303. In fact, they seem able to sneak right up to alert monsters and still -deliver the first blow. I think that such a blow should sometimes count -as a stabbing attack, just as blows delivered to fleeing or confused -monsters currently are. Currently such attacks have a - -random2(200) <= you.skills[SK_STABBING] + you.dex - -chance of being stabs. - ->>Gave chance if monster isn't paying attention to you (foe != MHITYOU), but ->>stab bonus is much lower (3) than stabbing a sleeping/fleeing monster. - -== 304. Not sure if you saw my big report on roguelike.misc, since it hasn't -: been fixed and doesn't seem to appear on the 'to do' list. The spell -: 'Lee's Rapid Deconstruction' doesn't do any damage at present. It -: occasionally destroys the wall which is targetted, but I detonated 20 -: walls next to a rat and didn't scratch it. This leaves Earth Mages -: without an area-effect damage spell, which is rather detrimental to -: their health :(. - ->> Fixed. Needed subtle wrinkle in explosion map, as well as some ->> fixes to the spell itself. - -== 305. Currently, if you skip the first naming screen but use the second -you can overwrite a previous game. Although this is unusual -behaviour, it's not very desirable, it should at least warn -about this and potentially give an option to load the old game. - ->> fixed. good catch. - -== 306. Wielding a bunch of stones and trying to throw one of them, -results in all of the stones being thrown (and potentially disappearing -as well). - ->> Very, very subtle bug in beam.cc inherited from original codebase. ->> Fixed. - -== 307. monster_move(monster); - // reevaluate behavior, since the monster's - // surroundings have changed (it moved) - handle_behavior(monster); - - Some monsters are getting killed on their move, and then the - code in handle_behavior() will fail an ASSERT since monster->type - will be -1. - -== 308. After one hit with a poison dart, "the goblin looks rather -more sickly". The non-"...more..." message is (repeatably) -never shown. - Josh PS: Could we consolidate the poison-effect-namespace to either -"ill" + "rather more ill" or "sickly" + "rather more sickly"? -I favor the former. - ->> oops. simple messaging problem. Similar prob. in sticky flame. - -== 309. Only one bug found - in newgame.cc (line 2222) should be used -strnicmp() instead of strncmpi(), because the second one isn't -existing function :) - -From BWR: ->Actually, we should probably avoid both, I don't think they're ->very stardard (BSDish systems will use "case" over "i"). ->strncmp() is POSIX (among others) so it's okay, but the case ->insensitive compare almost always causes problems (if we're going ->to use it, we should probably have it defined somewhere, so it ->can be adjusted or handled by autoconf (should we go that route)). - ->> correct - neither are POSIX. However it is being used in a DOS/win32 ->> section only, and strnicmp() is the proper call as Michael pointed out. - -== 310. I've looked at monster pronouns and IMO (supported by dictionary) - Erica and Frances should be female and Francis should be male. - - Probably also description of uniques could be slightly changed -according their gender, for example -Jessica - "An evil apprentice sorceress." - ->> done. - -== 311. -In either event, to get crawl to compile, the strcmp(x,y) == NULL -in initfile.cc needs to be changed to "...== 0". The line is near 520. - -== 312. Change shops back to old [0][5+i] item location. Leave items - carried (ie not on grid) at 0,0. Make sure to modify link_items(); - keep compatibility with old saved games. - -== 313. I think giving Ogre and Troll Fighters Dodging 2 is probably in order. - -== 314. Fleeing monsters were not taking advantage of the flexible movement - code (Guus) - -== 315. Gave monsters a little better chance of sniffing out foes (stealthy - players will fare better). After arriving at target x,y, will do a check - for continuing on via ESP/noise/whatever. - -== 316. Removed ability of monsters to see through walls. :) - -== 317. : Just tried casting Tukima's dance while wielding an artifact weapon. - : I get the message "You hear a popping sound." and although my artifact - : stays in my hand, something that looks like a Shadow appears. Its - : name: 36317738 iron wands. If you 'x' it and hit '?' it says "A - : dancing weapon floating in the air." just as if the spell had worked - : right. The thing even moves and attacks like a summoned monster, and - : seems to have combat stats of some sort, since it can kill things. - : When the spell expires, it says "The weapon drops from the air." as - : normal, but the monster just ceases to exist; it doesn't leave a copy - : of the weapon behind or anything. You can even summon several of - : these "36317738 iron wands." - ->> ugh, two separate logic problems in dancing_weapon(). Fixed. - -xx 318. I could be wrong, but I think that the Orcish Mines had no scrolls, - potions, wands, rings, or amulets. Very odd. But since Gordon just - rewrote dungeon.cc, we should wait for reports about pr13. - ->> this is working exactly as designed, if I read the original code correctly. - -== 319. But I failed in my casting too often, and the - buildup of mutagenic energy had some unfortunate effects. Even after I - gained some levels in Divination, and my Success chance was up to Fair, - I failed to successfully cast the spell sufficiently often that I mutated. - So be wary of casting even second level spells. - - from BWR: - We've have people getting mutations here from level one spells. - I'm thinking that at the very least we need to lower the baseline - for noticing that you're accumulating radiation... and possibly - put in some warning messages so people know that they're getting - a bit "hot" and that they need to take it easy for a while. - ->> messaging much better. toned down nastiness from low level spell failure. ->> made my easter egg much less abusable. - -== 321. I do wonder that Zin wasn't upset when I zapped the Angel initially. - ->> Zin is stupid and can't differentiate between a hurtful and helpful ->> spell. Perhaps a small subset could be classed as obviously harmful, ->> so that if you e.g. healed or hasted the daeve it wouldn't get pissed. ->> have to be done in beam.cc, I think... any non-enchantment would be ->> classified as harmful, I think. (?) Other enchantments would have to ->> go in a big if/switch. - ->> this will also help to NOT piss monsters off if you're trying to help ->> them. - -== 322. 2) Item clean-up in the dungeon seems far more - aggressive than before. I've dropped items, - popped down a staircase and right back up, - only to find everything I dropped gone, gone, - gone! This would be on "cleared" levels where - the likelihood of item overload is almost nil. - Is this a change in gameplay that I missed? In - pr13, I am finding myself holding onto *everything* - because I *know* that if I drop it and leave the - level it will simply disappear ... a PITA situation - for low-strength characters wanting to stash some - extra stuff for later. - ->> oops. Somehow broke item save/reload for any item dropped by player ->> or monster. Took closer look, cleaned up horrible hacky code. :P - -== 324. Make random zombie generation reflect the actual level; it is currently - random. - ->> no more horribly OOD zombies. - -== 325. Monsters with OFFENSIVE spells in mspell[2] will still use them - on the player (sigh..) - ->> fixed all cases in mon-spell.h - -== 326. Accidentally doubled the number of monsters created w/ level. - -== 327. : Scrolls of fear appear to be bugged. Read one, got messages saying - : that the monsters were frightened (ie, not "The blah resists."), but - : they kept moving towards me and attacking me. - -== 328. In pr12, my Troll could see an unseen horror. He was not wearing any - devices that could lend him see invisible, and orcish wizards were - turning invisible earlier in the game. - ->> oops. logic problem in mons_del_ench() - -== 329. Sigmund and other uniques appearing multiple times - ->> logic error in dungeon.cc - -== 330. Magical staves are described using the old style (speed) - -== 332. Monsters walk into clouds, except for intelligent ones?? Check code: -mannix writes: -Now here's an idea to which I can warm: stupid animals - thinking "where there's smoke, there's fire", and more - intelligent critters in possession of the ability to - discern betwen the two. - -== 333. Monster Placement: is there a place where, if you can't find a sensible - location for a monster in a group, you just put that one anywyere? - I think that's part of what makes monsters appear in LOS ... I just - got a gnoll and two orcs. - ->> stupid error in monplace.cc. Forgot that distance() function returns squared ->> values. - -== 334. Shapeshifters: one turned into a Swamp Worm. This ought not happen, - as those are water-only monsters, despite their worm designation. - ->> fixed. Won't let monster poly into water-based monster on land. - -== 335. dungeon.cc::pick_an_altar(): needs to have a case added, near line 5988: - case BRANCH_SLIME_PITS: - case BRANCH_ECUMENICAL_TEMPLE: //jmf: ADD THIS LINE - altar_type = DNGN_FLOOR; - break; - - ... to prevent "bonus" altars in the Temple. This was probably the - original author's bug (i.e.: mine). - -== 336. So the city-like dungeon code has some sort of an off-by-one error. - The "buildings" (squares with doors) once were separated by at least - one space of floor; no longer! Furthermore, they once didn't overlap. - - The changes provide much more interesting cities, however the door - generation hasn't quite caught up. I've seen things like: - - ######### - ####+...# - #####...# - #####...# - ######### - - ... where it's fairly obvious what went wrong. (I discovered these - types of things when playing a gnome.) - - The quick fix would be to restore the 'air' around buildings, but - IMHO that would be a loss. The new cities are so much cooler. - - A more complex fix would be in two steps: - - 1) make sure there's a passageway around the border of the level. - A single sweep setting all those squares to floor would be fine. - ->> tightened up door placement in box_room(); since both city_level() ->> and plan_4() use it, stuff works better now. - -== 337. - Sticky Flame puts monsters in the player's thrall - - This last one is really bizarre, because it doesn't happen - in the wizard mode compile (although I can take that character - over to the normal version and have it happen there). - - It's intestesting to note that these monsters end up with - enchantment number 30, which is one less than the sticky - flame enchantments... in the wizard mode they seem to get - enchantment number 60 (which is one less than the other - set of monster sticky flame enchantments... also known - as POISON_IV). I'm wondering if anyone else can verify - this. - - I suspect that there's some problems in the enchantment system, which - could be responsible for both of these. Looking at sticky flame today - it seems that my sticky flame ends up as ENCH_POISON_III or _IV - (59 or 60) regardless of playing crawl or wizcrawl. The in-thrall - thing seems to not be happening right now. It occurs to me that I - never actually got "burn" messages in pr12 when I was using napalm - (I hit an Ice Dragon about six times with it and it never seemed - to take any damage after the initial hit)... looking at the code now, - I'm pretty sure I should have been (and that any appearance of working - in the recent past might have in fact been delayed poisoning). - ->> Fixed. sticky_flame_monster() was badly broken. gawd I bunged that up. - -== 338. As a side note, I now backstab bats quick often (I take it that -this is a side effect of the new backstabing situtation). I'm -not really sure I should be able to do that (or more to the point, -does this mean I can expect regular backstabbing of ball lightning -and spatial vortices which might be a bigger problem). - -== 339. In Win32 pr13, if you set class = C in init.txt, your character will be a -priest ('c') instead of a wanderer ('C'). This happens regardless of if -your race allows wanderers. - ->> bug in initfile.cc - -== 340. Basically, nowdays if you turn a bat into an undead slave, -it suddenly comes to it's senses and becomes an inadvertant -killing machine (well against monsters that can't easily kill -it in one hit), as it walks straight up to them and hits them -3 or 4 times a round. Undead bats should still flutter around -(that's what keeps them in check considering their amazing speed). - -== 341. I've run into some surprisingly powerful ghosts in pr13. -They are only overly powerful in non-wizard compiles; the -two times I switched to a wizard-compile they acted normal. One -was casting MS_ENERGY_BOLT instead of either magic -dart or throw flame (the two spells that character knew). - ->> very bad indexing bug in ghost loading. Who knows what else ->> this was screwing up.. :P - -== 342. Some attempts to animate a skeleton result in a puff of smoke in addition -(I think) to a new slave. - -== 343. We've had several reports here about necromancers zombies and skeletons -actually getting poisoned from time to time by monsters. As far as -I can tell this really shouldn't be happening. - ->> probably a side-effect of messed up enchantment code. - -xx 344. If you start a game with -plain, Save, then continue the game without -plain, -then the displayed map for remembered locations uses the -plain characters. - -If you start a game without -plain, Save, then continue the game with -plain, -then the displayed map for remembered locations uses the extended characters. - -== 345. I haven't heard this one mentioned, but when wielding an ego item you -typically get this: - -d - an elven short sword (weapon in hand) -Wielding this short sword is a little awkward. -It softly glows with a divine radiance! - -The elven short sword should be id'd as "holy wrath" in the first line... -it was unid'd when I did this, so it looks like a simple case of moving -the identify code to a place before the printing. - -xx 346. Breathing fire via the mutation prints this unnecessary line: -" .\n" - -xx 347. I got a segfault when entering the abyss; wasn't playing under -gdb, for some reason, so didn't get a stackdump. Sorry. - -== 348. Brent's XP patches - -== 349. Josh's sludge elf, etc patches - -== 350. In mon_util.c::define_monsters(), there are some mystical values - assigned to m2_sec, some of which can be made more apparent by - using the appropriate MST_* values. - -== 351. Actually, a thought just occured to me that the new stabbing - code that gives occasional backstabs against flutterers, is - probably very annoying to Paladins. We might need at least an - additional check to prevent some of the excusable backstabs from - being naughty... perhaps it's just as simple as only making - attacks on fleeing, sleeping, and confused monsters call naughty - (in which case, it might be reasonable to remove the random - chance for TSO applying penance). - - One of the problems with confusion based stabbing is that some - monsters are created with it, and most of those probably shouldn't - be backstabable (various voritices, ball lightning, vapours). So - maybe we might need some way of distinguishing if the stab is - appropriate (or if not that, we should probably leave them off the - above list for naughtiness). - ->> new code to void backstabbing against flutterers (solely because ->> they are flutterers) and perma-confused critters (solely because ->> of confusion). - -== 352. in check_mons_magres(), the return value for the special "< 6" - bonus is backwards. I'm probably to blame for not noticing that - the function is logically backwards, I probably got confused by - one of the cases in spells4.cc which use this function backwards - (a few of which are my own). - -== 353. I added a "gotoxy( 18, 9 )" to the top of our direction function, - which nicely solved the porblem where the cursor was left at the - end of a prompt (ie for conjure flame). - -xx 354. We've had a report of skeletons picking up skeletons. - -xx 355. I've had several people reporting some oddness when returning - to a level via a straight up and down... things like monsters - completely disappearing and traps being created. - -== 356. pets seem to try and track the target monster even when they're - on the wrong level. Basically, if you go down stairs and tell - your pets to attack something and the go upstairs to try and - bring more pets down, the upstairs pets will be running around - wildly... going downstairs and killing the target made the - upstairs pets return to the master homing behaviour. - ->> simple fix. Set pet_target to MHITNOT on level change. - -== 357. The lastest in the bizarre happenings around here was a friendly - player ghost... wonderful entertainment as it would should out - things like "Run, I'll cover you" and such. - ->> always a possible problem; some fields were left uninitialized from ->> monster_cleanup(), and never initialized in the ghost code!! - -== 358. Removed digging ability from Disrupt() - -== 359. Added 'random' beam that affects each cell as one of { fire, - cold, magic, electricity, poison, negative energy, acid }. Only - used in my easter egg so far. - -== 360. Maybe we should instead be considering shifting the greater -vaults down to level 10+, and the lesser vaults to 7+ (there -are many more mini-vaults (and better quality these days, and -this does have the advantage removing dlev 4 guardian naga -encounters... we've had several). - -== 361. Okay, compiled it up and the only problem was that link_items() is -declared both static and extern (removed the static prototype). - -== 362. One other little problem: The magic resistance check for monsters -is now correct, but there are some inappropriate calls to it over -in spells4.cc (in particular Twist is currently unusable). - ->> reversed the logic.. this was just too non-intuitive and backwards. - -== 363. Move the Crawl.mcp file out of the source folder. - -== 364. Add "#define ESCAPE 0x1B" to defines.h - -== 365. In eat_food() in food.cc add some code before the "You don't have - any such object." case: - if (keyin == ESCAPE) - return; - -== 366. lava_spaces and water_spaces in builder_monsters() in dungeon.cc -aren't inited. (This looks like a nasty bug). -6) In quadrant_blink() in spells4.cc there's a line that reads "while -(!done && random2(100) < pow--);". Please move the semi-colon to its -own line. - -== 367. Snakes now flutter like bats did. They also display the "not interested -in you" message when e'x'amined. - - Josh: - I've had a batty frog and batty snake. Both had the old - 'not interested in you' inspection message. Most frogs - and snakes were not batty. - ->> oops. Monster->flags was not being set to 0 at monster creation. - -== 368. in monstuff.cc::handle_spell(), the CONFUSION && !vapour - should probably be changed to use M_CONFUSION to be generic. - -== 369. the contamination messages should probably be in the warning channel - -== 370. wizard's hats say they give AC, but they don't - -xx 371.Fireballs are rather larger than I remember. -Mana explosions from magic accumulation are the same size (very big). -I'm pretty sure the former is unintentional; is the latter? - -== 372. There's an illiterate "it's" in the description of Silence. The word -ought to be "its". (This is a peeve of mine. "We hate's them, ye's -presciou's!") - -beam.cc::2753 -- hearMsg = "You hear a gentle \'poof\'"; -+ hearMsg = "You hear a gentle \'poof\'."; - -== 373. I haven't seen any miscast effects except for the irradiation one. -I think this is due to a loop in spell.cc which tries to figure out -which school of miscast-effects applies to a given spell. The loop is -a bit past line 300 and seems to ignore the new 'bitmap' representation -of spell-schools. I know that miscast_effects is getting bogus sptyps. - -Full, real fix: -unsigned int sptype = 0; -do { - sptype = 1 << (random2(SPTYP_LAST_EXPONENT+1)); -} while (!spell_typematch(spc2, sptype)); - -== 374. -newgame.cc::3410 + if (you.species == SP_HILL_DWARF || -+ you.species == SP_MOUNTAIN_DWARF) -+ you.skills[SK_MACES_FLAILS] = 1; -+ else - you.skills[SK_SHORT_BLADES] = 1; - -== 375. Later in newgame.cc: Now that Sludge Elves suck at enchantments -and conjurations, we could remove the options for them to be Conjurers, -Reavers, Enchanters and Crusaders. - -** 376. Something is still deleting the ABJ_xx enchantment for summoned -monsters. Don't know what though. - -== 377. Fixed magic resistance of normal & small snakes. - -== 378. case CLOUD_POISON: - case CLOUD_POISON_MON: - if (mons_res_poison(monster->type) > 0) - continue; - if (monster->hit_points >= random2avg(37, 4)) - continue; - break; - -THIS IS WRONG VVV - - // dumb monsters can be fooled by smoke - if (mons_intel(monster->type) > I_ANIMAL || coinflip()) - continue; - - // this isn't harmful, but dumb critters might think so. - case CLOUD_GREY_SMOKE: - case CLOUD_GREY_SMOKE_MON: - if (mons_res_fire(monster->type) > 0 - || (monster->inv[MSLOT_ARMOUR] != NON_ITEM - && mitm.special[monster->inv[MSLOT_ARMOUR]] % 30 - == SPARM_FIRE_RESISTANCE)) - { - continue; - } - -== 379. Brent's 'friend-brand' patch - -== 380. Undead should *not* have morale failures, nor should the dumber ones avoid - flaming clouds of death (brown & white 'z's & 'Z's). Skeletal warriors - might avoid FCoD since they do make one other intelligent decision (wrt/ - casting their spell), but they ought never run away. - ->> who says running away is due to morale failure? ->> REALLY dumb (I_PLANT) creatures will now walk through harmful clouds. ->> this includes most of the shambling (mindless) undead - -== 381. quadrant_blink() from Brent -Brent Ross - - In this method, what we're going to try for is the best match, and - allow the number of choices to be based on power. The basic hope - is that while even high power characters have to put up with some - randomness, the diameter of the cone decreases making it more - reliable. - - let line = line segment extending out from player in the chosen dir - let best = NO_SQUARE - - for i = 1 to f(power) - targ = random nearby square - if (dist( targ, line ) < dist( best, line)) then - best = targ - else if (dist( targ, line ) == dist( best, line )) then - // Not really sure we want this part, maybe we should throw in - // a random to keep the distance sane. - if (dist( targ, player ) > dist( best, player )) then - best = targ - endif - endif - endfor - - if (best == NO_SQUARE) - mpr( "teleport control screwed up" ) - random_blink - else - player = best - endif - -== 382. De-twink wanderers - ->> undefined USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES until we have ->> "hedge" magic. - -== 383. Check that all spell books are listed for generation.. at least war chants - is missing. - -== 384. Add "Blowgun" (launcher) and "needle" (ammo) -: basically, go through all code looking for BOW, add blowgun -: go through all code looking for ARROW, add needle -: assassins now start w/ blowgun & needles - except for deep elves; they get hand xbows since they tend to - suck at HTH and will rely more on ranged damage. -: some chance for needles of Foo? (dungeon.cc) just poisoned -: some chance for blowguns of Foo? (dungeon.cc) of venom -: must remember to add in to item generation tables. :) -: change throw_it() so that blowguns and thrown darts are - very quiet; all others make a noise - check fight.cc for - a good noise value. Note that alert() is simply not called. -: give a couple monsters blowguns & needles to start -: needles get damaged far less often (but make them rarer; - maybe only carried by assassinish-monsters. -: Needle trap at higher levels; could be a source of needles? - -TODO: dungeon.cc::give_item() . which monsters have bguns/needles? -other files not searched for WPN_BOW and MI_ARROW (our template for -this stuff): - -== 385. fixed logic problem in cast_sandblast() - -== 386. If I cast a fire spell at something in the water, it leaves a trail of -steam behind it. A fireball should have the same effect (but of course -over a larger area) - -== 387. Josh' new diff (mostly Xom acts) - -== 388. A Skeletal Warrior just drank a potion of healing. This strikes me as -wrong, from both pseudo-physiological and gameplay perspectives. - -== 389. I saw hellwing which polymorphed jackal to lava fish. Probably -this is not bug but we should consider this. - -== 390. We've had -someone complain here about his Ogre not being able to wear one. -I thought we had decided that caps and wizard hats were wearable -by all characters, regardless of headsize or horns. -Anyone remember? - ->> there's a comment in item_use about caps & wiz hats being ->> wearable by anyone "unless their head is too big (ogres, etc)" - -== 391. I've found a number of eggplants in pr15, err, 4.1.15 - (these were supposed to be MI_NEEDLE.. what happened!?) - -== 392. -I made it to the Abyss... Now I'm stuck in this loop in -dungeon::define_zombie(): while(true) - { - // this limit can be updated if mons->number goes >8 bits.. - test = random2(182); // not guaranteed to be valid, so.. - cls = mons_charclass(test); - if (cls == MONS_PROGRAM_BUG || mons_rarity(cls) == 0) - continue; - ->> VERY tricky to fix correctly.. no wonder it was never done. - -(which monsters to allow as zombies in the abyss?) - -BWR: -Or perhaps just picks with the base level set as high as -possible... which will allow for Zombie Titans (which are high -enough level that they're never "naturally" generated, I believ - -Well simulacrums are out right away. They don't appear naturally -anywhere, due to the fact they sublimate away. On a similar note, -ball lightning shouldn't be generated anywhere, but I believe I -accidentally put them in the Realm of Zot... short lived creatures -should have to be summoned in. As for zombie/skeletons or even spectres (which I don't believe -are generated anywhere.... Spectral Warriors are generated, -but they're like Skeletal Dragons in that they're completely -different... don't think I've ever seen a Spectral "Thing" -in any dungeon, at least not one I didn't create myself) are -probably okay in the abyss... there are things like abominations, -necrophages, skeletal dragons/warriors there already. Spectres -might also be interesting in the Realm of Zot. - -== 393. Oh, dear. I think I might have left in a debugging bit that changes _all_ -generated traps to needle traps - they're supposed to be fairly rare, and only -seen below level 3! - -== 394. It looks like the logic in poison_monster() needs adjusting, too, if you're -getting credit for monsters done in by the poison from needle traps. Ah well. - -== 395. // * fixed: magical staves now described with new speed - -Actually, there's still one problem here. The '%' needs to be doubled, -since the description string will eventually be fired through cprintf()... -it currently gets dropped in both cases (weapon and stave). - -xx 396. An eloquent method of handling this would be to 'queue' shouting messages -between character actions and conflating multiple shouts into a single -message ("Several s shout" or whatever), possibly conflating by -monster type ("Several s shout out! A yelps!") so that the -player can be alerted to unique shouts and/or get the *flavor* of all -the various bellowing beasties. - -== 397. Make zombie monsters appear a few levels (3-4?) earlier than their non-zombie -counterparts - -== 398. -> I was blowing needles at an orc wizard, and he very politely gathered -> all the needles up for me. I appreciated him doing that rather than -> casting those nasty spells at me. :) - -Now, I thought that logic had been fixed (at least, in the case -of darts) such that monsters with potent HTH or spell attacks would -not lower themselves to gather scattered items for characters :P - ->> fixed better. Monsters won't pick up if there's not much there, they're ->> not wandering, and they already have ammo. Fleeing monsters never stop ->> to pick up ammo. - -== 399. Needle traps will poison the player even if he or she resists poison. - -xx 400. Some first level spells won't allow the player to target him- or herself. -This means that a player can't use those spells to see if he or she -resists their damage type. Knowing if one resists a damage type is useful -when trying on mysterious rings. - ->> need some restructuring to do this; burn_freeze() isn't set up to ->> actually affect the player. :P - -== 401. Personally, -I think Ijyb should probably get an XP modifier of 5 (and even -then is still worth 40 xp) - -== 403. -I think some kind of notice should be given, when body wich is carried -becomes rottens. And ghouls should definetly be able to see when -chunks of meat become rotten. As should everyone else, I think. - ->>mv: added appropriate messages - - -== 404. My Draconian monk (not so difficult as you might think) got mangled -by a goblin with seemingly limitless ammount of scrolls of summoning. -He summoned like 5-7 abdominations before my monk got killed. And -this was at level 2. Extremely bad luck or bug? - -== 405. Crash in pr14 -This occurred in the Realm of Zot, while attacking an Orb of Fire, which had -just exploded. - ->> very nasty. Fleeing monsters with "emergency" spells requiring tracers ->> would crash the game. - -xx 406. -When using Stone Skin with Dragonian it says "Your skin feels harder" -and "Your skin feels tender" instead of "Your scales feel harder" and -"You scales feel softer". - ->> These guys still have skin underneath all those scales.. - -== 407. Fix quadrant blink again: -Which gives us the one-step formula: - - dist = abs( (y - you.y_pos) * (tx - you.x_pos) - - (x - you.x_pos) * (ty - you.y_pos) ) / s - - where (x,y) is the player's targeted square/vector, - (tx,ty) is the spell's targeted square, - (you.x_pos, you.y_pos) is the player's position, - - and s is the distance between (x,y) and (you.x_pos, you.y_pos). - - - The important thing to notice here is that s is constant for all - of the trials (one or root-2), and since we don't care about - an accurate measurement (only a relative one between trials), - we can reduce it to one - -== 408. Although, 'f' does fire needles correctly, the ')' command doesn't - actually show that this is the case (see command.cc::list_weapons()). - -== 409. Poisoned needle gives messages in bad order. Patch from Guus. - -== 410. > I just noticed that my character has a Dex of 63. I've chosen every - > ability increase to be in dex, and he occasionally wields an artefact - > dagger that is +3 to dex. I don't think it relates to save files, - > as I haven't saved the game in three days. - - The stat growth is caused by autobutchering when the butchering weapon - has a stat bonus. I get the stat bonus when I wield the weapon, but do - not relinquish the bonus when I unwield it. - ->> ewww. this was ugly. - -xx 411. I was playing a Spriggan Transmuter when i entered the mines. I was - overwhelmed by +10 Orcs so i went back up. One orc followed me. I - then started running away until i was several spaces away, turned and - cast disrupt killing the orc. As the orc died the stairs to the - mines disappeared. - ->> can't reproduce. - -== 412. I've been trying out Chaos Knights and the critters that Xom summons - for you have this annoying habit of polymorphing the bad guys to - *way* OOD monsters. For example, my last knight was level 3 and is - listed at -19/28 HPs in the morgue file. This was one spell and he - was at full health when it happened. Although this was before the - latest patch so perhaps it's related to the other OOD problems. - -== 413. >I've seen that disorder message a few times too. The first time the - >game hung when I tried to go back up to that level. After that I - >avoided loading those levels again. :-) There really needs to be - >better sanity checking here. It's not right that a bad level can be - >generated and only found when the player stumbles across a bad pile - >of items. - - From what I can remember, this kind of thing is almost - certainly the result of bugs in either the monster inventory - code or the code responsible for placing monster corpses on - death. The behaviour where the player picks up an item and - it doesn't get listed in the inventory tended to be caused - by the existence of a link to an item with a quantity of 0 - (this also causes "a scrolls labelled SDFKLSFD" - when the - quantity is zero it puts an 's' on 'scroll' but leaves the 'a' - in front). - -== 414. Characters cannot exercise fighting, weapon, or unarmed combat skills - against plants/fungi, so perhaps they shouldn't exercise stabbing. - And plants/fungi should probably always appear disinterested. - - This assassin has also been paralyzing monsters, but can't seem to stab - one afterwards. - -== 415. My assassin carefully approached his victim: - - Move the cursor around to observe a square. - Press '?' for a monster description. - A plant. - It doesn't appear to be interested in you. - Floor. - ->> obviously need some kind of data-driven thingie here for stabbing / paying ->> attention. - -== 416. I fire a "Disrupt" at a worm just off screen (as I'm running away): - - You kill the worm! - Nothing appears to happen. - -== 417. He was standing on a down stairwell. He had full view of each of the - adjacent squares, but not all of distance 2 squares. He was at a little - over half his hp, and I hit '5' to rest and recover. - - Suddenly there was a bellow, and a hydra was beside him. The hydra - proceeded to lay the smack down, slaying the poor assassin. I guess - it's poetic justice, since the assassin slew quite a few monsters - by suddenly appearing beside them, fiery blade in hand. - ->> almost definitely a result of the new 'near stairs' code. Needs some ->> refinement, I suppose. (evil grin) - - -== 418. Elyvilon got upset when a needle trap killed a monster just after - I had prayed. :) - - -== 419. Over the course of the game I obtained around a dozen blowguns and only - one crossbow, so they may be too numerous. - - (most blowguns came from the ground) - -== 420. Two minor quibbles on spell descriptions. - - a) Unlike the other brand weapon spell dscriptionss, the Poison Weapon - spell description does not mention that the spell won't work on - branded weapons. - - b) The description of the Disrupt spell says that the spell "disrupts the - matter of another creature's body", but the spell also affects - creatures with non-material bodies. - -== 421. Fixed formatting problem with randart descriptions - -== 422. Changed slaying to be a little less powerful. - -== 423. Butchering with bare hands and a short blade in slot a doesn't -switch back to bare hands. (Naturally, I'm using the experimental -auto switch when butchering -setting.) - -== 424. mons_speed() should be extern, remove static declaration from mon-util. - -** 425. I have a ring of Baldness that somehow got cursed and now I am -stuck with it. Scrolls of remove curse have no effect. -Its not bad ring, but the increased metabolism isn't nice. - -== 426. More inventory problems: -while playing 4.0.0b16 I found two bugs: -1) when picking up items from the floor, after picking them up - it says "no -more items" (but it picks up the item). This bug is strange it happens only -at the very beginning of the game. For some reason after descending to Level -2 it has stopped from happening. - -2) picking up items from the same type: when you have say 2-chokos and there -is on the floor another one then when you stand on top of it - it says -3-chokos(it takes into account the ones you have in your inventory). Or the -other solution is that when you pickit up from the floor it replaces your -previous chokos with the last amount of that type picked up. (Because I had -2 chokos and after picking 3 chokos = I got 3, so it could be either -problem...dunno) - -== 427. Fix descrip. for rings of slaying. - -== 428. I met monsters with infinite potions. I hope it's also fixed. - -== 429. - in monstuff.cc::handle_nearby_ability() should be also handled - monsters behaviour - BEH_WANDER and BEH_SEEK, beacuse monsters speak - even if they don't know about player. Also it looks that Giant - eyeball can stare at player even if he isn't noticed (or if he is - invisible, but it's probably feature) - -== 430. Michal's patch (new unrands?) - >> mv: now included - not only unrands but mainly clean-ups and minor upgrades - -== 431. In view.cc:viewwindow2() was buffy changed from unsigned char to - unsigned short (I'm talking about - FixedVector buffy). - But at least with my compiler it doesn't work and viewwindow2() - doesn't show anything (only black screen). When I changed buffy back - to unsigned char it started to work again. - -== 432. Giant eyeballs no longer stare at friends. - -== 433. You throw a dart. - You throw a dart. - You throw a poisoned orcish dart. - You shoot a poisoned needle. - You shoot a poisoned needle. - You hear a grinding noise. - - ... with a dex 18 / darts 7 / throwing 4 player! - This is repeatable, and at times, I managed to - clear a rock wall with just two needles!!! Couple - this with the durability of needles, and players - have a poor-man's dig spell at their disposal. - -== 434. -I think I will change this condition so that a - monster with no ammo won't bother picking any up, - unless their melee attack really sucks. - -== 435. - You destroy the shapeshifter zombie! - - I sneak up on a defenseless cockroach and crush it with - my quarterstaff, only to be messaged that my character's - stabbing skill has increased. Is is just me, or does the - idea of stabbing with a quarterstaff seem a bit off? I - weakly suggest changing the name of the skill to something - less tied to impaling weapon types. "Ambush" skill or - "Bushwhack" skill or something similar. - ->> no more shapeshifter zombies. Improved messaging for stabbing. - -** 436. - - - Hi, - - Could you add a description of the / and * keys to the help screen? Keypad is - not always useable, especially not with ctrl and shift keys, this might help - some people. Patch attached. - - -== 437. - Note the extra space before the period: - - Methea's ghost stares at you . You feel cold. - - - This is a common construction used (I presume) - in mon_speak() [or whatever]. There should be - a comma placed after the verb ['begs' in this - case] for grammar's sake: - - Methea's ghost begs "Please don't hurt me!" - -== 439. - Package: crawl - Version: 1:4.0.0beta16-1 - Severity: minor - - Another small upstream gameplay issue. In the context of a rat I had - summoned attacking a kobold which was wielding a poisoned dagger: - - The rat hits the kobold. - The rat hits the kobold! - The kobold hits the rat with a runed dagger! - The rat looks ill. - You kill the rat! - That felt strangely unrewarding. - The rat's corpse disappears in a puff of smoke! - - The rat was killed by the kobold (via poison), not by me, but the messages - seem to indicate I killed it. - - This may be very tricky to reproduce, unfortunately :( - -== 440. -> * removed: no more spellcasting wanderers, until such time as we -> have some reasonable "hedge magic", which I will not add before -> release. - - A healthy percentage of my wanderers still start out with magic - skills. - - >> but not spells. - - -== 442. Repel undead doesn't seem to actually repel the undead. - - >> mv: fixed - -== 443. The enslaved stay enslaved even when you attack them. - -== 444. Change 'points' to 'point' if points needed == 1 in 'C' message - -== 445. -This is me and a summoned zombie vs. a goblin: - - You miss the goblin. - The goblin hits you with a club! - The giant cockroach zombie misses the goblin. - The goblin fails to defend itself. - You kill the goblin! - ->> very possible. Goblin was concentrating on the cockroach (lucky -you!) - -== 446. Add ???'s patch for FreeBSD support - -== 447. Zombie generation hangs in the various hells, the crypt, and probably - slime pits, ecu. temple, and others. - - >> think I got all cases of levels with no zombifiable native life. - -== 448. Monster polymorph can hang in HoB: - >> only valid monster for poly in HoB is Dancing weapon, which is EXPLICITLY - NOT a valid poly target. So it hangs. Duh! - -== 449. Shapeshifters no longer gain the extra abilities (spells, specials) - of their forms (they used to - I considered this a bug). - -== 450. Incredibly, monster enchantments were not being reset when a new level - was generated. This is an absolute showstopper and has probably corrupted all - games in progess. Most notable with permanent enchantments like shapeshifter - - this is what caused the "shapeshifter" dancing weapons that Josh (indirectly) - reported. - -** 451. As you read the scroll, it crumbles to dust. -Your club glows black for a moment. -Drop which item? -You drop a +0 dwarven hand axe. -You are empty-handed. - --- 452. -I hit an assert failure after reading a scroll of curse armour. From the -traceback, we see an immediate problem at the call to itemname::in_name() -at line 3358 of item_use.cc. The object to be named is -1. -#6 0x80b1797 in in_name (inn=-1, des=4 '\004', - str_pass=0x825b9a0 "a +1,+0 elven long sword") at itemname.cc:69 -#7 0x80b125b in read_scroll () at item_use.cc:3358 -#8 0x8050e2d in input () at acr.cc:880 - -Doing a quick compare between the pr16 & pr17 code, I think this line: - ok_to_curse[i] == (you.equip[i] != -1 - && you.inv_plus[you.equip[i]] < 130); - -should be: - ok_to_curse[i] = (you.equip[i] != -1 - && you.inv_plus[you.equip[i]] <= 130); - -** 453. -DOS, 486sx -4.1.16 Floating above a (dart) trap discovers it but gives no message. - - I'd like to see a message when Coronas wear out. - - >> mv: added - -4.1.17 Loading the game; Okawaru says: Welcome, disciple. - -A monster called "a human" was displayed as a darker (non-visible) - floor tile. - - >> mv: fixed - - -** 454 .Goblins and orcs still get infinite potions of healing?? - -** 455. I'm playing Crawl pr17 (I double-checked this time) under Solaris, and I just -got the "Too many items" bug with a minotaur monk. It had to do with a -cursed runed leather armor that I was carrying. I had a bunch of stuff in -my inventory, and read a scroll of detect curse (this is how I discovered -that the armor was cursed). So I dropped the armor and moved to another -spot. There I dropped some weapons that I wasn't interested in. I stepped -back to this spot later, there's a cursed runed leather armor. There's also -a cursed runed leather armor on the spot where I actually dropped it. I -picked one up and dropped in on the other, looked, and "Too many items." The -game hung when I tried to save. :^/ - -** 456. I was playing the same minotaur monk (I was able to salvage the game) when I -saw what I thought was a statue (an '8'). When I looked at it, I saw: - -You see 26 !questionable item (c100,t0,p0,p(2)0,d0:q26)s here. - -** 457. -I was wandering along when I met a hobgoblin. I kill him and decide to pick -up his weapon to see if it's good. I then get "do you want to pick up -hobgoblin corpse (y/n/a/q)"(or something like that). I type no. "do you -want to pick up hobgoblin corpse" No. "do you want... " no ad nauseum. I -give up and press q the game crashes. I restart and load the autosave. -Same thing happens. I this time press a and get -x - a hobgoblin corpse -x - a hobgoblin corpse -x - a hobgoblin corpse etc -It won't stop doing that - -Yours - -William Hull - -Another one: -at another time there was this situation: - -### -@g! the potion is yellow -### - -### -@!! after killing the goblin,a second yellow potion appeared -### - -but walking over both just gave me the msg "m - a yellow potion" twice. -afterwards i had just one yellow potion in my pack. - -(more) - -The item bug (duplicate items and potential lockup) seems to happen whenever -a monster picks something up off the floor. The most recent incident is -typical (at least in my games). - - - #'#### - #! - # ### - #K# - # - <@ ### - -Near the door is an emulsified red potion. After I kill the kobold (who had -previously been wandering around, i.e. he wasn't asleep), I find that he was -carrying an emulsifed red potion. Coincidence? I think not. In this -instance, I left the potion where it was sitting and checked out the potion -near the door. Underneath the potion is a kobold corpse. I go up the stairs -to the previous level, then return; the corpse and potion near the door are -gone. From previous experience, I know that picking up both potions/corpses -would have left me with just one potion/corpse in my inventory (assuming I -didn't have any before), and picking up one potion/corpse and dropping it -on top of the other potion/corpse will create the "Too many items" bug, and -cause the game to hang when saving the level. - -(more) - -Sorry to follow up on my own post, but I was browsing through the sources and -I noticed that in pickup() in items.cc, relink_cells() is called after the -player successfully picks up an item off of the floor. No such function is -called in handle_pickup() in monstuff.cc. Perhaps handle_pickup() should -call relink_cells() (which we know works) instead of trying to update the -igrd array itself. - - --- 458. My char with some stabbing skill stabbed a mimic wich was nerly dead -after many rounds of battle. I know there is bonus when attacking a -fleeing moster, but mimics cannot flee. - ->> fixed. Immobile monsters cannot flee. - -** 459. An artifact weapon of holy wrath does allow a demonspawn to wield it, wich -is bug or maybe not. - -** 460. ..to Sif Muna, so I went back to the Temple and converted. Little did I know -that Vehumet would hold a grudge. I survived a blue demon, an abomination, -and several magical blasts, but Vehumet eventually blasted me when I was low -on HP and did me in. *sigh* - -Anyway, here's the buglet: the high score list claims that my character was -killed by bad targeting. - --- 461. There is another one in monstuff.cc in handle_scroll when checking for -negative numbers of scrolls... -And yes it would be cool if they removed all the warnings (or at least -most of them). Removing unused variables would be a first step. - ->> - -** 462. In the dos binary of Crawl 17, when running the game with "crawl -plain" -option, the game screen is totally black. I still get the player statistics -and messages, but the map display that you normally see is blacked out. - -This is bad because the normal crawl display (without -plain) is a bit buggy -for me. (no cursor under the character). I also kinda prefer the # -character for walls (got used to ADOM) :) - -xx 463. Beam tracers: tweak to take into account what might happen if they _miss_. - -** 464. Level draining can cause -1/-1 -magic when used against ogre (or maybe -troll) character. - -== 465. Automatic weapon change when dissectiong gives a litle funny messages when -berserk: -Switching to your swap slot weapon. -You are too berserk! -Maybe you should try using a sharper implement. -Switching back to a - the uncursed great mace "Res". - - >> mv: fixed - -xx 466. My deep elf summoner cast summon demon from a staff of summoning (A -great item for a starting summoner.), and received an orange demon, -which proceded to attack me. None of the other demons had attacked. Is -this a bug, or is there some way to make demons hostile? - ->> 1 in 4 chance of hostile demon. - --- 467. Ettins have no description. I just met an elf and I think those should only -appear as corpses. It had description "A monster whose description has yet -to be written.". - - -== 468. Invalid polymorph targets (this has been reported several times). - There are several generic monster types which are _not_ valid poly. - targets: 'human' and 'elf' being two of the more common results when - polymorphing stuff. And yet, 'human' should probably be given some - generic statistics and then allowed as a target (it makes sense, after - all). - ->> mv: fixed now diff --git a/crawl-ref/docs/changes.stone_soup b/crawl-ref/docs/changes.stone_soup new file mode 100644 index 0000000000..f2de5d6635 --- /dev/null +++ b/crawl-ref/docs/changes.stone_soup @@ -0,0 +1,230 @@ +Stone Soup 0.1.3 (20061116) +--------------------------- +* Updated documentation and reorganised the manual. +* Jewellery puton/remove interface can now automatically remove amulets and + rings before wearing new jewellery. +* Rings/staves of wizardry give a bigger boost to spell success rates. +* [1594109] Fixed bad messages when trying to animate a weapon if no weapon is + wielded. +* [1589854] Orange and silver statues are now monsters. +* [1593356] Fixed ghouls being able to mutate. +* Fixed undead decomposing from mutation only if wearing an amulet of resist + mutation. +* [1593318] Rearranged skills display for ranged combat and unarmed combat. +* [1593089] Escape can be used to break out of sequential pickup prompt in + addition to 'q'. +* Curare-tipped needles are more fragile than ordinary needles. +* [1592629] \ now shows item identification knowledge in shops. +* [1592521] Fixed the invisibility check for tracer beams to produce nicer + results. +* Fixed beta 26 bug: Glow contamination has an extremely severe mutation rate. +* [1591152] Fixed macros being able to infinite loop. +* makefile.lnx renamed to makefile.unix. +* [1578169] More intelligent messages when monsters hit themselves. +* [1591105] Invisible monsters can no longer 'gesture wildly.' +* Added an option, increasing_skill_progress (default false), which if true + makes skills display in increasing percentiles. +* [1591103] Fixed incorrect no-damage messages with vorpal brands. +* [1590656] Fixed bad claw message. +* [1591269] Dissection failure hints why without easy_butcher. +* [1585863] Added a level compiler. +* [1589868] Lightning grounds on metal walls; fire/cold reflect off green + crystal. +* [1588662] Let the player know why they didn't pass out after berserking. +* [1589824] Long messages were being truncated. +* [1587182] Eliminated possibility of murky clear potions. +* [1588587] Amulets of resist corrosion also reduce acid damage. +* [1585820] Lowered skill penalties for player draconian colours. +* [1589141] Mimics can no longer push player off stairs. +* [1588831] Fixed poison frost/flame beams from blowguns being useless. +* [1581270] Amulet of the gourmand refactoring: + - When hungry, only converts contaminated chunks to clean. + - When not hungry, converts contaminated to clean, and provides nutrition + based on how long it's been worn, the effects maxing at 200 turns with + AotG. Maybe we should increase this further. + - Rotten chunks will sicken susceptible races even with AotG. + - Appropriate flavour messages for chunk taste. + - Changed description of AotG. +* Beam code rewritten. +* Line-of-sight code rewritten. +* [1584969] Allow the user to cancel out of a spell at targeting prompt without + losing the turn. +* [1581221] When taking a low-hp note, also mention what caused the hp loss. +* Chain lightning is a little more powerful. +* Shields can be worn/taken-off faster. +* Nemelex has a small chance of giving piety even for junk. +* [1586069] Fixed player yellow draconians not having a BWpn delay. +* [1585811] Fixed inability to generate fixedarts. +* [1585793] Increased frequency of altars and mini-temples. +* Fixed multidrop not remembering previously selected items that were + not dropped. +* Okawaru is less eager to shower missiles on the player. +* Slightly upped MR for draconians and death drakes. +* [1571251] Added a character picker to select existing savefiles. +* [1580955] Fixed mesclr() not happening for keypad action in DOS. +* [1581536] Monsters won't break fleeing if hit by missiles. +* [1578124] Additional help for level-map. +* [1581418] Curse toes are now visibly different from curse skulls. +* [1581730] Monster draconians can now have a base colour + skill title. +* [1578847] Summoned unholies are hostile to worshippers of good. +* [1567659] Ammo can ID through use. +* [1574591] Wait for one second after hinting "a fine choice". +* [1576514] Bees could cause bad fight messages. +* [1578752] Better handling of init.txt locations. +* [1581210] Draconians go to Zot, deep elves leave. +* [1571320] Ghost names were being truncated badly. +* [1571272] Ignore rod-recharge MP fluctuation while resting. +* [1578875] Added JPEG's trapwalk.lua to the list of official Lua scripts. +* Changed autopickup default to be the same as in the standard init.txt. +* [1579636] Fixed notes being generated after death. +* [1565579] [1565575] Rods and missile launchers work with shields. +* [1574462] Fixed labyrinth files not being deleted correctly. +* [1577066] If all items on a square are squelched, the squelch is ignored. +* [1563661] Character dump section order is now configurable with dump_order. +* Updated keyboard help screen. +* [1575175] Fixed orcs getting elven and dwarvish equipment. +* [1575517] Fixed broken colouring on rod spell screen. +* Piety gain works normally in the temple again. +* [1571342] Fixed bad grammar for rotting meat. +* Stash-tracking defaults to "explicit", rather than "none". +* Accept g as an alternative key to go into the pickup menu. +* Superior submerge behaviour for monsters in fountains. +* Fixed acquirement giving bad items (specifically with barding.) +* [1571334] Fixed clumsy titles: "Master of Thousand Battles", + "Master of Arcane". +* Lochaber axes now get correct combat messages. +* [1563548] Escape dumps you out of both menu and prompt. +* [1571278] Horn of Geryon monsters are defined as MF_CREATED_FRIENDLY and thus + give no benefits when dying. +* [1571276] Altar cards don't look for a better spot. +* Import of (most of) 4.1's view code. +* Spriggans are told that they are fast. +* [1567636] Made the Orcish Mines entrance message more informative. +* [1568413] Conjurers and wizards get to choose their starting spellbook. +* [1567640] Uniques with less than 5 hit dice can't get top-tier wands in their + starting inventory. +* [1563668] Travel respects easy_open. +* Added a better go-to-hell message when attempting to cast Swiftness in water. +* Berserkers now have stealth 0. +* 4.1 import: better messages when gaining skills, better '@' report. +* [1567625] Moths++. +* Ctrl-C is handled better on DOS and Windows. +* [1567688] Change Ogre starting weapon from club to ancus. +* [1567482] Capped wands of hasting at 9 charges. +* [1567674] Description change for wands of disintegration. +* [1567652] Empty wands are marked [empty]. +* [1567641] Butchery asks you to pick a corpse before switching weapons. +* [1567621] Warning if corpse rots during dissection. +* [1567613] Removed CMD_OBSOLETE_INVOKE. +* [1564899] Added "Power" column for spells screen. +* [1566657] Rings of teleportation are now pricier. +* [1566759] Fixed merfolk getting duplicate messages when entering water. +* [1566652] Fixed control teleport being noted in the dump even if unIDed. + +Stone Soup 0.1.2 (20060927) +--------------------------- +* Fixed shift-running and /-running on Windows and Unix. +* Giant (spiked) clubs were wieldable by almost everybody, fixed. +* Fixed giant clubs not producing brown snakes with sticks-to-snakes. +* Refixed Sif Muna piety gain - was much too fast. +* Weapon properties are closer to 4.0. +* Included Elethiomel's key help page on ? + +Stone Soup 0.1.1 (20060926) +--------------------------- +* The Inscriptions patch joins the party (minus keybindings changes). +* Applied Matthew Cline's additions to the Inscriptions patch: more notes on + monsters, auto-notes based on messages, etc. +* Jewellery names now note uncursed status correctly (if rather verbosely) +* Curare-tipped needles are rarer. +* The appropriate monsters resist curare effects. +* Okawaru no longer protects you from harm. +* Rods are generated with smaller mana reservoirs (max 14MP). +* Draconians are slightly weaker. Groups of draconians are smaller and more + homogeneous. +* Sif Muna piety training is easier. +* Sif Muna now has Channel Energy; Vehumet does not. +* Okawaru is less aggressive about spamming missile gifts. +* Fixed Ctrl+move ignoring confusion. +* Fixed broken keypad handling in level-map on DOS. +* Fixed jelly pits appearing at low levels. +* Added % command to show resists and other useful statistics. +* Fixed bad flaming/freezing brands on missile launchers (reported by + Rubinstein). +* Miscast effect explosions now always hit +* Fixed fireballs (and other explosions) being blocked by shields. +* Thrown needles are very inaccurate. +* Plain old elves are now of the correct intelligence. +* Scrolls of immolation can't burn themselves up. +* Player ghosts get MS_LEVEL_SUMMON if the player had Shadow Creatures. +* Fixed jelly-splitting bugs. +* Fixed splashed acid corroding items that shouldn't corrode. +* Revised wand pricing in shops. +* Fixed Book of Earth containing spells it shouldn't. +* Stuff dropped in lava/deep water will now sleep with the fishes. Er, be + destroyed. +* Autoprayer will not pray at altars. +* Water elementals can now move around as intended and can be summoned on blue + fountains. +* Vorpal launchers do a little more damage. +* Fixed monsters not benefiting from vorpal launchers. +* Fixed kill listing bugs on DOS. +* Quasits can now be generated. +* "Glow" status is now shown correctly. +* Demonspawn can get mutations while transformed. +* Monsters polymorphing into invisible monsters will be seen correctly by + players with see invisible. +* You now cannot read-identify scrolls of paper if you have three levels of + blurry vision. +* Acquirement grants more gold. +* Airstrike does more damage to flying monsters +* Shop items are coloured to indicate affordability. +* You can now cast spells in capital-lettered slots. +* Flying/levitating characters take half-damage from static discharge. +* Yellow wasps are less lethal. +* Items can be inscribed with =k to ignore them. Ignorance is rather powerful. +* Trolls cannot use claws for butchery when transformed. +* Putting on rings no longer prompts for left/right finger, rings always go + onto left finger first if both fingers are available. +* 'v' now also displays launcher stats. +* Fixed bug with monsters trying to use blink as a beam spell when out of player + LOS. +* 'A' screen now notes speed of centaurs and nagas. +* \ command display is now much tidier. +* Fixed horns mutation interaction with headgear. +* Summoner ghosts get regular summon small mammals, not vampire small mammal + summon. +* Added death drake description. + +Stone Soup 0.1 (20060918) +------------------------- +* Enhancer staves boost spell power only, not success rates +* Chain lightning (level 8) replaces Orb of electrocution. +* Miscellaneous spell level changes (Borgnor's, Silence, Simulacrum, Controlled + Blink). +* Sif Muna piety increases only when training spell skills +* Okawaru gives gifts of ammunition. +* Detect creatures is somewhat inaccurate; level-map is cleared before DC. +* The Shining One doesn't protest his Daevas dying. +* The Shining One gives Cleansing Flame instead of Thunderbolt. +* Rods (apart from striking) have mana reservoirs and gradually recharge mana + when wielded/carried. +* Shields are better. +* Warp brand is available once more. +* Curare-tipped needles are available in addition to generic poisoned needles. +* Monsters are never generated in LOS when a new game begins. +* Monsters can swap positions with other monsters of the same class. +* Missile launchers can be acquired/gifted by Okawaru. +* Fire/frost missiles are more powerful. +* Launchers support the vorpal brand. +* Throwing skill renamed to Ranged Combat. +* Ranged Combat now has no impact on ammo preservation. +* Added monster draconians and death drakes. Drakes are now all on 'l' instead + of 'd'. +* Added lajatang, lochaber axe and longbow. +* Save/bones version number is now 0.x so stone_soup cannot load 4.0 saves. +* Monsters can cast poison arrow +* Naga melee damage upped slightly. +* Jelly pits +* Missile weapons are stronger. +* Evocations no longer increases max MP. diff --git a/crawl-ref/docs/crawl.txt b/crawl-ref/docs/crawl.txt deleted file mode 100644 index 355522e792..0000000000 --- a/crawl-ref/docs/crawl.txt +++ /dev/null @@ -1,1250 +0,0 @@ - Dungeon Crawl version 3.40 - (Copyright 1997, 1998, 1999 Linley Henzell) - -Crawl is a fun game in the grand tradition of games like Rogue, Hack and -Moria. Your objective is to travel deep into a subterranean cave complex and -retrieve the Orb of Zot, which is guarded by many horrible and hideous -creatures. - -Detailed instructions for playing Crawl follow. If you want to get into the -game quickly, read the quick-start guide (README.TXT) and learn as you play. -Otherwise, it may be worth your while to read at least part of this file -(although it will probably confuse you somewhat). Read at least the disclaimer -at the end of this document and the LICENCE.TXT file, though. - ----------------------------------------------------------------------------- - CHARACTER SPECIES ----------------------------------------------------------------------------- - -You have a number of different species to choose from. This affects several -characteristics: - - o Your choice of classes - o Your initial attributes - o Occasional bonus points added to some abilities - o The amount of hit points you get each level - o The amount of magic points you get each level - o Your initial equipment - o Your rate of level advancement - o Your rate of skill advancement - o Various special abilities and powers - -Note: Some species are slower than humans in most/all skills. For some -classes these races may seem to have very few skills because they haven't -quite earned the first level of several of their skills (Centaurs are -notable in this regard... although non-human Wanderers can appear to -start with no apparent skills at all). This isn't a bug or an oversight, -these species are just particularly weaker than humans at these classes. - -If you practise the skills you think or know are missing early on, they -should pick up the remaining skills very quickly (and their training will be -more complete). - - -The species: - -Human: - - Humans tend to be hardworking and industrious, and learn new things quickly. - The human race is the most versatile of all the species available to - players. Humans advance quickly in levels and have equal abilities in all - skills. Humans can also be of any class. - -Elves: - - There are a number of distinct races of elf in the world. Elves are all - physically slight but long-lived people, quicker-witted than humans but - sometimes slower to learn new things. Elves are especially good at using - those skills which require a degree of finesse, such as stealth, sword- - fighting and archery, but tend to be poor at using brute force and inelegant - forms of combat. They find heavy armour uncomfortable, and make the finest, - lightest armours to be found anywhere. Elves are particularly good at using - elven weapons. - - Due to their fey natures, all elves are good at using enchantments and air - elemental magic and most are poor at invoking the powers of earth and death - (necromancy). - - Those of the most common strain are referred to simply as elves or, when - they're not listening, as common elves. Common elves have good intelligence - and dexterity, but suffer a bit in strength. They have slightly fewer HP and - slightly more magic than humans, and advance in experience a bit more - slowly. - - High elves are a tall and powerful elven race who advance in levels very - slowly, requiring half again as much experience as do humans. They share the - same attributes as common elves in most respects, but their strengths and - weaknesses tend to be more pronounced. - - Grey elves also advance slowly, but not as slowly as high elves. They excel - at using short and long swords and bows, but are poor at other fighting - skills. They are excellent at all forms of magic except for necromancy. - - The deep elves are an elven race who long ago fled the overworld to live in - darkness underground. There they developed their mental powers, evolving a - natural gift for all forms of magic (including necromancy and earth magic), - and adapted physically to their new environment, becoming shorter and weaker - than other elves and losing all colouration. They are poor at hand-to-hand - combat but excellent at fighting from a distance. - - Sludge elves are a somewhat degenerate race of elves. They are mirror images - of normal elves in some respects: they have no special proficiency with bows - or swords (long or short), nor do they have any aptitude in the traditional - areas of high elven magic (enchantments, conjurations and divinations). On - the other hand, they are superlative transmuters, and are comfortable - dabbling in necromantic, poison and elemental magic. As fighters they are - often more dangerous unarmed than armed. They advance in level slightly - faster than their common brethren. - -Dwarves: - - Dwarves are short, hardy people. They love to fight, and often venture forth - from their subterranean cities to seek fame and fortune through battle. - Their armour and weapons are very well-crafted and much more durable than - the products of lesser artisans. Dwarves are particularly dangerous when - using dwarven weaponry. - - Hill dwarves are extremely robust but are poor at using magic. They are - excellent at hand combat, especially favouring axes or bludgeoning weapons, - and are good at using armour and shields, but are poor at missile combat or - at using polearms (which are usually too big for them to wield comfortably). - The only forms of magic which they can use with even a minimal degree of - aptitude are earth, fire and conjurations. They advance in levels at a - similar rate to common elves. - - Mountain dwarves come from the larger, more civilised communities of the - mountains. They advance slightly more quickly than hill dwarves and are - almost as robust while having similar aptitudes, but are slightly worse at - fighting while being slightly better at more civilised pursuits. - -Halflings: - - Halflings, who are named for being about half the size of a human, live in - small villages. They live simple lives, and have simple interests. Some - times a particularly restless halfling will leave his or her village in - search of adventure. - - Halflings are very small and are among the least robust of any character - species. Although only average at most fighting skills, they can use short - blades well and are good at all forms of missile combat. They are also very - stealthy and good at dodging and stabbing, but are poor at magic (except - enchantments and, for some reason, translocations). They advance in levels - as rapidly as humans. Halflings cannot wield large weapons. - -Gnomes: - - Gnomes are an underground-dwelling race of creatures, related to the - dwarves but even more closely in touch with the earth. - - They are quite small, and share many of their characteristics with - halflings (except for the great agility), although they advance slightly - more slowly in experience levels. They are okay at most skills, but - excellent at earth elemental magic and very poor at air magic. - - Occasionally they can use their empathy with the earth to sense their - surroundings; this ability increases in power as they gain experience - levels. - -Orcs: - - Hill orcs are orcs from the upper world who, jealous of the riches which - their cousins the cave orcs possess below the ground, descend in search of - plunder and adventure. - - Hill orcs are as robust as the hill dwarves, but have very low reserves of - magical energy. Their forte is brute-force fighting, and they are skilled at - using most hand weapons (with the exception of short blades, at which they - are only fair), although they are not particularly good at using missile - weapons. They prefer to use their own weapons. Orcs are poor at using most - types of magic with the exception of conjurations, necromancy, and earth and - fire elemental magic. They advance as quickly as humans. - -Kobolds: - - Kobolds are small, ugly creatures with few redeeming features. They are not - the sort of people you would want to spend much time with, unless you happen - to be a kobold yourself. - - They have poor abilities and have similar aptitudes to halflings, without - the excellent agility. However, they are better than halflings at using - some types of magic, particularly summonings and necromancy. They often - live as scavengers, surviving on carrion, but are carnivorous and can - only eat meat. They advance in levels as quickly as humans. - -The Undead: - - As creatures brought back from beyond the grave they are naturally immune to - poisons and negative energy, have little warmth left to be affected by cold, - and are not susceptible to reductions in their physical or mental abilities. - - There are two type of undead available to players: Mummies and Ghouls. - -Mummies: - - Mummies are undead creatures who travel into the depths in search of - revenge, redemption, or just because they want to. - - Mummies progress very slowly in level, half again as slow as humans, and in - all skills except fighting, spellcasting and necromancy. As they increase in - level they become increasingly in touch with the powers of death, but cannot - use some types of necromancy which only affect living creatures. The side - effects of necromantic magic tend to be relatively harmless to mummies. - However, their dessicated bodies are highly flammable. They also do not need - to eat or drink, and in any case are incapable of doing so. - -Ghouls: - - Ghouls are horrible undead creatures, slowly rotting away. Although ghouls - can sleep in their graves for years on end, when they rise to walk among the - living they must eat flesh to survive. Raw flesh is preferred, especially - rotting or tainted meat, and ghouls gain strength from consuming it. - - They aren't very good at doing most things, although they make decent - fighters and, due to their contact with the grave, can use ice, earth and - death magic without too many difficulties. - -Naga: - - The Naga are a race of hybrids: humanoid from the waist up, with a large - snake tail instead of legs. - - They are reasonably good at most things and advance in experience levels at - a decent rate. They are naturally immune to poisons, can see invisible - creatures, and have tough skin, but their tails are relatively slow and - cannot move them around as quickly as can other creatures' legs (this only - affects their movement rate; all other actions are at normal speed). Their - body shape also prevents them from gaining full protection from most armour. - - Every now and then, a naga can spit poison; the range, accuracy and damage - of this poison increases with the naga's experience level. - -Ogres and Ogre Mages: - - Ogres are huge, chunky creatures related to orcs. They are terrible monsters - who usually live to do nothing more than smash, smash, smash, and destroy. - - They have great physical strength, but are bad at almost everything except - fighting and learn quite slowly. Because of their large size they can only - wear loose robes, cloaks and animal skins. Although ogres can eat almost - anything, their size means that they need to do so more frequently than - smaller folk. - - Ogre-mages are a separate race of ogres who are unique among the beefier - species in their ability to use magic, especially enchantments. Although - slighter than their common ogre relatives they nevertheless have great - strength and can survive a lot of punishment. They advance in level as - slowly as high elves. - -Trolls: - - Trolls are like ogres, but even nastier. They have thick, knobbly skins of - any colour from putrid green to mucky brown and their mouths are full of - ichor-dripping fangs. - - They can rip creatures apart with their claws, and regenerate very quickly - from even the most terrible wounds. They learn very slowly indeed - even - more slowly than high elves - and need a great amount of food to survive. - -Draconians: - - Draconians are a race of human-dragon hybrids: humanoid in form and - approximately human-sized, with wings, tails and scaly skins. Draconians - start out in an immature form with brown scales, but as they grow in - power they take on a variety of colours. - - Some types of draconians have breath weapons. Draconians advance very slowly - in level, but are reasonably good at all skills but armour (most types of - which they cannot wear) and missile weapons. - -Centaurs: - - The Centaurs are another race of hybrid creatures: horses with a human - torso. They usually live in forests, surviving by hunting. - - Centaurs can move very quickly on their four legs, and are excellent - with bows and other missile weapons; they are also reasonable at the - Fighting skill while being slow learners at specific weapon skills. They - advance quite slowly in experience level and are rather sub-average at - using magic. Due to their large bulk, they need a little extra food to - survive. - -Demigods: - - Demigods are mortals (humans, orcs or elves, for example) with some divine - or angelic ancestry, however distant; they can be created by a number of - processes including magical experiments and the time-honoured practice of - interplanar miscegenation. - - Demigods look more or less like members of their mortal part's race, but - have excellent abilities (strength, int, dex) and are extremely robust; they - can also draw on great supplies of magical energy. On the downside they - advance very slowly in experience, gain skills slightly less quickly than - humans, and due to their status cannot worship the various Gods and Powers - available to other classes of being. - -Spriggans: - - Spriggans are small magical creatures distantly related to elves. They - love to frolic and cast mischevious spells. - - They are poor fighters, have little physical resilience, and are terrible at - destructive magic - conjurations, summonings, necromancy and elemental - spells. On the other hand, they are excellent at other forms of magic and - are very good at moving silently and quickly. So great is their speed that a - spriggan can keep pace with a centaur. - -Minotaurs: - - The minotaur is yet another hybrid - a human body with a bovine head. It - delves into the Dungeon because of its instinctive love of twisting - passageways. - - Minotaurs are extremely good at all forms of physical combat, but are - awful at using any type of magic. They can wear all armour except for - some headgear. - -Demonspawn: - - Demonspawn are horrible half-mortal, half-infernal creatures - the flip side - of the Demigods. Demonspawn can be created in any number of ways: magical - experiments, breeding, unholy pacts, etc. Although many demonspawn may be - indistinguishable from those of pure mortal stock, they often grow horns, - scales or other unusual features. Powerful members of this class of beings - also develop a range of unholy abilities, which are listed as mutations (and - can sometimes be activated with the 'a' command). - - Demonspawn advance quite slowly in experience and learn most skills at about - the same rate as do Demigods. However, they are a little better at fighting - and much better at conjurations, summonings, necromancy and invocations. - -Kenku: - - The Kenku are an ancient and feared race of bird-people with a legendary - propensity for violence. Basically humanoid with bird-like heads and clawed - feet, the kenku can wear all types of armour except helmets and boots. - Despite their lack of wings, powerful kenku can fly and very powerful - members of this race can stay in the air for as long as they wish to do so. - - They are experts at all forms of fighting, including the magical arts of - combat (conjurations, summonings and, to a lesser extent, necromancy). They - are good at air and fire elemental magic, but poor at ice and earth magic. - Kenku do not appreciate any form of servitude, and so are poor at using - invocations. Their light avian bodies cannot sustain a great deal of injury. - -Merfolk: - - The Merfolk are a hybrid race of half-human, half-fish that typically - live in the oceans and rivers and seldom come onto the land. The merfolk - aren't as limited on land as some myths suggest, their tails will quickly - reform into legs once they leave the water (and, likewise, their legs - will quickly reform into a tail should they ever enter water). Their - agility is often misjudged, and they tend to be surprising nimble on - land as well as in the water. Experts at swimming they need not fear - drowning as they can quickly slip out of any encumbering armour during - the transformation into their half-fish form. - - The Merfolk have developed their martial arts strongly on thrusting - and grappling, since those are the most efficient ways to fight - underwater. They, therefore, prefer polearms and short swords above - all other weapons, although they can also use longer swords quite well. - - As spellcasters, they tend to be quite good in specific areas. Their - mystical relationship with water makes it easier for them to use - divination, poison, and ice magics... which use water occasionally - as a material component. The legendary water magic of the merfolk - was lost in ancient times, but some of that affinity still remains. - The instability of their own morphogenic matrix has made them very - accomplished transmuters, but most other magics seem foreign to them. - -Note: - - Some species have special abilities which can be accessed by the 'a' - abilities menu. Some also have physical characteristics which allow them - to make extra attacks using the Unarmed Combat skill. - ----------------------------------------------------------------------------- - CHARACTER CLASSES ----------------------------------------------------------------------------- - -In your quest, you play as one of a number of different types of characters. -Although each has its own strengths and weaknesses, some are definitely -easier than others, at least to begin with. The best classes for a beginner -are probably Gladiators, fighters and Berserkers; if you really want to play -a magician, try a Conjurer. Each class starts out with a different set of -skills and items, but from there you can shape them as you will. - -Fighters: - - Fighters start with a decent weapon, a suit of armour and a shield. They - have a good general grounding in the arts of fighting. - -Gladiators: - - The Gladiator is trained to fight in the ring, and so is an expert in the - art of fighting but is not so good at anything else. In fact, Gladiators are - pretty terrible at anything except bashing monsters with heavy things. They - start with a nasty weapon, a small shield, and armour. - -Berserkers: - - Berserkers are hardy warriors who worship Trog the Wrathful, from whom they - get the power to go berserk (as well as a number of other powers should they - prove worthy) but who forbids the use of spell magic. They enter the dungeon - with an axe and a set of leather armour. - -Hunters: - - The Hunter is a type of fighter who specialises in missile weapons. A Hunter - starts with a bow and some arrows, as well as a hunting knife and a set of - leathers. - -Monks: - - The Monk is a member of an ascetic order dedicated to the perfection of - one's body and soul through the discipline of the martial arts. Monks start - with very little equipment, but can survive without the weighty weapons and - spellbooks needed by other classes. - -Thieves: - - The Thief is one of the trickiest classes to play. Thieves start out with a - large variety of useful skills, and need to use all of them to survive. - Thieves start with a short sword, some throwing darts, and light armour. - -Assassin: - - An Assassin is a thief who is especially good at killing. Assassins are like - thieves in most respects, but are more dangerous in combat. - -Stalkers: - - The stalker is an assassin who has trained in the use of poison magic. - -Crusaders: - - The Crusader is a decent fighter who can use the magical art of enchantment - to become more dangerous in battle. Crusaders start out lightly armed and - armoured, but equipped with a book of martial spells. - -Reavers: - - Reavers are warriors who learn the magics of destruction in order to - complement their deadliness in hand combat. - -Death Knights: - - The Death Knight is a fighter who aligns him or herself with the powers of - death. There are two types of Death Knights: those who worship and draw - their abilities from the Demon-God Yredelemnul, and those who study the - fearsome arts of necromancy. - -Chaos Knights: - - The Chaos Knight is a fighter who chooses to serve one of the fearsome and - unpredictable Gods of Chaos. He or she has two choices: Xom or Makhleb. - Xom is a very unpredictable (and possibly psychotic) entity who rewards - or punishes according to whim. Makhleb the Destroyer is a more purposeful - God, who appreciates destruction and offers a variety of very violent - powers to the faithful. - -Paladins: - - The Paladin is a servant of the Shining One, and has many of the abilities - of the Fighter and the Priest. He or she enters the dungeon with a sword, - a shield, a robe, and a healing potion. - -Priests: - - Priests serve either Zin, the ancient and revered God of Law, or the - rather less pleasant Death-God Yredelemnul. Although priests enter the - dungeon with a mace (as well as a priestly robe and a few healing - potions), this is purely the result of an archaic tradition the reason - for which has been lost in the mists of time; Priests are not in any way - restricted in their choice of weapon skills. - -Healers: - - The Healer is a priest of Elyvilon. Healers begin with minor healing - powers, but can gain far greater abilities in the long run. - -Magicians: - - The magician is not a class, but a type of class. A magician is the best - at using magic. Magicians start with a dagger, a robe, and a book of - spells which should see them through the first several levels. There are - various kinds of magicians: - - A Wizard is a magician who does not specialise in any area of magic. - Wizards start with a variety of magical skills and the magic dart spell in - memory. - - The Conjurer specialises in the violent and destructive magic of - conjuration spells. Like the Wizard, the Conjurer starts with the magic - dart spell. - - The Enchanter specialises in the more subtle area of enchantment magic. - Although not as directly powerful as conjurations, high-level enchantments - offer a wide range of very handy effects. The Enchanter begins with - lightly enchanted weapons and armour, but no direct damage spell (since - enchantments does not deal with direct attacks). Instead they begin - with the "confusing touch" spell and some enchanted darts, which should - help them out until they can use the higher level enchantment spells. - - The Summoner specialises in calling creatures from this and other worlds - to give assistance. Although they can at first summon only very wimpy - creatures, the more advanced summoning spells allow summoners to call on - such powers as elementals and demons. - - The Necromancer is a magician who specialises in the less pleasant side of - magic. Necromantic spells are a varied bunch, but many involve some degree - of risk or harm to the caster. - - Elementalists are magicians who specialise in one of the four types of - elemental magic: air, fire, earth, or ice. - - Fire Magic tends towards destructive conjurations. - - Ice Magic offers a balance between destructive conjurations and - protective enchantments. - - Air Magic provides many useful enchantments in addition to some - unique destructive capabilities. - - Earth Magic is a mixed bag, with destructive, defensive and utility - spells available. - - Venom mages specialise in poison magic, which is extremely useful in the - shallower levels of the dungeon where few creatures are immune to it. Poison - is especially effective when used against insects. - - Transmuters specialise in transmigrations, and can cause strange changes - in themselves and others. - - Warpers specialise in translocations, and are experts in travelling long - distances and positioning themselves precisely. - -Wanderers: - - Wanderers are people who have not learned a specific trade. Instead, - they've travelled around becoming "Jacks-of-all-trades, master of none". - They start the game with a large assortment of skills and maybe some - small items they picked up along the way, but other than that they're - pretty much on their own. Non-human wanderers might not even know which - skills they have (since they haven't quite learned enough for one full - level), and therefore make for an additional challenge. You shouldn't - expect human wanderers to be easy either, as this class is typically - harder to play than the other classes. - ----------------------------------------------------------------------------- - EXPERIENCE ----------------------------------------------------------------------------- - -When you kill monsters, you gain experience points (xp) (you also receive -one half experience for monsters killed by friendly creatures). When you -get enough xp, you gain an experience level, making your character more -powerful. As they gain levels, characters gain more hit points, magic -points, and spell levels. - -Additionally, the experience you gain is used for your experience pool. -This pool of points is used up whenever you practice a skill. - ----------------------------------------------------------------------------- - SKILLS ----------------------------------------------------------------------------- - -Your character has a number of skills which affect his or her ability to -perform certain tasks. You can see your character's skills by pressing the 'm' -key; the higher the level of a skill, the better you are at it. Every time -your character gains experience points, those points become available to -increase skills. You convert experience points into skill levels by practising -the skill in question (eg fight with a certain type of weapon, cast a certain -type of spell, or walk around wearing light armour to practise stealth). The -amount of unassigned experience points is shown next to your experience total -on the main screen as well as on the skills screen, and the number in blue -next to each skill counts down from 9 to 0 as you get closer to gaining a -level in that skill. - -You can elect not to practise a particular skill by selecting it in the skill -screen (making it turn dark grey). This means that you will be less likely to -increase that skill when you practise it (and will also not spend as many -experience points on it). This can be useful for skills like stealth which use -up points whenever you move. It can also be used on a specific weapon skill if -you want to spend more points on Fighting, and similarly with magic skills and -Spellcasting. - -The species you have chosen for your character has a significant effect on -your rate of advancement in each skill. Some races are very good at some -skills and poor at others. If your character is naturally quick to learn a -skill, they will require less experience and take less time to advance in it; -being bad at a skill has the opposite result. - -Here is a description of the skills you may have: - - -Fighting skills: - - Fighting is the basic skill used in hand-to-hand combat, and applies no - matter which weapon your character is wielding (if any). It is also the - skill which determines the number of hit points your character gets as - they increase in level (note that this is calculated so that you don't get - a long run advantage by starting out with a high fighting skill). - - Weapon skills affect your ability to fight with specific melee weapons. - Weapon skills include: - - o Short Blades - o Long Blades - o Maces & Flails - o Axes - o Staves - o Polearms - - If you are already good at a weapon, say a long sword, and you practise - for a while with similar weapon such as a short sword, your practise will - be speeded up (and will require less experience) until both skills are - equal. Similar types of weapons include: - - o Short Blades and Long Blades - o Maces & Flails and Axes - o Polearms and Axes - o Staves and Polearms - - Being good at a specific weapon improves the speed with which you can use - it by about 10% every two skill levels. Although lighter weapons are - easier to use initially, as they strike quickly and accurately, heavier - weapons increase in damage potential very quickly as you improve your - skill with them. - - Unarmed Combat is a special fighting skill. It allows your character to - make a powerful attack when unarmed and also to make special secondary - attacks (and increases the power of those attacks for characters who get - them anyway). You can practise Unarmed Combat by attacking empty-handed, - and it is also exercised when you make a secondary attack (a kick, punch - etc). Unarmed combat is particularly difficult to use in combination with - heavy armour, and characters wearing a shield or wielding a two-handed - weapon other than a staff lose the powerful punch attack. - -Throwing skills: - - Throwing is the basic skill used when throwing things, and there are a - number of individual weapon skills for missile weapons as well: - - o Darts - o Bows - o Crossbows - o Slings - -Magic skills: - - Spellcasting is the basic skill for magic use, and affects your reserves of - magical energy in the same way that Fighting affects your hit points. Every - time you increase your spellcasting skill you gain some magic points and - spell levels. Spellcasting is a very difficult skill to learn, and requires - a large amount of practice and experience. - - Only those characters with at least one magic skill at level one or above - can learn magical spells. If your character has no magic skills, he or she - can learn the basic principles of the hermetic arts by reading and reciting - the spells inscribed on magical scrolls (this stops being useful once you - reach level one in Spellcasting). - - There are also individual skills for each different type of magic; the - higher the skill, the more powerful the spell. Multidisciplinary spells use - an average of the two or three skills. - - Elemental magic is a special case. When you practise an elemental magic - skill (fire, ice, air or earth magic) you will improve much less quickly - than normal if you already have one or more elemental magic skills higher - than the one you are practising. This is especially true if those skills are - 'opposed' to the one you're practising: fire and ice are mutually opposed, - as are earth and air. - - Say you have level 2 fire magic, level 4 ice magic, and level 1 air magic. - Practising ice magic won't be a problem. Practising air magic will be a bit - slow, as you have other elemental skills at higher levels. Practising fire - magic will be very slow, as you have a higher level in ice magic. Right? - -Miscellaneous skills: - -Armour: - - Having a high Armour skill means that you are used to wearing heavy armour, - allowing you to move more freely and gain more protection. - -Dodging: - - When you are wearing light armour, a high dodging skill helps you evade - attacks. - -Stealth: - - Helps you avoid being noticed. Try not to wear heavy armour or be encumbered - if you want to be stealthy. Big creatures (like trolls and ogres) are bad at - stealth. - -Stabbing: - - Lets you make a very powerful first strike against a sleeping/resting - monster who hasn't noticed you yet. This is most effective with a dagger, - slightly less effective with a short sword, and less useful (although by - no means of negligible effect) with any other weapon. - -Shields: - - Affects the amount of protection you gain by using a shield, and the degree - to which it hinders you. - -Traps & Doors: - - Affects your ability to notice hidden traps and doors and to disarm traps - when you find them. With this skill at a high level you will often find - hidden things without actively looking for them. - -Invocations: - - An easy-to-learn skill which affects your ability to call on your God for - aid. Those skilled at invoking have reduced fail rates and produce more - powerful effects. The Invocations skill affects your supply of magic in a - similar way to the Spellcasting skill and to a greater extent, but the two - are not cumulative - whichever gives the greater increase is used. Some - Gods (such as Trog) do not require followers to learn this skill. - -If your character does not have a particular skill, s/he can gain it by -practising as above. - ----------------------------------------------------------------------------- - ABILITIES ----------------------------------------------------------------------------- - -Your character is further defined by his or her abilities, which initially -vary according to class and species. - -Strength: - - Affects the amount of damage you do in combat, as well as how much stuff - you can carry. - -Intelligence: - - Affects how well you can cast spells as well as your ability to use some - magical items. - -Dexterity: - - Affects your accuracy in combat, your general effectiveness with missile - weapons, your ability to dodge attacks aimed at you, and your ability to use - thiefly skills such as backstabbing and disarming traps. Although your - dexterity does not affect your evasion score (EV) directly, any calculation - involving your EV score also takes account of your dexterity. - -Armour Class: - - Also called AC, when something injures you, your AC reduces the amount of - damage you suffer. The number next to your AC is a measure of how good your - shield (if any) is at blocking attacks. In both cases, more is better. - -Evasion: - - Also called EV, this helps you to avoid being hit by unpleasant things. - -Gold: - - This is how much money you're carrying. Money adds to your final score, - and can be used to purchase items in shops. - -Magic Resistance: - - Affects your ability to resist the effects of enchantments and similar - magic directed at you. Although your magic resistance increases with your - level to an extent determined by your character's species, the creatures you - will meet deeper in the dungeon are better at casting spells and are more - likely to be able to affect you. MR is an internal variable, so you can't - see what yours is. - -Special Abilities: - - Sometimes characters will be able to use special abilities, for example - the Naga's ability to spit poison or the magical power to turn invisible - granted by a ring. These are accessed through the 'a' command. - ----------------------------------------------------------------------------- - ITEMS ----------------------------------------------------------------------------- - - -In the dungeons of Crawl there are many different kinds of normal and magical -artefacts to be found and used. Some of them are useful, some are nasty, and -some give great power, but at a price. Some items are unique; these have -interesting properties which can make your life rather bizarre for a while. -They all fall into several classes of items, each of which is used in a -different way. Here is a general list of what you might find in the course of -your adventures: - -Weapons: - - These are rather important. You will find a variety of weapons in the - dungeon, ranging from small and quick daggers to huge, cumbersome - battleaxes and pole-arms. Each type of weapon does a differing amount of - damage, has a different chance of hitting its target, and takes a - different amount of time to swing. You should choose your weapons - carefully; trying to hit a bat with a greatsword is about as clever as - bashing a dragon with a club. For this reason it is wise to have a good - mixture of weapon skills. Skills affect damage, accuracy and speed. - - Weapons can be enchanted; when they are identified, they have values which - tell you how much more effective they are than an unenchanted version. The - first number is the enchantment to-hit, which affects the weapon's - accuracy, and the second is its damage enchantment; weapons which are not - enchanted are simply '+0'. Some weapons also have special magical effects - which make them very effective in certain situations. Some types of hand - weapons (especially daggers, spears and hand axes) are quite effective - when thrown. - - You can wield weapons with the 'w' command, which is a very quick action. - If for some reason you want to go bare-handed, type 'w' followed by a - hyphen ('-'). Note that weapons are not the only class of item which you - can wield. - - The ' (apostrophe) key is a shortcut which automatically wields item a. If - item a is being wielded, it causes you to wield item b instead, if possible. - Try assigning the letter a to your primary weapon, and b to your bow or - something else you need to wield only sometimes. Note that this is just a - typing shortcut and is not functionally different to wielding these items - normally. - -Ammunition: - - If you would rather pick off monsters from a safe distance, you will need - ammunition for your sling or bow. Darts are effective when simply thrown; - other kinds of ammunition require you to wield an appropriate device to - inflict worthwhile damage. Ammunition has only one "plus" value, which - affects both accuracy and damage. If you have ammunition suitable for - what you are wielding, the 'f' command will choose the first lot in your - inventory, or you can use the 't' command to throw anything. If you are - using the right kind of hand weapon, you will "shoot" the ammunition, - otherwise you "throw" it. - - When throwing something, you are asked for a direction. You can either - enter one of the directions on your keypad, or type '*' and move the - cursor over your target if they are not in a direct line with you. When - the cursor is on them, press '.' (period) or delete to target them (you - can also target an empty space if you want). If you press '>' instead of - '.', the missile will stop at that space even if it misses, and if the - target space is water, it may hit anything which might be lurking beneath - the surface (which would otherwise be missed completely). If you type '.' - (or del) instead of a direction or '*', or if you target yourself as - described above, you throw whatever it is at yourself (this can be useful - when zapping some wands; see later). Also, if you type 'p' instead of a - direction or '*', you will target your previous target (if still - possible). - -Armour: - - This is also rather important. When worn, most armour improves your Armour - Class, which decreases the amount of damage you take when something - injures you. Unfortunately the heavier types of armour also hamper your - movement, making it easier for monsters to hit you (ie reducing your - evasion score) and making it harder for you to hit monsters. These effect - can be mitigated by a high Armour skill. Wearing heavy armour also - increases your chances of miscasting spells, an effect which is not - reduced by your Armour skill. - - A Shield normally affects neither your AC or your evasion, but it lets you - block some of the attacks aimed at you and absorbs some of the damage you - would otherwise receive from things like dragon breath and lightning - bolts. Wearing a shield (especially a large shield) makes you less - effective in hand combat. Shields are more effective when you're fighting a - small number of foes than when you're surrounded. - - Some magical armours have special powers. These powers are sometimes - automatic, affecting you whenever you wear the armour, and sometimes must - be activated with the 'a' command. - - You can wear armour with the 'W' command, and take it off with the 'T' - command. - -Food: - - This is extremely important. You can find many different kinds of food in - the dungeon. If you don't eat when you get hungry, you will eventually - die of starvation. Fighting, carrying heavy loads, casting spells, and - using some magical items will make you hungry. When you are starving you - fight less effectively as well. You can eat food with the 'e' command. - -Magical Scrolls: - - Scrolls have many different magical spells enscribed on them, some good - and some bad. One of the most useful scrolls is the scroll of identify, - which will tell you the function of any item you have in your inventory; - save these up for the more powerful and inscrutable magic items, like - rings. You can read scrolls (and by doing so invoke their magic) with the - 'r' command. - -Magical Potions: - - While scrolls tend to affect your equipment or your environment, most - potions affect your character in some way. The most common type is the - simple healing potion, which restores some hit points, but there are many - other varieties of potions to be found. Potions can be quaffed (drunk) - with the 'q' command. Try to avoid drinking poisonous potions! - -Wands: - - Sometimes you will be lucky enough to find a stick which contains stored - magical energies. Wands each have a certain amount of charges, and a wand - will cease to function when its charges run out. You must identify a wand - to find out how many uses it has left. Wands are aimed in the same way as - missile weapons, and you can invoke the power of a wand by 'z'apping it. - -Rings: - - Magical rings are among the most useful of the items you will find in the - dungeon, but can also be some of the most hazardous. They transfer various - magical abilities onto their wearer, but powerful rings like rings of - regeneration or invisibility make you hunger very quickly when activated. - You can put on rings with the 'P' command, and remove them by typing 'R'. - You can wear up to two rings simultaneously, one on each hand; which hand - you put a ring on is immaterial to its function. Some rings function - automatically, while others require activation (the 'a' command). - - Amulets are similar to rings, but have a different range of effects (which - tend to be more subtle). Amulets are worn around the neck, and you can - wear only one at a time. - -Staves: - - There are a number of types of magical staves. Some enhance your general - spellcasting ability, while some greatly increase the power of a certain - class of spells (and possibly reduce your effectiveness with others). - Some are spell staves, and hold spells which you can cast without having - to memorise them first, and also without consuming food. You must wield a - staff like a weapon in order to gain from its power, and magical staves - are as effective as +0 quarterstaves in combat. Spell staves can be - Invoked with the 'I' command while you are wielding them. - -Books: - - Most books contain magical spells which your character may be able to learn. - You can read a book with the 'r' command, which lets you access a - description of each spell, or memorise spells from it with the 'M' command. - Some books have other special effects, and powerful spellbooks have been - known to punish the attentions of incompetent magicians. - -Carrion: - - If you manage to kill a monster delicately enough to avoid scattering bits - of it around the room, it may leave a corpse behind for you to play with. - Despite the fact that corpses are represented by the same '%' sign as - food, you can't eat them without first cutting them into pieces with the - 'D' command, and being extremely hungry helps as well. Even then, you - should choose your homemade food with great care. - -Miscellaneous: - - These are items which don't fall into any other category. You can use many - of them by wielding and 'I'nvoking them. You can also use some other - special items (such as some weapons) by invoking them in this way. - -Racial Items: - - Some items have been crafted by members of a gifted race, and have special - properties. In addition, items made by a specific race work better in the - hands of people of that race. - - Dwarven weapons and armours are very durable, and do not rust or corrode - easily. - - Orcish bows/crossbows are particularly effective in combination with orcish - arrows/bolts. - - Elven armour is unusually light, and does not affect the dodging or stealth - of its wearer to the extent that other armours do. Elven cloaks and boots - are particularly useful to those who wish to be stealthy, and elven bows are - particularly effective in conjunction with elven arrows. - -Getting Items: - - You pick items up with the ',' (comma) command and drop them with the 'd'rop - command. When you are given a prompt like "drop which item?" or "pick up - ?", if you type a number before either the letter of the item, or 'y' or - 'n' for yes or no, you will drop or get that quantity of the item. - - Typing 'i' gives you an inventory of what you are carrying. When you are - given a prompt like "Throw [or wield, wear, etc] which item?", you can type - the letter of the item, or you can type '?' or '*' to get an inventory list. - '?' lists all appropriate items, while '*' lists all items, appropriate or - not. When the inventory screen is showing "-more-", to show you that there - is another page of items, you can type the letter of the item you want - instead of space or enter. - - You can use the adjust command (the '=' key) to change the letters to which - your possessions are assigned. This command can be used to change spell - letters as well. - - Some items can be stickycursed, in which case they weld themselves to your - body when you use them. Such items usually carry some kind of disadvantage: - a weapon or armour may be damaged or negatively enchanted, while rings can - have all manner of unpleasant effects on you. If you are lucky, you might - find magic which can rid you of cursed items. - - Items like scrolls, potions and some other types each have a characteristic, - like a label or a colour, which will let you tell them apart on the basis of - their function. However, these characteristics change between each game, so - while in one game every potion of healing may be yellow, in another game - they might all be purple and bubbly. Once you have discovered the function - of such an item, you will remember it for the rest of the current game. You - can access your item discoveries with the '\' key. - - A very useful command is the 'v' key, which gives you a description of what - an item does. This is particularly useful when comparing different types of - weapons, but don't expect too much information from examining unidentified - items. - ----------------------------------------------------------------------------- - RELIGION ----------------------------------------------------------------------------- - -There are a number of Gods, Demons and other assorted Powers who will accept -your character's worship, and sometimes give out favours in exchange. You can -use the '^' command to check the requirements of whoever it is that you -worship, and if you find religion to be an inconvenience you can always -renounce your faith (use the 'a' command - but some Gods resent being -scorned!). - -The 'p' command lets you pray to your God. Anything you do while praying, you -do in your God's name - this is how you dedicate your kills or corpse- -sacrifices ('D' command) to your God, for example. Praying also gives you a -sense of what your God thinks of you, and can be used to sacrifice things at -altars. - -To use any powers which your God deems you fit for, access the abilities menu -with the 'a' command; God-given abilities are listed as invocations. - -Some classes start out religious; others have to pray at an altar to dedicate -themselves to a life of servitude. There are altars scattered all over the -dungeon, and your character has heard rumours of a special temple somewhere -near the surface. - ----------------------------------------------------------------------------- - MUTATIONS ----------------------------------------------------------------------------- - -Although it would doubtless be a nice thing if you could remain genetically -pure, there are too many toxic wastes and mutagenic radiations in the Dungeon -for that to be possible. If your character is so affected by these that he or -she undergoes physiological change, you can use the 'A' command to see how -much of a freak they've become and the 'a' command to activate any mutations -which can be controlled. - -You can also become mutated by overusing certain powerful enchantments, -particularly Haste (not the kind you get from being berserk) and Invisibility, -as your system absorbs too much magical energy - but you would have to spend -almost all of your time hasted or invisible to be affected. However, some -powerful items radiate dangerous levels of magical energy. More often than -not, the mutations caused by magical radiations express harmfully. - -Any demonic powers your character may have are listed in red; these are -permanent and can never be removed. If one of your powers has been augmented -by a mutation, it is displayed in a lighter red colour. - - ----------------------------------------------------------------------------- - SPELLCASTING ----------------------------------------------------------------------------- - -Magical spells are a very important part of surviving in the dungeon. Every -character class can make use of magical spells, although those who enter the -dungeon without magical skills must practise by reading scrolls before they -can attempt spellcasting. - -Spells are stored in books, which you will occasionally find in the dungeon. -Each spell has a Level, which denotes the amount of skill required to use it -as well as indicating how powerful it may be. You can only memorise a certain -number of levels of spells; type 'M' to find out how many. When you gain -experience levels, you can memorise more, and you will need to save up for -several levels to memorise the more powerful spells. When you cast a spell, -you temporarily expend some of your magical energy as well as becoming -hungrier (although more powerful spellcasters hunger less quickly from using -magic). - -High level spells are difficult to cast, and you may miscast them every once -in a while (resulting in a waste of magic and possibly dangerous side- -effects). Your chance of failing to cast a spell properly depends on your -skills, your intelligence, the level of the spell and whether you are wearing -heavy armour. Failing to cast a spell exercises your spell skills, but not by -as much as casting it successfully. - -Many of the more powerful spells carry disadvantages or risks; you should read -the spell description (obtained by reading the spellbook in which you found -the spell) before casting anything. - -Be careful of magic-using enemies! Some of them can use magic just as well as -you, if not better, and often use it intelligently. - - ----------------------------------------------------------------------------- - EXPLORING THE DUNGEON ----------------------------------------------------------------------------- - -You can make your character walk around with the numeric keypad (turn numlock -off) or the "Rogue" keys (hjklbnyu). If this is too slow, you can make your -character walk repeatedly by typing shift and a direction. They will walk in -that direction until any of a number of things happen: a hostile monster is -visible on the screen, a message is sent to the message window for any reason, -you type a key, or you are about to step on anything other than normal floor -or an undiscovered trap and it is not your first move of the long walk. Note -that this is functionally equivalent to just pressing the direction key -several times. - -If you press shift and '5' on the numeric keypad (or just the number '5' on -the keyboard) you rest for 100 turns or until your hit points or magic return -to full, whichever is sooner. You can rest for just one turn by pressing '.', -delete, 's', or '5' on the keypad. Whenever you are resting, you are assumed -to be observing your surroundings, so you have a chance of detecting any traps -or secret doors adjacent to you. - -The section of the viewing window which is coloured (with the '@' representing -you at the centre) is what you can see around you. The dark grey around it is -the parts of the level which you have visited, but cannot currently see. The -'x' command lets you move the cursor around to get a description of the -various dungeon features, and typing '?' when the cursor is over a monster -brings up a short description of that monster. You can get a map of the whole -level (which shows where you've already been) by typing the 'X' key. This map -specially colour-codes stairs and known traps, even if something is on top of -them. - -You can make your way between levels by using staircases, which appear as '>' -(down) and '<' (up), by pressing the '>' or '<' keys. If you ascend an up -staircase on level one, you will leave the dungeon forever; if you are -carrying the magical Orb of Zot, you win the game by doing this. - -Occasionally you will find an archway; these lead to special places like -shops, magical labyrinths, and Hell. Depending on which type of archway it is, -you can enter it by typing '<' or '>'. - -Doors can be opened with the 'o' command and closed with the 'c' command. -Pressing control plus a direction also opens doors. If there is no closed door -in the indicated space, you will attempt to attack any monster which may be -standing there (this is the only way to attack a friendly creature hand-to- -hand). If there is no creature there, you will attempt to disarm any trap in -the target square. If there is apparently nothing there you will still attack -it, just in case there's something invisible lurking around. - -A variety of dangerous and irritating traps are hidden around the dungeon. -Traps look like normal floor until discovered. Some traps can be disarmed with -the control-direction commands - -When you are in a shop, you are given a list of the shopkeeper's stock from -which to choose, and a list of instructions. Unfortunately the shopkeepers all -have an enterprise bargaining agreement with the dungeon teamsters union which -prevents them using non-union labour to obtain stock, so you can't sell -anything in a shop (but what shopkeeper would trust a scummy adventurer like -you, anyway?). - -You goal is to locate the Orb of Zot, which is held somewhere deep beneath the -world's surface. The Orb is an ancient and incredibly powerful artefact, and -the legends promise great things for anyone brave enough to extract it from -the fearsome Dungeon. Some say it will grant immortality or even godhood to -the one who carries it into the sunlight; many undead creatures seek it in the -hope that it will restore them to life. But then, some people will believe -anything. Good luck! - -A full list of the commands available to you can be accessed by typing '?' -(question mark). If you don't like them, they can be changed by the use of: - ----------------------------------------------------------------------------- - MACROS/KEYMAPS ----------------------------------------------------------------------------- - -You can change the keys used to perform specific functions by editing the -macro.txt file (or creating a new one). The K: line indicates a key, and the -A: line assigns another key to that key's function. - -You can also redefine keys in-game with the ` key, and save them with the ~ -key. - -(Thanks to Juho Snellman for this patch) - ----------------------------------------------------------------------------- - MONSTERS ----------------------------------------------------------------------------- - -In the caverns of Crawl, you will find a great variety of creatures, many of -whom would very much like to eat you. To stop them doing this, you will need -to fight. To attack a monster, stand next to it and move in its direction; -this makes you attack it with your wielded weapon. Of course, some monsters -are just too nasty to beat, and you will find that discretion is often the -better part of valour. - -Some monsters can be friendly; friendly monsters will follow you around and -fight on your behalf (you gain 1/2 the normal experience points for any kills -they make). You can command your allies using the '!' key, which lets you -either shout to attract them or tell them who to attack. - ----------------------------------------------------------------------------- - MISCELLANEOUS STUFF ----------------------------------------------------------------------------- - -The scores file does not have to be present (as of v2.02), and is not included -in the distribution. You can unpack the zip file into your old crawl directory -and the new version will keep using the old scores file (scores files from any -version are usable by any later version). - -The initfile, INIT.TXT, lets you set various options affecting the game's user -interface, like the conditions for Autopickup and a default name for your -character. You can alter it with any reputable text editor. - -As of 2.60, a -c command line switch activates the alternative character set -for non-IBM graphics displays. A -nc switch activates the non-IBM char set -and, for Linux systems, disables colour. - -Crawl is available for a number of different systems, including Linux, DOS, -the Mac, etc. - -One strange thing you may notice about Crawl is that it does not keep your -saved games if you die. This is not a bug, it is a feature! If you could -restore your game after dying, you would probably finish the game rather -quickly and lose interest, because most of the fun in Crawl is in the -discovery of its bizarre secrets while taking risks with your characters. It -is possible to cheat by messing around with the save files, but you're only -cheating yourself out of experiencing this game as it was supposed to be -played. If you think Crawl is too difficult, tell me! - -Crawl was compiled using the djgpp compiler, and comes with the files -CWSDPMI.EXE and CWSDPMI.DOC. You can contact the author of CWSDPMI.EXE at -sandmann@clio.rice.edu. Read CWSDPMI.DOC for more details. - -Although version 3 of Crawl is a complete and finished game, it probably -contains a few unwanted features which crept in without me noticing (all of -the earlier versions did). So, if you find anything which you think may be a -bug, please send details of it to me, including version number, details of -your system, what you were doing (in the game) when it happened, and just what -exactly did happen. Hopefully this will never be necessary, but if it is you -can (as of 26/3/99) reach me at: -linley.henzell@student.adelaide.edu.au - -You can also discuss this game on the newsgroup rec.games.roguelike.misc. - -The object of your quest in Crawl (the Orb of Zot) was taken from Wizard's -Castle, a text adventure written in BASIC. - -A lot of people have been sending me feedback and bug reports, which is -extremely encouraging. I really appreciate that people have been taking the -time to play my game. Keep it up! - -Licence: -Read Licence.txt for information about the Crawl licence (which is practically -identical to the nethack GPL). - -Source Code: -The source code for the current version of Crawl is, at the time of writing -(30/12/97) available from the Crawl web site: -http://olis.net.au/~zel/index.html -Source for some earlier versions can be obtained from me, although -unfortunately I've lost most of it. - -Disclaimer: - -This software is provided as is, with absolutely no warranty express or -implied. Use of it is at the sole risk of the user. No liability is accepted -for any damage to the user or to any of the user's possessions. diff --git a/crawl-ref/docs/crawl_macros.txt b/crawl-ref/docs/crawl_macros.txt new file mode 100644 index 0000000000..66bd3a105d --- /dev/null +++ b/crawl-ref/docs/crawl_macros.txt @@ -0,0 +1,245 @@ +This document aims at easier Crawling (in Stone Soup) by explaining: +- macros and keybindings +- lua snippets in init.txt + +----------------------------------------------------------------------- + +Macros and Keymaps. +=================== + +Following Brent Ross's phrasing, the simple explanation is: + +Command macros make keys into commands. +Keymaps make keys into other keys. + +And him a bit more verbose: + +For the most part, people will probably want command macros. They allow +for things like making a key run a sequence of commands (e.g. associating +a key stroke to the casting of a certain spell) without having to worry +about messing up what that key does at prompts (e.g. you can macro a +number or letter without worrying about it making the substitution when +you're trying to drop an item). + +Keymaps are for when you want to fix layout and behavioural problems on +your keyboard (i.e. unrecognised numpad sequences can by mapped into +their numbers, foreign keyboard layouts can be modified to be more +comfortable). There are also special sets of keymaps for the level-map +and targeting modes, which allow for keymaps that are restricted to just +those situations. + +[The keymap system is currently being overhauled. I hope that the +examples below will also work in the new version. +From what I gather, the keybindings will be moved to a file (which is +good). I hope that it will still be possible to define macros in-game: +this makes testing so convenient. And it should be possible to have +macros at all three levels (main, level map, targeting).] + +How to create macros? +--------------------- +The simplest way is in-game: press the '`' key (this may be a bit awkward +on certain keyboard layouts). Then choose a key to assign for your macro, +and enter the command sequence. Observe how Crawl spits out a funny number +in some cases. These are the key codes for certain (non-alpanumeric) keys, +and these can vary between different systems. + +The following keys and combinations are sensible to use: +- The function keys are good choices, possibly modified by Shift, Ctrl, + or Shift-Ctrl. +- On some systems, it is possible to also incorporate the Alt (meta) key. +- All alphanumerical keys, these also in combination with Shift or Ctrl + keys (note that usually Ctrl-Shift-A is the same thing as Ctrl-A). + Be careful that you do not redefine important game keys. +- All special keys: digits, punctation, etc. These also in combination + with Ctrl. Try if Alt works. Again check for vital game commands. + +For example, on my home system (Windows), I get key codes + F1 \{368} A A + Shift-F1 \{1392} Ctrl-A \{1} + Ctrl-F1 \{880} Alt-A a + Alt-F1 \{2416} Ctrl-Shift-A \{1} + Ctrl-Shift-F1 \{1904} Ctrl-Shift-Alt-A \{3905} + Ctrl-Alt-F1 \{2928} + Shift-Alt-F1 \{3440} + Ctrl-Shift-Alt-F1 \{3952} + +After defining such a macro, you should test it. Saving of all macros is +done with the '~' command. + +The macros are stored in the file macro.txt in your main Crawl directory. +This file is human readable and editable, you just have to figure out the +magic numbers, as shown above for F1 and Ctrl-A etc. When using strange +keys as triggers for a macro, it might actually be necessary to edit this +manually in macro.txt. +Note that you can make comments in macro.txt using lines with a leading +'#'. In this manner, you can recall which keys the numbers belong to (on +your system). +See below for examples for macro definitions. + +Keymaps work in exactly the same way. There are three different keymaps +actually, one for the main view, one for the level map, and another one +for the targeting map. In macro.txt, these are differentiated by + K - main screen + K1 - level map + K2 - targeting +However, you should not map alphabet letters to something; otherwise you +will meet difficulties accessing your inventory! + +Next follow some macros and keymaps that have been considered useful by +at least a few players. For the sake of completeness, both key line and +command line are given, but you should really substitute your own keys +here :) + +Spellcasting. +------------- +# F1: cast spell a at previous target +M:\{368} +A:Zap + +#: Shift-F1: cast spell a at nearest target +M:\{1392} +A:Za+. + +Note that you can assign new letters to your spells with '='. So you can +always have you primary attack spell on a. You may want to set the option + target_zero_exp = false +when using macros like this. + +Easier Nemelex hoovering. +------------------------- +# F12: Nemelex hoover +K:\{379} +A:w0Iyp,y + +This sets up your portable altar, prays there, confirms, and picks it up +again. The sequence assumes that the altar carries the inscription {w0}. +Actually, this can be achieved automatically with the init.txt line + autoinscribe = portable altar:w0 +If you have your weapon on slot a, feel free to add 'wa' to the sequence. + +Easy surroundings mode. +----------------------- +K:0 +A:x* + +K2:0 +A:* + +Here I use '0' for the numpad, but 'x' would also be a good choice (then +you should set K2:x A:* only). +This makes going through items in the surroundings very easy. You can use +Enter to go directly to item under the cursor. +Options you may want to check here are + target_wrap, target_oos, target_los_first. +If you want to cycle through items out of sight, set + stash_tracking = all + target_oos = true +(as only out-of-sight _stashes_ will be checked). + +# F5: explore (both in main and target screens) +K:\{372} +A:\{15} + +K2:\{372} +A:\{32}\{15} + +I find the Ctrl-O key awkward to type, so I have mapped it to F5. The +second keymap makes F5 in target mode do two things: leave target mode +(\{32} is the Escape key) and then starts exploring. + +General Keybindings. +-------------------- +With my German keyboard layout, the keys '^' and '@' do not work +properly. The first problem is dealt with the map +K:\{17} +A:@ +which maps @ to @ in the main mode :) + +Other keymaps I found useful: +- Tab for ' (switching weapons in slots a and b) +- Backspace for p (both Praying in main and Previous in target mode) + (Unfortunately, Backspace is the same thing as Ctrl-Left. Perhaps + something can be done about this.) + +Lua snippets. +============= + +You can copy the following lua code verbatim in your init.txt; it is up +to you to apply appropriate modifications. It would be nice of course, +if someday these snippets turn into full-grown lua files with their own +options. + +For a tutorial of the language Lua, refer to the following link: + http://lua-users.org/wiki/TutorialDirectory + +Advanced autopick: ch_autopickup. +--------------------------------- +Using a Lua script, you can define a function "ch_autopickup" to select +additional items for autopickup. Let's say you want autopickup to only +grab food if your character can eat it. You could use the following +(if '%' is not in the autopickup option): + +{ +function ch_autopickup(it) + -- The "false" suppresses hunger checks to see if your character is + -- hungry enough to eat food/chunks. + return food.can_eat(it, false) +end +} + +Here's a ch_autopickup that a mummy might find useful: + +{ +-- The mummy special. Remove % and ! from your autopickup option if you +-- use this. +function ch_autopickup(it) + return food.can_eat(it, false) + or ( item.class(it) == "Potions" and you.race() ~= "Mummy" ) +end +} + +Advanced autopick: conditional ban_pickup. +------------------------------------------ + +There is an overlap in functionality with the above mummy function. + +# mummies can't quaff or hunger + + ban_pickup = potion + ban_pickup = sustenance + + +# ban harmful potions for non-Transmuters + + ban_pickup = degeneration, decay, potions? of poison + ban_pickup = potions? of confusion, potions? of slowing, + ban_pickup = potions? of paralysis, strong poison + + + +# Trog doesn't like Spellcasting +# # (doesn't work), so + + + ban_pickup = book + + +Ignoring certain monsters when running. +--------------------------------------- +Defining a "ch_stop_run" function affects the monster stop condition for *all* +run modes: shift-running, travel, explore and interlevel travel. + +{ +function ch_stop_run(mons) + local name = mons.name + -- Stop running only if these monsters get closer than 3 squares + if name == "swamp worm" or name == "big fish" + or name == "giant goldfish" or name == "lava worm" + or name == "butterfly" then + -- mons.x and y coords are relative to the player. + local dist = mons.x * mons.x + mons.y * mons.y + if dist >= 9 then return false end + end + return true +end +} diff --git a/crawl-ref/docs/crawl_manual.txt b/crawl-ref/docs/crawl_manual.txt new file mode 100644 index 0000000000..992d05079a --- /dev/null +++ b/crawl-ref/docs/crawl_manual.txt @@ -0,0 +1,1876 @@ + DUNGEON CRAWL Stone Soup v0.1.3. + - the manual - + +Contents +-------- +A. Overview +B. Starting Screen +C. Abilities and Stats +D. Dungeon Exploration +E. Experience and Skills +F. Monsters +G. Items +H. Spellcasting +I. Religion +J. Mutations +K. Keymaps, Macros, Options +L. Licence, Contact, History +M. Philosophy +X.1 List of Species +X.2 List of Classes +X.3 List of Skills +X.4 Keys and Commands +X.5 List of Enchantments + + +-------------------------------------------------------------------------------- +A. Overview +-------------------------------------------------------------------------------- + +Crawl is a fun game in the grand tradition of games like Rogue, Hack and Moria. +Your objective is to travel deep into a subterranean cave complex and retrieve +the Orb of Zot, which is guarded by many horrible and hideous creatures. + +Detailed instructions for playing Crawl follow. If you want to get into the game +quickly, read the quick-start guide (quickstart.txt) and learn as you play. +Otherwise, it may be worth your while to read at least part of this file +(although it will probably confuse you somewhat). Read at least the disclaimer +in section L of this document and the licence.txt file, though. + + +-------------------------------------------------------------------------------- +B. STARTING SCREEN +-------------------------------------------------------------------------------- + +After starting Crawl, you'll be asked to type in a name. If there is a saved +game of that character, it will be restored, otherwise you proceed choosing race +and class (this can be done in either order). The choice ofspecies affects +several important characteristics, in particular the speed with which the +different skills are learned. This is very important, and helps to differentiate +clearly the 26 available races. To be complete, the following factors are +species-dependent: + +Major: o Your choice of classes + o Your rate of level advancement + o Your rate of skill advancement + o Your initial primary attributes (this also depends on class) + +Minor: o Occasional bonus points added to some primary attributes + o The amount of hit points you get each level + o The amount of magic points you get each level + o Your initial equipment (this also depends on class) + o Various special abilities and powers + +Note that Humans are the average to which all other races are compared. + +The choice of class is definitely less decisive than that of species in Crawl. +Basically, it settles what the character has learned prior to entering the +dungeon (i.e. the starting skills), and also has impact on equipment and +hit/magic points at start. + +Some species are slower than humans in most/all skills. For some classes these +races may seem to have very few skills because they haven't quite earned the +first level of several of their skills (Centaurs are notable in this regard... +although non-human Wanderers can appear to start with no apparent skills at +all). This isn't a bug or an oversight, these species are just particularly +weaker than humans at these classes. + +You will notice that no species (except Humans) has access to all classes. +Looking at the available combinations should give you a rough impression about +the weaknesses and strengths of the different races. + +For some combinations of race and class, some further choices have to be made, +e.g. of starting god for Chaos Knights, or of starting weapon for Fighters. + + +-------------------------------------------------------------------------------- +C. ATTRIBUTES AND STATS +-------------------------------------------------------------------------------- + +The stat area tp the right of the playing map shows a lot of numbers. These +describe different aspects of the hero. The most basic ones are + +Hit points: A measure of life force. Death results from hitpoints dropping +----------- to zero or less (although there are additional ways to die). + The main screen shows hit points in the format HP: 8/10 + which means that the number of maximal hit points is 10, from + which the character currently has 8. Resting (by pressing 's', + '.', Del will slowly restore hit points; for longer resting use + '5' or Shift-Num-5). + + Some very battle-fixated characters may end up with more than + 250 hit points, yet some spellcasters are known to have finished + the game victorious with less than 100 hit points. + +Magic points: A measure of magic or other intrinsic power. This is used for +------------- spellcasting, but also berserking and invoking of many special + abilities. Displayed in a style similar to hit points, nothing + bad happens if these drop to zero. Resting restores these, too. + + It is uncommon to have more than 50 magic points (without using + external devices). + +Level: Starting characters have experience level 1; the highest level +------ is 27. The current level is displayed in the stat area after + "Experience". Gaining a level nets additional hit and magic + points, as well as spell slots and sometimes primary attributes. + +The following primary attributes describe the abilities of a character to fight, +dodge, learn spells etc. They grow permanently from gaining levels, and +temporary from using appropriate artefacts or abilities. Crawl has only three: + +Strength: Affects the amount of damage you do in combat, as well as how +--------- much stuff you can carry. + +Intelligence: Affects how well you can cast spells as well as your ability +------------- to use some magical items. + +Dexterity: Affects your accuracy in combat, your general effectiveness +---------- with missile weapons, your ability to dodge attacks aimed at + you, and your ability to use thiefly skills such as + backstabbing and disarming traps. Although your dexterity does + not affect your evasion score (EV) directly, any calculation + involving your EV score also takes account of your dexterity. + +Furthermore, the following numbers settle the appearance of your character. + +Armour Class: Also called AC, when something injures you, your AC reduces the +------------- amount of damage you suffer. The number next to your AC is a + measure of how good your shield (if any) is at blocking attacks. + In both cases, more is better. + +Evasion: Also called EV, this helps you to avoid being hit by unpleasant +-------- things. + +Gold: This is how much money you're carrying. Money adds to your +----- final score, and can be used to purchase items in shops. + +Magic Resistance: Affects your ability to resist the effects of enchantments and +----------------- similar magic directed at you. Although your magic resistance + increases with your level to an extent determined by your + character's species, the creatures you will meet deeper in the + dungeon are better at casting spells and are more likely to be + able to affect you. MR is an internal variable, so you can't see + what yours is. + +Sometimes characters will be able to use special abilities, for example the +Naga's ability to spit poison or the magical power to turn invisible granted by +a ring. These are accessed through the 'a' command. + +There are many ailments or enchantments that can temporarily befall you. These +are noted in the stats area below the experience line. Many of them are +self-explaining, like Pray, or Hungry. Many others, however, can be subtle, and +a full list with explanations is given in appendix X.5. + + +-------------------------------------------------------------------------------- +D. EXPLORING THE DUNGEON +-------------------------------------------------------------------------------- + +Movement: +--------- +You can make your character walk around with the numeric keypad (try both +Numlock on and off) or the "Rogue" keys (hjklbnyu). If this is too slow, you can +make your character walk repeatedly by typing shift and a direction. They will +walk in that direction until any of a number of things happen: a hostile monster +is visible on the screen, a message is sent to the message window for any +reason, you type a key, or you are about to step on anything other than normal +floor or an undiscovered trap and it is not your first move of the long walk. +Note that this is functionally equivalent to just pressing the direction key +several times. + +Resting and Searching: +---------------------- +If you press shift and '5' on the numeric keypad (or just the number '5' on the +keyboard) you rest for 100 turns or until your hit points or magic return to +full, whichever is sooner. You can rest for just one turn by pressing '.', +Delete, 's', or '5' on the keypad. Whenever you are resting, you are assumed to +be observing your surroundings, so you have a chance of detecting any traps or +secret doors adjacent to you. + +Examining: +---------- +The section of the viewing window which is coloured (with the '@' representing +you at the centre) is what you can see around you. The dark grey around it is +the parts of the level which you have visited, but cannot currently see. The 'x' +command lets you move the cursor around to get a description of the various +dungeon features, and typing '?' when the cursor is over a monster brings up a +short description of that monster. You can get a map of the whole level (which +shows where you've already been) by typing the 'X' key. This map specially +colour-codes stairs and known traps, even if something is on top of them. + +Staircases and Portals: +----------------------- +You can make your way between levels by using staircases, which appear as '>' +(down) and '<' (up), by pressing the '>' or '<' keys. If you ascend an up +staircase on level one, you will leave the dungeon forever; if you are +carrying the magical Orb of Zot, you win the game by doing this. +Occasionally you will find an archway; these lead to special places like shops, +magical labyrinths, and Hell. Depending on which type of archway it is, you can +enter it by typing '<' or '>'. + +Doors and Traps: +---------------- +Doors can be opened with the 'o' command and closed with the 'c' command. +Pressing control plus a direction also opens doors. If there is no closed door +in the indicated space, you will attempt to attack any monster which may be +standing there (this is the only way to attack a friendly creature hand-to- +hand). If there is no creature there, you will attempt to disarm any trap in +the target square. If there is apparently nothing there you will still attack +it, just in case there's something invisible lurking around. +A variety of dangerous and irritating traps are hidden around the dungeon. Traps +look like normal floor until discovered. Some traps can be disarmed with the +control-direction commands. + +Shops: +------ +When you are in a shop, you are given a list of the shopkeeper's stock from +which to choose, and a list of instructions. Unfortunately the shopkeepers all +have an enterprise bargaining agreement with the dungeon teamsters union which +prevents them using non-union labour to obtain stock, so you can't sell +anything in a shop (but what shopkeeper would buy goods from a disreputable +adventurer like you, anyway?). + +Automated Travel and Exploration: +--------------------------------- +Crawl has an extensive automated travel command: pressing Ctrl-G lets you chose +any dungeon level, the game will then take the shortest path to reach this +destination. You can use autotravel also on the level map: move the cursor to +the place where you want to go and hit Enter. There are several shortcuts when +choosing destinations: try '<' and '>' to quickly reach the staircases. When +your autotravel gets interrupted, Crawl will remember the previous destination. +Hitting Ctrl-G again and following with Enter puts the cursor on that square. +See appendix X.4 for all commands and shortcuts in level-map mode. +Another use of autotravel is exploration: Ctrl-O makes your character move +to the nearest unexplored area. This can be dangerous - do not use it when known +hostiles are around! Also note that this algorithm is not optimal: by manual +exploration you can save turns; yet auto-explore will probably save real-time. + +Stashes and Searching: +---------------------- +Since you can only carry 52 items, you will want to safely stash things away +at some time. Pressing Ctrl-S tells Crawl to consider all items on the square +as a Stash (this is only necessary with the option stash_tracking=explicit, +which is the default; with the other two values manually declaring stashes is +not necessary). You can use the Find command Ctrl-F to search among your +stashes; the parser accepts even regular expressions, although you will mostly +just need strings like 'mutation', 'heal wounds' etc. Ctrl-F also looks among +items in shops. A list with all places is presented, where objects matching +the search are (or have been) located; you can then travel there. + +The Goal: +--------- +You goal is to locate the Orb of Zot, which is held somewhere deep beneath the +world's surface. The Orb is an ancient and incredibly powerful artefact, and +the legends promise great things for anyone brave enough to extract it from +the fearsome Dungeon. Some say it will grant immortality or even godhood to +the one who carries it into the sunlight; many undead creatures seek it in the +hope that it will restore them to life. But then, some people will believe +anything. Good luck! + +Further Help: +------------- +A full list of the commands available to you can be accessed by typing '?' +(question mark). If you don't like them, they can be changed by the use of +keymaps and macros. See macro.txt in the Docs directory. A full list of all +default commands (in the various modes) also appears in appendix X.4. + + +-------------------------------------------------------------------------------- +E. EXPERIENCE AND SKILLS +-------------------------------------------------------------------------------- + +When you kill monsters, you gain experience points (xp) and you also receive one +half experience for monsters killed by friendly creatures. When you get enough +xp, you gain an experience level, making your character more powerful. As they +gain levels, characters gain more hit points, magic points, and spell levels. + +Additionally, the experience you gain is used for your experience pool. This +pool of points is used up whenever you practice a skill. These skills represent +proficiency with all areas of endeavour an ambitious adventurer might need in +the dungeons. They range from different weapon skills (both for close and ranged +combat) to many magical skills and several additional activities like Dodging or +Stabbing. See appendix X.3 for a detailed description of all skills present in +Crawl. It is very important that the learn in which a character learns a skill +depends solely on race. These so-called aptitudes are hinted at generally in the +list of species (see appendix X.1). + +You can see your character's skills by pressing the 'm' key; the higher the +level of a skill, the better you are at it. Every time your character gains +experience points, those points become available to increase skills. You convert +experience points into skill levels by practising the skill in question (e.g. +fight with a certain type of weapon, cast a certain type of spell, or walk +around wearing light armour to practise stealth). The amount of unassigned +experience points is shown next to your experience total on the main screen as +well as on the skills screen, and the number in blue next to each skill counts +down from 9 to 0 as you get closer to gaining a level in that skill. + +You can elect not to practise a particular skill by selecting it in the skill +screen (making it turn dark grey). This means that you will be less likely to +increase that skill when you practise it (and will also not spend as many +experience points on it). This can be useful for skills like stealth which use +up points whenever you move. It can also be used on a specific weapon skill if +you want to spend more points on Fighting, and similarly with magic skills and +Spellcasting. + +Occasionally you fill a manual of a skill which allows to make quick progress in +this area. Whenever you read it, all free experience is transferred into +exercising this particular skill. This can be done until a fixed amount of +experience has been spent that way. + + +-------------------------------------------------------------------------------- +F. MONSTERS +-------------------------------------------------------------------------------- + +In the caverns of Crawl, you will find a great variety of creatures, most of +which are displayed by capital or small letters of the alphabet. Many of them +would very much like to eat you. To stop them doing this, you will need to +fight. To attack a monster, stand next to it and move in its direction; this +makes you attack it with your wielded weapon. Of course, some monsters are just +too nasty to beat, and you will find that discretion is often the better part of +valour. + +Some monsters can be friendly; friendly monsters will follow you around and +fight on your behalf (you gain 1/2 the normal experience points for any kills +they make). You can command your allies using the '!' key, which lets you either +shout to attract them or tell them who to attack. + +A special kind of monsters are Uniques. Many of these come up with very nasty +ideas how to rid the dungeon of you. Treat them very carefully, in particular if +you meet a unique for the first time. + +Other, even rarer, obstacles are statues. These appear in a variety of ways, +ranging from harmless granite ones (who still often signify something of +interest) to really dreadful ones. Be alert whenever seeing such a statue. The +best method to destroy statues is by means of wands of disintegration; you can +also bash one by brute force, however. + +When playing Crawl, you will undoubtely want to develop a feeling for the +different monster types. For example, some monster leave edible corpses, others +don't, and still others are sometimes. Guided by intuition, you will soon figure +out which monsters make the best meals. Likewise, ranged or magic attackers will +prove a different kind of threat then closed combateers. Learn from past deaths +and remember which monsters pose the most problems. Try to treat them with +different measures in future encounters. + + +-------------------------------------------------------------------------------- +G. ITEMS +-------------------------------------------------------------------------------- + +In the dungeons of Crawl there are many different kinds of normal and magical +artefacts to be found and used. Some of them are useful, some are nasty, and +some give great power, but at a price. Some items are unique; these have +interesting properties which can make your life rather bizarre for a while. +They all fall into several classes of items, each of which is used in a +different way. Here is a general list of what you might find in the course of +your adventures, how these are displayed and what commands there are to use +them: + +) weapons (use 'w'ield) +( ammunition (use 't'hrow or 'f'ire) +[ armour (use 'W'ear and 'T'ake off) +% food (use 'e'at; also 'D'issect for corpses) +? scrolls (use 'r'ead) +! potions (use 'q'uaff) +/ wands (use 'z'ap) += rings (use 'P'ut on and 'R'emove) +" amulets (use 'P'ut on and 'R'emove) +\ staves, rods (use 'w'ield for staves; 'E'voke for rods) ++ spellbooks (use 'r'ead and 'M'emorise and 'Z'ap) +} miscelleneous (use generally 'w'ield and 'E'voke) + +There are several general keys for item management: +'d' drop item +'g' pick up item from the ground (also with the comma key ',') + for several items press 'g' or ',' twice to get a pickup menu +'=' reassign item slot (works also for spells slots) +'i' shows inventory +'v' examine item +'}' inscribe item +'\' check list of already discovered items + +Item usage: +----------- + You pick items up with the 'g'et or ',' (comma) command and drop them with + the 'd'rop command. When you are given a prompt like "drop which item?" or + "pick up ?", if you type a number before either the letter of the item, + or 'y' or 'n' for yes or no, you will drop or get that quantity of the item. + Picking up items from one square takes always one turn. Dropping several + items in one go takes _more_ turns, so be careful here. + + Typing 'i' gives you an inventory of what you are carrying. When you are + given a prompt like "Throw [or wield, wear, etc] which item?", you can type + the letter of the item, or you can type '?' or '*' to get an inventory list. + '?' lists all appropriate items, while '*' lists all items, appropriate or + not. When the inventory screen is showing "-more-", to show you that there + is another page of items, you can type the letter of the item you want + instead of Space or Enter. You can carry at most 52 items at once, and the + total weight is bounded by your carrying capacity. Both of these are printed + at the top of the inventory screen. + + You can use the adjust command (the '=' key) to change the letters to which + your possessions are assigned. This command can be used to change spell + letters as well. + + Some items can be stickycursed, in which case they weld themselves to your + body when you use them. Such items usually carry some kind of disadvantage: + a weapon or armour may be damaged or negatively enchanted, while rings can + have all manner of unpleasant effects on you. If you are lucky, you might + find magic which can rid you of cursed items. + + Items like scrolls, potions and some other types each have a characteristic, + like a label or a colour, which will let you tell them apart on the basis of + their function. However, these characteristics change between each game, so + while in one game every potion of healing may be yellow, in another game + they might all be purple and bubbly. Once you have discovered the function + of such an item, you will remember it for the rest of the current game. You + can access your item discoveries with the '\' key. + + A very useful command is the 'v' key, which gives you a description of what + an item does. This is particularly useful when comparing different types of + weapons, but don't expect too much information from examining unidentified + items. + + Another useful command is the '{' key which lets you inscribe items with a + comment. You can also inscribe commands; in particular inscripting '=k' + will cause the item to be completely ingnored from now on (it can only be + picked up if all items on that square have the '=k' mark). An item with '@w9' + can be wielded with the command 'w9', i.e. regardless of their actual item + slot (here 'w'ield could be replaced by any sensible command key, using '*' + signifies all keys at once; and the '9' could be substituted by any digit). + An item with '!w' demands confirmation before wielding. For more on this, and + especially auto-inscription, see crawl-options.txt. + +) Weapons: +---------- + These are rather important. You will find a variety of weapons in the + dungeon, ranging from small and quick daggers to huge, cumbersome + battleaxes and pole-arms. Each type of weapon does a differing amount of + damage, has a different chance of hitting its target, and takes a + different amount of time to swing. You should choose your weapons + carefully; trying to hit a bat with a greatsword is about as clever as + bashing a dragon with a club. For this reason it is wise to have a good + mixture of weapon skills. Skills affect damage, accuracy and speed. + + Weapons can be enchanted; when they are identified, they have values which + tell you how much more effective they are than an unenchanted version. The + first number is the enchantment to-hit, which affects the weapon's + accuracy, and the second is its damage enchantment; weapons which are not + enchanted are simply '+0'. Some weapons also have special magical effects + which make them very effective in certain situations. Some types of hand + weapons (especially daggers, spears and hand axes) are quite effective + when thrown. + + You can wield weapons with the 'w' command, which is a very quick action. + If for some reason you want to go bare-handed, type 'w' followed by a + hyphen ('-'). Note that weapons are not the only class of item which you + can wield. + + The ' (apostrophe) key is a shortcut which automatically wields item a. If + item a is being wielded, it causes you to wield item b instead, if possible. + Try assigning the letter a to your primary weapon, and b to your bow or + something else you need to wield only sometimes. Note that this is just a + typing shortcut and is not functionally different to wielding these items + normally. + +( Ammunition: +------------- + If you would rather pick off monsters from a safe distance, you will need + ammunition for your sling or bow. Darts are effective when simply thrown; + other kinds of ammunition require you to wield an appropriate device to + inflict worthwhile damage. Ammunition has only one "plus" value, which + affects both accuracy and damage. If you have ammunition suitable for + what you are wielding, the 'f' command will choose the first lot in your + inventory, or you can use the 't' command to throw anything. If you are + using the right kind of hand weapon, you will "shoot" the ammunition, + otherwise you "throw" it. At times it also sensible to throw weapons like + spears, daggers, or hand axes. + + When throwing something, you are asked for a direction. You can either + enter one of the directions on your keypad, or type '*' and move the + cursor over your target if they are not in a direct line with you. When + the cursor is on them, press '.' (period) or Delete to target them (you + can also target an empty space if you want). If you press '>' instead of + '.', the missile will stop at that space even if it misses, and if the + target space is water, it may hit anything which might be lurking beneath + the surface (which would otherwise be missed completely). If you type '.' + (or Del) instead of a direction or '*', or if you target yourself as + described above, you throw whatever it is at yourself (this can be useful + when zapping some wands; see later). Also, if you type 'p' instead of a + direction or '*', you will target your previous target (if still + possible). + +[ Armour: +--------- + This is also rather important. When worn, most armour improves your Armour + Class, which decreases the amount of damage you take when something + injures you. Unfortunately the heavier types of armour also hamper your + movement, making it easier for monsters to hit you (ie reducing your + evasion score) and making it harder for you to hit monsters. These effects + can be mitigated by a high Armour skill. Wearing heavy armour also + increases your chances of miscasting spells, an effect which is not + reduced by your Armour skill. + + A Shield normally affects neither your AC or your evasion, but it lets you + block some of the attacks aimed at you and absorbs some of the damage you + would otherwise receive from things like dragon breath and lightning + bolts. Wearing a shield (especially a large shield) makes you less + effective in hand combat. Shields are more effective when you're fighting a + small number of foes than when you're surrounded. + In general, shields come in three sizes: bucklers, shields, and large + shields. All shields can be used with bows and rods, although the penalties + make it rather inadvisable for anything other than a buckler. + + Some magical armours have special powers. These powers are sometimes + automatic, affecting you whenever you wear the armour, and sometimes must + be activated with the 'a' command. + + You can wear armour with the 'W' command, and take it off with the 'T' + command. + +% Food: +------- + This is extremely important. You can find many different kinds of food in + the dungeon. If you don't eat when you get hungry, you will eventually + die of starvation. Fighting, carrying heavy loads, casting spells, and + using some magical items will make you hungry. When you are starving you + fight less effectively as well. You can eat food with the 'e' command. + +? Magical Scrolls: +------------------ + Scrolls have many different magical spells enscribed on them, some good + and some bad. One of the most useful scrolls is the scroll of Identify, + which will tell you the function of any item you have in your inventory; + save these up for the more powerful and inscrutable magic items, like + rings. You can read scrolls (and by doing so invoke their magic) with the + 'r' command. + +! Magical Potions: +------------------ + While scrolls tend to affect your equipment or your environment, most + potions affect your character in some way. The most common type is the + simple healing potion, which restores some hit points, but there are many + other varieties of potions to be found. Potions can be quaffed (drunk) + with the 'q' command. Try to avoid drinking poisonous potions! + By the way, you can also drink from fountains you encounter in the dungeon. + +/ Wands: +-------- + Sometimes you will be lucky enough to find a stick which contains stored + magical energies. Wands each have a certain amount of charges, and a wand + will cease to function when its charges run out. You must identify a wand + to find out how many uses it has left. Wands are aimed in the same way as + missile weapons, and you can invoke the power of a wand by 'z'apping it. + +=" Rings and Amulets: +--------------------- + Magical rings are among the most useful of the items you will find in the + dungeon, but can also be some of the most hazardous. They transfer various + magical abilities onto their wearer, but powerful rings like rings of + regeneration or invisibility make you hunger very quickly when activated. + You can put on rings with the 'P' command, and remove them by typing 'R'. + You can wear up to two rings simultaneously, one on each hand; which hand + you put a ring on is immaterial to its function. Some rings function + automatically, while others require activation (the 'a' command). + + Amulets are similar to rings, but have a different range of effects (which + tend to be more subtle). Amulets are worn around the neck, and you can + wear only one at a time. + +\ Staves: +--------- + There are a number of types of magical staves. Some enhance your general + spellcasting ability, while some greatly increase the power of a certain + class of spells (and possibly reduce your effectiveness with others). + Some are spell staves, and hold spells which you can cast without having + to memorise them first, and also without consuming food. You must wield a + staff like a weapon in order to gain from its power, and magical staves + are as effective as +0 quarterstaves in combat. Spell staves can be + Invoked with the 'E' command while you are wielding them. + ++ Books: +-------- + Most books contain magical spells which your character may be able to learn. + You can read a book with the 'r' command, which lets you access a + description of each spell, or memorise spells from it with the 'M' command. + Some books have other special effects, and powerful spellbooks have been + known to punish the attentions of incompetent magicians. + Occassionally you will find manuals of some skill. Reading these will cause + to go your free experience straight into that skill. + +% Carrion: +---------- + If you manage to kill a monster delicately enough to avoid scattering bits + of it around the room, it may leave a corpse behind for you to play with. + Despite the fact that corpses are represented by the same '%' sign as + food, you can't eat them without first cutting them into pieces with the + 'D' command, and being extremely hungry helps as well. Even then, you + should choose your homemade food with great care. + Some classes are less restricted about selfmade food: Trolls can use their + claws, so do not need a cutting device. Also Trolls, Orcs, Ogres, and Kobolds + care less (in different degrees) about the quality of the corpse. Ogres and + Trolls are happy to have corpse-snacks anytime. This does not apply to Ogre + Mages, as that race separated itself from the brutish traits of their distant + relatives. + +{ Miscellaneous: +---------------- + These are items which don't fall into any other category. You can use many + of them by wielding and 'E'voking them. You can also use some other + special items (such as some weapons) by invoking them in this way. + +Racial Items: +------------- + Some items have been crafted by members of a gifted race, and have special + properties. In addition, items made by a specific race work better in the + hands of people of that race. + + Dwarven weapons and armours are very durable, and do not rust or corrode + easily. + + Orcish bows/crossbows are particularly effective in combination with orcish + arrows/bolts. + + Elven armour is unusually light, and does not affect the dodging or stealth + of its wearer to the extent that other armours do. Elven cloaks and boots + are particularly useful to those who wish to be stealthy, and elven bows are + particularly effective in conjunction with elven arrows. + + Centaurs and Nagas have uniquely shaped bodies. With luck, however, a + character of these species might find a Centaur or Naga barding. + + +-------------------------------------------------------------------------------- +H. SPELLCASTING +-------------------------------------------------------------------------------- + +Magical spells are a very important part of surviving in the dungeon. Every +character class can make use of magical spells, although those who enter the +dungeon without magical skills must practise by reading scrolls before they can +attempt spellcasting. + +There are many skills related to magic, the principal one being Spellcasting. +This determines the number of Magic available and higher Spellcasting helps at +several places when spells are involved. Next there are several general areas +(Conjuration, Enchantments, Summonings, Necromancy, Translocations, +Transmigration, and Divination) as well as several elemental areas (Fire, Ice, +Air, and Earth). A particular spell can belong (and thus train) to up to three +areas. Being good in the areas of a spell will improve the casting chance and in +many cases the effect as well. + +Spells are stored in books, which you will occasionally find in the dungeon. +You can read books with 'r' to look what spells they contain. In order to try to +memorise a certain spell, use the 'M' command. Memorising can take a while. Each +spell has a Level, which denotes the amount of skill required to use it as well +as indicating how powerful it may be. You can only memorise a certain number of +levels of spells; type 'M' to find out how many. When you gain experience +levels, you can memorise more, and you will need to save up for several levels +to memorise the more powerful spells. When you cast a spell, you temporarily +expend some of your magical energy as well as becoming hungrier (although more +powerful spellcasters hunger less quickly from using magic). + +You activate a memorised spell by pressing 'Z' (for Zap). The spells available +are labelled with letters; you are free to change this labelling with the '=' +command. You can assign both lowercase and uppercase letters to spells. Some +spells, for example most damage dealing ones, require a target. This is done in +the same way as throwing projectiles: chose a direction to fire straight, or +chose a monster with the '+' or '-' keys and press '.' (or Enter) to fire; +finally you can manually target by pressing '*'. See appendix X.4 for a list of +all commands while targeting. + +High level spells are difficult to cast, and you may miscast them every once +in a while (resulting in a waste of magic and possibly dangerous side-effects). +Your chance of failing to cast a spell properly depends on your skills, your +intelligence, the level of the spell and whether you are wearing heavy armour. +Failing to cast a spell exercises your spell skills, but not by as much as +casting it successfully. + +Many of the more powerful spells carry disadvantages or risks; you should read +the spell description (obtained by reading the spellbook in which you found +the spell) before casting anything. + +There is a completely different way to the usage of spells: via rods. These +are magical staves holding a number of spells. + +Be careful of magic-using enemies! Some of them can use magic just as well as +you, if not better, and often use it intelligently. + + +-------------------------------------------------------------------------------- +I. RELIGION +-------------------------------------------------------------------------------- + +There are a number of Gods, Demons and other assorted Powers who will accept +your character's worship, and sometimes give out favours in exchange. You can +use the '^' command to check the requirements of whoever it is that you +worship, and if you find religion to be an inconvenience you can always +renounce your faith (use the 'a' command - but some Gods resent being +scorned!). + +The 'p' command lets you pray to your God. Anything you do while praying, you +do in your God's name - this is how you dedicate your kills or corpse-sacrifices +('D' command) to your God, for example. Note that not all gods like this. +Praying also gives you a sense of what your God thinks of you, and can be used +to sacrifice things at altars. + +To use any powers which your God deems you fit for, access the abilities menu +with the 'a' command; God-given abilities are listed as invocations. + +Some classes start out religious; others have to pray at an altar to dedicate +themselves to a life of servitude. There are altars scattered all over the +dungeon, and your character has heard rumours of a special temple somewhere +near the surface. At an altar, you can read a description of that god's general +attitude by pressing 'p'. You will be asked afterwards if you really want to +attend this circle. + +Crawl currently has the following gods: + Zin + The Shining One + Kikubaaqudgha + Yredelemnul + Xom + Vehumet + Okawaru + Makhleb + Sif Muna + Trog + Nemelex Xobeh + Elyvilon + +The following gods can be worshipped from the very beginning by some classes: + Zin traditional priests + Yredelemnul priests of death, and death knights + The Shining One paladins + Trog berserker + Xom chaos knights + Makhleb chaos knights + Elyvilon healers + + +-------------------------------------------------------------------------------- +J. MUTATIONS +-------------------------------------------------------------------------------- + +Although it would doubtless be a nice thing if you could remain genetically +pure, there are too many toxic wastes and mutagenic radiations in the Dungeon +for that to be possible. If your character is so affected by these that he or +she undergoes physiological change, you can use the 'A' command to see how +much of a freak they've become and the 'a' command to activate any mutations +which can be controlled. Many mutations are actually beneficial to the +characters, but there are plenty of nasty ones, as well. Many mutations have +three levels, each of which counts as a single mutation. All changes to the +primary attributes Strength, Intelligence, and Dexterity (apart from those by +levelling) are handled as mutations - in particular, these are not necessarily +permanent. + +You can also become mutated by overusing certain powerful enchantments, +particularly Haste (not the kind you get from being berserk) and Invisibility, +as your system absorbs too much magical energy - but you would have to spend +almost all of your time hasted or invisible to be affected. However, some +powerful items radiate dangerous levels of magical energy. More often than +not, the mutations caused by magical radiations express harmfully. + +Furthermore, certain corpses are mutagenic, and there are traps with mutation +effects. There are some spells invoking mutations. + +It is much more difficult to get rid of bad mutations. Am lucky mutation +attempt can actually remove mutations. However, the only sure fire way is to +quaff a potion of cure mutation, which will remove three random mutations. + +A special case are Demonspawns. Characters of this species get certain special +powers during their career; these are listed in red. They are permanent and +can never be removed. If one of your Demonspawn powers has been augmented by a +mutation, it is displayed in a lighter red colour. + + +-------------------------------------------------------------------------------- +K. KEYMAPS, MACROS, AND OPTIONS +-------------------------------------------------------------------------------- + +Crawl supports redefining keys via key maps. This is useful when your keyboard +layout makes some key awkward to use. You can also define macros: these are +command sequences which can make playing a great deal more convenient. Note +that mapping 'a' to some other key will treat almost all pressings of 'a' in +that new way (including dropping and wielding etc.), so is not recommended. +Macroing 'a' to some other key will only change the command key 'a'. + +You can set up key maps and macros in-game with the ` key, and save them with +the ~ key. Alternatively, you can directly edit the macros.txt file. For more +information on both and for examples, see the crawl_macros.txt. + +Crawl supports over 100 options which allows for great flexibility in the +interface. The decisive account on these is in the file crawl_options.txt. +The options themselves are set in the file .crawlrc (for unix systems) or +init.txt (for Windows). + +Several interface routines are outsourced to external Lua scripts. The standard +distribution has them in the Lua directory. Have a look at the single scripts +for short descriptions. + + +-------------------------------------------------------------------------------- +L. LICENCE, CONTACT, HISTORY +-------------------------------------------------------------------------------- + +Licence: Read Licence.txt for information about the Crawl licence (which + is practically identical to the nethack GPL). + +Disclaimer: This software is provided as is, with absolutely no warranty + express or implied. Use of it is at the sole risk of the user. + No liability is accepted for any damage to the user or to any + of the user's possessions. + +If you want to discuss Crawl, it's best to stick to the long-standing newsgroup + rec.games.roguelike.misc. +Flag queries with -crawl- as other games are discussed there, as well. All +topics related to this game usually meet a warm reponse there, including tales +of victories (going under 'YAVP', i.e. 'Yet Another Victory Post'), especially +first victories (YAFVP) as well as sad stories of deceased characters (being +'YAAD' or 'YASD', i.e. 'Yet Another Annoying/Stupid Death'). + +The Stone Soup branch of Dungeon Crawl has its own homepage located at + http://crawl-ref.sourceforge.net +Use this page for direct links to downloads of the most recent version. You can +also submit bug reports and feature requests there. Be sure to have a look if +you bug/feature isn't already in the list. For more complicated requests it +might be a good idea to discuss them at the newsgroup first. + +The history of Crawl is somewhat twisted, as is the case with many open-source +projects of this size. It started in 1995, when Australian based Linley +Henzell decided to create a game that takes its cue from Angband and Nethack +but avoids several things annoying him in both these games. Progress was made +rapidly, and Linley produced Crawl versions up to 3.30 in March 1999. During +this time all of the basic design principles discussed in the next section were +already established. Further work was then carried out by a group of developers +who released 3.40 in February 2000. Of them, Brent Ross emerged as the single +maintainer, producing versions until 4.0.0.beta26 in 2002. After a long period +of silent work, he went a great step by releasing 4.1.2alpha in August 2005. +This version is generally considered unplayable due to severe balancing issues. +It is likewise accepted, however, that 4.1.2 contained many valuable ideas for +future progress. In the meantime, several patches appeared, improving Crawl's +interface tremendously. Several of them formed a new devteam; after figuring +out that rebalancing 4.1.2 threatened to become an impossible task, they created +a new branch. This was coined Stone Soup for some reason, and is the game this +manual describes. + +It should be mentioned that there have been other Crawl variants over the years, +among them Ax-Crawl by... and Tile Crawl by.... + +The object of your quest in Crawl (the Orb of Zot) was taken from Wizard's +Castle, a text adventure written in BASIC. + + +-------------------------------------------------------------------------------- +M. PHILOSOPHY +-------------------------------------------------------------------------------- + +You may ponder about the wisdom of certain design decisions of Crawl. This +section tries to explain some of them. It could also be of interest if you are +used to other roguelikes and want a bit of background on the differences. + +One basic design principle is avoidance of grinding. This explains why shops +don't buy: otherwise players would hoover the dungeon for items to sell. Of +course, there are gods accepting all kinds of sacrifices (and thus altar +grinding) but there are generally better ways to increase piety there. Another +instance: there's no infinite commidity available: food, monster and item +generation is generally not enough to support infinite play. Not messing with +lighting also falls into this category. + +Another key feature is clarity: things ought to work in an intuitive way. While +not true for everything, Crawl probably is winnable without access to spoilers. +At least that's the hope, and surely there are less hidden tricks than in +similar games. + +The skills and aptitude system is one of the factors for strategic play. It also +serves to clearly differentiate the many species; thus providing replayability, +in particular since the class/race combinations are by no means homogeneous in +difficulty. Note that a rough idea about aptitudes is definitely enough to win, +yet players can optimise here, as well. +A weak spot of the current skill system is 'victory dancing', where characters +spend experience accumulated in a big battle with stupid actions (like casting +Magic Dart at the wall) in order to increase specific skills. + +A very important point in Crawl is steering away from nobrainers. Examples for +this are the resistances: there are very few permanent sources, most involve a +choice (like rings or specific armour) or are only semi-permanent (like +mutations). Another example is the absence of guaranteed wishes (even scrolls of +acquirement produce random items in general) or sure-fire means of life saving +(the closest equivalent are controlled blinks). + +The branch system of Crawl is devised with replayability in mind: even veteran +players will find the Hells exciting (which themselves are construed such that +life endangering situations can always pop up - this tries to avoid the walking +tank phenomon occurring in many games), and the Tomb is particularly easy only +for special playing styles. + +The deep tactical gameplay Crawl aims for necessitates permanent dungeon levels. +Many a time characters have to choose between descending or battling. While +carefulness is a virtue in Crawl as it is in many other roguelikes, there are +strong forces driving characters deeper. + +Finally, there are deliberate choices that allow different playing styles. For +example, Mummies do not need to eat and so are principally suited for a infinite +play. Draconians, on the other hand, develop their final form (including +aptitudes, and sometimes resistances) only at level 7. These are a deviation +from the usual rule that after choosing a race, the complete future of that +character lies in the hand of the player. + + +-------------------------------------------------------------------------------- +X.1 LIST OF CHARACTER SPECIES +-------------------------------------------------------------------------------- + +Human: +------ + Humans tend to be hardworking and industrious, and learn new things quickly. + The human race is the most versatile of all the species available to + players: humans can be of any class. Humans advance quickly in levels and + have equal abilities in all skills. + +Elves: +------ + There are a number of distinct races of elf in the world. Elves are all + physically slight but long-lived people, quicker-witted than humans but + sometimes slower to learn new things. Elves are especially good at using + those skills which require a degree of finesse, such as stealth, sword- + fighting and archery, but tend to be poor at using brute force and inelegant + forms of combat. They find heavy armour uncomfortable, and make the finest, + lightest armours to be found anywhere. Elves are particularly good at using + elven weapons. + + Due to their fey natures, all elves are good at using enchantments and air + elemental magic and most are poor at invoking the powers of earth and death + (necromancy). + + (Common) Elves: + --------------- + Those of the most common strain are referred to simply as elves or, when + they're not listening, as common elves. Common elves have good intelligence + and dexterity, but suffer a bit in strength. They have slightly fewer HP and + slightly more magic than humans, and advance in experience a bit more + slowly. + + High Elves: + ----------- + High elves are a tall and powerful elven race who advance in levels very + slowly, requiring half again as much experience as do humans. They share the + same attributes as common elves in most respects, but their strengths and + weaknesses tend to be more pronounced. + + Grey Elves: + ----------- + Grey elves also advance slowly, but not as slowly as high elves. They excel + at using short and long swords and bows, but are poor at other fighting + skills. They are excellent at all forms of magic except for necromancy. + + Deep Elves: + ----------- + The deep elves are an elven race who long ago fled the overworld to live in + darkness underground. There they developed their mental powers, evolving a + natural gift for all forms of magic (including necromancy and earth magic), + and adapted physically to their new environment, becoming shorter and weaker + than other elves and losing all colouration. They are poor at hand-to-hand + combat but excellent at fighting from a distance. + + Sludge Elves: + ------------- + Sludge elves are a somewhat degenerate race of elves. They are mirror images + of normal elves in some respects: they have no special proficiency with bows + or swords (long or short), nor do they have any aptitude in the traditional + areas of high elven magic (enchantments, conjurations and divinations). On + the other hand, they are superlative transmuters, and are comfortable + dabbling in necromantic, poison and elemental magic. As fighters they are + often more dangerous unarmed than armed. They advance in level slightly + faster than their common brethren. + +Dwarves: +-------- + Dwarves are short, hardy people. They love to fight, and often venture forth + from their subterranean cities to seek fame and fortune through battle. + Their armour and weapons are very well-crafted and much more durable than + the products of lesser artisans. Dwarves are particularly dangerous when + using dwarven weaponry. + + Hill Dwarves: + ------------- + Hill dwarves are extremely robust but are poor at using magic. They are + excellent at hand combat, especially favouring axes or bludgeoning weapons, + and are good at using armour and shields, but are poor at missile combat or + at using polearms (which are usually too big for them to wield comfortably). + The only forms of magic which they can use with even a minimal degree of + aptitude are earth, fire and conjurations. They advance in levels at a + similar rate to common elves. + + Mountain Dwarves: + ----------------- + Mountain dwarves come from the larger, more civilised communities of the + mountains. They advance slightly more quickly than hill dwarves and are + almost as robust while having similar aptitudes, but are slightly worse at + fighting while being slightly better at more civilised pursuits. + +Halflings: +---------- + Halflings, who are named for being about half the size of a human, live in + small villages. They live simple lives, and have simple interests. Some + times a particularly restless halfling will leave his or her village in + search of adventure. + + Halflings are very small and are among the least robust of any character + species. Although only average at most fighting skills, they can use short + blades well and are good at all forms of missile combat. They are also very + stealthy and good at dodging and stabbing, but are poor at magic (except + enchantments and, for some reason, translocations). They advance in levels + as rapidly as humans. Halflings cannot wield large weapons. + +Gnomes: +------- + Gnomes are an underground-dwelling race of creatures, related to the + dwarves but even more closely in touch with the earth. + + They are quite small, and share many of their characteristics with + halflings (except for the great agility), although they advance slightly + more slowly in experience levels. They are okay at most skills, but + excellent at earth elemental magic and very poor at air magic. + + Occasionally they can use their empathy with the earth to sense their + surroundings; this ability increases in power as they gain experience + levels. + +Hill Orcs: +---------- + Hill orcs are orcs from the upper world who, jealous of the riches which + their cousins the cave orcs possess below the ground, descend in search of + plunder and adventure. + + Hill orcs are as robust as the hill dwarves, but have very low reserves of + magical energy. Their forte is brute-force fighting, and they are skilled at + using most hand weapons (with the exception of short blades, at which they + are only fair), although they are not particularly good at using missile + weapons. They prefer to use their own weapons. Orcs are poor at using most + types of magic with the exception of conjurations, necromancy, and earth and + fire elemental magic. They advance as quickly as humans. + +Kobolds: +-------- + Kobolds are small, ugly creatures with few redeeming features. They are not + the sort of people you would want to spend much time with, unless you happen + to be a kobold yourself. + + They have poor abilities and have similar aptitudes to halflings, without + the excellent agility. However, they are better than halflings at using + some types of magic, particularly summonings and necromancy. They often + live as scavengers, surviving on carrion, but are carnivorous and can + only eat meat. They advance in levels as quickly as humans. + +The Undead: +----------- + As creatures brought back from beyond the grave they are naturally immune to + poisons and negative energy, have little warmth left to be affected by cold, + and are not susceptible to reductions in their physical or mental abilities. + + There are two type of undead available to players: Mummies and Ghouls. + + Mummies: + -------- + Mummies are undead creatures who travel into the depths in search of + revenge, redemption, or just because they want to. + + Mummies progress very slowly in level, half again as slow as humans, and in + all skills except fighting, spellcasting and necromancy. As they increase in + level they become increasingly in touch with the powers of death, but cannot + use some types of necromancy which only affect living creatures. The side + effects of necromantic magic tend to be relatively harmless to mummies. + However, their dessicated bodies are highly flammable. They also do not need + to eat or drink, and in any case are incapable of doing so. + + Ghouls: + ------- + Ghouls are horrible undead creatures, slowly rotting away. Although ghouls + can sleep in their graves for years on end, when they rise to walk among the + living they must eat flesh to survive. Raw flesh is preferred, especially + rotting or tainted meat, and ghouls gain strength from consuming it. + + They aren't very good at doing most things, although they make decent + fighters and, due to their contact with the grave, can use ice, earth and + death magic without too many difficulties. + +Naga: +----- + The Naga are a race of hybrids: humanoid from the waist up, with a large + snake tail instead of legs. + + They are reasonably good at most things and advance in experience levels at + a decent rate. They are naturally immune to poisons, can see invisible + creatures, and have tough skin, but their tails are relatively slow and + cannot move them around as quickly as can other creatures' legs (this only + affects their movement rate; all other actions are at normal speed). Their + body shape also prevents them from gaining full protection from most armour. + Their biggest forte is stealth: Nagas are very good at moving unnoticed. + + Every now and then, a naga can spit poison; the range, accuracy and damage + of this poison increases with the naga's experience level. + +Ogres and Ogre Mages: +--------------------- + Ogres are huge, chunky creatures related to orcs. They are terrible monsters + who usually live to do nothing more than smash, smash, smash, and destroy. + + They have great physical strength, but are bad at almost everything except + fighting and learn quite slowly. Because of their large size they can only + wear loose robes, cloaks and animal skins. Although ogres can eat almost + anything, their size means that they need to do so more frequently than + smaller folk. + + Ogre-mages are a separate race of ogres who are unique among the beefier + species in their ability to use magic, especially enchantments. Although + slighter than their common ogre relatives they nevertheless have great + strength and can survive a lot of punishment. They advance in level as + slowly as high elves. In contrast to their common Ogre cousins, Ogre Mages + have lost the abilities to digest corpses when not hungry. + +Trolls: +------- + Trolls are like ogres, but even nastier. They have thick, knobbly skins of + any colour from putrid green to mucky brown and their mouths are full of + ichor-dripping fangs. + + They can rip creatures apart with their claws, and regenerate very quickly + from even the most terrible wounds. They learn very slowly indeed - even + more slowly than high elves - and need a great amount of food to survive. + +Draconians: +----------- + Draconians are a race of human-dragon hybrids: humanoid in form and + approximately human-sized, with wings, tails and scaly skins. Draconians + start out in an immature form with brown scales, but as they grow in + power they take on a variety of colours. This happens at an early stage in + their career, and the colour is determined by chrosomes, not by behaviour. + + Some types of draconians have breath weapons or special resistances. + Draconians advance very slowly in level, but are reasonably good at all + skills but armour (most types of which they cannot wear) and missile weapons. + Still, each colour has its own strengths and some have complementary + weaknesses, which sometimes requires a bit of flexibility. + + Red Draconians feel at home in fiery surroundings. They're bad with ice magic. + White Draconians stem from frost-bitten lands, and are bad at fire magic. + Green Draconians are well-versed in the arts of poison. + Golden Draconians have sulphuritic odem. + Grey Draconians + Black Draconians command lightning and feel cumbersome with earth magic. + Mottled Draconians are somewhat in touch with fire, yet not weak at ice. + Purple Draconians are highly adapted to magics in general, with no specialty. + Pale Draconians are slightly biased towards fire magic and a religious life. + +Centaurs: +--------- + The Centaurs are another race of hybrid creatures: horses with a human + torso. They usually live in forests, surviving by hunting. + + Centaurs can move very quickly on their four legs, and are excellent + with bows and other missile weapons; they are also reasonable at the + Fighting skill while being slow learners at specific weapon skills. They + advance quite slowly in experience level and are rather sub-average at + using magic. Due to their large bulk, they need a little extra food to + survive. + +Demigods: +--------- + Demigods are mortals (humans, orcs or elves, for example) with some divine + or angelic ancestry, however distant; they can be created by a number of + processes including magical experiments and the time-honoured practice of + interplanar miscegenation. + + Demigods look more or less like members of their mortal part's race, but + have excellent attributes (strength, int, dex) and are extremely robust; they + can also draw on great supplies of magical energy. On the downside they + advance very slowly in experience, gain skills slightly less quickly than + humans, and due to their status cannot worship the various Gods and Powers + available to other classes of being. + +Spriggans: +---------- + Spriggans are small magical creatures distantly related to elves. They + love to frolic and cast mischevious spells. + + They are poor fighters, have little physical resilience, and are terrible at + destructive magic - conjurations, summonings, necromancy and elemental + spells. On the other hand, they are excellent at other forms of magic and + are very good at moving silently and quickly. So great is their speed that a + spriggan can keep pace with a centaur. + +Minotaurs: +---------- + The minotaur is yet another hybrid - a human body with a bovine head. It + delves into the Dungeon because of its instinctive love of twisting + passageways. + + Minotaurs are extremely good at all forms of physical combat, but are + awful at using any type of magic. They can wear all armour except for + some headgear. + +Demonspawn: +----------- + Demonspawn are horrible half-mortal, half-infernal creatures - the flip side + of the Demigods. Demonspawn can be created in any number of ways: magical + experiments, breeding, unholy pacts, etc. Although many demonspawn may be + indistinguishable from those of pure mortal stock, they often grow horns, + scales or other unusual features. Powerful members of this class of beings + also develop a range of unholy abilities, which are listed as mutations (and + can sometimes be activated with the 'a' command). + + Demonspawn advance quite slowly in experience and learn most skills at about + the same rate as do Demigods. However, they are a little better at fighting + and much better at conjurations, summonings, necromancy and invocations. + +Kenku: +------ + The Kenku are an ancient and feared race of bird-people with a legendary + propensity for violence. Basically humanoid with bird-like heads and clawed + feet, the kenku can wear all types of armour except helmets and boots. + Despite their lack of wings, powerful kenku can fly and very powerful + members of this race can stay in the air for as long as they wish to do so. + + They are experts at all forms of fighting, including the magical arts of + combat (conjurations, summonings and, to a lesser extent, necromancy). They + are good at air and fire elemental magic, but poor at ice and earth magic. + Kenku do not appreciate any form of servitude, and so are poor at using + invocations. Their light avian bodies cannot sustain a great deal of injury. + +Merfolk: +-------- + The Merfolk are a hybrid race of half-human, half-fish that typically + live in the oceans and rivers and seldom come onto the land. The merfolk + aren't as limited on land as some myths suggest, their tails will quickly + reform into legs once they leave the water (and, likewise, their legs + will quickly reform into a tail should they ever enter water). Their + agility is often misjudged, and they tend to be surprising nimble on + land as well as in the water. Experts at swimming they need not fear + drowning as they can quickly slip out of any encumbering armour during + the transformation into their half-fish form. + + The Merfolk have developed their martial arts strongly on thrusting + and grappling, since those are the most efficient ways to fight + underwater. They, therefore, prefer polearms and short swords above + all other weapons, although they can also use longer swords quite well. + + As spellcasters, they tend to be quite good in specific areas. Their + mystical relationship with water makes it easier for them to use + divination, poison, and ice magics... which use water occasionally + as a material component. The legendary water magic of the merfolk + was lost in ancient times, but some of that affinity still remains. + The instability of their own morphogenic matrix has made them very + accomplished transmuters, but most other magics seem foreign to them. + +Note: + + Some species have special abilities which can be accessed by the 'a' + abilities menu. Some also have physical characteristics which allow them + to make extra attacks using the Unarmed Combat skill. + + +-------------------------------------------------------------------------------- +X.2 LIST OF CHARACTER CLASSES +-------------------------------------------------------------------------------- + +In your quest, you play as one of a number of different types of characters. +Although each has its own strengths and weaknesses, some are definitely easier +than others, at least to begin with. The best classes for a beginner are +probably Gladiators, Fighters and Berserkers; if you really want to play a +magician, try a Conjurer. Each class starts out with a different set of skills +and items, but from there you can shape them as you will. + +Fighters: +--------- + Fighters start with a decent weapon, a suit of armour and a shield. They + have a good general grounding in the arts of fighting. + +Gladiators: +----------- + The Gladiator is trained to fight in the ring, and so is an expert in the + art of fighting but is not so good at anything else. In fact, Gladiators are + pretty terrible at anything except bashing monsters with heavy things. They + start with a nasty weapon, a small shield, and armour. + +Berserkers: +----------- + Berserkers are hardy warriors who worship Trog the Wrathful, from whom they + get the power to go berserk (as well as a number of other powers should they + prove worthy) but who forbids the use of spell magic. They enter the dungeon + with an axe and a set of leather armour. + +Hunters: +-------- + The Hunter is a type of fighter who specialises in missile weapons. A Hunter + starts with a bow and some arrows, as well as a hunting knife and a set of + leathers. + +Monks: +------ + The Monk is a member of an ascetic order dedicated to the perfection of + one's body and soul through the discipline of the martial arts. Monks start + with very little equipment, but can survive without the weighty weapons and + spellbooks needed by other classes. + +Thieves: +-------- + The Thief is one of the trickiest classes to play. Thieves start out with a + large variety of useful skills, and need to use all of them to survive. + Thieves start with a short sword, some throwing darts, and light armour. + +Assassin: +--------- + An Assassin is a thief who is especially good at killing. Assassins are like + thieves in most respects, but are more dangerous in combat. + +Stalkers: +--------- + The stalker is an assassin who has trained in the use of poison magic. + +Crusaders: +---------- + The Crusader is a decent fighter who can use the magical art of enchantment + to become more dangerous in battle. Crusaders start out lightly armed and + armoured, but equipped with a book of martial spells. + +Reavers: +-------- + Reavers are warriors who learn the magics of destruction in order to + complement their deadliness in hand combat. + +Death Knights: +-------------- + The Death Knight is a fighter who aligns him or herself with the powers of + death. There are two types of Death Knights: those who worship and draw + their abilities from the Demon-God Yredelemnul, and those who study the + fearsome arts of necromancy. + +Chaos Knights: +-------------- + The Chaos Knight is a fighter who chooses to serve one of the fearsome and + unpredictable Gods of Chaos. He or she has two choices: Xom or Makhleb. + Xom is a very unpredictable (and possibly psychotic) entity who rewards + or punishes according to whim. Makhleb the Destroyer is a more purposeful + God, who appreciates destruction and offers a variety of very violent + powers to the faithful. + +Paladins: +--------- + The Paladin is a servant of the Shining One, and has many of the abilities + of the Fighter and the Priest. He or she enters the dungeon with a sword, + a shield, a robe, and a healing potion. + +Priests: +-------- + Priests serve either Zin, the ancient and revered God of Law, or the + rather less pleasant Death-God Yredelemnul. Although priests enter the + dungeon with a mace (as well as a priestly robe and a few healing + potions), this is purely the result of an archaic tradition the reason + for which has been lost in the mists of time; Priests are not in any way + restricted in their choice of weapon skills. + +Healers: +-------- + The Healer is a priest of Elyvilon. Healers begin with minor healing + powers, but can gain far greater abilities in the long run. + +Magicians: These are not a class, but a type of class. A magician is the best +at using magic. Magicians start with a dagger, a robe, and a book of spells +which should see them through the first several levels. There are various kinds +of magicians. + + Wizard: + ------- + A Wizard is a magician who does not specialise in any area of magic. + Wizards start with a variety of magical skills and the magic dart spell in + memory. + + Conjurer: + --------- + The Conjurer specialises in the violent and destructive magic of + conjuration spells. Like the Wizard, the Conjurer starts with the magic + dart spell. + + Enchanter: + ---------- + The Enchanter specialises in the more subtle area of enchantment magic. + Although not as directly powerful as conjurations, high-level enchantments + offer a wide range of very handy effects. The Enchanter begins with + lightly enchanted weapons and armour, but no direct damage spell (since + enchantments does not deal with direct attacks). Instead they begin + with the "confusing touch" spell and some enchanted darts, which should + help them out until they can use the higher level enchantment spells. + + Summoner: + --------- + The Summoner specialises in calling creatures from this and other worlds + to give assistance. Although they can at first summon only very wimpy + creatures, the more advanced summoning spells allow summoners to call on + such powers as elementals and demons. + + Necromancer: + ------------ + The Necromancer is a magician who specialises in the less pleasant side of + magic. Necromantic spells are a varied bunch, but many involve some degree + of risk or harm to the caster. + + Elementalists: + -------------- + Elementalists are magicians who specialise in one of the four types of + elemental magic: air, fire, earth, or ice. + + Fire Magic tends towards destructive conjurations. + + Ice Magic offers a balance between destructive conjurations and + protective enchantments. + + Air Magic provides many useful enchantments in addition to some + unique destructive capabilities. + + Earth Magic is a mixed bag, with destructive, defensive and utility + spells available. + + Venom Mages: + ------------ + Venom mages specialise in poison magic, which is extremely useful in the + shallower levels of the dungeon where few creatures are immune to it. Poison + is especially effective when used against insects. + + Transmuters: + ------------ + Transmuters specialise in transmigrations, and can cause strange changes + in themselves and others. + + Warpers: + -------- + Warpers specialise in translocations, and are experts in travelling long + distances and positioning themselves precisely. + +Wanderers: +---------- + Wanderers are people who have not learned a specific trade. Instead, + they've travelled around becoming "Jacks-of-all-trades, master of none". + They start the game with a large assortment of skills and maybe some + small items they picked up along the way, but other than that they're + pretty much on their own. Non-human wanderers might not even know which + skills they have (since they haven't quite learned enough for one full + level), and therefore make for an additional challenge. You shouldn't + expect human wanderers to be easy either, as this class is typically + harder to play than the other classes. + + +-------------------------------------------------------------------------------- +X.3 LIST OF SKILLS +-------------------------------------------------------------------------------- + +Here is a description of the skills you may have: + +Fighting skills: +---------------- + Fighting is the basic skill used in hand-to-hand combat, and applies no + matter which weapon your character is wielding (if any). It is also the + skill which determines the number of hit points your character gets as + they increase in level (note that this is calculated so that you don't get + a long run advantage by starting out with a high fighting skill). + + Weapon skills affect your ability to fight with specific melee weapons. + Weapon skills include: + + o Short Blades + o Long Blades + o Maces & Flails + o Axes + o Staves + o Polearms + + If you are already good at a weapon, say a long sword, and you practise + for a while with similar weapon such as a short sword, your practise will + be speeded up (and will require less experience) until both skills are + equal. Similar types of weapons include: + + o Short Blades and Long Blades + o Maces & Flails and Axes + o Polearms and Axes + o Staves and Polearms + + Being good at a specific weapon improves the speed with which you can use + it by about 10% every two skill levels. Although lighter weapons are + easier to use initially, as they strike quickly and accurately, heavier + weapons increase in damage potential very quickly as you improve your + skill with them. + + Unarmed Combat is a special fighting skill. It allows your character to + make a powerful attack when unarmed and also to make special secondary + attacks (and increases the power of those attacks for characters who get + them anyway). You can practise Unarmed Combat by attacking empty-handed, + and it is also exercised when you make a secondary attack (a kick, punch + etc). Unarmed combat is particularly difficult to use in combination with + heavy armour, and characters wearing a shield or wielding a two-handed + weapon other than a staff lose the powerful punch attack. + +Ranged combat skills: +--------------------- + Ranged Combat is the basic skill used when throwing things, and there are a + number of individual weapon skills for missile weapons as well: + + o Darts + o Bows + o Crossbows + o Slings + +Magic skills: +------------- + Spellcasting is the basic skill for magic use, and affects your reserves of + magical energy in the same way that Fighting affects your hit points. Every + time you increase your spellcasting skill you gain some magic points and + spell levels. Spellcasting is a very difficult skill to learn, and requires + a large amount of practice and experience. + + Only those characters with at least one magic skill at level one or above + can learn magical spells. If your character has no magic skills, he or she + can learn the basic principles of the hermetic arts by reading and reciting + the spells inscribed on magical scrolls (this stops being useful once you + reach level one in Spellcasting). + + There are also individual skills for each different type of magic; the + higher the skill, the more powerful the spell. Multidisciplinary spells use + an average of the two or three skills. + + Elemental magic is a special case. When you practise an elemental magic + skill (fire, ice, air or earth magic) you will improve much less quickly + than normal if you already have one or more elemental magic skills higher + than the one you are practising. This is especially true if those skills are + 'opposed' to the one you're practising: fire and ice are mutually opposed, + as are earth and air. + + Say you have level 2 fire magic, level 4 ice magic, and level 1 air magic. + Practising ice magic won't be a problem. Practising air magic will be a bit + slow, as you have other elemental skills at higher levels. Practising fire + magic will be very slow, as you have a higher level in ice magic. Right? + +Miscellaneous skills: + +Armour: +------- + Having a high Armour skill means that you are used to wearing heavy armour, + allowing you to move more freely and gain more protection. + +Dodging: +-------- + When you are wearing light armour, a high dodging skill helps you evade + attacks. + +Stealth: +-------- + Helps you avoid being noticed. Try not to wear heavy armour or be encumbered + if you want to be stealthy. Big creatures (like trolls and ogres) are bad at + stealth. + +Stabbing: +--------- + Lets you make a very powerful first strike against a sleeping/resting + monster who hasn't noticed you yet. This is most effective with a dagger, + slightly less effective with a short sword, and less useful (although by + no means of negligible effect) with any other weapon. + +Shields: +-------- + Affects the amount of protection you gain by using a shield, and the degree + to which it hinders you. + +Traps & Doors: +-------------- + Affects your ability to notice hidden traps and doors and to disarm traps + when you find them. With this skill at a high level you will often find + hidden things without actively looking for them. + +Invocations: +------------ + An easy-to-learn skill which affects your ability to call on your God for + aid. Those skilled at invoking have reduced fail rates and produce more + powerful effects. The Invocations skill affects your supply of magic in a + similar way to the Spellcasting skill and to a greater extent, but the two + are not cumulative - whichever gives the greater increase is used. Some + Gods (such as Trog) do not require followers to learn this skill. + +If your character does not have a particular skill, s/he can gain it by +practising as above. + + +-------------------------------------------------------------------------------- +X.4 LIST OF KEYS AND COMMANDS +-------------------------------------------------------------------------------- + +Main screen +----------- +Crawl has many commands to be issued by single key strokes. This can become +confusing, since there are also several modes; here is the full list. Some +commands are particularly useful in combination with certain interface options; +such options are mentioned in the list. For a description of them, please look +into crawl_options.txt. + +Saving games: + S Save game with query and exit. + Ctrl-X Save game without query and exit. + Q Quit without saving. + +Movement: + direction Moves one square, direction is either one of the + numpad cursor keys (try both Numlock on and off) or + one of the Rogue vi keys (hjklyubn). + Shift-direction This moves straight until something interesting is + or / direction found (like a monster). + Ctrl-G Interlevel travel (to arbitrary dungeon levels or + waypoints). Remembers old destinations if interrupted. + Ctrl-O Auto-explore. + Ctrl-W Det waypoint (check the option show_waypoints). + +Resting and Searching: + s, Del Rests and searches (these are the same) for one turn, + this is also done with '.' or Numpad-5. + 5 or Long resting/searching (until both health and magic + Shift-Numpad 5 points are full or something is found or 100 turns are + over). + +Dungeon interaction: + o Open door. + c Close door. + Ctrl-direction Tries untrapping a known trap on the specified square, + or * direction else opens door if there is one, + else attacks without move (even if no monster is seen). + < Use staircase to go higher. + > Use staircase to go deeper, or enters shop/branch. + ; Examine occupied tile, also causes auto-pickup. + x Examine surroundings mode (see below for its commands). + X Examine level map (see below for level map commands). + O Show dungeon overview (branches, shops, and labyrinths). + +Character information: +'display' below means usage of the message area, +'show' means usage of the whole screen. + @ Display character status. + [ Display worn armour. + " Display worn jewellery. + C Display experience info. + ^ Show religion screen. + A Show abilities/mutations. + \ Show item knowledge. + m Show skill screen. + i Show inventory list. + % Show resistances. + +Item interaction (inventory): + v View item description. + { Inscribe item (check the autoinscribe option). + t Throw/shoot an item. + f Fire first available missile. + q Quaff a potion. + e Eat food (tries floor first, invorenty next). + z Zap a wand. + r Read a scroll or book. + M Memorise a spell from a book. + w Wield an item ( - for none). + ' Wield item a, or switch to b. + E E voke power of wielded item. + W Wear armour. + T Take off armour. + P Put on jewellery. + R Remove jewellery. + +Item interaction (floor): + d Drop an item. + d# Drop exact number of items. + g or , Pick up items; press twice for pick up menu. + You can use a prefix to pick up smaller quantities. + D Dissect a corpse. + +Other game-playing commands: + a Use special ability. + p Pray. + Z Cast a spell. + ! Shout or command allies. + +Non-game playing commands: + V Display version information. + Ctrl-P Show previous messages. + Ctrl-R Redraw screen. + Ctrl-C Clear main and level maps. + # Dump character to file (name.txt). + : Add note to dump file (see option take_notes). + ` Add macro. + ~ Save macros. + = Reassign inventory/spell letters. + +In-game toggles: + Ctrl-A Toggle autopickup. + Ctrl-V Toggle auto-prayer. + Ctrl-T Toggle spell fizzle check. + +Stashes: + Ctrl-S Mark stash (only sensible with stash_tracking=explicit, + else this is automatically tracked). + Ctrl-E Erase stash (ignores the square from stash tracking). + Ctrl-F Find (this searches in stashes and shops, you can use + regular expressions and also terms like 'long blades' + or 'artifacts'). + +Level map ('X') +--------------- +The level map (brought up by 'X' in the main screen) uses the whole screen to +show the dungeon. + Esc, Space Leave level map. + - Scroll level map up + + Scroll level map down + Direction Moves cursor. + Shift-Direction Moves cursor in bigger steps (check the option + level_map_cursor_step). + . Travels to cursor (also Enter and , and ;) + (if the cursor is on the character, moves cursor to last + travel destination instead). + < Cycle through up stairs. + > Cycle through down stairs. + ^ Cycle through traps. + Tab Cycle through shops and portals. + I Cycle through stashes (if the option stash_tracking is + set to all, this cycles through all items and piles). + Ctrl-C Clear level and main maps (from temporarily seen + monsters, clouds etc.). + +Waypoints can be set on the level map. You can travel to waypoints using +Ctrl-G. Check the option show_waypoints. The commands are + Ctrl-W Set waypoint. + W Cycle through waypoints. + +Travel exclusions mark certain spots of the map as no-go areas for autotravel +and explore (the radius is set by the option travel_exclude_radius2). + Ctrl-X Set travel exclusion. + Cltr-E Erase all travel exclusions at once. + X Cycle through travel exclusions. + + +Examining surroundings ('x') +---------------------------- +When roaming the dungeon, the surroundings mode is activated by 'x'. It lets you +have a look at items or monsters in line of sight. You may also examine stashed +items outside current view using the options target_oos=true (if using this, +check target_los_first). + x, Esc, Space Return to playing mode. + ' or * Cycle objects forward. + ; or / Cycle objects backward. + + Cycle monsters forward. + - Cycle monsters backward. + direction Move cursor. + . or Enter Travel to cursor. + ? Describe monster under cursor (also shows weapons, + wounding and enchantments). + > Cycle downstairs. + < Cycle upstairs. + Tab Cycle shops and portals. + +Targeting +--------- +Targeting mode is similar to examining surroundings. It is activated whenever +you fire projectiles, zap a wand or cast spells which uses targets. + x, Esc, Space Stop targeting. + direction Fire straight in this direction. + + or = Cycle monsters forward (see option target_wrap). + - Cycle monsters backward. + . or Enter Fire in cursor direction. + p or t Fire at previous target (if still in sight). + > Fire in cursor direction, but stop at cursor. This can + be useful to avoid damaging pets, or to attack + submerged water creatures. + Ctrl-F Toggle target modes (between enemies, all, friends; see + also option target_zero_exp). + * Manually targeting: the direction keys will now move + the cursor, the keys '+' and '-' work as above, and '.' + and Enter fire. + + +Shortcuts in lists (like multidrop): +------------------------------------ +When dropping (with the drop_mode=multi option), the drop menu accepts several +shortcuts. + ( Selects all missiles. + ) Selects all hand weapons. + [ Selects all armour. + ? Selects all scrolls. + % Selects all food. + & Selects all carrion. + + Selects all books. + / Selects all wands. + \ Selects all staves. + ! Selects all potions. + " Selects all jewellery. + } Selects all miscellaneous items. + , Global select (subject to the drop_filter option). + - Global deselect (subject to the drop_filter option). + * Invert selection. + + +-------------------------------------------------------------------------------- +X.5 LIST OF ENCHANTMENTS +-------------------------------------------------------------------------------- + +Below the amount of carried gold, the stats area has room for showing the +enchantments which you currently enjoy or have to suffer. Quite generally, these +are only shown for temporary effects. So that Kenku can fly is not noted, +neither is the wearing of a ring of regeneration. Here is a list of these, as +some are abbrevations or may be not obvious: + +General enchantments: satiation, velocity, encumbrance, poison +--------------------- +Hungry Most races can eat chunks of corpses only if hungry. +Starving You should really eat something: death is not far away. +Full You have eaten a lot. +Engorged You couldn't eat anymore. +Sick You are sick (usually from bad food). Hit points don't + regenerate until cured (wait it out or potion of healing). +Poison You are poisoned and continually lose hit points. There are + several levels of poisoning. Cure with potions of healing or + by waiting it out. +Pray You are praying. Any action taken under prayer is done in the + name of your god. For example, Dissecting a corpse offers it. + Depending on the scope of your religion, this may or may not + be a good idea. +Encumbered You load it heavy enough to slow you down. You also need more + food then walking around encumbered. Try to avoid this! +Overloaded You carry way too much to do anything sensible. Drop stuff! +Conf You are confused. Actions may not properly work. +Fast All actions have greatly increased speed (this can cause + magic contamination). +Swift You move at a somewhat higher speed. +Slow All actions are slowed. Note that ending berserking will slow. +Paralyze You are unable to move. Beware of the wasps! + +Special enchantments: +--------------------- +BWpn Some characters have a breath weapon (like Nagas or experienced + Draconians), which will show "BWpn". Further breathings have to + wait until this disappears. +Invis You are invisible (this can cause glowing, if used too much). +Holy You repel undead. +Lev You levitate, i.e. hover a few inches above the ground. While + enough to cross water and lava, movement is not completely + controlled. It will time out. Levitation provides a speed bonus + to swiftness. +Fly You fly, gaining the benefits of levitation with none of the + drawbacks. This is only accessible for experienced kenku, lucky + draconians, characters using Dragon form, or levitating with an + amulet of controlled flight. +Fire You are plagued with sticky fire. It will time out. +Regen You regenerate: health points will increase at an unnaturally + fast rate. This is only shown for temporary +Glow You glow from mutagenic radiations: you'll mutate anytime soon. +RMsl You repel missiles, i.e. there's a good chance to evade them. +DMsl You deflect missiles, i.e. there's a great chance to evade them. +Rot This is a very harmful, necromantic ailment. You will lose + maximal health points over time. Only potions of healing restore + these. The rotting itself is cured itself if the maximal health + is back to its initial value, and it also expires after a while. +Ins You are insulated, i.e. immune to electric shocks. + +There are several more enchantment messages for various spells. The description +of the spell will explain these. diff --git a/crawl-ref/docs/crawl_options.txt b/crawl-ref/docs/crawl_options.txt new file mode 100644 index 0000000000..2555b0fd3b --- /dev/null +++ b/crawl-ref/docs/crawl_options.txt @@ -0,0 +1,1026 @@ +This document explains all of the options in the latest version of Dungeon +Crawl Stone Soup. These options are set in the init.txt file located in the +Crawl directory (the directory containing crawl.exe on Windows and DOS). On Unix +systems, you need to set options in the ~/.crawlrc file (a file named .crawlrc +in your home directory). + +The contents of this text are: + +1- Starting Screen. + name, remember_name, weapon, book, + chaos_knight, death_knight, priest, + race, class, random_pick +2- File System and Sound. + crawl_dir, save_dir, sound. +3- Lua files. + lua_file, + base.lua, stash.lua, wield.lua, kills.lua, runrest.lua, + gearset.lua, eat.lua, trapwalk.lua +4- Interface. +4-a Dropping and Picking up. + autopickup, default_autopickup, safe_autopickup, safe_zero_exp, + pickup_thrown, pickup_dropped, assign_item_slot, ban_pickup, + drop_mode, drop_filter; + lua: ch_autopickup (advanced autopickup exceptions) +4-b Targeting. + target_zero_exp, target_wrap, target_oos, target_los_first, + confirm_self_target, default_fizzlecheck +4-c Passive Sightings (Detection and Rememberance). + detected_monster_colour, detected_item_colour, + remembered_monster_colour, colour_map, clean_map +4-d Branding (Item and Monster Highlighting). + heap_brand, friend_brand, stab_brand, may_stab_brand +4-e Level Map Functions. + level_map_cursor_step, item_colour, show_waypoints +4-f Travel and Exploration. + travel_colour, travel_delay, travel_stair_cost, + travel_avoid_terrain, travel_exclude_radius2, + travel_stop_message, explore_stop, runrest_ignore_message, + runrest_ignore_poison, trapwalk_safe_hp; + lua: ch_stop_run (ignoring monsters) +4-g Stashes. + stash_tracking, stash_filter +4-h Command Enhancements. + auto_list, lowercase_invocations, easy_open, easy_butcher, + easy_armour, easy_confirm, easy_quit_item_lists, easy_exit_menu, + default_autoprayer, sort_menus +4-i Message and Display Improvements. + show_uncursed, hp_warning, always_greet, terse_hand, + delay_message_clear, menu_colour +4-j Missiles. + fire_items_start, fire_order +4-k Message Channels. + plain, prompt, god, pray, duration, danger, food, warning, + recovery, multiturn, talk, intrinsic_gain, mutation, + monster_spell, monster_enchant, monster_damage, rotten_meat +4-l Inscriptions. + autoinscribe +4-m Macro related Options. + flush.failure, flush.command, flush.message +5- Character Dump. +5-a Items and Kills. + kill_map, dump_kill_places, dump_item_origins, + dump_item_origin_price, dump_message_count, dump_order, + verbose_dump +5-b Notes. + use_notes, note_items, ood_interesting, note_hp_percent, + note_skill_levels, note_skill_max, note_monsters, + note_messages, note_all_spells +6- Miscellaneous. +6-a All OS. + macro_meta_entry, wiz_mode, colours, char_set, cset_ascii, + cset_ibm, cset_dec, feature. +6-b DOS and Windows. + dos_use_background_intensity +6-c Unix + background + +-------------------------------------------------------------------------------- + +There are basically three types of Crawl options: true/false values (booleans), +numbers, and lists. An option is most often specified with its default value (if +there is one); this should also explain which of the above-mentioned types it +is. Each option should have some remarks on how it's typically used - beware +that this depends strongly on your playing style and sometimes also on hardware +or operating system. + +Note that the init.txt coming with regular distributions has all boolean options +commented out. The commented-out values are always the _non-defaults_, so you +can toggle boolean options by just uncommenting them. + +Some options need a path as an argument; here you have to use a filesystem path +suitable for your system. Other options accept regular expressions (regexes): +here you can simply use ordinary strings, adapt the suggested regexes to your +needs or search the internet for regex syntax. + +If you get stuck or some things just won't seem to work properly, please ask for +help on the newsgroup rec.games.roguelike.misc. Flag queries with '-crawl-', as +other roguelikes are also discussed there. + +1- Starting Screen. +==================== + +The following options are a convenience to help you quickly start your game of +Crawl. + +name = Delilah + If set, that's the name all your Crawl characters will get. + +remember_name = false + Crawl remembers the options (class, race etc.) you used to create your + last character. You may recycle them in the starting screen for a new + character. If this option is set to true, Crawl will also remember the + last name you used. + + If you use this option and want to enter a name _after_ choosing your + race and class, you must enter . at the initial name prompt - hitting + Enter at the name prompt will simply reuse your old name if + remember_name is set. + +weapon = (random | short sword | hand axe | spear | mace | trident) + Specifying the weapon option allows you to bypass the weapon selection + screen. Note that tridents are restricted to only merfolk and + gladiators, but you'll get the standard query in illegal cases. + +book = (flame | fire | ice | cold | summ | summoning | random) + Several spellcasting classes can choose their starting spellbook. + Note flame=fire and ice=cold and summ=summoning. + +chaos_knight = (Xom | Makhleb | random) + +death_knight = (necromancy | Yredelemnul | random) + +priest = (Zin | Yredelemnul | random) + The above three make in advance the additional choices for + Chaos Knights, Death Knights, and Priests. + +race = (Human |...| Merfolk | random) + The usual abbrevations (Hu, El, HE, etc.) work. + +class = (Fighter |...| Wanderer | random) + Here again the abbrevations (Fi, Wi, Pr, etc.) can be used. + +random_pick = false + The random_pick option will randomly generate a character. + The above options (weapons and class options) will override where + appropriate. + + +2- File System. +================ + +crawl_dir= + Directory for reading macro.txt and init.txt, and dumping characters. + It should end with the path delimiter. + +save_dir = + Directory where saves and bones are stored. This option may be ignored + depending on the settings used to compile Crawl, but should be + honoured for the official Crawl binaries. + +sound = : + Plays the sound file if a message contains regex. The regex should + not include commas or colons. For example + sound = LOW HITPOINT WARNING:sound\sounds2\danger3.wav + Getting appropriate sound files may be difficult. Check other + roguelikes or old computer rpg's. Alternatively, ask for help at + the newsgroup rec.games.roguelike.misc. + + +3- Lua files. +============== + +Lua files are scripts which can provide existing commands with a new meaning +or even create new commands (to be used in macros). If you don't know a +specific reason not to include some or all lua files, you'll do best to just +include them all. + +lua_file = + +The currently available lua's are + base.lua -- needed for other lua scripts + stash.lua -- annotates the stash file for better searching (Ctrl-F) + Searching for 'Long blades' will also turn up all weapons + with the long blade skill. Also, you can now look for + spellbooks ('book'), artifacts ('art'), ego items ('ego'). + wield.lua -- shows more intelligent options when using 'w?' + kills.lua -- improves the Vanquished Creatures list in dump files; + currently gives three lists (Vanquished, Friendly, Others) + runrest.lua -- allows to remove certain stop condition when running + New options: runrest_ignore_poison, runrest_ignore_message + gearset.lua -- provides commands for switching of complete sets via macro + New macroable functions: rememberkit, swapkit + eat.lua -- prompts to eat chunks in inventory. + trapwalk.lua -- allows travel to cross certain traps if you have enough hp. + + +4- Interface. +============== + +4-a Picking up and Dropping. +-------------------------------- + +autopickup = $?!:"/ + By default, the list is empty. The valid symbols are + ) Weapons + ( Missiles + [ Armour + / Wands + % Food + ? Scrolls + " or = Jewellery + ! Potions + + or : Books + \ or | Staves + 0 Orbs + } Misc items + X Corpses + $ Gold + Note that _whether_ items are picked up automatically or not, is + controlled by the in-game toggle Ctrl-A. Also note that picking up + takes a turn, but only one turn (regardless of the number of items). + If you teleport or blink onto a square with interesting items, these + will not be picked up. + +default_autopickup = true + When set false, the game starts with autopickup turned off. You can + still toggle autopickup in-game with Ctrl-A. + +safe_autopickup = true + When set, autopickup will not operate if there are visible unfriendly + monsters (or statues.) If safe_zero_exp is set (the default), zero-XP + monsters are considered friendly. + +safe_zero_exp = true + If set, presence of only zero experience monsters (like plants) will + cause autopickups, even if safe_autopickup=true is set. This option + also settles whether autoprayer considers such monsters risky. + +pickup_thrown = false + Pickup_thrown=true causes autopickup to grab thrown/fired missiles. + Many players use this because it eases ranged combat quite a bit. If + following suit, be aware that there are situations when there is no + time for picking up projectiles. Use Ctrl-A for switching off + autopickup altogether in such cases or set safe_autopickup=true. + +pickup_dropped = true + Pickup_dropped lets autopickup affect objects you've dropped. Set to + false to block autopickup for dropped objects. This can be convenient. + +assign_item_slot = (forward | backward) + When picking up items, the inventory slot into which the item goes is + normally the first free slot from a-zA-Z (this is the default "forward" + behaviour). Setting assign_item_slot to "backward" changes the slot + assignment to the first letter after the last slot. + For instance, if you have items on 'a' and 'c', then with + assign_item_slot = forward, the next item will go into 'b', + assign_item_slot = backward, the next item will go to 'd' instead. + With "backward", items dropped/fired and picked up later are more + likely to get their old slot back. + +ban_pickup = + List of item name regexes for items which autopickup will never touch. + You can use multiple ban_pickup lines. Some typical examples are + ban_pickup = degeneration, decay, confusion, potions? of slowing + ban_pickup = potions? of strong poison,potions? of poison + ban_pickup = inaccuracy + ban_pickup = scrolls? of paper, immolation, curse armor, curse weapon + ban_pickup = forgetfulness, uselessness, noise, torment + +drop_mode = (multi | single) + Single is the classical behaviour (and default): after pressing another + key, that item will be dropped. Multi makes an inventory menu appear, + allowing the selection of items to be dropped. (You can also switch to + multidrop from the classic drop line using the '@' key). + Multidrops are highly convenient. Be aware of the fact that every + single drop takes one turn. (This is different from picking up.) When + selecting multidrops, the top right corner will show the estimated + number of turns. + The order in which items get dropped is always from top to bottom in + the inventory listing. + +drop_filter = + When selecting items using the global (de)select keys (',' or '-') in + a multidrop listing, you can choose to apply a filter: only items + whose names match the filter will be selected. The filter strings are + regexes. For instance, to quickly select carrion and rotting chunks of + meat, you could use: + drop_filter = skeleton, rotting, corpse + Other choices can come in handy as well, e.g. if you want to sacrifice + regularly all weapons except axes, use: + drop_filter = axe, broadaxe + Note that if you use this option, you will lose the (de)select all + keys. However, '*' inverts the current selection and so salvages this + problem. + The default is empty. + +Using a Lua script, you can define a function "ch_autopickup" to select +additional items for autopickup. Let's say you want autopickup to only grab food +if your character can eat it (let's say you're playing a kobold and you want to +stop picking up vegetables). You could use the following (if '%' is not in the +autopickup option): + +{ +function ch_autopickup(it) + -- The "false" suppresses hunger checks to see if your character is hungry + -- enough to eat food/chunks. + return food.can_eat(it, false) +end +} + +Here's a ch_autopickup that a mummy might find useful: + +{ +-- The mummy special. Remove % and ! from your autopickup option if you use +-- this. +function ch_autopickup(it) + return food.can_eat(it, false) + or ( item.class(it) == "Potions" and you.race() ~= "Mummy" ) +end +} + + +4-b Targeting. +------------------- + +target_zero_exp = true + Set to false to disable targeting zero exp monsters (i.e. plants) + in hostile targeting mode. This is usually convenient to do. + +target_wrap = true + Set to true if targeting should wrap around from last to first and + vice versa. + +target_oos = true + When cycling through items with 'x' look-around, setting target_oos to + true allows you to jump the cursor to dungeon features (<> for stairs, + Tab for shops, ^ for traps) and stashes (with the '*' and '/' keys) that + are outside line-of-sight but in the main view. This is most sensibly + used in connection with stash_tracking=all (see 4-g). Also see also + target_los_first below. + +target_los_first = true + When cycling through items/features with the 'x' look-around command, + setting target_los_first to true will force the cursor to squares in + line-of-sight before going to squares outside LOS. Defaults to true. + +confirm_self_target = false + Setting this to true will make Crawl ask for confirmation whenever + selecting the character as the target of a non-friendly-targeted spell + (i.e., something other than haste, healing or invisibility.) + +default_fizzlecheck = false + If set to true, this will require a confirmation when cancelling + target mode in a way which will make the activated ability or spell + fizzle (e.g., when casting Magic Dart and cancelling targeting.) + It can be further toggled during play with the key Ctrl+T. + +4-c Passive Sightings (via detection and rememberance). +----------------------------------------------------------- + +detected_monster_colour = darkgrey + Monsters found by detect creatures will be coloured this colour; e.g. + detected_monster_colour = lightred + +detected_item_colour = darkgrey + Items found by detect items will be given this colour, for example + detected_item_colour = green + +colour_map = false + Colours out of sight map features on the playing screen. + +clean_map = false + Cleans up out of sight monsters and clouds on the map. This is like + pressing Ctrl-C (clearing both main screen and level map) all the time. + Setting this to true can be disconcerting for summoners. + + +4-d Branding (Item and monster highlighting). +------------------------------------------------- + +Branding refers to displaying particular monsters (e.g. summons) or items in a +special way; special as in reversing fore- and background. There are several +branding choices (these will not work everywhere; it depends on OS and +terminal): + standout -- often the same as reverse, might be underline or dim + bold -- used by colour curses for brightening foreground colours + blink -- used by colour curses for brightening background colours + reverse -- this will probably work + dim -- probably no effect + underline -- this will probably work + highlight:colour -- set background colour of branded monsters to "colour" +The last can be abbreviated to hi:colour. +See part Technical (6-) for dos_use_background_intensity under Windows and DOS. +By default, there is no branding activated. + +heap_brand + Brand heaps of items (more than one item or stack). For, example + heap_brand = reverse + +friend_brand + Brand friends in some way. This is very helpful for summoners. E.g. + friend_brand = hi:green + shows friends with a green background. If the friend is itself green, + it'll show up as black on green. + +stab_brand + Some deities object to you stabbing monsters. Certain classes + specialise in stabbing monsters. Still other characters are happy if + they spot a monster before the monster spots them. In all these cases, + it helps to identify monsters that are unaware of the character (and + hence susceptible to being stabbed) without using the 'x' command. All + the normal 'brand' options apply. For example + stab_brand = hi:blue + +may_stab_brand + Stabbing may be possible even if the monster is not asleep (if it's + confused or distracted, for instance). This option brands monsters that + you *might* be able to stab. Primarily useful for worshippers of The + Shining One. Purists may consider this unnecessarily spoily. + + +4-e Level Map Functions. +---------------------------- + +level_map_cursor_step = 10 + How many squares the cursor moves on the level map when using + Shift-direction or * direction. + +item_colour = false + Colours items on level-map. + +show_waypoints = true + If set to true (the default), waypoints will be numbered on the level + map, assuming that they're on a floor square with nothing on it. + Otherwise only a green dot will mark the square. + + +4-f Travel and Exploration. +------------------------------- + +travel_colour = true + Option to turn off colouring the level-map with travel information. Few + will set this to false; it's only there for backwards compatibility. + +travel_delay = 20 + How long travel waits after each move (milliseconds). Depends on + platform. Setting to -1 will jump to end of travel - you will not see + the individual moves. + +travel_stair_cost = 500 + travel_stair_cost determines how costly interlevel travel considers + stairs. With a high travel_stair_cost (such as the default of 500), + interlevel travel will always choose routes with the minimum number of + level changes possible. If you set travel_stair_cost to a low value + (such as the minimum of 1), interlevel travel will treat a staircase + just like a normal move, and it may consequently choose routes that + involve extra level transitions. This can be disconcerting in branches + with elevator-type stair arrangements, particularly in the Lair, where + there are typically long chains of elevator stairs, because travel will + go out of its way to use the elevator and minimise total travel + distance. + +travel_avoid_terrain = (shallow water | deep water) + Prevent travel from routing through shallow water. By default, this + option is commented out. For merfolk and/or characters with permanent + levitation, + travel_avoid_terrain = shallow water, deep water + will prevent travel or explore from going through any water. + +travel_exclude_radius2 = 68 + The square of the radius around travel-excluded squares where travel + will refuse to go. Set to zero if you want to exclude single squares. + The default of 68 ensures that travel won't enter line-of-sight of any + dangerous thing at the travel-exclusion center. + +travel_stop_message = + Travel will always stop upon hitpoint loss, confusion, stat drain, + getting encumbered, catching sight of a non-friendly monster, and + teleporting. In addition, a message containing one of the expressions + in travel_stop_message will stop travel. For example, + travel_stop_message = Something appears + stops travel if Xom grants us a gift suddenly. To limit a substring + match to a message channel, prefix the substring with the channel name + and a colon. For instance, if you want travel to stop when you're hit + by divine retribution, you could use: + travel_stop_message = god:wrath finds you + If you'd like to stop travel for any message sent to a particular + channel, use a travel_stop_message line with that message channel name + and a colon alone. For example, if you've an amulet of the gourmand, and + are hankering after rotten meat, or you're playing a ghoul: + travel_stop_message = rotten_meat: + Stop travel for any god messages (including prayer) + travel_stop_message = god: + Multiple travel_stop_message lines can be used. + +explore_stop = items,stairs,shops,altars + Explore will stop for one of these conditions. Whatever you set this + option to, anything that stops travel will also stop explore. Multiple + explore_stop lines are *not* cumulative! The last explore_stop line + will override all previous explore_stop lines. + +runrest_ignore_message = + This only works if runrest.lua has been sourced already in init.txt. + Any message containing the string will *not* stop your run. E.g. + runrest_ignore_message = prayer ends + +runrest_ignore_poison = : + This only works if runrest.lua has been sourced already in init.txt. + Poison damage of x will be ignored if you have at least y hp if you've + defined a runrest_ignore_poison = x:y option. Running here means + shift-running and resting only. Only one runrest_ignore_poison line is + considered. Note that for this work, you should also tell Crawl to + ignore the "You feel sick messages". For example, + runrest_ignore_message = You feel.*sick + runrest_ignore_poison = 4:100 + +trapwalk_safe_hp = :, ... + This only works if trapwalk.lua has been sourced already in init.txt. + Any square containing one of the listed trap types will be considered + safe for travel if your hp is greater than or equal to the number + connected to the trap in question. + + All the existing trap types can be used, but in practice only the + mechanical traps (dart, bolt, arrow, needle, spear, axe, blade) make + sense. Note that travel tries to avoid traps if this is easily possible. + Defaults to none. For example, + trapwalk_safe_hp = dart:15, needle:25, spear:50 + +Using small scripts in init.txt, travel can get even more convenient. + +* Deciding whether monsters are worth stopping for: + +Defining a "ch_stop_run" function affects the monster stop condition for *all* +run modes: shift-running, travel, explore and interlevel travel. + +{ +function ch_stop_run(mons) + local name = mons.name + + -- Stop running only if these monsters get closer than 3 squares + if name == "swamp worm" or name == "big fish" + or name == "giant goldfish" or name == "lava worm" + or name == "butterfly" then + -- mons.x and y coords are relative to the player. + local dist = mons.x * mons.x + mons.y * mons.y + if dist >= 9 then return false end + end + + return true +end +} + + +4-g Stashes. +---------------- + +stash_tracking = (explicit | dropped | all) + A stash is a heap of items tracked by crawl. You can search in your + stashes with Ctrl-F. This options rules how stashes are generated. + When stash_tracking is set to 'explicit' (the default), you have to + explicitly tell the game what squares you want it to keep track of. You + do that by stepping onto the square containing your stash of goodies and + hitting Ctrl+S. The game will now keep track of what's on the square, + when you add and remove stuff from your stash. If you remove everything + from that square, the game will stop tracking the square altogether. You + can also erase a stash square with Ctrl-E. + + When stash_tracking is set to 'dropped', any square where you drop + something becomes a stash, and the game keeps track of all such + squares. + + When stash_tracking is set to 'all', the game marks any square where it + sees any object as a stash. That gives you a comprehensive list of + everything your character sees in the dungeon, but may slow the game + down and use too much memory on older computers. + +4-h Command Enhancements. +----------------------------- + +auto_list = false + Change to true if you want to automatically list appropriate inventory + items for commands like eat and read. This is like immediately hitting + '?', and can be confusing to beginners because they won't get to see + the prompts. This option does not apply to spell casting... Conjurers + would probably find that really annoying. + +lowercase_invocations = false + Set this option to true if you prefer to have invocations on 'a'-'e' + instead of the traditional 'A'-'E' (which is the default). Setting to + true save invocations an annoying shift keypress. + +easy_open = false + Open doors by moving on to them. Highly convenient. Note that travel + and exploration will automatically open doors depending on this option. + +easy_butcher = false + If true, auto-switch to uncursed short blade for butchery. + +easy_armour = true + Allows auto removal of armour when dropping it. + +easy_confirm = (none | safe | all) + Make confirmation questions easier to answer: + none = force capitals on Y/N questions + safe = force only on questions that will end game (default) + all = never force capitals + WARNING TO KEYPAD USERS: The number 7 is mapped to the letter 'y', + which can result in accidentally answering yes to questions; it is + suggested that you use a value of 'none' or 'safe' + +easy_quit_item_lists = false + Setting this option to true allows the quitting of item listing with + space as well as escape. These lists are essentially all of those that + are requesting an inventory item and accept '?' and '*'. + The identify list will never easy quit. The default is false. + +easy_exit_menu = true + In multidrop (and pickup) menus, paging past the end will drop out of + the menu if easy_exit_menu is true. + +default_autoprayer = false + When set to true, the game will start with automatic prayers. This + option can be toggled in-game with Ctrl-V. + Letting Crawl pray throughout and automatically can be useful for gods + like Trog and Makhleb, who constantly demand kills from their followers. + + Automatic prayers take a turn like manual prayers and will only happen + if + - there is no hostile monster in sight + - some further conditions (like not standing at an altar) + Note that even when you're praying, you can renew prayer anytime. + Also note the option safe_zero_exp (see 4-a) decides whether zero + experience monsters (like plants) are considered hostile. + +sort_menus = false + When set to true, items are sorted by description in inventory and + pickup menus. When set to false (default), items are ordered by + equipment slot. + + +4-i Messages and Display Enhancements. +------------------------------------------ + +show_uncursed = true + This option adds the text "uncursed" to items where the curse status is + relevent and known. Does not bother to show "uncursed" on items that are + fully identified (showing pluses), since that wound be redundant and + waste space. Should be set to true. + +hp_warning = 25 + hp_warning gives "* * * LOW HITPOINT WARNING * * *" on the danger + channel when the player takens damage and their hitpoints are less than + this percentage of their maximum (use 0 to turn off these messages). It + is recommended to use + hp_warning = 55 + +terse_hand = true + Set this to false to have the "in hand" description on the main screen + the same as the inventory. The default setting of true will give the + newer more terse description that should fit the limited space better + (but will be harder for new players to understand). + +delay_message_clear = false + Setting this option to true will delay the clearing of messages until + the message space is full (default is false which results in clearing + between player actions). + +always_greet = false + always_greet will give the race/class and god messages everytime the + game is started. + +menu_colour = : + This prints a line (of the inventory, a menu, or the discoveries + screen) containing regex in the stated colour. There can be several + statements in a list, or also several menu_colour lines. When using + several menu_colour lines, the colour of the _first_ matching regex + is applied. For a list of colours, check the colour option in 6-a. + To colour worn stuff and highlight cursed items, take + menu_colour = lightred: cursed.*(worn|neck|hand|weapon) + menu_colour = green:(worn|neck|hand|weapon) + menu_colour = red: cursed + If you frequently die because you forget to use emergency items, try + menu_colour = cyan:(potions? of heal wounds|teleportation) + menu_colour = lightcyan:(blinking|wand of (fire|cold|draining)) + To quickly check what potions were trashed by a mummy curse, use + menu_colour = lightred:potions? of (degeneration|decay) + + +4-j Missiles. +----------------- + +fire_items_start = a + Sets the first inventory item to consider. Default is a, many use c. + +fire_order = launcher, dart, stone, dagger, spear, handaxe, club + The list should be on one line of items, with commas between items. + 'launcher' refers to firing the appropriate missile for the wielded + weapon (ie crossbow, bow, sling, blowgun). You'll almost certainly + want it first, as it'll be ignored when you're not wielding a ranged + weapon. The default is + fire_order = launcher, dart + To quickly experiment with a weapon-throwing character - e.g. to + make your Berserker actually use those three spears he carries around, + try a line similar to: + fire_order = launcher, dagger, spear, handaxe, stone, dart + + + +4-k Message Channels. +------------------------- + +Crawl communicates to the players with its message window. Every message belongs +to one of the so-called channels. The behaviour of each channel can be changed +with the option + + channel.CHANNEL_NAME = (COLOUR | mute | default | on | off | plain) + +CHANNEL_NAME can currently be one of these: + plain = regular text (and things "uncoloured") + prompt = input prompts to the player + god = messages from the gods + pray = standard praying messages (start/end of prayer) + duration = messages about character spells/effects wearing off + danger = serious threats to the characters existence + food = warnings about food + warning = various other warnings + recovery = recovery from disease/stat loss/poison conditions + multiturn = indicates long actions (wearing armour, dissecting etc.) + talk = monsters talking (acting) + intrinsic_gain = level/stat/species power gains + mutation = gain/lose mutations + monster_spell = messages about monsters gesturing and casting spells + monster_enchant = messages pertaining to monster enchantments (up or down) + monster_damage = messages telling how damaged a monster is + rotten_meat = messages about chunks/corpses becoming rotten + +The channel options are + mute = show no messages from channel (dangerous, be careful!) + default = turn channel on to it's default scheme + alternate = turn channel on to it's alternate "colourful" scheme + on = same as default + plain = make channel the same colour as the "plain" channel + (won't do anything silly like "mute" if plain == mute, though) + off = same as plain + COLOUR can be any of the colours described in section 6-a (colours option). + +The only multi-colour channels currently are monster_damage and god. All other +channels are defaulted to on, except for multiturn, which defaults to mute. +Note that the template init.txt sets + channel.multiturn = on +in order to help new players. You may want to comment out this option, if +the messages are too verbose. + +4-l Inscriptions. +--------------------- + +In Crawl, items can be manually inscribed with the '{' command. This adds a +note in curly braces to the item inscription. Several inscriptions are +functional, namely all containing one of the following + @w9 -- now typing 'w9' will wield this item + @*9 -- now any action command followed by '9' will use this item + !w -- before wielding this item, Crawl will ask for confirmation + !* -- any action with this item causes a prompt + =g -- item will be picked up automatically if autopickup is on + =k -- item will be ignored in all listings on the ground + (it can still be picked up if it's the only item on the ground) +(in the example 'w' could be any sensible command and '9' could be any digit). +An item may contain more than one shortcut. + +autoinscribe = : + Any item whose description contains the regex will be automatically + inscribed (if autopickup is toggled on). For example, marking all + royal jellies and honeycombs eases the Hive (if food is not in the + autopickup option): + autoinscribe = royal jell:=g + autoinscribe = honeycomb:=g + + +4-m Macro related Options. +------------------------------ + +flush.failure = true +flush.command = false +flush.message = false + These are useful when using macros. Setting one of these sub-options + to true will cause the entire input buffer to be dumped and thus + effectively stop the macro. The sub-options currently are + failure -- when spells/abilities get miscast + command -- whenever the game is about to get the next command + message -- whenever the game outputs a non-mute message + + +5- Character Dump. +=================== + +5-a Items and Kills. +------------------------ + +The character dump or morgue files end with a list of all monsters that perished +while the character was active. By default, dead monsters are grouped in three parts: + Vanquished Creatures -- monsters killed by the character + Collateral Kills -- kills of friendly monsters + Others -- all other casualties (e.g. traps, hostile monsters) + +kill_map = friend:you, other:you + will merge friendly and other kills into the main vanquished creatures + list. Note that the merging is only for display (the game still + maintains three separate lists internally) and that kill places (see + below) may be in the wrong order for merged entries. The default is an + empty list. + +dump_kill_places = (none | all | single) + In the Vanquished Creatures list, this option controls how the + locations of each kill are displayed. Use 'none' to suppress place + display altogether, 'all' to display all known (up to 5) kill places, + anything else to the default of showing kill places only for single + kills + +dump_item_origins = artifacts, rods + The game remembers where you find items. If you want this item origin + memory listed in your dumps, use this option to select which items get + annotated. Available selectors are: + artifacts, ego_arm, ego_weap, jewellery, runes, + rods, staves, books, all, none. + If you use multiple dump_item_origins lines, the last line takes effect; + all preceding lines are ignored. + + If you don't want any items to be annotated, set dump_item_origins to + none, and set dump_item_origin_price to -1. + +dump_item_origin_price = 100 + Item origins are dumped if the price of the item is greater than or + equal to this amount. Set this to -1 to prevent selection by price. + +dump_message_count = 4 + The number of last messages to be displayed in character dump files. + +dump_order = header,stats,misc,notes,inventory,skills +dump_order += spells,mutations,messages,screenshot,kills + Controls the order of sections in the dump. You can use multiple + dump_order lines - all lines but the first must use dump_order += + +verbose_dump = false + verbose dump causes less important item details to appear in character + dumps. + + +5-b Notes. +-------------- + +Crawl can automatically log certain events during play. You can read these in +the dump or morgue files. Below are options for tweaking this behaviour. + +use_notes = true + Set to true to get note-taking. The following events are logged: + - Gaining or losing a level + - Entering a dungeon level for the first time + - Memorizing a spell of higher level than any learned before + - Becoming a worshipper of a god + - Abandoning a god + - Receiving a gift from a god (except Xom) + - Being able to invoke a godly power for the first time + - Identifying items (see below) + - Killing OOD or unique monsters (see below) + - Reaching critical HP levels (see below) + - Gaining or losing mutations + - Reaching significant levels in a skill (see below) + You can use the command ':' for manually adding notes. + +note_items = + When an item is identified, it will be noted if it is an artifact + (fixed, unrand, or random) or if its short description matches a regex. + E.g. + note_items = rod,book,rune,aquirement + +ood_interesting = 8 + Monsters which are out of depth (OOD for short) for their current level, + e.g. a dragon on level 2, will be noted if they are out of depth by at + least ood_interesting levels. To disable OOD monster noting, set + ood_interesting to 500; the default is 8. + Unique monsters are always noted, regardless of this setting. + OOD monsters are only noted in the main dungeon. + +note_hp_percent = 5 + If your HP falls below a certain note_hp_percentage of your max HP, a + note will be taken. There is some code to avoid repetitions of notes + based on the same incident. The default is 0, which means no noting. + +note_skill_levels = 1,5,13,27 + This sets which skill levels are noteworthy. You can have multiple + note_skill_levels lines. The default is nothing (no notes.) + +note_skill_max = false + Setting this option will cause a note whenever a new maximum in skill + levels is reached. If note_skill_max is true and note_skill_levels is + nonempty, notes will be taken whenever either of the criteria are met. + +note_monsters = + Monsters whose name matches an item in this comma-separated list are + considered interesting. You can have multiple note_monsters lines. E.g. + note_monsters = Klown,orb of fire + +note_messages = + Messages which match an item in this comma-separated list are + considered interesting. You can have multiple note_messages lines. E.g. + note_messages = Something interferes + note_messages = protects you from harm + If you want all banishments to the Abyss noted, use + note_messages = [bB]anish.*Abyss + If you want a note when your draconian scales turn , use + note_messages = Your scales start + +note_all_spells = true + Will add a note for each spell memorised. + +6- Miscellaneous. +============== + +6-a All OS. +--------------- + +macro_meta_entry = true + macro_meta_entry lets you specify non-printable keycodes like \{3} when + creating a macro. For instance, if you want to keymap 0 to Escape, you'd + use a target keycode of \{27}. + +colour.OLDCOLOUR = NEWCOLOUR + Useful for terminals where some colours are hard to read (and cannot + be adjusted), as well as for creating a custom scheme, especially when + used with the background option on a terminal with a non-black + background. + Format is colour.OLDCOLOUR = NEWCOLOUR, later rules take preference and + the NEWCOLOUR is always literal (ie. it won't re-evaluate to a + different colour). + The colours are: + black, blue, green, cyan, red, magenta, brown, lightgrey, + darkgrey, lightblue, lightgreen, lightcyan, lightred, + lightmagenta, yellow, white + with lightgray = lightgrey, darkgray = darkgrey. Some examples: + colour.lightgray = black + colour.lightcyan = cyan + colour.yellow = brown + +wiz_mode = (no | never | yes) + Wizard mode options (available only in WIZARD compiles): + yes -- start games in wizard mode (game will not be scored) + no -- still allows player to enter wizard mode after start of game + never -- never allow a wizard command to be used + +char_set = (ascii | ibm | dec) + Chooses different character sets for the game play screen. DOS and + Windows users will want to use the IBM character set, Unix users will + prefer DEC or plain ASCII. + +cset_ascii, cset_ibm, cset_dec, cset_any + Can be used to change individual characters in a specific character + set (the character set used for display is determined by the char_set + option). The syntax is the same for all of these; cset_any changes + characters in all character sets. + +cset_XXX = + a list of these is allowed, as well. + + The possible entries for dungeon_character_name are: + wall, wall_magic, floor, floor_magic, door_open, door_closed, trap, + stairs_down, stairs_up, altar, arch, fountain, wavy, statue, + invis_exposed, item_detected, item_orb, item_weapon, item_armour, + item_wand, item_food, item_scroll, item_ring, item_potion, + item_missile, item_book, item_stave, item_miscellany, item_corpse, + item_gold, item_amulet, cloud + Most of these are self-explanatory. "arch" is used for shops and + portals. "floor_magic" and "wall_magic" are used to display + magic-mapped squares on the level map. "invis_exposed" is the character + for water creatures submerged in shallow water, or invisible creatures + wading in shallow water. + + Symbols can be specified using a letter, or by a number (decimal code). + For an example on IBM displays, + cset_ibm = wall:219, arch:0 + shows walls as solid blocks and shops and portals as '0'. + +feature = { , , , + , } + where is a regular expression describing a dungeon feature. This + regex should match the description when using the 'x' command. In case + the regex matches several descriptions, all such features are affected. + + The list in {...} specifies the appearance of the dungeon feature(s), + and should be self-explanatory. can be used to override the + above cset options, or also to distinguish among subtypes of a + character. + + 'magic' always refers to magic mapping. So the entry + determines what symbol will be used for features only detected via magic + mapping. + + Leading parameters in the {...} list can be omitted by leaving them + blank and using placeholder commas. Trailing parameters can be omitted + without placeholder commas. + + Multiple feature option lines can be used, as can multiple feature + descriptions strung together on the same line separated by semicolons. + + Examples: + feature = rock wall { , , red } # shows rock walls in red + feature = metal wall {#} # use '#' for metal walls + + +6-b DOS and Windows. +------------------------ + +dos_use_background_intensity = false + On DOS and Windows, if you're using a console that can do high-intensity + background colours, set this option to true for superior + friend-branding. If your console doesn't like this option, some friendly + monsters will appear as blinking characters (and setting this option to + false may be advisable to preserve your sanity in such cases). + +6-c Unix +------------ + +background = + Sets the default background colour by name (defaults to BLACK). This + may be useful if you're using a terminal with a background colour other + than black (such as an xterm), but this option is still experimental + and the results may not be very good. diff --git a/crawl-ref/docs/keys.pdf b/crawl-ref/docs/keys.pdf new file mode 100644 index 0000000000..4b7b420a65 Binary files /dev/null and b/crawl-ref/docs/keys.pdf differ diff --git a/crawl-ref/docs/keys.txt b/crawl-ref/docs/keys.txt new file mode 100644 index 0000000000..0901afed06 --- /dev/null +++ b/crawl-ref/docs/keys.txt @@ -0,0 +1,206 @@ +-------------------------------------------------------------------------------- + DUNGEON CRAWL: LIST OF KEYS AND COMMANDS +-------------------------------------------------------------------------------- + +Main screen +----------- +Crawl has many commands to be issued by single key strokes. This can become +confusing, since there are also several modes; here is the full list. Some +commands are particularly useful in combination with certain interface options; +such options are mentioned in the list. For a description of them, please look +into crawl_options.txt. + +Saving games: + S Save game with query and exit. + Ctrl-X Save game without query and exit. + Q Quit without saving. + +Movement: + direction Moves one square, direction is either one of the + numpad cursor keys (try both Numlock on and off) or + one of the Rogue vi keys (hjklyubn). + Shift-direction This moves straight until something interesting is + or / direction found (like a monster). + Ctrl-G Interlevel travel (to arbitrary dungeon levels or + waypoints). Remembers old destinations if interrupted. + Ctrl-O Auto-explore. + Ctrl-W Det waypoint (check the option show_waypoints). + +Resting and Searching: + s, Del Rests and searches (these are the same) for one turn, + this is also done with '.' or Numpad-5. + 5 or Long resting/searching (until both health and magic + Shift-Numpad 5 points are full or something is found or 100 turns are + over). + +Dungeon interaction: + o Open door. + c Close door. + Ctrl-direction Tries untrapping a known trap on the specified square, + or * direction else opens door if there is one, + else attacks without move (even if no monster is seen). + < Use staircase to go higher. + > Use staircase to go deeper, or enters shop/branch. + ; Examine occupied tile, also causes auto-pickup. + x Examine surroundings mode (see below for its commands). + X Examine level map (see below for level map commands). + O Show dungeon overview (branches, shops, and labyrinths). + +Character information: +'display' below means usage of the message area, +'show' means usage of the whole screen. + @ Display character status. + [ Display worn armour. + " Display worn jewellery. + C Display experience info. + ^ Show religion screen. + A Show abilities/mutations. + \ Show item knowledge. + m Show skill screen. + i Show inventory list. + % Show resistances. + +Item interaction (inventory): + v View item description. + { Inscribe item (check the autoinscribe option). + t Throw/shoot an item. + f Fire first available missile. + q Quaff a potion. + e Eat food (tries floor first, invorenty next). + z Zap a wand. + r Read a scroll or book. + M Memorise a spell from a book. + w Wield an item ( - for none). + ' Wield item a, or switch to b. + E Evoke power of wielded item. + W Wear armour. + T Take off armour. + P Put on jewellery. + R Remove jewellery. + +Item interaction (floor): + d Drop an item. + d# Drop exact number of items. + g or , Pick up items; press twice for pick up menu. + You can use a prefix to pick up smaller quantities. + D Dissect a corpse. + +Other game-playing commands: + a Use special ability. + p Pray. + Z Cast a spell. + ! Shout or command allies. + +Non-game playing commands: + V Display version information. + Ctrl-P Show previous messages. + Ctrl-R Redraw screen. + Ctrl-C Clear main and level maps. + # Dump character to file (name.txt). + : Add note to dump file (see option take_notes). + ` Add macro. + ~ Save macros. + = Reassign inventory/spell letters. + +In-game toggles: + Ctrl-A Toggle autopickup. + Ctrl-V Toggle auto-prayer. + Ctrl-T Toggle spell fizzle check. + +Stashes: + Ctrl-S Mark stash (only sensible with stash_tracking=explicit, + else this is automatically tracked). + Ctrl-E Erase stash (ignores the square from stash tracking). + Ctrl-F Find (this searches in stashes and shops, you can use + regular expressions and also terms like 'long blades' + or 'artifacts'). + +Level map ('X') +--------------- +The level map (brought up by 'X' in the main screen) uses the whole screen to +show the dungeon. + Esc, Space Leave level map. + - Scroll level map up + + Scroll level map down + Direction Moves cursor. + Shift-Direction Moves cursor in bigger steps (check the option + level_map_cursor_step). + . Travels to cursor (also Enter and , and ;) + (if the cursor is on the character, moves cursor to last + travel destination instead). + < Cycle through up stairs. + > Cycle through down stairs. + ^ Cycle through traps. + Tab Cycle through shops and portals. + I Cycle through stashes (if the option stash_tracking is + set to all, this cycles through all items and piles). + Ctrl-C Clear level and main maps (from temporarily seen + monsters, clouds etc.). + +Waypoints can be set on the level map. You can travel to waypoints using +Ctrl-G. Check the option show_waypoints. The commands are + Ctrl-W Set waypoint. + W Cycle through waypoints. + +Travel exclusions mark certain spots of the map as no-go areas for autotravel +and explore (the radius is set by the option travel_exclude_radius2). + Ctrl-X Set travel exclusion. + Cltr-E Erase all travel exclusions at once. + X Cycle through travel exclusions. + + +Examining surroundings ('x') +---------------------------- +When roaming the dungeon, the surroundings mode is activated by 'x'. It lets you +have a look at items or monsters in line of sight. You may also examine stashed +items outside current view using the options target_oos=true (if using this, +check target_los_first). + x, Esc, Space Return to playing mode. + ' or * Cycle objects forward. + ; or / Cycle objects backward. + + or = Cycle monsters forward. + - Cycle monsters backward. + direction Move cursor. + . or Enter Travel to cursor. + ? Describe monster under cursor (also shows weapons, + wounding and enchantments). + > Cycle downstairs. + < Cycle upstairs. + Tab Cycle shops and portals. + +Targeting +--------- +Targeting mode is similar to examining surroundings. It is activated whenever +you fire projectiles, zap a wand or cast spells which uses targets. + x, Esc, Space Stop targeting. + direction Shoot straight in this direction. + + or = Cycle monsters forward (see option target_wrap). + - Cycle monsters backward. + . or Enter Fire (check option confirm_self_target). + p or t Fire at previous target (if still in sight). + > Fire, but stops at target. + Ctrl-F Toggle target modes (between enemies, all, friends; see + also option target_zero_exp). + * Manually targeting: the direction keys will now move + the cursor, the keys '+' and '-' work as above, and '.' + and Enter fire. + +Shortcuts in lists (like multidrop): +------------------------------------ +When dropping (with the drop_mode=multi option), the drop menu accepts several +shortcuts. + ( Selects all missiles. + ) Selects all hand weapons. + [ Selects all armour. + ? Selects all scrolls. + % Selects all food. + & Selects all carrion. + + Selects all books. + / Selects all wands. + \ Selects all staves. + ! Selects all potions. + " Selects all jewellery. + } Selects all miscellaneous items. + , Global select (subject to the drop_filter option). + - Global deselect (subject to the drop_filter option). + * Invert selection. diff --git a/crawl-ref/docs/lualicense.txt b/crawl-ref/docs/lualicense.txt new file mode 100644 index 0000000000..274f501d8c --- /dev/null +++ b/crawl-ref/docs/lualicense.txt @@ -0,0 +1,34 @@ +Lua License +----------- + +Lua is licensed under the terms of the MIT license reproduced below. +This means that Lua is free software and can be used for both academic +and commercial purposes at absolutely no cost. + +For details and rationale, see http://www.lua.org/license.html . + +=============================================================================== + +Copyright (C) 1994-2006 Lua.org, PUC-Rio. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +=============================================================================== + +(end of COPYRIGHT) diff --git a/crawl-ref/docs/messlog.txt b/crawl-ref/docs/messlog.txt deleted file mode 100644 index d04ae19f83..0000000000 --- a/crawl-ref/docs/messlog.txt +++ /dev/null @@ -1,562 +0,0 @@ -CHANGES TO pr31: - - - -* #defines MWATER6-10 (values 436 - 440) removed, unused in code, not needed and there is no point in reserving space for nonexistent monsters -* #defines for MLAVA4,5,6,7,8,10 (and MLAVA10 should really have been MLAVA9, anyway), values 424-429, removed -- now unneeded, unused in code anyway. -* #ifdef'd (USE_DEBRIS_CODE) enum DEBRIS -- really have to look at how this is implemented now! -* ATTR_LAST_ATTR -> NUM_ATTRIBUTES -* BEAM_CLOUD -> BEAM_ACID on strength of evidence in plant_spit() and zappy(), but now stinking_cloud() looks odd ... hmmm -* DEBRIS_LAST -> NUM_DEBRIS -* DNGN_TRAP_I -> DNGN_TRAP_MECHANICAL; DNGN_TRAP_II -> DNGN_TRAP_MAGICAL -* ENCH_LAST_ENCH -> NUM_ENCHANTMENTS -* FOOD_LAST -> NUM_FOODS -* GOD_LAST_GOD -> NUM_GODS -* GOOD_LAST_GOOD -> NUM_GOOD_THINGS -* KILLED_LAST_KILLED -> NUM_KILLBY -* MH_NORMAL -> MH_NATURAL, H_NORMAL -> H_NATURAL ... may want to add in {M}H_MAGICAL for creatures that are mortal though magical ... -* MI_LAST_MI -> NUM_MISSILES -* MONS_LAST_MONS -> NUM_MONSTERS -* MONS_SMALL_SKELETON -> MONS_SKELETON_SMALL; MONS_LARGE_SKELETON -> MONS_SKELETON_LARGE; removed #defines in enum.h that josh added to achieve similar effect -* MS_LAST_MS -> NUM_MONSTER_SPELLS -* NAUGHTY_LAST_NAUGHTY -> NUM_NAUGHTY THINGS -* OBJ_LAST_OBJ -> NUM_OBJECT_CLASSES -* POT_LAST_POT -> NUM_POTIONS -* SCR_LAST_SCR -> NUM_SCROLLS -* SHOP_LAST_SHOP -> NUM_SHOPS -* SK_LAST_SK -> NUM_SKILLS -* SPELL_LAST_SPELL -> NUM_SPELLS -* SPELL_MANNA and spells4::cast_manna() struck from the code, along with all supporting tie-ins -* SPWPN_LAST_SPWPN -> NUM_SPECIAL_WEAPONS -* STAFF_LAST_STAFF -> NUM_STAVES -* SYM_SPORE -> SYM_BURST, as it is used all over the place for things other than spores -* TOTAL_CARDS replaced with enum meber NUM_CARDS -* TRAN_LAST_TRAN -> NUM_TRANSFORMATIONS -* Vehumet will no longer shield one's intelligence when casting SUMMON_HORRIBLE_THINGS -- made no sense that he did in the first place -* ZAP_LAST_ZAP -> NUM_ZAPS -* a lot of cleanup/compaction in itemname.cc -* a lot of general clean-up -* a lot of mpr() clean-up -* ability::show_abilities() made static -* ability::species_ability() -> activate_ability() -* abyss::generate_area() recoded for efficiency in selecting replacement tiles -* abyss::priest_spells() -> player::priest_spells() and commented out, declaration from abyss.h moved to atop player.cc and also commented out -- part and parcel of above reasoning -* added "you.redraw_hit_points = 1" to calc_hp() -- caught a number of instances where it was not being set -* added #define ENDOFPACK for max size of player backpack -* added #undef MAX to macro definition in it_use3::reaching_weapon_attack() -* added CANNED_MESSAGES and stuff::msg_something_appears -> stuff::canned_msg() with appropriate parameter -* added DARM_PLAIN to fill out ARMOUR_DESCRIPTIONS enum -* added DNGN_LAST_SOLID_TILE to track this value's usage ... wish me luck -* added DWPN_PLAIN -* added MDSC_NOMSG_WOUNDS for monsters that do not message wound status to player -* added MONSTER_DESCRIPTORS and monstuff:monster_descriptor() to handle usage -* added MSG_SPELL_FIZZLES to stuff::canned_msg() -* added NUM_TRAPS and TRAP_RANDOM -* added OBJ_RANDOM -* added OBJ_UNASSIGNED -* added SHOP_UNASSIGNED and SHOP_RANDOM -* added SPARM_RANDART_I -* added STAT_ALL to deal with royal jelly, etc. -* added TRAP_UNASSIGNED -* added a number of CANNED_MESSAGES and handling by stuff::canned_msg() -* added and implemented newgame::jobs_hpmp_init() -* added declaration for monstuff::handle_behavior() atop file -* added declaration of monstuff::flag_ench() atop monstuff.cc -- no idea why there wasn't one -* added enum DIRECTION and applied members to codebase -* added enum GENUS_PLAYER and started population of the enum for cases -* added enum MONSTER_INVENTORY_SLOTS and applied members to codebase -* added enum PLAYER_DESCRIPTORS -* added enum SPECIAL_ROOMS and applied to codebase -* added food::make_hungry(int bool) to streamline hunger decrements and messaging -* added itemname::is_demonic() and applied to codebase -- probably should be expanded at a later date as more demonic items are introduced -* added itemname::launched_by() which returns the appropriate missile subtype for a given weapon[launcher] subtype and implemented into code -- this will probably have to be reworked -* added itemname::launches_things() which simply returns whether or not a WPN_foo launches other objects or not -* added message to spells2::cast_toxic_radiance() for cases where light passes through invisible monsters -* added misc::trap_at_xy() to handle determination of "which trap" for a given (x,y) coordinate -* added misc::trap_category() to return grd[][] symbol for a given env.trap_type[] -* added monstuff::message_current_target() for multiple instances of same messaging -- seemed the best place to stick it -* added monstuff::monster_index() to return index value of a given monster pointer -* added monstuff:heal_monster() and applied to codebase -* added monstuff:hurt_monster() and applied to codebase -* added monstuff:monster_habitat() to determine native habitat of creatures without resorting to range checking on MONSTERS enum -- better future flexibility -* added mstruct::mons_itemuse() to replace global array gmon_use[1000] -- too much memory wasted there -* added newgame::enterPlayerName() -* added newgame::give_basic_knowledge() -* added newgame::give_basic_spells() -* added newgame::openingScreen() -* added newgame::verifyPlayerName() -* added player::dec_hp() -- probably should be inline or macro -- to unify handling decrementing of hp and catch error of not setting redraw to 1 (!!!) -* added player::dec_mp() -- probably should be inline or macro -- to unify handling decrementing of mp and catch error of not setting redraw to 1 (!!!) -* added player::decrease_stats() -- yes, I know that decrease_stats() and increase_stats() could be merged, but I'm too tired to do it now -* added player::deflate_hp() to catch possible redraw bugs -* added player::enuf_hp() to clarify ability.cc -* added player::enuf_mp() to clarify ability.cc -* added player::inc_hp() to catch possible redraw problems and bounds checking -* added player::inc_mp() -- probably should be inline or macro -- to unify handling incrementing of mp and catch error of not setting redraw to 1 (!!!) -* added player::job_title() and implemented -* added player::player_descriptor() -- plan on future expansion -* added player::reset_hp() to catch possible redraw problems -* added player::set_hp() to catch possible redraw bugs -* added player::set_mp() to catch redraw problems and to clarify coding -* added player::species_abbrev() to stand in place of code in ouch::ouch() -* added spellbook::spelltype_name() to permit recoding of certain portions of code as loops!!! (see: spells0.cc, spellbook.cc) - maybe should be moved elsewhere - output not in traditional order, but does it matter? -- cf. chardump::spell_type_name() -- grrrr!!! -* added spells0::set_spellflags() to handle routine tasks -* added spells0::spell_enhancement() -* added spells0::spell_type2skill() -* added static enum CARDS to decks.cc -- only used within this file -- and applied -* added stuff::canned_msg(MSG_SOMETHING_APPEARS) to handle frequent use of set message: "Something appears at your feet." -* added stuff::index_to_letter() and applied across codebase -* added stuff::player_can_hear() to handle silence checking for both a distant (x,y) coordinate and the player's own coordinate -* added stuff::random_colour() to generate a random color -- clarifies usage of particular calculation, prefer overhead of function to macro definition -- and applied to codebase -* added view::mons_near_2() as future replacement for view::mons_near() -- takes a pointer rather than an index -* anything relating to #ifdef CLASSES has been pulled out of the codebase -- it was never defined (or undefined for that matter), the code was out-of-date, got in the way of the actual operating code, and there is was a note dating all the way back to version 3.10 stating all this and more -- hope no one will miss it -* applied stuff::yesno() to codebase -- a couple more complicated instances can use application -* bang::explosion() now takes into account monster clouds as well as player clouds for "sizzle" -* bang::explosion() now takes struct bolt * instead of struct bolt[] as second parameter -* bang::explosion1() now takes struct bolt * instead of struct bolt[] as only parameter -* beam::beam() now takes struct bolt * instead of struct bolt[] as only parameter -* beam::check_mons_magres() returns bool instead of int -* beam::check_mons_magres() takes struct monsters * instead of int as first parameter -* beam::check_mons_resists() now takes struct bolt * instead of struct bolt[] as second parameter -* beam::check_mons_resists() takes struct monsters * instead of int as second parameter -* beam::mimic_alert() now takes struct monsters * instead of int as parameter -* beam::missile() now takes struct bolt * instead of struct bolt[] as first parameter -* beam::mons_ench_f2() no longer takes the second parameter (int foo[]) -- completely uneccesary, as it can be passed directly to the bolt struct -* beam::mons_ench_f2() now returns bool instead of int -- not that the return value is ever used elsewhere -* beam::mons_ench_f2() now takes struct bolt * instead of struct bolt[] as third parameter -* beam::mons_ench_f2() takes bool as second parameter instead of char -* beam::poison_monster() now takes struct monsters * instead of int as parameter -* beam::poison_monster() takes bool instead of char for second parameter, renamed from "source" to "fromPlayer" and values reversed in passes (as it actually was t/f on fromMonster, but double m's looked silly) -* beam::sticky_flame_monster() takes bool instead of char for second parameter -- no idea what it really means, as the function is called but once and the parameter ("source") is set to false -* beam::tracer_f() now takes struct bolt * instead of struct bolt[] as second parameter -* beam::tracer_f() now takes struct monster * instead of int as first parameter -* bugfix (again): mummies get "closer to death" at levels 13 and 26 -* bugfix (of sorts): wizard commands 'x' and '$' no longer add to experience and call level_change() directly, but rather call gain_exp() instead -- these commands should still be bound by experience limits imposed by player::gain_exp() -* bugfix in beam::beam() referenced menv[0] when menv[o] was meant ... cripes (!!!) -* bugfix(?): items::handle_time() now forces one to exercise stealth -or- armour ... the original coding was a little odd (players with no or light armor had less of a chance to exercise stealth than those with heavier armour) -- but the intent seemed to be to make this tradeoff ... can't be stealthy in plate (unless elven), don't even try ... will potentially boost learning of armour skill by not wasting xp on stealth practicing. -- odds collapse on stealth practicing is 1 in 18 ... cf. to armour, which is 1 in 6 -- does that seem right, because that was the way it was and still is. -* bugfix(minor) monstuff::monster_move() now cases monster clouds as well as player clouds for determination of safe move -* bugfix/added itemname::hide2armour() and applied to codebase -- includes STEAM_DRAGON_HIDE, which had for some reason been overlooked in certain routines in dungeon.cc -* bugfix/kinda: mstuff2::mons_trap() rewritten for better handling, silence checks for Zot trap, etc. -* bugfix: (I think this was the case) warning message for followers of good gods weilding demonic weapons now outputs upon wield regardless of how special the item is -* bugfix: I think I got the "off-by-one" for the Overmap error fixed -* bugfix: NAMED_WEAPONS now begins at 181 and not 581 [josh admits fault here] -* bugfix: [Daniel] SPWPN_FLAMING -> SPWPN_FLAME and SPWPN_FREEZING -> SPWPN_FROST for missile weapons in dungeon::items() -* bugfix: abilities exercised by monsters in monstuff::handle_nearby_ability() were often dependent upon whether or not the monster was visible to the player -- which is stupid, a monster should stare at you (for example) regardless of whether you can see it -* bugfix: ability case for ABIL_TO_PANDEMONIUM was only checking for 4 magic points when ability costs 7 -* bugfix: acr::input() -- changed "if ( you.duration[DUR_WEAPON_BRAND] > 0 )" to "if ( you.duration[DUR_WEAPON_BRAND] > 1 )" and else-if'd the ( you.duration[DUR_WEAPON_BRAND] == 1 ) -- as coded before, brands would jump from 2 to 1 to 0 in one call to input() -- just plain wrong! -* bugfix: acr::input() -- changed instances of "if (foo > 1) foo--; if (foo == 1) foo = 0;" for durational things to "if (foo > 1) foo--; else if (foo == 1) foo = 0;" so that durational values of 2 would mean "two turns left" and not "expire now" as the code actually worked -* bugfix: added #include atop spell.cc {Brent} -* bugfix: added bounds checking to dungeon::check_doors() -* bugfix: added descriptor strings for transformation states missing from chardump::dump_char() -* bugfix: added josh's acquirement book bugfix to dungeon::items() [Josh] -* bugfix: applied SPTYP_RANDOM to appropriate spells::miscast_effect() calls and added appropriate code to spells::miscast_effect() -- much easier to change later, now -* bugfix: bang::explosion1() had the potential to dump out duplicate lines from info[] due to careless placement of mpr() calls -* bugfix: calls to "miscast_effect(10+random2(15), ...)" changed to "miscast_effect(10+random2(14), ...)" as there is no SPTYP_foo value assigned to 24! -* bugfix: ditto for spells4::tame_beast_monsters() -* bugfix: dungeon::build_minivaults() would attempt to build an undefined vault 1 out of 34 times ... no idea whether it would cause the game to hang, but not good to do that -* bugfix: dungeon::give_item() was placing scrolls in the potion slot of monsters -- cripes (!!!) -* bugfix: dungeon::hide_doors() fixed to not reference things outside bounds of grd[][] -* bugfix: dungeon::items() for OBJ_WEAPONS was going off a value of 0 [no descrip] and not 3 [DWPN_ORCISH] in disallowing orcish weapons of orc slaying or holiness -* bugfix: dungeon::items() was not generating the last four spellbooks (Josh's additions) -- it is now -* bugfix: effects::forget_spell() would only check to "forget" spells in range of [0,19] and not [0,24], the full range of you.spells[] - and infinite loop check rewritten so as not to be probabilistic itself (!!!) -* bugfix: eliminated references to feet for players who are centaurs -* bugfix: fight::jelly_divide was locating suitable spots for the new jelly thusly: - "if ( mgrd[parent.x + jex][parent.y + jey] == MNG && mgrd[parent.x + jex][parent.y + jey] > 10 && ( parent.x + jex != you.x_pos || parent.y + jey != you.y_pos ) )" - the second grid check should be against grd[][] and not mgrd[][] -- the way it is coded, the second conditional is automativally satisfied by the first (MNG > 10) !!! -* bugfix: fight::monster_polymorph() will only message the transformation if the player is near, the monster is visible or player can see invisible (before, messaging would only check for first case, and would do the strcpy/strcat regardless, only putting mpr() within a conditional) -* bugfix: fight::you_attack() change in to hit bonus for sure blade changed from "5 + random2(10)" to "5 + random2limit(you.sure_blade, 25)" [Daniel] and changed messages in player::display_char_status() -* bugfix: food::eating() case FOOD_PIZZA to properly display the "Mmmm..." string prior to the name of player's favorite kind of pizza -* bugfix: for some reason Red Draconians were the only Draconians that did not get a tailslap attack in fight.cc -- now they do -* bugfix: general change of "if (mons_near(o) && menv[o].enchantment[2] != ENCH_INVIS)" to "if (mons_near(o) && ( menv[o].enchantment[2] != ENCH_INVIS) || player_see_invis() ) )" -> simple_monster_message() where appropriate and some bugfixes with where checks were not applied against messages -* bugfix: in abilities, moved some spells cast to positions prior to exercising so players would not get potential skill increase (and application) during act of casting -* bugfix: in acr::input() you.delay was decrementing from 2 to 0 ... fixed by making an if-else rather than if-if situation -* bugfix: in beam::beam() wand_id for LIGHTGREY (TELEPORTATION), WHITE (DISINTEGRATION), LIGHTRED (ENSLAVEMENT), BEAM_SLEEP only set to 1 for monsters that player can see -* bugfix: in dungeon::plan_3() it was calling clear_area() to replace DNGN_FLOOR with DNGN_FLOOR -> should have been replacing DNGN_ROCK_WALL with DNGN_FLOOR {linley} -* bugfix: in dungeon::plan_4() it was calling clear_area() to replace DNGN_FLOOR with DNGN_FLOOR -> should have been replacing DNGN_ROCK_WALL with DNGN_FLOOR {linley} -* bugfix: in fight::monster_die() for case KILL_RESET cloud was only being placed if monster was near player -* bugfix: in mstuff2::mons_cast() menv[0] was being referenced, preventing monster abjuration for spells MS_LEVEL_SUMMON, MS_SUMMON_DEMON, MS_SUMMON_UNDEAD, and MS_SUMMON_DEMON_GREATER -* bugfix: in skills::exercise2() fixed determination of which skills impact recalculation of certain stats and/or forced redraws -* bugfix: it_use2::unwear_armour() removed message checking for SPARM_COLD_RESISTANCE -- no real check for "lowered" resistance [how to save state w/o recalling player_res_foo()? problem with "stateless" resistances!] -* bugfix: item_in_shop() no longer generates items of type OBJ_UNKNOWN_I or OBJ_UNKNOWN_II -* bugfix: items::add_items() calculations for item_weight recoded to take advantage of itemname::mass() properly and permit Josh's USE_LIGHTER_MAGIC_ITEMS modification -- screwy it was -* bugfix: message in player::display_char_status() for sure_blade now based on you.sure_blade and not you.confusing_touch [Daniel Ligon] -* bugfix: messaging for spells2::holy_word() would only happen for invisible monsters for players unable to see invisible !!! (d'oh!) -* bugfix: messaging screwed-up for monstuff::handle_potion() -- also, would only quaff potions of invis or haste iff not near player (latter makes little sense) -* bugfix: misc::manage_clouds() now handles monster clouds, too. -* bugfix: misc::in_a_cloud() for MIASMA cases was doing "double damage" by decrementing hp directly, then calling ouch (which does the same) -* bugfix: monster flying over trap message was copied into info but never output by mpr() -* bugfix: mstuff2::mons_throw() was checking against MSLOT_MISSILE instead of MSLOT_WEAPON in determining whether monster was in fact using a missile launcher (I think that was a bug) -* bugfix: mstuff2::mons_throw() was checking against a value of 120 (not possible, AFAIK) and not DWPN_ELVEN in providing a to-hit bonus to the use of elven missile launchers -* bugfix: mstuff2::monster_teleport() messaging was occurring for nearby monsters that were either visible or in the presence of a player that could not see invisible -- odd -* bugfix: no description was output for runes of zot if id level was 0 (actually, would output debug string) -* bugfix: no more messaging that a monster "almost triggered" a blade trap and no more revealing the trap, then -- makes no sense if it was "almost triggered" to perform either action -* bugfix: player thrown missiles now match monster thrown missiles -* bugfix: player::level_change() had mummies receiving "closer to powers of death" messages at levels 13 and 23 and not 13 and 27 as set in player::player_spec_death() [Daniel] -* bugfix: related to above, gift timeout for YRED not set if he can't get a servant to you -* bugfix: religion::lose_piety() did not have a message of losing ability to hasten self if follower of GOD_OKAWARU (piety > 120) or ability to receive minor healing (piety > 50) or ability of temporary might (piety > 30) -* bugfix: repaired messaging for it_use3::box_of_beasts() to check to see whether a creature actually appears before saying one does (!!!) -* bugfix: same as above for items::item_place() -* bugfix: shopping::item_value() was going off a value of 6 [DARM_ORCISH] (and not 3 [DWPN_ORCISH]) when devaluing ocish weapons -* bugfix: some possible messages were not being directed to player because of improper random limits being set in religion::Xom_acts() -* bugfix: species selection screen in newgame::new_game() now starts with clrscr() call for all platforms -- was ugly under linux with just two EOLs output -* bugfix: spells3::cast_selective_amnesia() will now return mana to player equivalent to the spell's cost ... looks like it was supposed to, but prior code did nothing at all -* bugfix: spells3::entomb() did not destroy the traps it overwrote with walls - now, mechanical traps destroyed, magical traps retained -* bugfix: spells4::cast_evaporate() was not messaging string constructed for "hands flaking" case -* bugfix: spells4::make_shuggoth() could potentially have referenced menv[-1] -- fixed, but I still have to fix messaging -* bugfix: spells4::passwall() attempts to reference areas outside the bounds of grd[][] -- still need to figure out what proper "borders" should be (see function) -* bugfix: spells4::sleep_monsters() was using check_mons_magres() instead of !check_mons_magres() for condition where monster "saved" -- yes, I know it is a bit backward, but that is the code -* bugfix: started applying GXM and GYM - caught instances where things were being checked/added/whatever beyond bounds of env.foo[][] -* bugfix: the "Symbol of Immediate Regeneration" card was producing POT_HEALING effect, when it should have been generating a POT_HEAL_WOUNDS effect, according to the commented name of the card and the fact that there is already a Card of Healing -* bugfix: dungeon::give_item() switched "(mitm.quantity[bp] == 0 || mitm.quantity[bp] == 100)" to "(mitm.quantity[bp] == 0 || mitm.base_type[bp] == 100)" as it should have been all along -* bugfix: restore_foo() will no longer reset foo to foo_max in cases where foo >= foo_max -- don't know if it is the case, but may be at some point in the future -* bugfixes: messaging based on create_monster() has been fixed to be dependent upon whether a monster actually appears -- probably did not get them all << checks spells2, spells3, and spells4 still >> -* changed H_foo to MH_foo in spells4.cc (shame on you, Josh) -* clean-up of mons_lev.cc -* clean-up: player::player_AC() recoded as switch on species rather than bunch of if's -- too bad things weren't coded as species/subspecies to make working with draconians easier!!! (future change?) -* cleaned up remaining "% 100" madness when it comes to cloud handling routines -* cleaned-up cloud description coding in direct::look_around() -- last of the "foo % 100" coding, I think -* cleaned-up dungeon::prepare_swamp() -* cleaned-up dungeon::prepare_water() -* cleaned-up dungeon::vault_grid() -* cleaning up my own bugs -* codebase: it_use3 definition of "extern unsigned char show_green" removed - already in externs.h, which is included -* codebase: moved spells4.cc and spells4.h to "unused" folder for the time being, removed spells4.o from makefile.obj list -- none of the functions in these files are called elsewhere -* codebase: which_spellbook() definition moved from atop spells.cc to atop spellbook.cc -- it is only used there -* commented out GOOD_ATTACKED_FRIEND in enum.h and only reference to it in fight::you_attack() -- not even accounted for in religion::done_good() so what the h*** is the point? way open to potential abuse if implemented, anyway. grumble, grumble. -* commented out global char filenam[80] in dungeon.cc -- cannot find a single instance of usage -* commented out global char save_file[9] in dungeon.cc -- cannot find a single instance of usage -* commented out global char whole_line[80] in dungeon.cc -- cannot find a single instance of usage -* commented out global char wm_1[5] in dungeon.cc -- cannot find a single instance of usage -* commented out global char wm_2 in dungeon.cc -- cannot find a single instance of usage -* commented out global int leng_str in dungeon.cc -- cannot find a single instance of usage -* commented out global int old_x in dungeon.cc -- cannot find a single instance of usage -* commented out global int old_y in dungeon.cc -- cannot find a single instance of usage -* commented out global int rd in dungeon.cc -- only used in dungeon::specr_2() as near as I can tell -* commented out global int x_fin and y_fin in dungeon.cc -- cannot find a single instance of usage -* commented out global int x_max and y_max in dungeon.cc -- can only find variables local to dungeon::clear_area() that share these names -* commented out globals int put_x and put_y in dungeon.cc -- cannot find a single instance of usage -* commented out mstruct::def_letters() as the function is no longer being used anywhere -* commented out stuff::output_value() - not used anywhere in the codebase -* commented out unused gods in enum GODS and their unused altars in enum DUNGEON_FEATURES -* completed ifdef of ABIL_GLAMOUR routines in abilities.cc -- josh didn't do it all the way through -* created obj-weap.cc, corrected signage on parameters passed to some functions (char -> unsigned char) -* deck_of_wonders[], deck_of_summoning[], deck_of_tricks[], and deck_of_power[] made static to decks.cc -* decks::cards() made static to decks.cc -* declaration for food::can_ingest() moved from food.h to atop food.cc -- internal to sourcefile -* declaration for food::eat_from_floor() moved from food.h to atop food.cc -- internal to sourcefile -* declaration for food::eaten() moved from food.h to atop food.cc -- internal to sourcefile -* declaration for monstuff::simple_monster_message() moved from atop monstuff.cc to monstuff.h as it is now used in other sourcefiles -* declaration of spells4::cast_detect_magic() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage -* declaration of spells4::cast_eringyas_surprising_bouquet() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage -* declaration of spells4::cast_summon_serpents() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage -* declaration of spells4::do_monster_rot() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage -* declaration of spells4::make_a_random_cloud() moved from spells4.h to atop spells4.cc -* declaration of spells4::make_a_rot_cloud() moved from spells4.h to atop spells4.cc -* definition of monstuff::handle_special_ability() added atop monstuff.cc -- no idea why it was not there already -* definition of religion::divine_retribution() moved from religion.h to atop religion.cc -* dungeon::item_in_shop() returns unsigned char instead of char, and takes unsigned char instead of char as sole parameter -* dungeon::items() takes unsigned char instead of int for second and third parameters -* dungeon::place_spec_shop() takes unsigned char instead of char for all three parameters -* dungeon::plan_1() returns unsigned char instead of char -* dungeon::plan_2() returns unsigned char instead of char -* dungeon::plan_4() returns unsigned char instead of char -* dungeon::plan_5() returns unsigned char instead of char -* effects::direct_effect() now takes struct bolt * instead of struct bolt[] as parameter -* effects::mons_direct_effect() now takes struct bolt * instead of struct bolt[] as first parameter -* eliminated default parameter for spells3::cast_selective_amnesia() -* enum: MUT_LAST_MUT reverted back to NUM_MUTATIONS ... to me, it is clearer to use NUM_foo rather than the particular enum prefix, as it denotes clearly that *this is not really a member of the enum, but rather a description of them* also for cases where LAST is not really last (see MONSTER_CATEGORIES), also removed related #define -* enum: SPTYP_LAST -> NUM_SPELL_TYPES -* enum: added SPTYP_RANDOM for use in spells::miscast_effect() -- I'd like to set to 255, but don't know how many things need to be switched to unsigned char to do so -* enum: added SPWLD_PRUNE, SPWLD_HUM, SPWLD_CHIME, SPWLD_BECKON, SPWLD_SHOUT as per it_use3::special_wielded() -* enumery and clean-up -* enumery in describe.cc -* enummed MH_foo where appropriate and changed inequalities to equivalence tests -* etc. etc. on the messaging bugfixes -* f(x): added food::hunger_warning() to break-out functionality from acr::input -* f(x): spells::miscast_effect() returns bool instead of char -* fight::jelly_divide() takes struct monsters * instead of int as parameter -* fight::monster_die() takes struct monsters * instead of int as first parameter -* fight::monster_polymorph() now returns bool -- whether the polymorphing took place or not -- needs to be more rigorous in determation of return value, though -* fight::monster_polymorph() takes struct monsters * instead of int for first parameter -* fight::place_monster_corpse() takes struct monsters * instead of int as parameter -* fight::place_monster_corpse() takes struct monsters * instead of unsigned char as parameter -* figured out proper inclusions for spells4.h throughout codebase -* figured out proper places to #include items.h -* files::find_spell() returns bool instead of char -* files::load() now takes bool instead of char for 2nd, 3rd, 5th and 6th parameters -* files::save_game() takes bool instead of char for only parameter -* files::save_level() now takes bool instead of char for 2nd parameter -* filpped first and second parameters to beam::check_mons_resists() -- makes more sense -* finished putting in new spell struct, see spl-util.cc/.h and spl-data.h -* first parameter to bang::explosion() renamed from ex_size to is5x5 to denote properly what it means -- changed to bool (as the f(x) only does 3x3 and 5x5 explosions now) -* first two parameters to beam::mons_ench_f2() replaced by a single parameter of type struct monsters * -* fixed a bug in dungeon::item_colour() which was not colouring namwed weapons properly -* fully ifdef'd anything relating to elvish glamour -* general clean-up -* general clean-up -* general clean-up -* general clean-up -* general clean-up -* general clean-up -* general clean-up -- trying to rid the codebase of goto statements here and there -* general clean-up and enumery -* general clean-up and enumery -* general clean-up and enummery -- starting to unravel dungeon::give_item() -* general clean-up and optimization in dungeon.cc -- starting to unravel the mysteries of dungeon.cc and all its glory! -* general clean-up in monstuff.cc --> don't bother to strcpy()/strcat() if final mpr() dependent upon mons_near() -- *all* operations dependent on mons_near(), then !!! -* general clean-up of religion.cc -* general clean-up, mostly in dungeon.cc -* general cleanup -* general cleanup and enumery -* general fixing of messaging for invisibility checks -* general: indentation and enumming -* global "int diag_door = 0" in dungeon.cc deleted -- only used and set within dungeon::make_room() -* global "int max_doors" in dungeon.cc moved to atop dungeon::builder() -- only passed between builder() and make_room() -- which now takes an int [max_doors] and not "void" as parameter -* global int band and band_no moved into dungeon::place_monster() -- only used within that function, near as I can tell -* global int dir_x2 and dir_y2 moved into dungeon::make_trail() -- only used within that function near as I can tell -* global int no_rooms moved into dungeon::builder() -- only used within that function near as I can tell -* global int roomsize moved into dungeon::builder() -- only used within that function near as I can tell -* global int x_start and y_start moved into dungeon::builder() -- only used within that function near as I can tell -* global ints cx and cy in dungeon.cc moved into dungeon::specr_2(), only used there -* global ints dx and dy in dungeon.cc moved into dungeon::specr_2(), only used there -* global ints sx and sy in dungeon.cc moved into dungeon::specr_2(), only used there -* got rid of the MLAVAfoo defines -* got rid of the MWATERfoo defines -* had to un-#ifdef the DEBRIS enum ... I want it gone, goddamn it!!! -* heavy_armour modifier in fight::you_attack() for large species using large shields fixed at +1, and not potentially +3 -- reasoning that id ARM_SHIELD is +1 regardless for all races, ARM_LARGE_SHIELD should be equivalent modifier for large races (SHIELD :: SPECIES as LARGE_SHIELD :: LARGE_SPECIES), and besides, on average, large and regular/small species were getting the same modifier on use of large shields, which did not seem fair. -* implemented newgame::give_last_paycheck() -* implemented newgame::jobs_stat_init() -* implemented wrapper f(x) religion::simple_god_message() -* in monstuff:handle_wand() - monsters will no longer zap themselves with wand of invisibility if player can see invisible -- a cheat, I know, but every bit helps -* invent::list_commands() now takes bool instead of int -* it_use2:: zapping() <---> zappy() relationship worked out, parameters passed between them have changed -* it_use2::zapping() now takes struct bolt * instead of struct bolt[] as last parameter -* it_use2::zappy() made static -* it_use3::ball_of_energy() made static -* it_use3::ball_of_fixation() made static -* it_use3::ball_of_seeing() made static -* it_use3::box_of_beasts() made static -* it_use3::disc_of_storms() made static -* it_use3::efreet_flask() made static -* it_use3::staff_spell() made static -* item_use::eat_food() -> food::eat_food() -- just so I can keep everything together wrt food thingees -* item_use::throw_it() made static -* item_use::throw_it() takes struct bolt * instead of struct bolt[] as first parameter -* itemname::is_a_vowel() now returns bool instead of char -* items::conv_letter() -> stuff::letter_to_index() -- more descriptive of actual function, stuff more central for now -* made global char is_a_specroom in dungeon.cc into a static variable -- not utilized outside this file -* made global char oblique in dungeon.cc into a static variable -- not utilized outside this file -* made global char oblique_max in dungeon.cc into a static variable -- not utilized outside this file -* made global int bno_mons in dungeon.cc into a static variable -- not utilized outside this file -* made global int corrlength in dungeon.cc into a static variable -- not utilized outside this file -* made global int finish in dungeon.cc into a static variable -- not utilized outside this file -* made global int intersect_chance in dungeon.cc into a static variable -- not utilized outside this file -* made global int no_corr in dungeon.cc into a static variable -- not utilized outside this file -* made global int time_run in dungeon.cc into a static variable -- not utilized outside this file -* made global ints room_x1 and room_x2 in dungeon.cc into static variables -- not utilized outside this file -* made global ints room_y1 and room_y2 in dungeon.cc into static variables -- not utilized outside this file -* made global ints vsx and vsy in dungeon.cc into static variables -- not utilized outside this file -* made global ints x_ps and y_ps in dungeon.cc into static variables -- not utilized outside this file -* made several functions in mons_lev.cc static -* made spells4:::yesno() accept lower-case responses, too -* maintenance: removed curly-braces at end of lines to indented beginning of next line, as per coding standard -* mass enumery of m_list.h and reformatting for legibility -* minor bugfix in dungeon::items() -- demon tridents apparently forgotten in initial conditional to set special enchantments on weapons -- esp. given that they are singled out later in a nested conditional, added back in to parent conditional -* minor bugfix in dungeon::items() -- many_many was being set from 351 to 200 when determing weapon specials, but a subsequent conditional was still relying on the value of 351, meaning fewer special weapons than the algortihm intended -* minor bugix: reading scroll of summoning will only message if the creature actually appears -* minor clean-up of dungeon::labyrinth_level() -* minor tweak - fight::monster_polymorph() will no longer allow monsters to polymorph "in place" -- i.e. to the same type as they already are -* minor tweak -- wand_id for polymorphing now dependent upon outcome of monster_polymorph() -* minor tweak: monsters that drain hps and heal beyond current max hp will gain +1 max_hp in some circumstances {just to make things a bit more interesting} -* misc::dart_trap() made static -* misc::dart_trap() takes struct bolt * instead of struct bolt[] as first parameter -* misc::itrap() takes struct bolt * instead of struct bolt[] as first parameter -* misc::manage_clouds() now returns void instead of int -- since env.foo is externed, no need to pass back integer value to acr.cc -* misc::manage_clouds() rewritten slightly to clarify logic of function -* misc::trap_item() returns bool instead of int -* mon-util::mon_init() scrapped and replaced by mon-util::mons_colour() -- let's see what the slowdown is -* mon-util::mons_pan() -> mon-pick::mons_pan() -* monstuff::distance() -> stuff::distance() -* monstuff::handle_behavior() now takes struct monsters * instead of int as only parameter -* monstuff::handle_enchantment() takes struct monsters * instead of int as parameter -* monstuff::handle_movement() takes struct monsters * instead of int as parameter -* monstuff::handle_nearby_ability() takes struct monsters * instead of int as parameter -* monstuff::handle_potion() takes struct monsters * instead of int as parameter -* monstuff::handle_reaching() takes struct monsters * instead of int as parameter -* monstuff::handle_scroll() takes struct monsters * instead of int as parameter -* monstuff::handle_special_ability() takes struct monsters * instead of int as parameter -* monstuff::handle_spell() takes struct monsters * instead of int as parameter -* monstuff::handle_throw() takes struct monsters * instead of int as parameter -* monstuff::mons_in_cloud() now takes struct monsters * instead of int as parameter -* monstuff::mons_pickup() made static monstuff.cc for the time being -* monstuff::mons_pickup() returns bool instead of char -- it never returns anything other than false, is this intentional? -* monstuff::mons_pickup() takes struct monsters * instead of int as parameter -* monstuff::monster_blink() takes struct monsters * instead of int as parameter -* monstuff::monster_habitat() takes struct monsters * instead of int as parameter -- had to create monplace::monster_habitat_2() as a workaround for one case for the time being -* monstuff::monster_move() made static monstuff.cc for the time being -* monstuff::monster_speaks() made static to monstuff.cc for the time being -* monstuff::monster_speaks() takes struct monsters * instead of int as parameter -* monstuff::plant_spit() now takes struct bolt * instead of struct bolt[] as only parameter -* monstuff::plant_spit() takes struct monsters * instead of int as parameter -* monstuff::print_wounds() now takes struct monsters * instead of int as parameter -* monstuff::simple_monster_message() no longer requires first parameter, so it has been dropped -* monstuff::simple_monster_message() returns bool intead of void to permit testing and outputting of alternate message -* monstuff::swap_places() takes struct monsters * instead of int as parameter -* monstuff:mons_in_cloud() and monstuff:plant_spit() made static to monstuff.cc for now -* monstuff:monster() -- commented all lines having to do with variable no_mons -- it was initialized, decremented, and incremented, but never applied in the codebase -* monstuff:monster_regenerates(foo) removed in favor of monstuff::monster_descriptor(foo, MDSC_REGENERATES) -* more clean-up -* more general clean-up -* more general clean-up -* more messaging fixes -* more work toward completing determination of proper #includes for each file -* moved enum DEBRIS from enum.h to atop spells4.cc -- not well-implemented yet, so buried there instead -* moved some things from skills::exercise2() into skills::exercise() -- function could probably be folded in together, given the set value of deg ... -* moved the #ifdef inside of spells4::silence() to clarify that it all applies to a single function -* moved the FEATURE enum from overmap.h to atop overmap.cc -- no need to open it to use outside the file -* mstuff2::dragon() now takes struct bolt * instead of struct bolt[] as second parameter -* mstuff2::dragon() takes struct monsters * instead of int as parameter -* mstuff2::mons_cast() takes struct bolt * instead of struct bolt[] as second parameter -* mstuff2::mons_cast() takes struct monsters * instead of int as first parameter -* mstuff2::mons_throw() takes struct bolt * instead of struct bolt[] as second parameter -* mstuff2::mons_throw() takes struct monsters * instead of int as first parameter -* mstuff2::mons_trap() takes struct monsters * instead of int as first parameter -* mstuff2::monster_teleport() now takes struct monstes * instead of int as first parameter -* mstuff2::spore_goes_pop() takes struct monsters * instead of int as parameter -* much cleanup and compaction of religion.cc -* newgame::new_game() now returns bool instead of char -* optimization: some optimization of it_use3::special_wielded() -* optimized mon-util::seekmonster() but odd things are happening (monsters on level 1 don't awaken and missiles may now appear to go through walls) -* player::forget_map() takes unsigned char instead of char for sole parameter -* player::how_hungered() -> food::how_hungered() added appropriate #include atop it_use2.cc -* player::increase_stats() now can increase by more than one by adding a a third parameter for amount of increase -* player::reset_hp() pulled in favor of more flexible player::set_hp() -* player::species_name() takes unsigned char instead of char to match you.species -* player::you_are_draconian() -> player::player_genus(), now uses switch (don't use comparatives!) and broadened to cover other cases -* possible bugfix: fight::monster_polymorph() - first two parameters were of type unsigned char when they should have been of type int (MONS_foo definitely falls outside range [0,255]) -- also double-checked types of old_foo variables used within the function itself -* propagated effects::lose_stat() throughout codebase -* propagation of silenced() to cover instances of "You hear ..." messages << bang.cc - -* pulled out all the code relating to MONS_TUNNELING_WORM and MONS_WORM_TAIL -- haphazard and deprecated (monster never appeared) -* pulled out all the code relating to the QUOKKA, SWORD, GUARDIAN ROBOT, and DORGI -- all were deprecated a long time ago -* recoded dungeon::special_room() for efficiency -- was filling monster arrays on each and every loop-through (sheesh!) -* recoded monplace::mons_place() to do away with way too many calls to random2() in order to generate random nasty for dungeoneers heading downwards -* recoded monplace::summon_any_demon() to make types more apparent and to remove calls to stuff::table_lookup() -* recoded monstuff::print_wounds() for clarity of logic flow, got rid of that damn goto statement -* religion::Xom_acts() now takes bool for first and third parameters -* religion::god_name_long() commented out (but left intact) -- as jmf flagged, this function is not in use within the codebase -* religion::god_name_long() struck from codebase -- relevant salvaged information now conveyed through comments -* religion::god_speaks() no longer has a default parameter value -- confusing use of GOD_foo enum as it was -* religion::naughty() now ordered by deity then by naughty -- makes more sense to be able to see naughty by deity rather than deity response by naughty -* removed Isk's Cross garbage from spell::your_spells() -- no longer a spell, had been replaced by Symbol of Torment -* removed MS_ZULZER -- only used by Dorgi ... -* removed some useless typedefs from atop mon-util.h and randart.cc -* removed the "guarantee knife" code in dungeon::builder() as per brent's suggestion -* rename mons_lev -> mon-pick -* renamed ability -> ply-abil -* renamed levels -> lev-pand -* renamed m_list -> mon-list -* renamed mstruct -> mon-util -* replaced C_foo defines with appropriate CE_foo enums -* replaced H_foo defines with appropriate MH_foo enums -* restructured monplace::create_monster() to get rid of the silly goto statements and clarify program flow -* reversed the parameters passed to player::slaying_bonus() to align with PWPN_foo and applied enum function calls -* rewrote a lot of ability.cc -* rewrote effects::lose_stat() to be a bit more robust and now player_sust_abil() no longer fullproof protection against stat loss -* ripped out mstruct::def_letters() -- no longer in use anywhere in the codebase -* second parameter passed to ouch is now int instead of char -- typical of source code that it should be int and not anything else, as it refers to menv[foo] -* set wield_change to a single type (it was used as a char, unsigned char, and int all over the place) -- I decided to make it type bool for clarity -* shifted MH_foo and H_foo flags up one to start at 0 and include MH_HOLY at start -- should not be problematic -* shopping::clear_line() removed entirely -- did not do anything but return upon being called -* simple_monster_message() propagated throughout codebase -* skills2::best_skill() now takes unsigned char instead of char for all three parameters -- it also now returns unsigned char instead of char -* skills2::calc_ep() -> calc_mp() -- I always think of experience and not magic points when I see the f(x) - you.redraw_magic_points moved into f(x) and duplicate settings removed from codebase -* skills2::skill_name() takes unsigned char instead of char for sole parameter -* skills2::skill_title() no longer takes you.char_class as third parameter -- available globally and no longer utilized within the f(x) itself -* skills2::skill_title() no longer takes you.experience_level as fourth parameter -- not utilized at all within function, meaningless pass -* skills2::skill_title() takes unsigned char instead of char for its two remaining parameters -* skills::exercise2() made static -* some enumeration work -* some enumery -* some enumery and housekkeeping -* some enummery and clean-up in files.cc -* some fixing up in dungeon::item() -- knive will no longer be quite so common in the deeper parts of the dungeon (minor bugfix/tweak) -* some general clean-up -* some general clean-up -* some more general cleanup -* some restructuring of newgame.cc to clarify what is being done -* spell::exercise_spell() second and third params now bool not int -* spell::surge_power() made static -* spell::your_spells() returns bool instead of char, third parameter (allow_fail) now bool not char -* spellbook::spellbook_contents() returned unsigned char instead of char -* spellbook_contents() declaration moved from spellbook.h to atop spellbook.cc - native only to file -* spells0::spell_hunger() now takes only the first parameter - second parameter not used in function -* spells0::spell_spec() no longer takes a second parameter -- it was never used !!! -* spells1::identify() now takes a power parameter (currently unused) and a value of -1 flags it as coming from an item (in this case, a scroll) -* spells1::spell_direction() takes struct bolt * instead of struct bolt[] as last parameter -* spells2::manage_shock_shield() -> spells1::manage_shock_shield() and definition moved from spells2.h to spells1.h -- better fit here -* spells2::restore_foo() [three functions] rolled into spells2::restore_stat() -- permits restoration of STAT_RANDOM now, which may be useful at some future point -* spells2::summon_butter() -> effects::summon_butter() and definition moved from spells2.h to atop effects.cc (only used here) -* spells3::aistrike() now returns a success value -* spells3::cast_bone_shards() now returns a success value -* spells3::cast_smiting() now returns a success value -* spells3::create_noise() now returns a success value -* spells3::create_noise2() renamed to spells3::create_noise() -- what happened to the other function? -* spells3::death_channel() now returns a success value -* spells3::entomb() now returns a success value -* spells3::monster_on_level() made static -* spells3::recall() now returns a [apparent] success value -* spells4::cast_summon_large_mammal() -> summon_large_mammal() -* spells4::cast_warp_brand() deleted -- does not conform to existing usage of brands in spell.cc -* spells4::drop_everything() -> transfor::drop_everything(), declaration moved from spells4.h to atop transfor.cc -- only used here (for now), so just move it there, already -* spells4::silenced() -> stuff::silenced() -* spells4::yesno() -> stuff::yesno() -* standardized somewhat the ordering of ability evaluation and effects when used in abilities.cc to make editing easier -* started cleaning up maps.cc -- made everything static, moved old, unused vault maps to "unused" folder -* started newgame.cc cleanup -* started rectifying the global vars in dungeon.cc: int's rannum, randnum, & q deleted - border_type moved into builder() - lev_mons moved into place_monster() and special_room() - passout moved to place_monster() - char dung1 & dung2 deleted, set to random2(100) each in builder() but never used beyond that - skipped moved to builder() -* starting clearing out oddball global variables in spellbook.cc: int's i, sc_read_1, sc_read_2; unsigned char keyin -* stuff::magic_ability() folded into player::player_mag_abil() and the latter function now takes parameter as to whether or not to weight value by intelligence -* stuff::magic_ability() no longer takes a second parameter -* stuff::output_value() struck from the codebase -- not used anywhere -* stuff::table_lookup() yanked -- I think I was trying to swat a fly with a sledgehammer originally -* too much time spent cleaning-up ouch::item_corrode() but recoded nonetheless -* tweak(minor) - jellies may now split upon eating secret / closed doors, and the types of jellies that do has been expanded -* tweak/bugfix: airstriking your own tile causes spell to fizzle -* tweak: all draconians now get a 20% lowering on breath failures if transformed into dragons -- should not affect much, as failure rates are already pretty low. -* tweak: blinking in the abyss is a bit more difficult -- reordered the conditionals in spells1::blink() to place barring of teleport in abyss prior to merely interfering with it -* tweak: in religion::pray() sustenance is now only provided by ZIN and ZIN only, as per discussion on onelist -* tweak: it_use3::ball_of_seeing() and it_use3::ball_of_energy() now flow to confusion case from drain mana case when invoker has no mana at time of invocation -* tweak: monstuff::handle_behavior() now picks a new target tile for BEH_WANDER that is within "normal" bounds of dungeon (10 to GfooM-11 instead of 0 to GfooM-1) -- wonder if it will keep monsters more to center -* tweak: spells3::detect_curse() take a bool parameter and returns a bool signifying success -- scrolls of detect curse no longer ID if no curses detected -* tweak: spells3::remove_curse() take a bool parameter and returns a bool signifying success -- scrolls of remove curse no longer ID if no curses removed -* updated VERSION and BUILD_DATE -* variable "char already" struck from ability:show_abilities() -- initialized to zero and never used -* view::mons_near(int) replaced with view::mons_near(struct monsters *) and applied throughout codebase -- should not be a problem -* which also means that skills2::add_skill() was pulled, meaning that the definition of the function in skills2.h had to be pulled (now why wasn't *that* #ifdef'd, I ask?) - - -*** SOME OF THE THINGS SINCE THE TESTDEV RELEASE *** - -* fixed typo concerning Chaos Knights [josh] -* added in macro definitions to replace the ENUMS for SPLFOOD SPLMANA and SPLEVEL [brent] -* stuff::yesno() fixed to take uppercase only, also now clears message screen and reprints query [josh] -* SPELL_POISON_CLOUD now has the correct associated types [POISON/CONJURATION/AIR] [brent] -* SPELL_MEPHITIC_CLOUD now has the correct associated types [POISON/CONJURATION/AIR] [josh] -* bugfixes: some fixes noted by Jesse were applied -- and then even more fixes noted by Jesse were applied -* all tabs removed from the sources -* bugfixes: more fixes noted by Jesse in re: array indexing -* bugfix (potential): ghoul rotting separated out from regular rotting, preventing negative you.rotting value from arising -* "You smell ..." messages now take into account the fact that mummies cannot smell -- except for a couple mutations and a random demon description -* added enum SPECIAL_MISSILES to separate out weapon and missile specials -* bugfix: players resistant to poison eating poisonous chunks will no longer get diseased, unless chunk is rotting -* bugfix: amulet of gourmand now works as described, and will work to the benefit of both normal species and ghouls -* added food::lessen_hunger() and food::set_hunger() and some other routines, which led to ... -* reworked food.cc -* bugfix: ghouls will no longer become "full" -* bugfix: summon_small_mammals() will now summon at least one creature [Daniel] -* minor messaging tweaks here and there -* killed monster_habitat_2() and reverted monster_habitat() to take int instead of pointer to monster struct -* added in Jesse's Mac-specific files -* borrowed a couple tweaks from Gordon -* fixed a few minor things in spells4.cc and added some small annotations - diff --git a/crawl-ref/docs/mt19937.txt b/crawl-ref/docs/mt19937.txt new file mode 100644 index 0000000000..64e301687f --- /dev/null +++ b/crawl-ref/docs/mt19937.txt @@ -0,0 +1,40 @@ +A C-program for MT19937, with initialization improved 2002/1/26. +Coded by Takuji Nishimura and Makoto Matsumoto. + +Before using, initialize the state by using init_genrand(seed) +or init_by_array(init_key, key_length). + +Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. The names of its contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +Any feedback is very welcome. +http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html +email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) diff --git a/crawl-ref/docs/obsolete/buglist.txt b/crawl-ref/docs/obsolete/buglist.txt new file mode 100644 index 0000000000..c9a33b3b8c --- /dev/null +++ b/crawl-ref/docs/obsolete/buglist.txt @@ -0,0 +1,423 @@ + Bugs Outstanding + + +Compiling + + +COMP01. [unknown - no date]: +makefile.sgi for IRIX does not work -- no clue why + +COMP02. [unknown - no date]: +DJGPP may puke up a lung on some of the very long functions if +compiled using certain options -- sometimes simply running make +again will work; sometimes changing the options will force compile + + + + +Critical Errors + + +CRIT01. [BCR - 10 Jan 2000]: weird crash bug: trying ctrl-numbers +(for control movement under Linux) from the top of the keyboard and +ctrl-4 apparently kills the program -- ran it in the debugger and +it said it got a SIGQUIT signal in libc_read + +CRIT02. [unknown - no date]: +skeletal warrior cast a spell and seg-faulted the game in the Abyss + +CRIT03. [unknown - no date]: +sometimes leaving the Abyss through an exit sends game into an +infinite loop -- hard to replicate, though + +CRIT04. [unknown - no date]: +using stairs/portals sometimes misplaces the player, either into +solid rock or onto bogus levels -- e.g., level 28 of the dungeon, +level -1 of a sub-dungeon + +CRIT06. [jmf - 31 mar 2000]: +Taking down stairs onto new level sometimes hangs the game. +Hard to replicate. + +CRIT07. [jmf - 31 mar 2000]: +Dungeons sometimes generated that feature off-the-edge corrodors. +Monsters or player moving too close causes segfault. + + +Platform Specific + + +PLAT01. [unknown - no date]: +Linux: various odd effects when playing in term -- may be +terminfo's fault + +PLAT02. [DLB - 12 Jan 2000]: +Playing under Linux, I am encountering an atrocious "garbaging" of +the screen in Wizmode -- the screen fails to update properly after +using the wizmode help function (&-?) ... has anyone else +encountered this. Also, keypad support is very spotty under Linux, +or at least mine ... + + [BCR - 12 Jan 2000]: + Yeah, Linux support is still far from perfect. I've never been able + to get shift or ctrl numpad keys to work in Linux, and have had + various display problems. The wizmode help actually uses the same + function as the regular help, so it should behave the same. + + [DLB - 20 Mar 2000]: + Still no support under Linux console for keypad when in 'X'-map + mode + +PLAT03. [BWR - 13 Jan 2000]: +The escape key no longer seems to be cancelling my actions (ie. +looking at spell lists, maps, etc.). This is a desired feature +because I typically don't trust space in roguelike games. (This is +under Solaris.) + + [DLB - 13 Jan 2000]: + I noticed this "feature" under Linux, as well ... guess I am not + the only one. + + [BWR - 18 Jan 2000]: + I've looked at the escape problem and the problem is that at some + point the keypad( stdscr, FALSE ) line turns into a TRUE. This ends + up cooking escapes (it has to pause for a bit to wait to see if its + an escape sequence and this screws up all the checks for escape). + I've moved this into the #ifndef SOLARIS block with the scrollok. + Everybody here uses roguelike keys except for those people who are + luck to get terminals that will output the actual numbers in one of + their modes, or have hacked their xmodmap to handle the keypad (to + do pretty much the same). + +PLAT04. [BWR - 20 Mar 2000]: +There's one other bug that we seem to have here (under Solaris). +Occasionally the game hangs when changing levels. At first it was +only happening to one person, so I thought it had something to do +with his environment (I know he's giving incorrect term types to +get colour, as well as doing some magic with xmodmap to get the +keypad to work on some terminals), but it did happen to me once so +I know its real. Nothing really special about the stairs I used, +they were regular dungeon (I've noticed his games have hanged in +sub-branches) and I had no monsters around me. This could be a +problem with either level generation (I was going to a new level) +or with the save level function. Don't have much time to look at +either... keep your eyes open for it, if it doesn't happen anywhere +else, its probably with the SOLARIS or SAVE_GAME_DIR code. + +PLAT05. [BCR - 9 Mar 2000]: +Its not a big deal, but 2 and 8 on the numpad still don't work with +ctrl for disarming traps. We should at least stick it in the +buglist. (This is under Windows NT.) + + [LRH - 13 Mar 2000]: + Re: the bug with ctrl-2 and -8 not working: IIRC The last time this + happened it was as a result of the keyin variable in which + keypresses entered in the main input loop are stored having been + set either signed or unsigned, I don't remember which (just that it + was the wrong one). The problem is that the values for ctrl-2/ 8 + are above 127, so when the variable declaration was changed they + either started or stopped wrapping. + Of course, it's a while since I've done any coding, so don't + believe everything I say. + + [BCR - 13 Mar 2000]: + I spent some time debugging today and it seems that the ctrl-8/2 + problem under NT is a library bug. The external getch() function + doesn't return when you hit those keys. This maybe be a DJGPP + thing. I have the borland compiler on this comp too, so if I get + some time I will try setting it up and seeing if the problem is the + same there as well... + + + + +Display + + +DISP01. [Graeme Dice - 10 Jan 2000]: +(small, cosmetic) bug with the new, cool XP-left-for-skills +display: when one gains skills such that 3-4 digits of XP are +removed, the right parenthesis is not removed (^R fixes) + +DISP02. [unknown - no date]: +missing space when printing gold amounts? + +DISP03. [unknown - no date]: +hunger status not redrawn with level change -- happens when +engorged and I think also when full + + [BWR - no date] + should be fixed now + + [JDJ - no date] + still not fixed + +DISP04. [unknown - no date]: +check for screen length problems and fix them -- e.g., map +centering is still off base, line 12 (should this be shifted for +longer windows?) + +DISP05. [BWR - 18 Jan 2000]: +Speaking of the help screen, the help for the fast scroll on the +map screen is still wrong: the commands are +/- not +/& like it +implies. + +DISP06. [Tloma Desk - 7 Feb 2000]: +When gaining level during zapping some bolt towards the top of the +screen, part of bolt is drawn at the bottom of the screen. + +DISP07. [DLB - 17 Mar 2000]: +the key for list weapons is not displayed after issuing a '?' +command + +DISP08. [DLB - 18 Mar 2000]: +The spell "Detect creatures" should be "Detect Creatures" (both +words capitalized) when viewing list of spells known. + + + + +Items + + +ITEM01. [LRH - 12 Jan 2000]: +When you eat a poisonous corpse while poison resistant, it always +makes you ill (ie diseased) -- Should this be fixed? + + [BWR - 12 Jan 2000]: + Almost certainly. Doesn't make sense to punish players like this. + +ITEM02. [unknown - no date]: +"-5 stone" heavily enchanted to do *more* damage and costs 100 + +ITEM03. [unknown - no date]: +jewelry shop generated "+6", a missile weapon + +ITEM04. [unknown - no date]: +found "an amulet of Cekugob" (an unrandart) that should identify as +"the amulet of Cekugob" -- a 'V' check indicated none of its +powers, but at least some of them were being applied to my +character + +ITEM05. [unknown - no date]: +an item is cursed if its "iplus" value is "big enough" -- however, +"big enough" is >80 in some places, >130 in others, and perhaps +>120 in others (I'm not sure about the >120; I recall seeing it but +can't find it now). Right now I have an artifact ring that I can't +uncurse since the value used when uncursing is 130 and the value +used when sticking is 80 -- the uncursing code checks against 80 on +one hand and against 130 on the other + +ITEM06. [CDL - 18 Mar 2000]: +I had just had a level 7 Spriggan Venom Mage, with all of his 24 +HP, die from reading a scroll of immolation. The official cause of +death was listed as "killed by bad targetting". + + [DLB - 18 Mar 2000]: + Appears that item_use::read_scroll() for + SCR_IMMOLATION hands off a value of beam.thing_thrown as KILL_YOU + to bang::explosion() and is eventually handled by these lines: + + if ( beam[0].thing_thrown == KILL_YOU + || beam[0].thing_thrown == KILL_YOU_MISSILE ) + ouch(hurted, 0, KILLED_BY_TARGETTING); + else if (beam[0].flavour == BEAM_SPORE) // cdl + ouch(hurted, 0, KILLED_BY_SPORE); + else + ouch(hurted, beam[0].beam_source, KILLED_BY_BEAM); + + Problem is, there is no KILLED_BY_EXPLOSION, so unless someone + wants to add that case, KILLED_BY_BURNING (now used by "liquid + flames" in acr.cc only) would be the closest fit ... + Maybe a better long-term solution would be to add to the KILLER + enum cases for KILL_YOU_EXPLOSION and KILL_MON_EXPLOSION and work + from there ??? Right now KILL_YOU and KILL_MON serve double duty + for both direct (non-missile) and explosion kills -- separate them + out??? + +ITEM07. [Tloma Desk - 7 Feb 2000]: +Magical staves are identified by fighting with them. + +ITEM08. [Tloma Desk - 7 Feb 2000]: +Weapon descriptions are not complete - "It's ... enchanted to do +more damage." part is missing + +ITEM09. [ - 17 Mar 2000]: +Reading scroll of detect curse discovers artifact names. + +ITEM10. [CDL - 19 Mar 2000]: +My current character has a spell staff of destruction with these +spells: + + Spells Type Level + a - Throw Frost Ice/Conjuration 2 + b - Bolt of Cold Ice/Conjuration 5 + c - Lightning Bolt Air/Conjuration 6 + +I am unable to cast Throw Frost with it, but can cast the other two +spells. I can't figure out the problem, but when I added enough +print statements, the problem went away. :( +There's something odd going on here, as +dungeon::spellbook_template() gets called once with "spellbook" 13, +rather than with 53 (the above staff). + + + + +Monsters + + +MONS01. [unknown - no date]: +artefact weapons of Holy Wrath wielded by undead + +MONS02. [unknown - no date]: +monsters shout upon seeing a player who cannot see them + +MONS03. [BWR - 13 Jan 2000]: +Another thing that was noticed in this version. Polymorphing +Sigmund (or any other named monster) resulted in "a giant beetle" +changing its form. My guess is some confusion on which table is +being indexed. + +MONS04. [BWR - 27 Jan 2000]: +On the subject of summoning, a little thing (bug) that has been +noticed around here... summoned monsters that die overtop of +corpses, take the corpse with them. + +MONS05. [ - 17 Mar 2000]: +You can use Yedremewhatewer "enslave undead" invocation to enslave +shapeshifter acting as an undead. When it changes, the enslavement +stays. I am not certain if this is a bug or a feature. + + + + +Characters + + +PLYR01. [unknown - no date]: +currently possible to gain zero hp when gaining a level -- +safeguards should exist to prevent negative values, if not +guaranteeing at least 1 hp per level + +PLYR02. [BWR - 12 Feb 2000]: +calc_hp() and calc_ep() need to be called before you.hp is set so +that race-classes that start with 5 Fighting don't start with 18/19 +hps (see Ogre Fighters). + + + + +Inventory + + +INVN01. [unknown - no date]: +full inventory doesn't account for possible item stacking or for +picking up gold + + [DLB - 19 Mar 2000]: + When a player's pack is full, he/she is unable to pick up gold from + the ground. This, at least should be allowable, if not also item + stacking (see parent comment). + +INVN02. [unknown - no date]: +inventory count bug: inventory counter occasionally gets out of +sync (should either be moved or fixed) + + + + +Combat Related + + +COMB01. [unknown - no date]: +EV seems to get screwed up after transforms -- it seems to get at +the transform value when the player has no armour (calculated +correctly once armour is on) + + + + +Magic + + +MAGI01. [LRH - 12 Jan 2000]: +The burn_freeze function (which covers the spells burn, freeze, +crush and arc) doesn't set a friendly creature targetted by it to +hostile. It should. And I really should have gotten around to +implementing these spells for monsters, so that ghosts can use +them. + +MAGI02. [LRH - 13 Jan 2000]: +Summon Shadow Creatures is now Ice/Summoning -- this seems very +odd. + + [BWR - 13 Jan 2000]: + Same here. + +MAGI03. [CDL - 18 Mar 2000]: +This is in player.cc: + +if (you.sure_blade) +{ + if (you.confusing_touch > 15) + mpr( "You have a strong bond with your blade." ); + else if (you.confusing_touch > 5) + mpr( "You have a bond with your blade." ); + else + mpr( "Your bond with your blade is waning." ); +} + +The "confusing_touch"es in the body should probably be +"sure_blade"s. + + + + +Teleportation + + +TELE01. [unknown - no date]: +if you have teleport control you'll see a prompt that says: +"You may choose your destination (press '.' or delete to select)." +I somehow got into the habit of immediately blowing by this prompt +without ever reading it so I was always flailing around whenever I +tried to teleport. I've changed show_map() so that it accepts '\r' +as well as '.' (which should be much more intuitive) but I don't +see a check for the delete key in show_map() so I think the prompt +is wrong + +TELE02. [unknown - no date]: +teleport control is really wacky -- I'd expect to be able to use +the return key to select the square but it seems to key off one of +the keypad keys + + + + +Targeting + + +TARG01. [unknown - no date]: +targeting is off at times (possible rounding errors) + +TARG02. [unknown - no date]: +fired beams sometimes take the wrong route and can't hit targets in +LOS + + + + +Codebase + + +CODE01. [unknown - no date]: +in monsters enum, values 250 to 310 should be reserved for Uniques, +but 260 to 280 are occupied by other monsters -- should move them +if it won't mess anything else up (if moved, remember to alter +ouch.cc check for placing 'a' is put in front of the unique's name +in the scores) -- not really a bug. + +CODE02. [unknown - no date]: +from the code, it appears that dropping items takes zero time + diff --git a/crawl-ref/docs/obsolete/changes.340 b/crawl-ref/docs/obsolete/changes.340 new file mode 100644 index 0000000000..2891d5c976 --- /dev/null +++ b/crawl-ref/docs/obsolete/changes.340 @@ -0,0 +1,1860 @@ + Version 3.40 Changelog + + Note: + + This file documents the progressive development of Crawl 3.40. Much + of it discusses specific changes to the codebase that may prove + uninteresting to non-programmers. The devteam has made no great + effort to clean up our comments. + + Do you seek a more accessible overview of the latest changes? Those + answering "yes" should read the versions.txt entry for Crawl 3.40 + instead. + + +============= +Contributors: +============= +Gordon Lipford (lipford@ca.ibm.com) +Linley Henzell (linley.henzell@student.adelaide.edu.au) +Jesse Jones (jesjones@halcyon.com) +Daniel Ligon (makmorn@qis.net) +David Loewenstern (loewenstern@home.com) +Brian Robinson (bcr19374@pegasus.cc.ucf.edu) +Brent Ross (bwross@csclub.uwaterloo.ca) +Josh Fishman (fishman@cs.nyu.edu) +Don Brodale (lar@bway.net) + + +Oct 30, 2000 (Brent Ross) + -- add macro/function for Control('A') and such. + -- remove "move[0]" (struct dist) + -- remove "&beam[0]" (struct bolt) + -- fixed some problems with elemental resistances + -- added "easy_confirm" to rc file + -- improved vampire's spell selection + -- added merfolk race + -- added wanderer class + -- split out the monster speaking function from monstuff.cc + -- fewer param monam() => ptr_monam() + -- restore abilities potion gives no message + -- move monster spells out of mon-util and into mon-spls + -- added inv_randart_wpn_properties() + -- fix berserk for mutations and others (paralyze too strong). + -- make pandemonium gates rarer, special named demon pandemonium levels too + -- does exp_needed require the species param -- removed + -- returned Swords as "Orbs of Fire" + -- returned quokka (added to low level regular dungeon monsters) + -- easy_open is now an option + -- added show_uncursed and easy_butcher options. + -- slight modifications to divine retribution + -- make weapon classes depend on different stats (USE_NEW_COMBAT_STATS) + -- added/move startup messages to the new block after initialise() + -- option to safeguard accidentally auto-removing and dropping armour + -- added starting message describing chacter race/class + -- make yesno() take a flag for "safe" cases... and option + -- fixed the file locking mechanism + -- moved some SOLARIS defined stuff (which really isn't Solaris dependant) + to MULTIUSER. + -- write player_title() as interface to skill_title() which will do the + best calculating and call skill_title (which is still needed for ghosts) + -- fixed bug: runes were being generated in the hive + -- fixed bug: examined clouds wrongly identified + -- added Simulacrum spell (creating a new Ice spell... I'm surprised + that Ice/Necromancy aren't very closely related... this will help + fix that). + -- added Ball Lightning spell (replacing Electric Orb). + -- fixed best_skill to use skill_points and species difficulty, instead + of just the base level (which gave preference based on the order of + the skills... this will only have that happen if the skill points + are also equal, which is much less likely). + -- adjustments to the spellbooks, and spellbook aquirement + -- Warp adjustments + - removed bend, warp/distortion brand from play + + - warp brand was raised in level and the miscast effects were + added to the spell start and end (to limit the spell should it + ever be brought back). + + - translocations also doesn't help with the miscast effects of + distortion brands (it was reducing the terror wielding one, and + these weapons easily outclass other brands for bonus damage and + powerful effects... they should never be anywhere near usable + as a reliable swap weapon, player's should have to seriously think + before deciding to use one... and have to risk some real damage + or banishment if they use them frequently). + + - reduced frequency of summoning "spatial vortices" as a miscast + effect -- people were reliably getting them by dropping warp + branded weapons (and it's random movement makes it much less + a threat to the player, who will sit back and watch it mow down + the other monsters in the room (who won't see it as a threat)) + + - added Far Stike as a level one spell (the other spells were very + overpowered (distortion weapons are gross and dangerous, using + that code as "balanced" is wrong unless you're bringing over the + danger as well... all three of warp attacks were also range 1, which + is silly for Warpers, who should be world-class plinkers, not close + combat munchkins). It's a much limited spell that allows the player + to "hit" a monster in LOS (yes, that means like striking/airstrike + so it's not really another magic missle) with their weapon + (limits being: no magical special effects, no enchantment bonus, + slow to cast (weapon swing is part of it, but it's also a spell + so it will never take less than 10), max damage limited by + translocation skill and weapon, with strength bonus/penalty + applied, can be resisted (maybe change this to evaded?)). This + should probably be the only translocation combat spell... let them + go elsewhere for strong offensive. + + - made it so that blink will at least teleport the player to a square + two squares away (makes blink a bit more usable, because it removes + the annoying "I could have walked here" feelings). + + - added Swap, which allows the player to swap places with an + adjacent monster. Isn't really that abusable as it uses the + same swap code that's used for friendly monsters and that + doesn't currently have insta-kill potential... that can be + fixed later, but right now I'm calling it a "feature". Should + it be fixed, this spell could be changes to give a higher resist + and in insta-kill situations the monster could be allowed to + "scatter" to any of the immediate surrounding squares as a + save against death (player could get this too). + + - added Apportation, a simple utility spell that will move light + objects to the player + + - added Evocation a high level teleport surrounding monsters + away spell (even if resisted the monster still might be blinked) + + -- fixed BUG: nagas gaining breathe fire mutation (twice in this case) seem + to lose the spit poison ability + + -- made it so that MULTIUSER will look for ~/.crawlrc (Un*x-type standard) + -- pain, disrupt, far strike do a minimum of 1pt of damage to make up + for the monsters saving throw (that 1pt is only really good early + on when the character can use it to help stay alive, later on it + means almost nothing... so it helps out begining characters, and + makes the fact that the spell is going to be resisted fairly often + at those levels a little less painful). + -- made sure stabbing had a point of starting damage (it's silly to apply + multipliers to zero or negative damage). + -- returned "Toxins" to "Envenomations" + -- spider form now makes spell casting slightly more difficult. + -- changes "book of Assassinations" to "book of Stalking" (less confusing) + -- fix for "buggy helmets"... normal helmets with item_dam == 0 were not + being handled in the code (before they defaulted to nothing)... might + still exist, but should be rarer (there is a chance that the high + values of item_dam also occur). + -- fix for "buggy potions"... potions ids were being generated in a wider + range than there was descriptive words. + -- lowered the magic resistance of the really low level monster to allow + first level characters to deal with them better. + -- enums for item_descriptions + -- enums for monster bands + -- added enums for monster spell templates (still need to be applied) + -- fixed enchant_monster() so that slow and haste will work through it. + -- changed player_fast_run() into player_movement_speed() and got rid + of ATTR_WALK_SLOWLY as well... player_movement_speed() returns the + movement rate so it's no longer "have running == 6". + -- modified swap_monsters to handle habitats. + -- tweaked failure rate for Trog Haste (which was in with the other haste + and using Invocations). + -- power level caps for spells (checks for most spells to verify that + the effect is limited in some way as protection against potential + extremely high power casting). Adjustments to spell damages/to-hit + to work with the lower caps (that the play will run up against). + -- added wizard command for filling up skill experience pool + + 29.july.2000 (Jesse Jones) + + * Changed NUM_SPELL_TYPES to 14 (from 32767!). + * Misc very minor CodeWarrior tweaks. + * Moved the source files into a new "Source" directory. + * Switched to using bounds checked array classes for most arrays. + * Fixed several places that were indexing past the end of arrays. + * Renamed environ::sh_x, sh_y, sh_greed, sh_type, and sh_level so they start with shop. + * Renamed MNG NON_MONSTER, MNST MAX_MONSTERS, ITEMS MAX_ITEMS, ING NON_ITEM, + CLOUDS MAX_CLOUDS, CNG EMPTY_CLOUD, and NTRAPS MAX_TRAPS. + * Fixed end_game so that it works with filenames longer than 6 characters. + * Disabled USE_WARPER_BETTER_WEAPON. + * Fixed misspelled "jewelry". + * Removed SPELL_SWARM from the Book of Summonings. + * Added Josh's "pick appropriate conjuration spellbook" code. + * Added Gordon's Manticore fix. + * Added the lnchType fix to the monster throw code. + * Added Gordon's revised title changes. + +28.july.2000 (Gordon Lipford) + + all changes are GPL'd by Gordon Lipford (c) 2000 + in the event that the original Crawl license is found to be non-GPL, + special permission to use the changes with Crawl is hereby granted. + + Bug Fixes: + * Manticores will now use their spikes. They weren't being given any + inventory in place_monster(), and then the throwing routine checked + for inventory before letting them throw.. + * Player::level_change(): fixed up hit point penalty for halfings and + gnomes (incomplete coding of HP adjustment). Rewrote hp and mp gained + due to level so that it couldn't happen again. + * item_use::wield_weapon(): smoothed out Translocator 'save' vs distortion + effects when wielding/unwielding. + * smoothed out hp bonus for fighting skill (in integer math, always + divide _last_). + * enchant weapon scrolls will affect missiles now (no branding though), + if they aren't already heavily enchanted - same as weapons. + + Changes: + * Completely reworked throwing for players _and_ monsters. Monsters are + not nearly as good as players for the most part, but can still be + rather scary. Hit Dice are (approximately) substituted for player skill, + and monsters of high intelligence are much better shots now. + - targeting any missile weapon benefits from high dex and throwing skill. + In fact, effective bow/xbow/sling skill is limited to twice one's + throwing. A warning is given on the skills screen if this limit is + hampering the player. + - darts, slings, and crossbows are easy to use. Bows and thrown weapons + are harder, but bows improve a _lot_ with skill. + - thrown weapons generally suck, but not horribly badly - they're still + useful in a pinch if you have decent strength and throwing skill. + - Strength has a different effect on the damage done from missiles: + - Slings and bows benefit from strength, up to a point determined by + the launcher's magical damage bonus. The launcher damage bonus is + _not_ added into the damage calculation. + - Thrown weapons benefit directly from strength, albeit at a lower rate. + - Crossbows do not benefit from strength at all. + - Crossbows benefit directly from magical launcher damage bonuses. + + * changed some of the class titles + * updated display_mutations() so that more than 20 mutations will + cause a -more- prompt and screen clear. + +28.july.2000 (Michal Valvoda) + + Changes in mutations::void display_mutations(void) + - added innate abilities and weirdness to "Mutations & Other weirdness" + screen and renamed it to "Innate abilities, weirdness & mutations". + Innate abilities are colored LIGHTBLUE + + +22.july.2000 (Josh Fishman) + + all changes are GPL'd by Josh Fishman (c) 2000 + in the event that the original Crawl license is found to be non-GPL, + special permission to use the changes with Crawl is hereby granted. + + * AppHdr.h: + added #defines: + + USE_SKILL_POOL_DRAIN + - comment out to remove LRH's old skill-pool drain code, which makes the + xp-pool drain faster when it is very full + + USE_WARPER_BETTER_WEAPON + USE_WARPER_SPELL_BEND + - start warpers with a {dagger/quarterstaff} of Distortion, or with the + spell Bend, depending on which is commented out. the former is + particularly evil for ogre-mages, since their default weapon can't dissect. + + * abl-show.cc: + - Changed some `you breathe foo's to `you exhale foo's. + + Made transformation, species & mutation breath weapons mutually exclusive + (so a naga with the `breathe flame' mutation can't spit poison). THIS IS + NOT TOTALLY DONE, but somewhat better than before. + + + Added failure probabilities for some (not yet used) Invocations. + + * beam.cc: + + + Added BEAM_LAVA for player spell Bolt of Magma + + N.B.: in some places hellfire and lava were conflated; I tried to + separate them, but may have introduced bugs. + + + * describe.cc: + + + Many changes to monster descriptions. + + Chunk-of-flesh description now depends on your race, but not enough. + For example, carnivores ought to like non-rotten meat. + + Spell descriptions: + - added Bolt of Magma + - changed Freeze, Sleep and Mass Sleep to reflect new `Slow Snakes' code + - Shadow Creatures has old description, to reflect its school + - Summon Large Mammal -> Call Canine Familiar + + Some changes to god descriptions + + + * dungeon.cc: + + + Fixed "Entering..." bug (line 7215 or so) + + + * it_use2.cc: + + + Added ZAP_MAGMA (for Bolt of Magma) + + Fixed POT_MIGHT effect + + + * it_use3.cc: + + + Fixed staff_spell() (wasn't letting player pick first spell sometimes). + + STAFF_SMITING no longer gives you a one-choice menu, it just does it. + + Non-Spell Staves no longer say "This staff has no spells in it." when + (I)nvoked, they say "Nothing appears to happen.". + + Less abusive message for putting on non-jewellery (with free spelling + error!) + + Jewellery messages now feature "put on" in some places where "wear" was. + + * mon-data.h: + + + Added flags M_COLD_BLOOD and M_WARM_BLOOD where IMO appropriate. + + + * mon-pick.cc: + + + Removed MONS_RAKSHASA_FAKE from generateable monster lists. + + Added Wargs, Wolves and Bears to generateable monster lists. + - Wargs in Orc Mines + - Wolves & Bears in the Lair + + Moved mon_entry[] from within function to outside; made init code + into its own function. + + + * monstuff.cc: + + + Monster wounds messages: mon HPs left: was 1/4-1/3 => "horribly", now 1/6-1/3 + + (Glowing) Shapeshifters are no longer allowed to use Mage and Priest + special powers, but still get their shape's physical abilities. So a + shapeshifter in the form of an orc priest can't smite you, but one in + dragon form could breathe fire. + + Some spelling & grammar fixes to mon_speaks; MUCH MORE WORK NEEDED HERE! + + + * newgame.cc: + + + Implemented USE_WARPER_BETTER_WEAPON and USE_WARPER_SPELL_BEND + + + Stalkers: + - skills: no more THROWING or DARTS, now SPELLCASTING and ENCHANTMENTS + - book: Book of Assassination + + Draconians: + - No longer allowed to be Enchanters -- they so suck at Enchantments + - ... but now allowed to be Transmuters, since they're good at Transmigrations + + Kobolds now allowed to be Death Knights. + + Halflings now allowed to be Crusaders. + + Removed strange random 1st level spell code -- now always give players the + 1st spell in their spell-books. + + + * player.cc: + + + Players transformed into Dragons and Air now protected from poison + (as monsters of those types are immune). + + Players transformed into Air no longer get air-magic boost, but still do + get earth-magic penalty. + + Centaurs and Spriggans don't lose their fast-running w/ BLADE_HANDS any more. + + + * religion.cc: + + + simple_god_message() simplified + + Reduced number of colors in god_speaks(). + + Changed some gain/lose piety messages to reflect what power was gained/lost. + + Changed penence messages to reflect that gods don't summon, they send. + + + * skills.cc: + + + Sludge Elves now bad at Enchantments, good at Transmigrations, worse + at all forms of Elemental Magic (was experimental, not sure if it + was discussed on crawl-dev). FIXME: change back? + + + * spell.cc: + + + Added SPELL_BOLT_OF_MAGMA. + + Spell type code now uses bitfields. + + + * spells.cc: + + + Spell type code now uses bitfields. + + + * spells2.cc: + + + Weapon branding code now works (brand_weapon()). + - er, except for what may be a bug at the end: `power << 1' => `power * 2' + + Ozocubu's Refrigeration and Freeze can now slow cold-blooded creatures. + + summon_things now correctly pluralizes. + + + * spells4.cc: + + + Added case TRAN_AIR to your_hand(). + + apply_area_one_neighboring_square() no longer gives unlimited trys. + + cast_summon_large_mammal() no longer generates hogs or sheep, now just + Jackals, Hounds and War Dogs. + + cast_sticks_to_snakes() gives MONS_SNAKE for low-level large object snakes + (as opposed to MONS_BROWN_SNAKEs). + + sleep_monsters() is now only called from hibernation-spells: + - Now cold resistance negates. + - `Slow Snakes' (cold blood => may be slowed as well as put to sleep) + + Fragmentation & Shatter: + - Statues and magic traps no longer destroyed + + Shuggoth Seeds: seed now requires MH_NORMAL, warm-blooded host + + + * spl-book.cc: + + + Books of Minor Magic changed, hopefully for the better! + - BoMM-II man still need some help; Ozocubu's Armour replacement? + + Book of Flames loses BOLT_OF_FIRE, gains BOLT_OF_MAGMA + + Book of Frost gains SLEEP, loses FREEZING_CLOUD + + Book of Ice gets MASS_SLEEP and FREEZING_CLOUD + + Changes to Enchantment books + + New Book of Assassination + + spellbook_template() copying loop used to count from 1 to SPELLBOOK_SIZE, + I made it count from 0 (to fix the "can't-get-to-first-spell-in-staff" bug). + + + * spl-data.h: + + + Spell structure now has one field for "level" (instead of 3 identical ones). + + Spell schools are now encoded as bits in an unsigned int instead of in a + special structure. + + Some spells moved back to their old schools (from my (bad) recent changes). + + + * spl-util.h & spl-util.cc: + + + Changes to use new, simple spell structure. + + + * view.cc: + + + Removed "if (do_updates) mpr("Stealth checks...");" from DEBUG builds + (it's too annoying). + + Enum'd monster noises. + + +21.jun.2000 (Michal Valvoda) + Changes: + monstuff.cc + - completely reworked mons_speak routine + - removed silence check required to call mons_speak (line 749) + - lowered chance to speak to one_chance_in (7) (line 749) + describe.cc + - added many new monster descriptions (deep elves, unique monsters + like Sigmund, Terence etc., killer bee larva ...) + - changed some existing descriptions - made them more detailed + - in case of some "smell" message add MUMMY check + + +19.jun.2000 (Gordon Lipford) + Changes: + + * replaced old losight() function with new one. It doesn't quite + match the old one, but it's close enough. + * externalized setLOSRadius() and added normal_vision and current_vision + fields to the player structure. We have variable light sources, voila! + + - Note that using a radius of 0 screws up map memory and looks really dumb. + I am not going to try to fix this. + - In a similar vein, bumping into something should draw it on the map + if you didn't know it was there already (ie you fumble blindly into a + wall). I'm not going to do this either. :) + + * changed all level 1 'handle' references to level 2 'FILE *' for better + portability. Whenever a function needs a File Descriptor, I have + substituted fileno(handle) for just 'handle'. + * added Windows 32 bit Console support. Screen redraws, loading, saving, + and highscore updates are now VERY fast on Windows machines, even playing + from a shared network drive. The NT DOS VDM, at least, was !@$#* crap. + + +17.mar.2000 [Josh Fishman] + + Bug Fixes: + + * ability.cc: ABIL_BREATHE_FIRE gained power if player had MUT_SPIT_POISON + -- changed to bonus if player has MUT_BREATHE_FIRE + * beam.cc: poison_monster: fixed so TSO only gets pissed if it's YOUR + poison (my broken code had him angry if ANY poisoning occured) + * spells.cc: changed many miscast messages to passive "You are caught in" + (rather than "You conjure up") because miscast_effect is called for all + sorts of stuff (particularly divine punishments). + + + Structural Changes: + + * moved much spellbook code to new file, spellbook.cc + * removed a host of DUR_ entries; replaced with + DUR_WEAPON_BRAND + * cast_selective_amnesia(bool): was (void); bool used to determine if + failure (and memory loss) is allowed. Sif Muna's invocation guarentees + success. + + New Functions: + + * Confined to spells4.cc + + +17.03.2000 [Don Brodale] + + BugFixes: + + * damage taken by player (misc.cc) for CLOUD_MIASMA was wrong -- + operator precedence at fault; + * SPWPN_FROST changed to RING_SUSTAIN_ABILITIES in + player::player_sust_abil() for EQ_LEFT_RING conditional (noted by + Jukka); + * misc::itrap() MI_AXE -> WPN_HAND_AXE and mstuff2::mons_trap() + MI_SPEAR -> WPN_SPEAR, MI_AXE -> WPN_HAND_AXE to fix inappropriate + item generation (noted by Brent); + * newgame::new_game() stairs to Hall of Blades now + "you.branch_stairs[STAIRS_VAULT] + 4" not + "you.branch_stairs[STAIRS_CRYPT] + 4" to fix overmap inconsistency + described by Jukko and confirmed by Linley; + * dungeon::items() recoded to fix generation of skill manuals of + SK_GREAT_SWORDS but not of SK_POISON_MAGIC and SK_INVOCATIONS + (noted by Brent); + * MS_STING was cased in mstuff2 to be BEAM_FIRE causing it to set + scrolls afire (noted by ) -- changed to + BEAM_POISON, as it should have been all along; + * CMD_LIST_WEAPONS in acr::input() '(' -> ')' (noted by Brent); + * CMD_LIST_WEAPONS in liblinux::init_key_to_command() '(' -> ')' to + match above change; and + * half a bugfix: in food::eat_meat() Amulet of the Gourmand no + longer renders contaminated or poisonous flesh clean -- now have + to apply the other half enabling eating of rotten food as though + it were [presumably] underlying corpse effect type. + + Structural Alterations: + + * commented many many of the header files -- need to comment and + check rest, but can we keep these up to date, please?; + * cleared out all tabs (some 500+ of them); + * *massive* checking of function declarations in most of the source + files and resulting clean-up of #includes and *.cc versus *.h + declaration -- too many to list here, if anyone wants to see it, + let me know; + * #ifdef/#defn protection added to overmap.h, preventing multiple + inclusions; + * version.h -- BUILD_DATE advanced to "17 mar 2000" and VERSION + changed to "3.40pr30"; + * standardized ordering of #includes atop files, alphabetized last + set of #includes within each file, removed of duplicate entries + where found; + * duplicate #includes for message.h removed from files already + #include-ing externs.h (which in turn #includes message.h); + * removed setting you.redraw_hunger to 1 immediately prior or after + calls to food::food_change(), as the function sets this value + itself; and + * replaced (here and there) the sum of "n calls to random2(a)" with + "random2avg( (n*(a-1))+1, n )" -- for low values of n, + distribution of returned value is analogous and this approach + offers option to tweak distribution of value returned, too. + + New Functions: + + * food::can_ingest() added and inserted where appropriate -- option + to suppress message included in case we want to tie routine to + inventory list command to display whether something is edible by + player. + + Changes to Existing Functions: + + * message added for change in burden state *to* unencumbered -- + don't know why there wasn't one in the first place, but actual + message may require tweaking + * acr.cc variable newc changed from type int to char to match value + returned from newgame::new_game() + * monplace::create_monster() automatic variable "int pets" removed + -- didn't do anything except sit there and retain zero valuation + * effects::lose_stat() recoded to use STAT_RANDOM (see below) + * food::food_change() coding simplified as it was really far more + complex than it had to be and confused, to boot + * food::is_carnivore() removed -- replaced by food::can_ingest() + (see above) + * food::eat_from_floor() automatic variable "int gloggj" removed, + all it held was returned value of eating(), but was never used + * mutation.cc redundant codings replaced with calls to + player::increase_stats() -- look for the comments: nulled-out + gain/loss message strings for mutations affected by change + * spells0::undead_can_memorize() -> undead_cannot_memorize() and + recoded for more reasonable usage, to permit restriction of + certain spells solely to the dead, and to allow the 'true' undead + to use spells that the 'hungry' dead cannot (not possible before), + etc. + * view::losight() variables see, see_section, and behind are now + bool and not (int / short int / char) -- some clean-up called for + but I wasn't up for it + * barehand_butcher added to food::butchery() to clarify coding + * spells1::cast_fire_storm() variable summd its association with + monster_place() removed + * player::how_hungered() recoded so as to avoid need for goto: + statement -- the accursed goto + * standardized (to some extent) the way in which mons_lev.cc f(x)'s + are coded + * mutation::perma_mutate() rewritten for clarity, taking advantage + of left-right evaluation of && conjoined conditionals + * effects::recharge_wand() clean-up / clarified + * spells1::cast_revivification() clarified a little bit + * monstuff:mons_in_cloud() cleaned-up, optimized, and enumerated -- + no longer relies on (env.cloud_type[cl] % 100) + * view::cloud_grid() cleaned-up + * ouch::lose_level() lost some code that simply called random2() to + no particular end + * mons_lev::mons_level_abyss() -> mons_lev::mons_abyss(), to be more + in line with mons_pan() as both simply check whether a monster + "belongs" + * functions that now return bool instead of char: + + effects::forget_spell(); + + effects::lose_stat(); + + effects::recharge_wand(); + + fight::monsters_fight(); + + food::butchery(); + + food::eat_from_floor(); + + misc::scramble(); + + mons_lev::mons_level_abyss(); + + monstuff::curse_an_item(); + + monstuff::mons_speaks(); + + mstruct::mons_pan(); + + mutation::delete_mutation(); + + mutation::give_bad_mutation(); + + mutation::give_good_mutation(); + + mutation::mutation(); + + mutation::perma_mutate(); + + player::you_resist_magic(); + + transfor::can_equip(); + + transfor::transform(); and + + monplace::empty_surrounds(). + * functions that now return bool instead of int: + + transfor::remove_equipment(); + + monstuff::wounded_damaged() -- this may have to change if we + add more types of monster hurt than wounded and damaged; + + dungeon::treasure_area(); and + + view::check_awaken(). + * functions that now return unsigned char instead of int: + + player::player_energy(); + + player::player_fast_run(); + + player::player_spec_air(); + + player::player_spec_cold(); + + player::player_spec_conj(); + + player::player_spec_death(); + + player::player_spec_earth(); + + player::player_spec_ench(); + + player::player_spec_fire(); + + player::player_spec_holy(); + + player::player_spec_poison(); + + player::player_spec_summ(); and + + player::player_sust_abil(). + * spells2::burn_freeze() now returns char instead of int; + * dungeon::place_monster() parameter "char allow_bands" changed to + "bool allow_bands" to clarify how this parameter is, in fact, + used; + * dungeon::place_monster() parameter "int type_place" + changed/renamed to "bool is_summoning" to clarify how this + parameter is, in fact, used; + * dungeon::spotty_level() takes bool instead of char for first and + third parameters (seeded and boxy); + * food::eating() returns void instead of int -- always returned 0 + and the returned value never used elsewhere; + * food::ghoul_eat_flesh() takes bool instead of char for only + parameter; + * item_use::wield_weapon() takes bool instead of char for only + parameter; + * misc::dart_trap() takes bool instead of int for first parameter; + * misc::down_stairs() takes bool instead of char for first + parameter; + * misc::fall_into_a_pool() takes bool instead of char for first + parameter; + * misc::handle_traps() takes bool instead of char for third + parameter; + * monplace::empty_surrounds() takes bool instead of char for fourth + parameter; + * monplace::mons_place() parameter "int type_place" changed/renamed + to "bool is_summoning" to clarify how this parameter is, in fact, + used; + * mstuff2::monster_abjuration() takes bool instead of char for + second parameter; + * mstuff2:monster_teleport() takes bool instead of char for second + parameter; + * player::increase_stats() takes unsigned char instead of char for + only parameter, extended to handle random stat boost; + * spells1::ice_armour() takes bool instead of char for second + parameter; and + * spells3::dancing_weapon() takes bool instead of char for second + parameter. + + Enumerations and Defines: + + * MONS_MOLLUSC_LORD (255) added to enum MONSTERS -- deprecated but + still referenced; + * NUM_WANDS added; + * STAT_RANDOM and NUM_STATS added; + * NUM_DURATIONS added and kept at 30 (rather than true value) + because setting it lower (I think) would cause savefile + compatibility problems -- not fully useful unless we wish to break + savefile compatibility; + * MI_AXE (9) and MI_SPEAR (11) removed from enum MISSILES (see + above); + * enum MAP_SECTIONS added for dungeon.cc / maps.cc interaction -- + not fond of how maps are applied, so this may be temporary; + * enum MONSTER_CATEGORIES and mstruct::monster_category() added to + clarify certain conditional tests and keep comparison on + MONS_foobar to equality or inequality for ranges -- this will be + expanded and attached to similar entries in m_list.h (I ran outta + time!); + * enum CORPSE_EFFECTS added -- members mimic C_foo #defines and add + a few new ones and another for rotting [see food::eat_meat()] -- + again, I ran outta time to extend application; + * misc::in_a_cloud() fully enumerated out, no longer relies on + switch (env.cloud_type[cl] % 100); and + * much more general enumeration across codebase. + + +06.03.2000 [Brent Ross] + + * removed strength loss from berserk penalty (acr.cc); + * added Trog code to berserk (fight.cc, acr.cc); + * reverted Berserkers and Paladins to their original weapons/skills + -- actually, Paladins changed to sabres on Linley's suggestion + (newgame.cc); + * removed learning from stave combat (fight.cc); + * made vorpal weapons less common, other egos more common? + (dungeon.cc); + * changes to makefile.sol; + * increased armour penalty for spellcasting, lowered the reduction + to penalty for armour skill (spells0.cc); + * armour changes: elven armour is better for spellcasting, dwarven + armour for AC from skill -- for everyone (player.cc, spells0.cc); + * paralysis leaves player easier to hit (player.cc); + * reduced Xom's prayer reponse rate (religion.cc); + * added penance and gift timeouts for gods (files.cc, extern.h, + religion.cc, newgame.cc, ability.cc): + + divine_retribution() (religion.cc, decks.cc, spells.cc); and + + added god_speaks() so that the other gods can use colourful + text. + * indented code; + * improved the demonspawn AC mutations by boosting the number of + levels for the lower ones; + * extended spellbooks to 8 spells maximum ... restored levitation to + Air, removed "Summon Elemental" from Ice (their "elemental" is + really an Ice Beast, not benefitting from summoning Water + Elementals); and + * added Confusing Touch as a first level spell for enchanters and + Sure Blade as a second level spell -- removed wand and gave them + some enchanted darts. + + +23.02.2000 [Don Brodale] + + BugFixes: + + * implemented Linley-suggested bugfix in misc.cc:down_stairs() to + fix "Abyss bug" that was actually a/the "Pandemonium bug"; + * copied over new makefile.sol posted by bwross; + * typo in dungeon.cc limited weapon given to elven mage-types to + whips and sabres *only*; + * item descriptions added to itemname.cc for BOOK_PARTY_TRICKS and + BOOK_CANTRIPS (jmf/bcr forgot to do so?); + * spells2::summon_elemental() would create sleeping elementals when + summoned hostile to spellcaster; and + * spells2::summon_things() -- apparent reversal of + MONS_ABOMINATION_SMALL and MONS_ABOMINATION_LARGE [jdf flagged it + first] fixed by correcting improper enumeration (see below). + + Gameplay Changes: + + * stalkers, assassins, and venom mages begin the game with knowlege + of Poison Potions (c.f., Paladins/Healers possessing knowledge of + Healing Potions). + + Structural Alterations: + + * externs.h now #includes enum.h -- already de facto standard, now + openly the case; + * moved files not directly related to current build into subfolder + labeled "misc"; + * moved files removed from or "left behind" by the current build + into subfolder labeled "unused"; + * proper #includes for decks.cc now in place; + * redundant #include defines.h in invent.cc and mstruct.cc removed, + already #include'd by externs.h; + * changed some formulas resembling "menv[bk].type = + MONS_ABOMINATION_SMALL + (random2(2)) * 26;" to conditional on + coinflip(); and + * flipped many conditional clause orderings to place function calls + last to take advantage of short-circuit logic. + + New Functions: + + * stuff::coin_flip() to replace random2() when desired result is + simply true or false -- does not use rand() or random() for return + value, getting around "iffy" rand() implementations for low order + bits (from *Numerical Recipies in C*); + * stuff::one_chance_in() to clarify conditionals like ".. && + random2(foo) == 0 .." -- !one_chance_in() more intuitive than + !random2(), too; + * stuff::stepdown_value() to replace [and generalize] repeated + conditional chains in spells2.cc; + * stuff::table_lookup() to randomly return a value from an unbounded + value list and associated probabilities; and + * food::is_carnivore() to handle set conditional evaluation in + food.cc and itemuse.cc. + + Changes to Existing Functions: + + * item_name::initial() -> item_name::clear_ids() to clarify what + task this function performs; + * extended random22() to accept any number of 'dice' for averaging, + renamed to random2avg(); + * extended random40() to accept any limit, renamed random2limit(); + * "fixed" item_use::drink_fountain(); + * "fixed" spells2::cast_twisted() a bit -- needs more fixing still; + * nested [in place of stacked] strings of conditional statements in + player::you_resist_magic(), beam::check_monster_magres(), + skills2::clac_ep() to eliminate needless value checking; + * changed create_monster() call in spells2::summon_butter() to + duration 22 [from 21] to match other summoning spells; + * altered staff description routine in describe.cc to prepend "This + staff"; + * dungeon::box_room() optimized for efficiency -- lopsided odds for + placement of one (and only one) additional door reflects original + algorithm [I cannot explain why it should be this way]; + * dungeon::city_level() clarified and optimized; + * dungeon::place_shops() optimized a bit; + * dungeon::plan_4() optimized a bit -- removed variable boxy_type, + as it was useless; + * dungeon::prepare_swamp() optimized slightly; + * dungeon::generate_abyss() logic clarified; + * it_use2::zappy() -- changed func_pass[5] for ZAP_ICE_STORM to + BEAM_ICE (23) from BEAM_COLD (3) in accordance with comment and + spell description; + * shopping::shop_getch() removed entirely and replaced by + stuff:get_ch() -- differed only in that the former returned char + and the latter unsigned char [variable ft in shopping::in_a_shop() + changed to unsigned char as a result]; + * spell::surge_power() -- replaced successive tests with one complex + conditional to reduce number of tests required; + * spells2::summon_swarm() cleaned-up to make creature selection + clearer; added giant mosquito; red wasp -> wolf spider + [reversion]; killer bee larvae -> scorpion [as commented]; + * spells2::summon_undead() cleaned-up by replacing successive + conditional calls to rand2() with one switch call to rand2() per + loop-through -- if odds look funny, it represents evaluation of + original coding; + * removed double assignment of numsc from spells2.cc:summon_swarm() + and spells2.cc:summon_undead(); + * newgame::class_allowed() cases now uniformly list >disallowed< + species for all classes [except hunter]; + * newgame.cc:init_player() -- eliminated redundant you.level_type + initialization, general clean-up; + * recoded describe::describe_potion() and describe::describe_food() + to handle redundant wordings -- more cases involved, but fewer + textual chunks duplicated; + * functions that now return bool instead of int: + dungeon::place_specific_trap(), fight::jelly_divide(), + spells::which_spellbook(), and spells0::spell_type(); + * functions that now return bool instead of char: + item_use::drink_fountain(), monstuff::random_near_space(), + player::wearing_amulet(), spells::learn_a_spell(), + misc::go_berserk(), spells2::brand_weapon(), and stuff::see_grd(); + * invent::invent() is now takes bool instead of char for second + parameter; + * overmap::print_level_name() now returns bool and takes bool as + third parameter, which also means that already_printed is now type + bool, too; + * player::player_see_invis() now returns unsigned char instead of + int; and + * spells3::you_teleport2() now takes bool instead of char. + + Changes to Variables: + + * nulled out Great Swords array entries in skills2.cc -- no longer + used; + * uncommented the last four entries to the skills[][] array and + deleted the fourth -- entries now match size of array as declared + elsewhere; + * converted some integer constants (foo = 59) to single-quoted + characters (foo = ';') where appropriate; and + * int item_sacr in religion::altar_prayer() deleted, as it was + unused; + + Changes to In-Game Messages and Textual Elements: + + * VERSION set to "3.40pr" so people know this is not the final + release; + * BUILD_DATE set to "23 Feb 2000" -- I think we should use month + abbreviation to avoid numerical confusion; + * minor tweaking of messages relating to undead players; + * special statue transformation message for gnomes added; + * grammatical clean-up and rewording of all spell descriptions in + describe.cc -- all checked, some changed a little; + * "book of Useful Magic" -> "book of Practical Magic"; + * "book of Poisonings" -> "Young Poisoner's Handbook" (movie + reference); + * "book of Envenomations" -> "book of Toxins"; + * "book of Storms and Fire" -> "book of the Tempests"; + * "Anita" ->"Snorg" within its m_list.h entry; + * "Sneaker" -> "Sneak" for stealthy types (did one become an old + tennis shoe?); + * "Assassin" -> "Blackguard" for stabbing to avoid confusion with + character class; + * "Thief" -> "Covert" for stealthy types to avoid confusion with + character class; + * "Axe Maniac" -> "Halberdier" for polearms -- category includes + more than axes, so this is a better fit and avoids repetition of + another "top level" skill name; + * "Bombardier" -> "Flinger" for slings, as it is more descriptive of + a slinger's actions; + * "Crazy Person" -> "Whirler" and "Really Crazy Person" -> "Crazy + Person" for slings -- the joke still remains, but some dignity is + restored to slingers everywhere; and + * "Igniter" -> "Firebug" and "Burner" -> "Arsonist" for Fire Magic. + + Enumerations and Defines: + + * COLORS #define applied to numerical values still present in + m_list.h; + * COLOR #defines applied to it_use2::zappy() for ZAPs not switched + over from value numbers; + * COLOR #defines applied to remaining codebase, where I could find + references still using numerical values -- I think I overdid it a + bit and need to go back and fix a particular set of replacements; + * #define NO_MUT (in mutations.cc) replaced by last member in + MUTATIONS: NUM_MUTATIONS; + * #define NO_EQUIP replaced by last member in EQUIPMENT enum: + NUM_EQUIP; + * removed #defines (and references to them) for Tome of Destruction + and Manuals in dungeon.cc -- superceded by BOOKS; + * replaced 501 with ING where appropriate -- only scattered + instances of bare 501's left in the source code; + * MLAVAfoo and MWATERbar #defines restricted to use only in certain + header files [m_list.h monsstat.h newmonst.h], with the exception + of MLAVA4 used in monstuff.cc (what is it?) -- I'll clean these up + later, but other than this, they are no longer used in the + remainder of the codebase; + * CLOUD_ENERGY -> CLOUD_PURP_SMOKE; + * CLOUD_STICKY_FLAME -> CLOUD_BLACK_SMOKE; + * MONS_SMALL_ABOMINATION -> MONS_ABOMINATION_LARGE and + MONS_LARGE_ABOMINATION -> MONS_ABOMINATION_SMALL -- mistakenly + reversed in enum sometime before; + * MONS_ANITA -> MONS_SNORG -- regenerates and described as being a + hairy troll, so must be Snorg; + * MONS_FAKE_RAKSHASA -> MONS_RAKSHASA_FAKE; + * MONS_SMALL_ZOMBIE -> MONS_ZOMBIE_SMALL; + * MONS_BIG_ZOMBIE -> MONS_ZOMBIE_LARGE; + * MS_SUMMON_LESSER_DEMON -> MS_SUMMON_DEMON_LESSER -- I like + hierarchies; + * MS_SUMMON_DEMON_1 -> MS_SUMMON_DEMON_GREATER -- _1 too similar to + _I = potential typos; + * MS_GERYON -> MS_SUMMON_BEAST -- more descriptive of actual + function; + * MS_SLOW_DUP -> MS_CONFUSE -- what it is according to + monstuff.cc:handle_wand() - removed deprecate comment from enum.h; + * NWPN_VAMPIRE_S_TOOTH -> NWPN_VAMPIRES_TOOTH -- just too awkward as + it was; + * added BURDEN_STATES -- applied to you.burden_state; + * added DEMON_CLASS -- applied throughout; + * added HUNGER_STATES -- applied to you.hunger_state; + * added SPELLBOOK_CONTENTS -- applied throughout; + * added UNDEAD_STATES -- applied to you.is_undead; + * added SHOPS -- applied to env.sh_type[]; + * expanded CLOUD_TYPES: _SMOKEs, _MIASMA, _DEBUGGING, and most _MONS + variations; + * expanded DUNGEON FEATURES to include elements 208,209,210 (Dry + Fountains VII and VIII and the PermaDry(tm) Fountain, + respectively); + * expanded OBJECT_CLASSES to include OBJ_GEMSTONES; + * expanded SYMBOLS to include SYM_DEBUG; + * expanded ZAPS to include added ZAP_ISKS_CROSS -- current use + commented out in zappy(); and + * mass enum'ing all over the codebase -- you name it, I tried to + enumerate it. + + +10.01.2000 [Brian Robinson] + + * From Josh Fishman: + + lots of enumming, mostly spells; + + Paladins get a long sword and long sword skill to start; + + Spriggans may now be stalkers; + + poisoning something already poisoned gives extra naughty; + + more powerful staves added; + + armour skill no longer affects penalty to spellcasting for + wearing armor; + + summon small mammals spell improved; and + + Vehumet will protect against spell failures and preserve + intelligence. + * large characters receive a smaller spellcasting penalty for + bearing large shields; + * easy crawl bug in wizard mode fixed; + * wiz commands for controlled blink and create up staircase added; + * wiz help fixed so that all wiz commands now have help; + * subspecies selection in newgame.cc changed to prevent duplication + of information -- see the newgame.cc for details; + * Ogre berserkers now start with Club skill level 3 and Maces skill + level 1 -- the reverse of all other races, because they begin with + clubs rather than axes; + * Troll berserkers start with Unarmed skill level 3 and Dodging + skill level 2, but no weapon skills -- because they start without + weapons; + * Halflings may now be assassins and warpers; and + * Thieves start with more gold: random2(10) * 6 + random2(10) * 4. + + +30.12.1999 [Brian Robinson] + + * linuxlib.* axed + * versions.txt updated to reflect new release + * version and build date #defines in version.h updated + * a little more explanatory info added to init.txt + * some completed tasks eliminated from todo.txt and bugs.txt + * disclaimer added to this file + + +27.12.1999 [Linley Henzell] + + * USE_NEW_RANDOM tuned to reasonable pace when an FP coprocessor is + absent + * many minor tweaks + + +09.12.1999 [Linley Henzell] + + * new berserk code works with ctrl+direction attacks + * savefiles deleted after death (under DOS, at least) + * xp no longer awarded for killing creatures created friendly + * a few new low-level monsters + * new init.txt options: + + colour-code play-screen map, like the 'X' map + + remove monsters and clouds from map + * horned characters can wear caps and hats + * class names switched back into lower case (where appropriate) + * informed when a monster's enchantments wear off (if in view) + * more information provided when looking at a monster + * monsters no longer cast animate dead when corpses aren't in sight + * most abilities can be used while hungry (not starving) + * monster invisibility can now wear off (it couldn't before) + * deflect/repel missiles enchantments now affect missile traps + * dexterity affects shield use + * monster AI improvements: + + strong monsters only pick up missiles if already carrying + some + + some improvements made to monster path-finding + * USE_NEW_RANDOM rand() removed -- randart code relies on random() + * ghosts deal 2/3 as much damage; xp value reduced + + +18.11.1999 [Daniel Ligon] + + * shop prices right-justified + * yellow Xom patch fixed + * Xom will sometimes answer prayers + * evasion strengthened + * killed-by list enumerated; added "killed by an exploding spore" + * many calls to 'random() % x' replaced with 'random2(x)' + * calls to random3() and random4() eliminated + * Makhleb's minor destruction toned down + * amulets placed in the discovery listing + * beginning spells fixed for kobold summoners + * invisible undead referred to as "it" + * Spriggan assassins permitted -- speed/low food requirements + (Spriggan) greatly complement hand crossbow (assassin) + + +15.10.1999 [Brian Robinson] + + * can acquire() food: royal jellies given to non-ghouls; royal + jellies or chunks to ghouls (attempted a variety of foods; proved + too big a pain) + * '#define XOM_ACTS_YELLOW' added to AppHdr.h + * acr.cc:srand() added for USE_NEW_RANDOM to work properly + + +14.10.1999 [Brian Robinson] + + * fixed: problem where some super-long strings in describe.cc got + cut up, causing a compiler error (where possible, please try to + keep lines < 80 characters) + * describe_god() enumerated in describe.cc + * makefile.sgi option added to Makefile (doesn't work) + * fixed bugs culled from bugs.txt + * EasyCrawl(tm) door opening: walking into door opens it, running + into door opens the door and stops player + * GOD_NO_GOD case added to describe.cc:describe_religion() (it was + an acr.cc special case, but that's gone now) + * '#include ' added to fight.cc and spells2.cc because both + call sprintf() (would compile/link properly without it under Linux + but not DOS) + * makefiles .dos, .emx, and .sol tweaked + + +12.10.1999 [Brian Robinson] + + * version string changed to "3.40" and '#define BUILD_DATE' added to + version.h for output alongside version number + * '#define USE_NEW_RANDOM' added to AppHdr.h + * duplicate/completed items removed from todo.txt (may have missed + some -- only cut those marked "done") + * inspect item command (in shops) changed to 'v' + * contents of oldmakefiles directory archived as oldmake.zip + * make distclean now deletes *.sav, *.lab, core, and *.0* (DOS and + Linux) + * fixed: some class names in newgame.cc were not capitalized + * new random number generator added -- should be a little better + than old RNG; uses rand() rather than random() to generate number + (#define USE_NEW_RANDOM to enable) + * wizmode fixes: + + some creatures (e.g., necrophage) reduce max_hp (NAB: + reduction to zero normally means death) -- in wizmode, + negative max_hp results, triggering "you died, but its okay" + message every turn; added "you.max_hp = abs(you.max_hp)" to + the 'h' wizard command to correct negative max_hp + + stethoscope unmapped from 's' key -- terribly annoying for + me, since I can't rest with '5' under Linux (can still + stethoscope by targetting or looking) + + WIZARD compiled binaries append "Wiz" to any scores they + generate + + help screen added, accessed by keying in '&' then '?' (lists + wizard commands in a fashion similar to normal help screen) + + bugfix: Daniel's command code blocked wizard command + * Daniel's patches: + + '#define XOM_ACTS_YELLOW' to render Xom's messages in yellow + + bugfix: Abyss crash bug + + new wizmode commands: "banish" and "Xom acts" + * 'v' and 'V' commands swapped -- examining an item seemed more + likely (to me) than version check, so "examine" now lowercased + * wizard option added to Makefile (same as debug but includes + -DWIZARD) + * weapons of reaching used to attack one monster behind another may + instead hit the monster inbetween + * giant races penalized less for using large shields; normal-sized + monsters may be penalized slightly more, but only by one or so + * debug.cc:error_message_to_player() added to output: + "You have encountered a program bug. + Please exit the level and save." + (previous instances of this message replaced with calls to this + function) + * haste and slow counters in acr.cc changed to take into account + amulet of resist slow: haste subtracts random2(2) each turn + (rather than one -- which could have led to infinite haste, but + let's not worry about that) and slow subtracts five (one + previously) each turn + + +02.10.1999 [Brian Robinson] + + * help screen reformatted to spot entries more readily (at a + glance); added "more" capability so that [command summaries > + screen size] prompt user for more, preventing screen overflow + * amulet of maintain speed changed to the amulet of resist slowness: + old item description mentioned both resist slow and a speed bonus, + but the code only implemented resist slow -- wearing the amulet + now grants +10 to any hasting and also to maximum possible hasting + * some silly messages involving hasting and slowing changed + * messages indicating spell-casting failure added to the raise dead + functions, but I'm not sure they work (coding very confused here; + may only work some of the time) + * '#ifdef LINUX'-ed the acr.cc code [lines 663 - 676] which uses + variables declared in another '#ifdef LINUX' block (something may + be screwed up because I'm not sure what's going on here) + + +29.09.1999 [Brian Robinson] + + * highscore() fixed so that it doesn't take so long + * scores output padded with some whitespace to improve appearance + * bugfix for 'a' being in scores (see bugs.txt and ouch.cc) + * comments added to enum.h showing where unique monsters are + * first argument removed from view.cc:draw_border() (same value + always passed) + * bugfix: player's score not always saved + * some problems with the new makefiles noticed while compiling under + DOS: any platform with its own library (e.g., liblinux) should be + +='ed to OBJECTS in appropriate system-specific makefile + * Makefile: noopt (no optimization) added to allow me to compile + under DOS without headaches + + +28.09.1999 [Daniel Ligon] + + * linuxlib.* renamed to liblinux.* + * keypad for ncurses (Linux port) enabled + * liblinux.cc:kbhit() will always return 0 + * big lookup table added to liblinux.cc to convert keypresses into + commands + * enumerated commands added to both enum.h and big switch statement + in acr.cc + * Brian's makefiles added + + +24.09.1999 [Brent Ross] + + * bugfix for evasion + * macro.cc:getch_mul() reverted + * red devils have probablistic chance for (trident|demon trident|no + weapon) + * demon tridents correctly coloured + * xp spending cap/MAX_SPENDING_LIMIT + * broad axe, spiked flail, and great flail less common + * floating point operations in update_corpses() reduced + * all demonspawn scales/plates can be given at one or two levels + * max_hp ceiling displayed when player's max_hp reduced + * from Linley: + + portal fixed so that it doesn't go below level 27 + + fixed checks for translocating in the Abyss + + added fix for going to Pandemonium or the Abyss from Hell + + note about using '+' for targeting added to various prompts + + ghosts fade away only if they have fewer than half their hp + + +12.09.1999 [Linley Henzell] + + * "Over-map" added + * messages can be coloured -- just call set_colour() before mpr() + * wild magic effects do more harm; increased likelihood of higher + levels of effect + * blink may not work and teleport takes longer in the Abyss + * a few unrandarts tweaked + * rewrote part of dungeon.cc weapon generation function; added + weapon rarity function + * some monsters receive a wider range of weapons + * many high-powered demons have greater speeds + * several changes to skills.cc; having many xp in the pool increases + the cost of exercising + * threshold values increased for special "you hit" messages and some + grammar patched -- see fight.cc + * three 'silly' monsters removed: dorgi, sword, and guardian robot + * haste has a direct effect on time_taken, rather than being treated + separately -- see player_speed() + * boots of levitation allow permanent hovering + * random events in Hell are much nastier + * clouds can be overwritten by other clouds, sometimes -- see + place_cloud() + * monster mutation spell affects monsters as polymorph + * new init.txt variable [verbose] determines level of detail about + randarts and other magical items in character dump + * monsters can cast 'direct' spells (e.g., smiting) over other + monsters if targeting player + * giants given the correct number of rocks + + +09.09.1999 [Brent Ross] + + * damage lowered for some new weapons; tridents made heavier + * some changes from Dustin Ragan added to the newgame screens + * spellcasting reduced by weapon size [weight and/or speed] + * from Linley: + + verified helmet/helm colour initialisation to LIGHTCYAN + + swapping item letters outputs both items affected + + '=' fixed to '==' in randart.cc line 1515 + + bugfix: more scrolling problem under DOS + + bugfix: problem with the ctrl-direction keys under DOS + + subspecies selection made into compile time option + + horns mutation removed as a possibility for minotaurs + * Great Swords skill removed -- great swords/triple swords treated + as long swords + * Trolls + troll leather changed to no effect + * gdbm stuff removed -- makes things simpler; better security can + wait for new savefile implementation + * hand-and-a-half weapons: + + no bonus if weapon is cursed + + 1-1/2 hand weapons don't get the speed bonus past 10 + + two-handed weapons can get as fast as speed 7 with skill + + +random2(3) to hit + + +random2(3) to dam [all two-handed weapons] applied after + skill multipliers (i.e., with the dwarf and orc modifiers) + * multiple shield blocks in a turn becomes increasingly difficult + * fighters get dodging or armour skills on basis of starting armour + * shields and large shields slow down attacks + + +27.08.1999 [Brent Ross] + + * character dump includes '*' for level 27 skills + * removing the "skill_change /= 2" line from spell skills was a bit + hard on early spellcasters (it seems reasonable to give to + low-level characters and phase out by mid-game, when it isn't + needed) + * bugfix: "Crush" required conjurations (hold over from Throw + Pebble) + * bugfix: having 1 xp in the pool permitted a lot of free practising + * penalty increased for heavy armour, now more in line with the new + shield penalty (are these values high enough?) + * Linley's new weapon suggestions added: axe, spiked flail, great + mace, great flail + * damage increased for some maces and flails (swords are quick and + accurate, maces and flails hit harder) + * "Boots" changed to "Barding" in centaur/naga equipment lists + * crystal plate mail somewhat resistant to corrosion + * +/- markers added to skills screen for benefit of monochrome + displays + * bugfix: labyrinth problems + * bugfix: LOS corner problem + * bugfix: can now make with -DWIZARD + * spellcasting/invocation interference removed + * weapon additions: broad axe [rare, 15, +3, 17], trident [9, -2, + 16], and demon trident [evil -- wielded by red devils: 15, -2, 16] + * polearms/whips of reaching added + * gladiators given choice of starting with trident + * '#define USE_NEW_BERSERK' removed + * bugfix: incorrect display of barding AC value + * quite a bit of cleanup (converting ints to enums in the old code) + * draconian AC gains clean-up; removed level four increase and gave + two AC at start + * knife added; guaranteed on the first three levels + * bugfix: memorizing spells was impossible on some terminals + + +08.08.1999 [Brent Ross] + + * bugfix: Orange Brains could hang game (MS_SUMMON_LEVEL spell in + Abyss) + * bugfix: monsters should no longer occur "under" the player + * bugfix: portals weren't closed on way out, but hell gates were + removed (now all are closed) + * bugfix: cannot unlearn spells outside the array bounds + * bugfix: manuals should auto-identify on the first read + * bugfix: Healing book was available from acquirement/Sif Muna + * missile launchers no longer train/use associated skill when used + as melee weapons (bows/xbows will train/use maces/flails, slings + use no skill) + * Zot traps will no longer message their effects on monsters unless + monster within LOS + * bugfix: liquid flame could wrap around and last a long time + * bugfix: whatever caused "program bugs" to occur in the Abyss + * bugfix: number of cards in Decks of Power defaulted to 0 and thus + gave 255 cards + * Nemelex fixed to give cards instead of Bone Lanterns and Geryon + Horns + * bugfix: food was not updating with cards + * bugfix: quick blades were getting free actions + * spell points update when Invocations gained + * granularity of skill gain upped to reduce "stage three": + + number of learns from manuals upped to accommodate + + monster xp values reduced to limit "stage two" effect + * power of smiting again reduced (seems reasonable now) + * teleport control restrictions (some areas will not allow + controlled teleport) + * runes may be stacked + * invocations and spellcasting learning interfere with one another + (like elemental magic) + * increased rate of skill cost per level + * removed division by two for cost of spellcasting skills + * greater rarity for unique artefacts (all seem to enter quickly + into any game, except the Sword of Power, for which the 50% chance + against creation probably kept it out of my last game for a while) + * evasion/shields were too good: + + shield blocking difficulty raised a bit (from base 10 to 15) + + player's evasion rolled in the monster to-hit check (so that + a player with an EV of 30+ can still be hit)... added a 1/15 + chance of hitting regardless (players already got this + advantage). + * *.h guards moved to after the headers (cosmetic) + + +30.07.1999 [Brent Ross] + + * bugfix: visiting Abyss from Hall of Blades resulted in an Abyss + populated by blades + * bugfix: problems with highscore entries running off end of the + line + * electrical and poison resistances no longer absolute -- 1/3 damage + taken on successful resist (still no poisoning for those with + poison resistance) + * storm dragon breath can be resisted + * draining will drain available xp pool, too + * spell levels moved to a function to prevent amassing a large + number of negative spells (forgot spell that didn't exist) + * spellcasting more difficult to get + * bugfix: plants stalking stairs + * dragon armours reverted to original values -- resistances and + benefits given are good enough (basic heavy armours were the ones + in real need of improvement) + * bugfix: distortion weapons (from Jesse) + * bugfix: deflect missiles status wasn't listed on '@' + * slime pit runes are only "possible" runes -- unlikely to get four + of them now + * stats added to "elf" dummy monster to allow elf zombies to live + * added redraw after projected noise + * bugfix: objects (runes, orb) were clobbered by items given to + monsters. + * monster descriptions with huge gaps in them were fixed + * bugfix: shapeshifters shouldn't polymorph into dancing blades + (numbers for names) + * acquirement() better than before for jewelry + * skills screen can handle more than 26 skills + * levels of poisoning shown for '@' + * traps more difficult to disarm as dungeon level increases + * traps might trigger during attempts to disarm + * all traps handled by handle_traps() + * are the new traps too hard on monsters? (probably yes, so they + take old damage amounts for now) + * player_light_armour() added, which returns true if the player is + in light or no armour + * bugfix: non-flying monsters were flying over traps + * polymorphed monsters not much of an easy xp trick anymore + * xp calculation takes into account a monster's speed + * plant learning capped (no more than first two levels of fighting + skills) + * some support added for explosions destroying potions/food on + ground are only the correct things being destroyed? -- check + bang.cc and destroy_item() + * wearing heavy armour provides a minium percentage of damage + reduction: + + percent = (skill + base AC of body armour) + + still needs application to monsters, but monsters don't + convieniently know whether they possess hard armour (let + alone armour skill) so this can probably wait + * extra protection from shrapnel attacks provided by heavy armour + only + + +13.07.1999 [Brent Ross] + + * entrance to the Labyrinth blocked until debugged + * wizmode code in acr.cc fixed; changed some commands to more easily + remembered letters; added an identify + * fixed some cases where cursed jewelry plusses are assumed to be + based off 100 (creation code and many other cases suggest that + it's 150) + * random weapons, armour, and jewelry from acquirement() are now + uncursed + * demonspawn horns smoothed out so it's possible to get two levels + * ranger changed to hunter + * some gmon_use values changed (from Linley) + * life protection descriptions changed + * hunger_inc and ATTR_LIGHTNING_RESIST moved to functions in + player() -- the attribute is now replaced with + ATTR_DIVINE_LIGHTNING_PROTECTION (used to denote Makleb or Xom + protecting player from a lightning attack) + * checks added for the curses keypad enums + * learning curve for throwing skill lowered + * hand crossbows reduced in power + * learning curve for traps and doors skill lowered + * played with spellcasting staff identification + * player ghosts fixed: + + monsters regenerate hp while player is off level + + ghosts regenerate and teleport away when player leaves the + level + * assassins changed from ninja to hand crossbow types; given + enchanted dagger as well to help hand-to-hand + * throwing exercise added to darts, hand axes, daggers, and spears; + throwing skill bonus added for them, as well -- see item_use.cc + * scythes, halberds, and glaives given a chance to be weapons of + speed + + +07.07.1999 [Brent Ross] + + * breath from ice-breathing dragons won't destroy walls + * life protection now a (level/3) chance + * bugfix: the 120/150 hp ghost thing + * anticheat code and security db added for multiuser systems + (requires gdbm) + * only picking up items has associated delay with autopickup, + walking over uninteresting stacks shouldn't cost any extra time + * berserk players fail the check_awaken() test with monsters and do + not spend experience on stealth + * dexterity added to stealth + * ogre magi given short swords instead of daggers + * stabbing stun effect toned down + * stabbing dex bonus toned down -- now limited by stabbing + * assassins start with a dagger; thieves start with short sword and + dagger + * stat mods reversed for thief and assassin; assassins given unarmed + combat + * wizard stat mods changed to +7 int/+3 dex, making them smarter + than other spellcasters + * draconian rangers no longer start with leather armour + * stealth toned down a bit (and again) in player.cc:check_stealth() + * to-hit reduced for throw fire/frost and sting -- see + it_use2.cc:zappy() + * bugfix: repel/deflect missiles problem -- changed bad REPEL + reference in acr.cc + * message added to unwielding vampiric weapons + * new keypad support hacked up for Unix + * shots used up 1 in 3 times + * bonus for crossbows' to hit and dam (item_use.cc) + * magic resistance for elves (player.cc) + * autopickup delay upped to 3 (one and two seem to be no delay at + all) + * opposing elemental staves can be identified (items.cc, spell.cc) + * zipfile removal added to ouch.cc to prevent cheating + * bugfix: view.cc STABBING check should be STEALTH for the no-yell + check; lowered to a straight percentage check + * Dwarven/Orc rangers given Dodging 1 (they were a bit short on + skills) + * HOrs get orcish bolts (newgame.cc) -- added MISSILES check in + HILL_ORC check + * gladiator/fighter modifications: (newgame.cc) + + fighters: skills -- fighting 3, weapon 2, dodging/armour 2, + shields 2, stabbing/stealth 1, throwing 2; stats -- str +7, + dex +3 + + kobold/troll/ogre fighters: same as before + + gladiators: skills -- fighting 3, weapon 3, dodging/armour 2, + shields 1, unarmed combat 2; stats -- str +6, dex +4 + + comparision to previous values: + o fighters: lost unarmed combat; +1 shields and +1 + throwing + o gladiators: -1 dodging/armour and -1 shield; +2 unarmed + combat + o stat bonuses swapped + o armor for gladiator/fighter switched + + +22.06.1999 [Brent Ross] + + * new ranger weapon variations (halfling slingers, dwarven + crossbowers) + * Ranger/Reaver problem fixed -- 'R'angers are now 'r'angers (so + capital letter R used only once) + * stealth improvements: + + monsters don't yell (2 * skill) % of the time -- see + view.cc:monster_grid() + + large races lose *2 modifier, small races receive *5/2 -- see + player.cc:check_stealth() + o Huge (x1): Troll, Ogre, Ogre Mage, Centaur + o Awkward (x3/2): Minotaur, Draconians + o Normal (x2): Everyone else + o Small (x5/2): Halfling, Gnome, Kobold, Spriggan, Naga + (Naga's aren't small, but they're good) + + BEH_CHASING_I set for sleeping monsters who are stabbed + + now a (skill + dex)% chance of stabbing fleeing or confused + monsters -- see fight.cc + + backstab effectiveness depends on the monsters behaviour: + o sleeping monsters are easy targets -- lots of damage + potential + o fleeing and confused monsters -- not as much damage + potential + o other cases have even less damage potential + + backstabbing more effective for daggers: daggers add dex/3 + damage before the multipliers -- see fight.cc + * fight.cc:monster_dies() modified so that *any* summoned creature + killed by player/pet won't call done_good() + + Elivion/TSO/Zin have to be passed through (not a problem + because they can't abuse summoning, anyway) + + this could use a better fix (i.e., tracking who summoned + which monsters would help a lot) + * (Linley's suggestion) monster polymorph fixed to avoid NO_EXP + monsters: added "mons_flag(targetc, M_NO_EXP_GAIN)" to do-while + loop + * (Jesse's suggestion) teleport control/blink spell combo removed: + CONTROL_TELEPORT check removed from random_blink() + * racial bonus added to worn armour in player_AC() + * patched hunger status display bug: added food_change() and redraw + to down_stairs + + +17.06.1999 [Brian Robinson] + + Note: I've tried to annotate all my changes in the code with my + initials [BCR] so you can grep for them to find my changes. + + * some small cleanup here and there + * new makefile written for Linux + * changes to the make process which should spare us future + headaches: + + OS_TYPE variable in the makefile that is automatically made + into a #define during make process (should make it easy to + keep the makefiles straight on the OS) + + moved OBJECTS variable containing the list of the *.o files + to a file called make.obj which is included into the makefile + (should save a little space and keep all makefiles consistent + on object requirements) + * defines.h indented and added a header + * some newgame.cc oddness fixed: various system dependent name + checks were all messed up in a bunch of nested #ifdef stuff + (sorted it out) + * '#define MACROS' now does something: if defined, macros.h and + macros.cc files will be used, otherwise they won't (right now, + Crawl will not work correctly under Linux with MACROS defined -- + see bugs.txt) + + +14.06.1999 [Brent Ross] + + Some changes I added from Linley: + + * bugfix for the Geryon bug + * message added for berserkers chopping up corpses in rage + * some incorrect enums in it_use3.cc (for Asmodeus's staff) changed + * demonspawn xp penalty lowered to 140% + * Elyvilon sacrifice code fixed to limit abuse + * priest.cc and priest.h renamed to abyss.* + * spellcasting penalties for wearing shields upped to +5/+15/+30 + from +0/+5/+15 [buckler/shield/large shield] + * random stat increase added for Draconians + + +13.06.1999 [Brent Ross] + + * Spriggans fully separated from the giant races, creating a + separate block for tiny races in the armour wearing code + * cursed rings identify themselves as "sticky cursed" when put on + * weapon slot updates if player eats food that is being wielded + * bugfix: black and grey scales reversed for demonspawn (with + regards to number of levels gained) + * for spells1.cc, blink() and random_blink(): weapons check removed + because scan_randarts should be only requirement + * bugfix: teleport control now works properly on blink (dependent on + order of includes and target compiler/system) + * #ifndef checking added around all *.h files to avoid problems + similar to those above + * full spell listing line added to character dumps + * creaky doors are [DEX + (Stealth + Traps) / 2] checks; check added + on closing doors, as well + * base values of heavy armour upped by 1 or 2 points + * spells3.cc:you_teleport() was another case of only checking the + weapon slot for a property (hopefully, I've changed all these into + scan_randarts) + * mutation.cc:demonspawn() had MUT_FAST twice; changed the second to + MUT_SHOCK_RESISTANCE (as the comment claimed) + * strength damage bonus had an ugly discrete nature to it; + multiplied the dammod values by 6 to get a smoother version of the + same function + * bugfix: screen needed to be refreshed after spell slot changes + * new equipment listing commands: + + ')' lists current, swap a, swap b, and default 'f'ire weapons + + ']' lists worn armour + + '"' lists worn jewelry (NB: '=' already used elsewhere) + * bugfix: "shoot_skill = you.skills[SK_THROWING]" in item_use.cc was + wrong (should clearly be CROSSBOWS when using a crossbow) + * bugfix: handle_traps in misc() used env.trap_known instead of + trap_known (env.trap_known doesn't seem to be referenced anywhere + else) + * bugfix: Vehumet's gift was still not quite correct + * magical staves detection: staves may be detected over time or + whenever appropriate magic is cast, depending on skill levels + * Call Imp raised to a level three spell (too powerful for level + two) + * a little checking code added to dungeon.cc for monster armour + plusses + * bugfix: more line was misplaced on the recognized item screen + * mix of my/DML's improvements applied to the temp file purging + system + + +02.06.1999 [David Loewenstern] + + * Makefile.dos added + * define.h updated for compatibility with DJGPP + * items.cc, monstuff.cc, mstuff2.cc, and spells.cc cleaned up + (mostly corrected misassignments, unsigned<->signed, unused vars, + etc.) + * enums added to monstuff.cc, mstuff2.cc, beam.cc + * enum.h updated as per above + * autopickup added + * '&' command functions only in debug mode + * remove_ring() now uses inventory letter + * fight.cc features more colourful "hits" (should be useful later to + differentiate weapons) + * bugfix: displaying top scores when no scorefile previously had + existed + + +30.05.1999 [Jesse Jones] + + * highscore() will print more scores on larger windows + * worn cloaks no longer prevents wearing or removing body armor + * worn armor can be dropped if it's uncursed + * armor can be worn without removing the old armor + * missing ponderous armor message added + * from Brent: + + bugfix: weapon line didn't always redraw after casting Blade + Hands + + detect_items() uses '~' instead of '*' + + char_dump.cc dumps failure rates + * wear_armour() changed to allow Spriggans to wear bucklers + * quit only pops up save changes dialog if game_has_started is true + (Mac) + * AppHdr.h replaces config.h + * all *.cc files include their header immediately after the AppHdr + file + + +??.05.1999 [Brent Ross] + + * GNU indent 1.91 [-bad -bli0 -i4 -npcs -npsl] applied to get the + intended BSD indentation style into the code; sorted through some + things indent won't fix (more cleanup needs to be done -- notably, + vertical whitespace and breaking up big lines -- but should be + more readable now; no more column 0 code!) + * various changes to make code work with NUMBER_OF_LINES instead of + 25 + * compile-time option to change default view to non-ibm graphics + * ^R redraw screen command; screen redraws added to appropriate + places + * query added for normal saves (^X doesn't ask) + * ^Y works now; ^Z suspend for Unix systems + * refresh call added to beam.cc so beams are always visible + * various things to deal with multiuser environment: + + compressing save files + + permissions handling + + global lib directory for game files + + changes in name validation and file name structure (added + uid) + * adjust item letter function now swaps items (instead of failing) + * Selective Amnesia spell description is less confusing + * targeting more intuitive for Angband players (t/space accepts + targets), behaves better about canceling spells (added better + abort) + * unarmed combat fixed to the correct amount of time + * bugfix: hunger/noisy wield bug where effects were not removed + * bugfix: air staffs didn't grant resist lightning, yet took it away + (i.e., left the resist with a value of 255, quite good unless you + put on something of resist lightning later) + * rings/wands/scrolls and such output a message when they are + identified by use + * fixed several cases where wielded object changed but the screen + didn't update + * bugfix: a triple level of a demonspawned mutation was never + granted + * patched bug where the inventory is full yet the count is wrong + (this entire thing should be cleaned up) + * curses attributes fixed so that alternate character sets aren't + used under Solaris (this is probably good for any *nix not on a + IBM alternate character set box) + * water and earth elementals fixed for same + * stone lined the finishing room so you can't dig through? + * some rather silly ways of clearing areas of the screen (under + curses) removed; proper curses functions used instead (much + faster) + * bugfix: going up or down stairs would clear the food status + * bugfix: incorrect substitutions of new enums (i.e., "AC += + SP_HIGH_ELF; /* troll */") + * bugfix: stat increases where comment noted "/* str or dex */", but + "str or int" given instead + * Troll's food consumption increased to better balance the race + * Vehumet's gift giving code fixed to actually do what is intended + * experience pool information added to front page + * some of the duplicated titles (traps and doors) changed + * stairs leading out of sub-dungeons changed to '<' character, to + reflect the key required + * portals coloured on the level map; all portals in Pandemonium are + intentionally the same colour + * kobolds receive stat increase every five levels + * bugpatch: Demonspawn sometimes don't receive their mutations + * Armour skill a bit better: get more in combat, a little more + frequently otherwise; EV penalty is now recovered at skill/2 + * Sword of Power reduced in power (now +20 cap, HP/13 - 3) + * creaking doors partially depend on skills (dex + traps + stealth, + with benefits of last two dropping after a total of 10) instead of + simply luck; levitation isn't a sure way to avoid this now + * wield update inserted after reading scroll of recharging + * high score file extended to SCORE_FILE_ENTRIES items (currently, + only the first 15 are ever displayed) + * USE_NEW_BERSERK: + + berserk counter decrements faster when not attacking + (currently using triagular progression) + + butchery is not penalized (in fact, it resets penalty + counter); eating isn't either (no reset, though) + + exhausted counter added to count berserk fatigue + + hopefully this will become part of a new, better standard + berserk + * skills fit onto screen by wrapping the first column (if required) + * bugfix: RAP_PREVENT_TELEPORT and the like didn't do anything + because they checked only the weapon, instead of using + scan_randarts (hopefully, all the cases of this are fixed now) + * bugfix: wield-amulet-that-you're-wearing bug + * redraw for weapon when Blade Hands expires + * #defines: + + CRAWL_NAME -- auto sets player's name + + CRAWL_PIZZA -- string describing player's choice of pizza; + greater likelihood of incidence than others + + USE_BSTRING_H -- handles the bstring.h/string include problem + + NUMBER_OF_RUNES_NEEDED (defaults to 3) -- allows compiled + games to limit entrance to Zot's domain only to those with a + certain number of runes + + USE_CURSES -- for things specific to curses and not just + PLAIN_TERM. + + USE_TCHARS_IOCTL, USE_UNIX_SIGNALS, USE_SELECT_FOR_DELAY -- + to solve various *nix variant problems should people need or + want them + + USE_ASCII_CHARACTERS -- sets the default to non-IBM character + set + + SAVE_DIR_PATH -- useful for setting a global lib directory + for save files, bones files, and the score file + + SHARED_FILES_CHMOD_VAL -- useful with SAVE_DIR_PATH on + multi-user systems + + SAVE_PACKAGE_CMD, LOAD_UNPACKAGE_CMD, PACKAGE_SUFFIX -- for + people who want to use a program to compress and bundle their + save games when they're not playing (not pretty, but good + enough until we invent a better save file system) + * "(q to drink)" added to fountain description when player steps + over one + * Greater Healings base upped to 50 + * Demonspawn transmuters added + * Spriggans and Halflings consume less food (-1) + * wizard's hats and caps are randomly coloured + * carrying capactiy less dependent upon strength; pulled + carrying_capacity code into a single function (as it's called from + various different places); encumberance levels represent fractions + of carrying capacity instead of earlier constant values + * named artefact weapons slightly rarer; Sword of Power has 1 in 2 + check + + +??.05.1999 [Jesse Jones] + + * bugfix: appeared to be three bugs involving extra semi-colons + * file names can be longer than six characters and can include + spaces + * some debugging macros added + * bugifx: dragon() wasn't handling fire drakes, which meant beam + color was uninitialized. + * getstr() only adds printable characters to the buffer (Mac) + * mons_spells() now returns a struct instead of using an int array + -- affects mstuff2.cc, mstuff.h, and handle_wand() + * mons_near() now returns a bool. I've changed code like + "mons_near(o) == 1" and "mons_near(i) != 0" to "mons_near(o)" and + "!mons_near(i)" + * print_description() no longer indexes past the end of the string. + * minor changes made to the code to allow compilation with the + "require function protypes" warning + * UNUSED template function added to config.h + * rewrote describe.cc and describe.h: + + reformatted + + string objects used in place of hard-coded char arrays + + ten new functions split out from describe_item() + + get_item_description() and is_random_artifact() added + * rewrote chardump.cc + + reformatted + + string objects used + + seven functions split out from dump_char + + dumps artifact info + * reformatted viewwindow2(); added some ASSERTs; split out + get_ibm_symbol() + * reformatted monster() and split out ten(!) new functions + * reformatted mons_spells() and mons_cast(); mons_spells() case 49 + uses RED instead of (bogus) 20 for color + * some ASSERTs added to seekmonster() + * DEBUG renamed to WIZARD + * DEBUG_BUILD renamed to DEBUG + * manage_corpses() renamed to handle_time() + * code changed to use new CORPSE_BODY and CORPSE_SKELETON enums + * struct.h deleted + * player::elapsed_time added (holds the total amount of elapsed time + in the game) + * level and game save routines tweaked to include a variable sized + chunk of extra data + * save level code saves a timestamp; load level code uses timestamp + to update corpses and chunks + * many player struct members renamed + * all of the monsters, item_struct, and ghost_struct members renamed + * comment blocks added to the top of all files + * TRACE debug function added + * you and env are no longer arrays + * bugfix: display_char_status() displayed the wrong message if the + player had magic contamination + * look_around() no longer prints a prompt (so things like blink and + open door no longer prompt "Press '?' for a monster description.") + * show_map() accepts '\r' along with '.' + * Cekugob no longer conveys resistances to fire and cold + * spellbook_contents() prints unknown spells in light blue + * show_map() draws shops in yellow diff --git a/crawl-ref/docs/obsolete/changes.400 b/crawl-ref/docs/obsolete/changes.400 new file mode 100644 index 0000000000..e5d853b1f0 --- /dev/null +++ b/crawl-ref/docs/obsolete/changes.400 @@ -0,0 +1,3278 @@ +9 August 2001, Michal Valvoda + * Gordon's destroy_item() fix included + * Complete clean-up of dungeon.cc::give_item() + few changes + for example + - Until now was a lot of items colored twice (by give_item() + and by item_colour()) and sometimes differently + - every item goes to right MSLOT-no more MISCELLANY in MSLOT_POTION + - magical items (wands, scrolls, potions) distribution + * repel undead is working again (in turn_undead() was missing call for + behavior_event()) + * added messages for rotting chunks/corpses in player's inventory + * message when Corona wears out + few other new messages + * fixed some (I hope that all) problems with "polymorph other". + As side effect of some solutions + - MONS_HUMAN and MONS_ELF are now valid and fully functional + polymorph targets + - useless MONS_ANOTHER_LAVA_THING was changed to + MONS_SALAMANDER (in case of problem switch it off in dungeon.cc, + yes, there because water and lava monsters are generated differently) + * Renamed MSLOT_UNASIGNED_I to MSLOT_MISCELLANY, added NUM_MISCELLANY + * rewrote misc. object generation to use NUM_MISCELLANY. + Not important for now but I have many new misc. objects I want to include + after release and it will help later. Also new code is much more readable + and easier to modificate. + * inteligent monsters now pick up gold + * added some new unrand artifacts + (ring of Shadows is getting a bit tired :) + * added underground rivers and lakes, + improved water generation + * 3 new compile options + #define USE_NEW_UNRANDS - switches new unrands on + #define USE_RIVERS - switches new underground rivers and lakes on + #define MISSILE_TRAILS_OFF - turns misile trails off. + - not optimal, but works well on + many computers + - defaultly unset + * other minor fixes and updates + * changes.400 updated + + Notes: + ! generation of water and lava monsters isn't very nice, an it would be + fine to change it one day + ! spells in WIZARD mode probably should be cast with some power + + + + + + + +BUGLIST: + + +LEGEND +** outstanding bug; reproduced or definitely needs fixing +xx outstanding bug report; unreproducable, currently unfixable, + or not a candidate for 4.0.0 release +== fixed and released in some form (alpha, beta, etc - see version.h) +-- fixed bug, not yet released + + + + +** Various XXX and FIXME comments throughout code from Brent. + +== 1. Casting "Corona" at self shows message "The 0 hits you !" and +hurts you (same for Hibernation, maybe also other spells.) + +>> fixed Corona and Hibernation. Possible that other spells still +>> allow this goofy behavior. + +== 2. Dwarven hunters starts with CYAN leather armor (maybe also +others). It should be BROWN. + +== 3. Missing space in message "You feel verybuoyant !" (same problem +with "You feel morebuoyant !") + +== 4. No message when you quaff potion of restore abilities and nothing +happens. + +> fixed by Brent? + +== 5. Maybe there should be some message when you cast "Static +Discharge" and no monster around. + +== 6. Inscription on "Innate abilities, Weirdness & Mutations" screen +should be centered (my fault). + +== 7. Polymorph and unpolymorph messages are really odd - +e.g. I polymorphed kobold and I got message + "The stone giantThe kobold evaporates and reforms as a stone giant." + +== 8. Empty ebony casket should be DARKGREY and not BLACK. + +== 9. Rare weapons (quick blade, double/triple sword etc.) aren't as +rare as they should be. + +> line 2006 in dungeon.cc should be 1+random(10) <= rarity + +== 11. Missing space in "Elyvilondemands penance!". Of course, same +problem with other gods. + +== 12. 2 messages when wearing crystal armor about that it's too +cumbersome + +== 13. map under DOS is working bad - each next line is shifted by one +character +LRH - At line 1810 of view.cc, in the map function, there is a +for loop involved in printing the map. At present it's +for (i = 0; i < 79; i ++);. To work under DOS, the 79 should +be 80, otherwise the map is skewed to the left and looks +very ugly. + +== 14. stoneskin isn't working - if you look at cast_stoneskin() zou +will see it does nothing with AC + +> I have a fix for this - basically remove the 'else' before the +> transformation-AC-adjustment switch in player.cc::{player}_AC(). + +> There's another "bug" there, too, which is that the corresponding +> 'if' ought to include '|| you.attr[ATTR_TRANSFORMATION] = +TRAN_BLADE_HANDS'. + +== 15. Saw "a buggy helmet" + "a buggy orange potion" + "a buggy red potion" + +== 16. Buggy targeting - can't hit monsters in LOS. Could fix.. both + for throwing and beaming? + +== 17. A hill Orc Chaos Knight (Zom) started with 14/15 hit points. !? + +== 20.One more thing that needs cleaning: the new invisible monster code. + You don't get a message when your missile hits a monster, but you + *do* get a message when your missile *misses* an invisible monster. + IMO if we do make invisible monsters harder to detect than they + were, we ought to make these (absent) messages exactly opposite: + no message for miss, yes message for hit. + + +xx 21. wearing Troll Hide, read unknown scroll, ASSERT(index < SIZE) in + FixVec fails, abortion, core. + +== 22. Amulet of Rage isn't auto-identified when put on, but ability is + visible in 'A' menu. + +== 23. torment_monsters in spells4.cc asserts like crazy. It should have a line +like: + if (mon != NON_MONSTER) { + +> fixed again; player wasn't getting hit. Not adding magic resist. + + +== 24. In dungeon.cc there's a huge function called builder() with some code at + the bottom that looks like this: + + if ( you.where_are_you == BRANCH_HALL_OF_BLADES ) + { + for (bi = 1; bi < GXM; bj++) + for (bj = 1; bj < GYM; bi++) + if ( grd[bi][bj] >= DNGN_STONE_STAIRS_DOWN_I && grd[bi][bj] +<= DNGN_ROCK_STAIRS_UP ) + grd[bi][bj] = DNGN_FLOOR; + } + + The increment in the for loops should be swapped. + +== 25. A backtrace does indeed reveal the problem. From line 2432 of + monstuff.cc: + + for (count_x = 0; count_x < 3; count_x++) + for (count_y = 0; count_y < 3; count_y++) + { + good_move[count_x][count_y] = true; + +... + + if ( grd[monster->x + count_x - 1][monster->y + count_y - 1] < okmove ) + { + good_move[count_x][count_y] = false; + continue; + } + + There's a monster at (39, 69), the above loop references (38,70). + +== 26. This line + + unsigned char grik = grd[monster->x + mmov_x][monster->y + mmov_y]; + + from monstuff.cc around line 2730 is also causing an ASSERT failure. + + GDL: in fact, there are a bunch of places in monstuff.cc where fleeing + or confused monsters can try to "run off the map", apart from the + 'good move' checking in bug 25 above. + + +== 27. monsters equipped with missile weapons + commonly associated with launchers who + insist on tossing the missiles by hand. + +== 28.About line 909 of monstuff.cc is + + if ( show[monster->x - you.x_pos + 6][monster->y - you.y_pos + 6] ) + + The electric eel is at (48,36), I'm at (55,32), so we're indexing (-1,10). + The array show is 19x19, and I'm thinking the +6 should be +9. + + There's a similar construct for lava snakes a little further up. + +== 29. An indexing error in item_use.cc, line 3092 or so, after reading a scroll + of enchant armour while not wearing body armour. + + you.inv_type[you.equip[EQ_BODY_ARMOUR]] is inspected even though + you.equip[EQ_BODY_ARMOUR] is -1. + + + do + { + affected = 1 + random2(6); + } + while ( you.equip[affected] == -1 ); + + // NOTE: It is assumed that armour which changes in this way + // does not change + // into a form of armour with a different evasion modifier. + + if ( you.inv_type[you.equip[EQ_BODY_ARMOUR]] == ARM_DRAGON_HIDE + || you.inv_type[you.equip[EQ_BODY_ARMOUR]] == ARM_ICE_DRAGON_HIDE + . + . + . + ) + +== 31. I just disarmed a blade trap, and the game seemed to hang. + +Since TRAP_BLADE are of type DNGN_TRAP_MECHANICAL, this code in misc.cc, +line 1492 or so, tries to make a stack of trap items: + + if ( trap_category(env.trap_type[i]) == DNGN_TRAP_MECHANICAL ) + { + for (j = 0; j < 20; j++) + { + itrap(&beam[0], i); // places items (eg darts), which will automatically stack + + if ( j > 10 && one_chance_in(3) ) + break; + } + } + +But misc::itrap() doesn't create these blades, and instead: + + default: + getch(); + break; + +waits for input. It seems like a very strange default. Ultimately, +you can wait it out by moving back and forth. Then you find a few +questionable item where the trap was. + +== 32. Banishing self to Abyss when you are at Abyss does really + strange effects + ("The 0 hits you !" - I really don't understand why) + Propably it's connected with 0-beams problem - + some spells shows message "The 0 hits you !" when cast at player + I suggest some kind of check whenever is 0-beam casted (e.g. if + its targeted at player then shows message "It's not good idea." + or so) + +== 33. I don't know how it happened but I've found 2 off-screen corridors. + (Btw. I hopped it was fixed) +- Finally, what you've all been waiting for: a fix for the +infamous "corridor off the screen bug" (or at least one of its +aspects). In dungeon.cc in vault_grid(...), add the line +(vgrid == '\0') ? DNGN_ROCK_WALL : +amongst all of the other ones. The problem was that the +vault code was null-terminating some of the lines of the map, +causing the default of DNGN_FLOOR to be put in place of all +the '\0's. + +== 34. Potions, scrolls & wands are not updated when wielded and used. + +== 35. I've already reported this one but I remind that - + When zapping some bolt towards the top of the screen and + gaining level during it the rest of the bolt is drawn at the + bottom of the screen (at message lines) + +== 36. Missing space in message "is recalled." + e.g. "Mummyis recalled." + +== 37. Redundant space in message "You are diseased." + +== 38. Why is "demon whip of flaming" white ? I've found such one. +>> demon weapons are always given random colours. +>> MV: Should not be fixed now. + +== 39. "Summon Daeva" spell summons Angel. + Why ? "Daeva" exists and it's possible + to summon it during summon_ice_beast_etc() + +== 40. At fight.cc::monster_die() is line + ( you.religion == GOD_VEHUMET + && (!player_under_penance() + && random2(you.piety) >= 20) ) + There should be 30 and not 20, because piety equal to 30 is limit + for this ability (see religion.cc). + +== 41. It was mentioned already but - + Descriptive messages like + "It's lightly enchanted to do more damage." + can never appear because of badly placed brackets - {} + in describe.cc::describe_weapon() + Program gets on line + if ( item_dam >= NWPN_SINGING_SWORD ) + and if this fails the programs continues on the line + int spec_ench = item_dam % 30; + and it means it can't get to messages about enchantment. + + Or am I missing something ? + +== 42.In monstuff.cc::mons_speaks() is few times used sprintf() insteed + of strcat(), e.g. + + sprintf(info, " %s \"Help!\"", + coinflip() ? "yells" : "wails"); + + Problem is that in the begining _info_ contains name of the monster + but sprintf() deletes it. It means that output is + e.g. " yells "Help!"" instead of "Sigmund yells "Help!"" + +== 43. Which compile time options will be made standard? What are the the + appropriate defaults for the config file (set in initfile.cc)? These + have to be laid out before the release. + +SEPARATE_SELECTION_SCREENS_FOR_SUBSPECIES I vote no on this one. Could be made into an initfile or command + line option if people really want it, but there just aren't enough + subspecies to justify it. +ALLOW_DRACONIAN_TYPE_SELECTION This one is typically considered "cheating". Part of the fun of + being draconian is finding out what you actually are. +USE_ELVISH_GLAMOUR_ABILITY Haven't really tried out glamour. The grey elf or two I've played + that has had it has never really successfully used it. +USE_BETTER_MINOR_MAGIC_BOOKS These should be okay now. +USE_NEW_CLOUD_CODE This code is pretty cool, I sometimes wonder about potential + twinkiness at high levels with this in a corridor (where it + could fill quite a stretch reaching more than a half dozen + squares from the center of the effect in a single turn). + Maybe a safeguard should be added to keep the effect within + a certain radius from the target? +USE_SILENCE_CODE I've never been overly fond of silence. I don't like the + way it cancels enemy priests and spellcasters. +USE_HARDER_AC_RULES Things are more sane with is option, unless scaled demonspawn + transformers turn into scaly spiders. +USE_NEW_ALTAR_CODE I liked things a bit more random. I once had orcish mines with + three Ely altars (which I thought was pretty interesting). + Modifying this code so there's at least a chance of an outside + altar would be nice. +USE_NEW_MINIVAULTS These are probably okay. + +USE_GOD_COLOURS We do much worse than this right now with all the channels on. +// > USE_GOD_COLOURS +// Yes. Actually, this option should probably be either removed or replaced with +a USE_MESSAGE_CHANNEL_COLOURS option or some such (gods are just part of +this system now). Brings back to mind the possibility of specifying +non-colour-based highlighting options like "stars", "capitalized", +"indented", and such. Would have to switch from an enum to a bitfield, +and the initfile parser would have to be adjusted, but other than that +it would be simple to do. + +USE_OPTIONAL_WIZARD_DEATH Test option, don't need this. +USE_LIGHTER_MAGIC_ITEMS These are reasonable. +USE_NEW_TORMENT_CODE This is good. +USE_SEMI_CONTROLLED_BLINK It's powerful, but as long as it needs the blink spell and + a separate form of teleport control it's probably okay. + As an all in one spell it's over powered (but that's only + in the code for wizard mode testing right now). +USE_NEW_COMBAT_STATS Not sure these really have much of an effect on anyone's + game. Could be left out. +USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES Not sure about the wanderers. The ranger and spellcaster templates + might just be encouraging people to try and re-roll for twinkiness. + Might be best with just the basic warrior wander type. +USE_SKILL_POOL_DRAIN This one is pretty silly. There's no real reason to punish people + who get a large pool (mostly from killing a large monster or two). + To increase the cost because of that doesn't make much sense, and + the skill cost doesn't need to be made any tighter (it might even + be due for a bit of loosening). +USE_NEW_RANDOM Should be default, the suggestion to reverse it into USE_OLD_RANDOM + is probably good. + +From Michal: +> SEPARATE_SELECTION_SCREENS_FOR_SUBSPECIES +No. +> ALLOW_DRACONIAN_TYPE_SELECTION +No. +> USE_ELVISH_GLAMOUR_ABILITY +Yes. Works fine. +> USE_BETTER_MINOR_MAGIC_BOOKS +Yes. +> USE_NEW_CLOUD_CODE +Yes. +> USE_SILENCE_CODE +> I've never been overly fond of silence. I don't like the +> way it cancels enemy priests and spellcasters. +I don't think so.I vote for this. + +> USE_HARDER_AC_RULES +Yes. +> USE_NEW_ALTAR_CODE +> I liked things a bit more random. I once had orcish mines with +> three Ely altars (which I thought was pretty interesting). +> Modifying this code so there's at least a chance of an outside +> altar would be nice. +Agree +> USE_NEW_MINIVAULTS +Yes. +> USE_GOD_COLOURS +Yes. +> USE_OPTIONAL_WIZARD_DEATH +> Test option, don't need this. +Of course no. +> USE_LIGHTER_MAGIC_ITEMS +Yes. +> USE_NEW_TORMENT_CODE +Yes. +> USE_SEMI_CONTROLLED_BLINK +Yes. +> USE_NEW_COMBAT_STATS +> Not sure these really have much of an effect on anyone's +> game. Could be left out. +I think this one is OK, I vote for. + +> USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES +Yes. +> USE_SKILL_POOL_DRAIN +No. + +xx 44. might want to branch off a version of the source for the next release, + with the unused spells and code cut out (along with some of the + unimporant comments). The full code would naturally still be used + as the development code. + +** 45. documentation (crawl.txt, crawl.6 will probably need some changes) + +== 46. bow messages on skill screen might take up too much real estate + (things are already tight for people on 24 line terminals once they + get all the skills) + +== 47. very noisy gcc --Wall compile (it was bad before, I'm afraid I've + made it worse, it's hard to tell I get a lot of warnings from + curses that have to do with some unimportant system conflicts). + +Oh, in makefile.sol... one of the $(INCLUDES) is spelled INCLUDE + +== 48. giant spores sometimes seg fault when exploding (I added a simple check + for NULL, but that's probably not the problem) + + ugly, ugly, ugly, ugly. But fixed. the problem was that spores + were kind of cleaned up before exploding (so that the death message + wouldn't come twice), but then they fell through to the "handle + special ability" case the next time through the "monster action" loop + and all hell broke loose. + +== 50. look into why you.equip[EQ_WEAPON] (aka weapon) is used in + fight.cc::monster_fight() and monster_attack() (ie. when the + player isn't even involved!) + + > no effect in monster_attack() + > bizarre use in monster_fight() - the + attacking monster gets several attributes of the player's + weapon!!! This is clearly wrong. + > MSLOT_WEAPON was also used in a couple places where hand_use + was required. + +== 51. BUG: no "scores" file == segfault. + +> some pretty nasty bugs in the score file stuff. Cleaned up segfault +> and some ranking bugs. Scores file is now proper text; Crawl can +> still read old scores files. Scores of 0 no longer printed. No more +> segfault on non-existent file. + +xx 52. 'X' (view map) causes core dumps on terminals larger than 64 lines? + +> could not repro on Win32. Tried 65 line terminal, 'X' look no problem. + +== 53. Anyway, up on onelist.com (or egroups.com, whatever) +is an updated mon-spll.h file including the enums for +MST_foo and a couple MS_foo that Brent had missed +in the file ... note that the comments before these lines +in mon-util.cc: + +static unsigned char mspell_list[][7] = { +#include "mon-spll.h" +}; + +are duplicitous of those in mon-spll.h, and can probably +be struck (or vice versa?) ... I had also thought that there +was a MS_foo matching value 100 (the beastly equivalent +of SPELL_NO_SPELL) ... maybe Gordon can add it in? +clear application to mon-spll.h and monstuff::handle_spell(). + + +of course, one could go whole hog and add enum constants +for the "slots" in the template (actually the position *less one* +would be enummed, see handle_spell() and mons_spell_list() +for details) ... + + +these lines in monstuff::handle_spell() can be enummed +with the appropriate MST_foo enum constants: + +int msecc = ((monster->type == MONS_HELLION) ? 30 : + (monster->type == MONS_PANDEMONIUM_DEMON) ? 119 + : monster->number); + +[[ 30 == MST_BURNING_DEVIL, 119 == MST_GHOST ]] + +that 119 value also turns up in mon-until::mons_spell_list() ... but +this gets into "overlap land" because these values are stored in the +sec field of the monster struct, which stores a number of values +unrelated to spell-casting (though I guess applying the template +enum throughout the codebase is one way of sifting out when sec +values are used for one purpose instead of another ...) *ANYWAY* + +== 54.In enum.h -- + +/* these are for the player spell struct, we'll see what's what later +*/ + +#define SPELL_FOOD(x) (x) +#define SPELL_MANA(x) (x) +#define SPELL_LEVEL(x) (x) + + +All of the above can be killed, as the macros are no longer used. + +The SPELL_EXCLUSION enumeration (right below the macro +definitions) can also be killed, as I never implemented it, and in +hindsight, if it is ever to be stuck back into the player spell +data structures, there is a much better way of doing it. So, please +yank these out, before someone gets hurt :P + +So, this bit in spl-util.cc can also be axed: + +/* //jmf: commented out; add field `restriction' to spell struct if desired + // (and if anyone finds a use for such a thing) + int spell_restriction( int which_spell, int which_restriction ) + { + int this_restriction = (int) seekspell(which_spell)->restriction; + return ( this_restriction == which_restriction ); + } // end spell_restriction() + + */ + + +== 55. Minor typo: + +MST_RAKSHAKA + +should be + +MST_RAKSHASA + +so that it matches up with the monster's actual +name throughout the codebase. Nothing major, +but it will require fixing (present in enum.h and +the enummed mon-spll.h I just uploaded). + +== 56. "* * * LOW HITPOINT WARNING * * * + You die..." + + At that point, it's really too late. The warning perhaps + ought to occur at the beginning of the player's turn as + opposed to when the character takes damage. + + I've also seen two warnings in one combat turn ... can't + remember if death accounted for one of them. + +> The problem is that the check is you.hp... it should be (you.hp > 0)... +> I quick-fixed that one while I was trying to get the code out the +> door and missed. + +== 57. Hunger messages don't seem to appear, even if their color is set. + +> Gave general cleanup of food.cc; merged hunger_warning and food_change. +> removed unnecessary modification of hunger status from level save/load, +> fixed up some logic problems. + + +== 59. Lot's of the enums in enum.h have trailing commas, eg + enum CONFIRM_LEVEL + { + CONFIRM_NONE_EASY, + CONFIRM_SAFE_EASY, + CONFIRM_ALL_EASY, + }; +I don't think this is legal in ANSI C. + +> Borland C++ didn't complain with Wall, so it's not a problem. + +== 61. In libmac.cc there's a function called FlashButton. The line that calls +HiliteControl should look like this: + HiliteControl(control, kControlEntireControl); + +== 62. In message.cc mpr's definition includes default arguments. This isn't +legal C++ (only the declaration can have default arguments). The same +applies to random_near_space and simple_monster_message in monstuff.cc, +apply_random_around_player in spells4.cc, and yesno in stuff.cc. + +== 63. monspeak.cc needs to include monspeak.h at the top of the file, not +monstuff.h. + +== 64. overmap.cc includes curses.h, this should be wrapped in #if !macintosh. + +> Acutally it should be wrapped if USE_CURSES is not defined. Which it is now. + +== 65. spl-util.cc should include the standard limits.h instead of the +non-standard values.h and should use INT_MAX instead of MAXINT. + +== 66. The MacStuff directory should be deleted. + +== 67. Very Old Buglet: + Spider Form spell turns one into a black 's', which corresponds + in monsterland to a scorpion, while giving one all the features + of the noble wolf spider, represented by a brown 's'. + +== 68. It's really not that bad. Worse is the fact that I noticed that +breathe fire gives a bonus if the player is transformed (doesn't +matter what: Ice Beast, Blade Hands, or Dragon)... that's a bug. + +== 69. player.cc - If you look at line 2312 you'll see that + redraw_screen () is called. But it's problem under + DOS because redraw_screen() is defined only under + PLAIN_TERM. + See stuff.cc - there is + #ifdef PLAIN_TERM + void redraw_screen( void ); + +> got rid of all of the plain_term() wrappers around redraw_screen. +> instead, redraw_screen() becomes a no-op for non-plain term systems. +> I hate seeing #defines all over (supposedly) non-system dependent code!!! + +== 70. view.cc - at two place there is + + #ifdef DOS_TERM + puttext(2, 1, 34, 17, buffy); + #endif + + Probably it's possible to compile that with some compilers + but not all and corretly it should be + + #ifdef DOS_TERM + puttext(2, 1, 34, 17, buffy.buffer()); + #endif + +== 71. When you cast "Twist" spell and choose direction you'll always get +message +"There is no monster there!" +even if it's not true. If you want to hit monster you have to target +monster by using "*" or "+". At least this spell shouldn't ask for +direction but for target. + +xx 72. After battle with guardian naga character is told he is not carrying anything. + +> don't see how this could happen.. g. nagas can't affect player inventory. +> must have hit a key that tried to use an inv type you didn't have, or num_inv_items +> got out of whack. + +xx 73. Some initial prompts not prompt colour. I'll have to document which. + +== 74. Throwing anything left seems to cause a segfault and core file ... hmmm ... + item_use.cc, line 1294: DUMB BAD CODE! Throwing anything while weilding + nothing results in a crash. Clearly someone plays neither Transmuters nor + Monks. Clearly we need some function to safely get the current weapon. + +== 75. Throwing stuff while weak: I'm of the opinion that things thrown ought + to land at least next to the player, while currently, large things end + up at the player's feet. This annoys me - "I didn't say (d)rop, I said + (t)hrow!". + +> it's a playability issue, especially with large amounts of items and +> autopickup. All thrown objects will go at least 1 square - we'll +> consider a 'throw' of a very heavy object equivalent to 'shove' it. :) + +== 77. line 234 of mon-util.cc ought to be: + "if (mc == MONS_PLAYER_GHOST || mc == MONS_PANDEMONIUM_DEMON)" + but instead it's: + "" + + This will fix the elemental damage problem I was complaining about -- + clearly Linux does not automagically give clean pages. + +== 78. Remove trailing commas in enum.h + +== 79. Stores are still trying to sell me gold pieces, and at extortionary rates. + +== 81. + spells4.cc::418 assert failed: ASSERT( targs[i].x != 0 && targs[i].y != 0 ); + should this be ( targs[i].x || targs[i].y ) ? (YES) + +== 82. if (mons_flag(monster->type, M_SPEAKS) && one_chance_in(21) + && !silenced(monster->x, monster->y)) +{ + mons_speaks(monster); // mv: removed silence check +} + +That check for silence shouldn't be there, because mons_speaks() +handles silence by itself - see monspeak.cc (Btw. I've already removed +this check when I wrote mons_speak(), but somebody have returned +it back *grin* ). + +== 83. However, in a couple places in acr.cc, there is code like this: + + if (grd[you.x_pos][you.y_pos] == DNGN_LAVA + || grd[you.x_pos][you.y_pos] == DNGN_DEEP_WATER) + { + if (you.species == SP_MERFOLK) + { + mpr("You dive into the water and return to your normal form."); + merfolk_start_swimming(); + } + + fall_into_a_pool(true, grd[you.x_pos][you.y_pos]); + } + +== 84. // From: Daniel Ligon +[easy_butcher] +// When I see it happen, I have no weapon in hand and no weapon in the +// "a" slot. After hitting "D" to Dissect, I am prompted for a weapon. +// I can choose a cursed weapon of either known or unknown status and will +// receive a message that the weapon sticks to my hand. In both cases, +// I return to unarmed after butchering - and the weapon is now identified +// as being cursed. + +Okay, then the problem isn't with the original check... all that +needs to be done is make sure that is the target weapon (after the +call to wield_weapon which does all the validating and prompting) +isn't removed if it's cursed. Should be a fairly simple check, +although it has to validate if a weapon is wield first (of course). + +== 85. This seems to be a new bug (can't see an obvious cause)... + Brain Worms seem to have a sticky flame attack now. + +> SOMETHING was(is?) setting mon->number to be equal to mon_type. This +> was setting butterflies (MONS_BUTTERFLY == 66) to have a colour +> of 66, and brain worms (MONS_BRAIN_WORM == 69) to have the +> spell type of MST_MOTTLED_DRAGON (69). Why?? I don't know yet. + +>> turned out to be define_zombie. Random zombies were not getting +>> zombified due to some parameters getting passed incorrectly from mons_place(). +>> all quasi-zombies were getting correct mons->number set but then mon->type +>> was not being set. + +== 86. This appears in player.cc::player_hunger_rate() + + // jmf: hunger isn't fair while you can't eat + // Actually, it is since you can detransform any time you like - bwr + if (you.attribute[ATTR_TRANSFORMATION] == TRAN_AIR) + return 0; + +Some testing reveals that in fact one cannot untransform ("You're too +hungry.") nor even turn visible. If hunger was not meant to preclude +these reversions, there's a bug in the ability code. + + - Josh +I would guess that there is a bug in the ability code wrt +untransform - I have not looked at the code for this in a +while, but the "untransform" ability is likely lumped with +all other abilities in terms of forcing a check of one's +current hunger level before proceeding further into checks +and then (finally) triggering the ability. + +Trivial fix, that is where the bug is: the ability code (98% +certain) - it does not make sense to attach a hunger cost +to detransformation, unless you wanted to curse players +first learning how to transform with costs on both ends +(it takes effort to change shape, effort to change back). + +The latter model of double-ended costs associated with +transformations make sense, but I do not believe this was +the intended model in Crawl. + +xx 87. PS: I was looking through player.cc because a white imp "chilled" my + mummy assassin. Still looking for how that could happen. + +> everything seems to be WAD: +> could have been wearing two rings of fire, or dragon armour, or had a +> randart with cold susceptability. Mummy only gives resist, not immune. + +== 88. PPS: White imps seem to pick up darts & stuff, while red imps don't. + IMHO that's exactly backwards. White imps are have a much better + range attack than darts provide, while a dart-throwing red imp + would be a major pain. + +> actually the issue is gmon_use (the last parameter in mon-data.h) +> - red imps have 1 (opens doors) while white imps have 3 (doors, +> weapons & armour). sorry not explicit enough. + +>> No, make white_imp.gmon_res=1; red_imp.gmon_res=3. Current values +>> but reversed. + +== 89. PPPS: Noticed punctuation creep: "You can't weild a two handed weapon + *AND* a shield at the same time." Patriots should conserve stars. + +== 90. The eat chunks on the ground prompt is uncoloured. +Following prompts are coloured. + +== 91. Prompt & crashes: try doing an x-look while you +can't see any monsters, then press '+'. You will +get a nice, shiny new core file in your directory. + +The x-look prompt also claims to allow you to go +to the current target using 'p', but does not. 'P' +does nothing. + +== 92. Elves in their Halls seem to wear a lot of Orcish armour. + +== 93. > And finally to end on a good note... +> I've love what has been done with the coloring, the autopickup and +> the automatic door opening. This is *very* useful and as a user I +> truly do appreciate the effort here. (It would still be nice to be +> able to pick up gold when your slots are full but I'm not going to +> complain.) + +Argh. I haven't checked the latest dev source (but I will +this weekend), but is this still the case? If so, can Gordon +please put it in the bug queue as something to fix for the +upcoming release of 3.*cough* ??? + +== 94. +> I was descending through the Elven Halls, and reached level 6. On this +> level were three stairwells down to level 7, and an entrance to the +> Labyrinth. +> +> It is my habit to descend/ascend each stairwell as I find them, since +> the dungeon areas of crawl are sometimes disconnected. So I believe +> the three stairwells on this level actually did lead to level 7. +> +> After filling my gut on fresh elven meat, I descended in the Labyrinth, +> spiraled in to the Minotaur, slew it, grabbed its stash, and ascended +> back to the Elven Halls, appearing at one of the stairwells down. +> +> But now all three of the down stairwells on this level lead to the +> Labyrinth rather than level 7, and the Labyrinth is being mapped. + +I can verify that I had visited Elven Halls level 7 (I had saved a +copy of my player files before entering the Labyrinth). As it happens, +level 7 was the bottom of the Elven Halls with the Vault. + +I cleaned out the Vault, then returned to the Labyrinth. Once again +returning from the Labyrinth caused all the stairwells on level 6 to +lead to a mappable Labyrinth. + +>> Fixed. up_stairs() was not correctly setting was_a_labyrinth in +>> the call to load(), and so the labyrinth level would get saved +>> _over_ the n+1 th 'real' level. REALLY BAD. Yuck. Bleah! + +== 95. Auto-butcher + Staff of Power + dagger in off slot. +Every time a corpse is butchered max SP is reduced... + +This probably has to do with the fact that staves of power are one of +the few things that are toggled on wield/unwield (a lot of the other +properties are calculated as required). + +== 97. The routine mon-util::seekmonster() needs to check that +> +> mon_entry[(*p_monsterid)] +> +> is not -1 before returning +> +> &mondata[mon_entry[(*p_monsterid)]] +> + +== 98. In my current game, I found an entrance to the Hall of Blades on +> level 4 of the Vaults. I entered, killed a few weapons, and returned. +> Upon returning, the game crashed. When I restarted, I was on level 1 +> of the Crypt. I exited the Crypt was back at the entrance I had found +> on level 3 of the Vaults. +> + +- Fix for the Hall of Blades staircase bug... Although the +staircases leading out of the HoB are called staircases "back +to the crypt", and although the enum for them describes them +as returning to the crypt, and although climbing one of them +sends you to the crypt, they are in fact supposed to lead back +to the vaults, and the level range of the HoB has been set +accordingly. To fix: + - Change the name of the enum DNGN_RETURN_CRYPT_II to + DNGN_RETURN_VAULTS_II (may need to be _II or _III) + - Change in direct.cc, in look_around(...), "A staircase + leading back to the crypt" to "A staircase leading back to + the vaults" + - Do the same in item.cc in item_check(), where it tells you + what you're standing on + - And, finally, in up_stairs() in misc.cc, the case for + DNGN_RETURN_VAULTS_II (or whatever it's changed to) needs to set + you.where_are_you to BRANCH_VAULTS. + +>> this code needs a complete overhaul to be more comprehensible, +>> but I don't know if I'm up to it at the moment. :\ + +== 99. There was lava in the Crypt. I don't object to it, but it seems a +> little out of character, much like Josh's observation that elves wear +> a lot of orcish armour. + +== 100. Characters who might go berserk while fighting, say from the mutation +> or wielding a randart, can have go_berserk() called on them while they're +> already berserk. + +>> which is fine. Fixed up berserk messages for all possible situations - +>> no more double messages, or inappropriate ones. + +== 101. I've run across a couple Borises in my current game. It must be a +> popular name among Liches. + +>> fixed. Bad range check in dungeon.cc. + +== 102. If a monster tries to mutate you and fails due to your resistance +> to such, you get a message from mutate() - "You feel rather odd for a +> moment." and from direct_effect() - "You feel very weird for a moment." + +>> fixed all manner of mutation messages. + +== 103. Removing a ring of strength causes these messages: +> +> You are being crushed by all of your possessions. +> You possessions no longer seem quite so burdensome. +> +> since this happens in item_use::remove_ring(): +> +> case RING_STRENGTH: +> decrease_stats(STAT_STRENGTH, (you.inv_plus[ring_wear_2] % 100), true); +> increase_stats(STAT_STRENGTH, 50, true); +> break; +> +> The suppress_msg flag of decrease_stats and increase_stats does not get +> passed to player::burden_change(), which has no arguments. +> +> It is interesting to compare that code with similar code to remove the +> strength one gets from a randart ring. From it_use2::unuse_randart(): +> +> const int str_plus = inv_randart_wpn_properties( unw, 0, RAP_STRENGTH ); +> if (str_plus != 0) +> { +> you.strength -= str_plus; +> you.max_strength -= str_plus; +> you.redraw_strength = 1; +> } +> + +== 104. There is a monster named "another lava thing". Not a bad name, but +> it leads to "You kill the another lava thing!" messages. Perhaps a name +> change to "mother of all lava things" or "lava thing's cousin". + +> "another lava thing" has no stats in mon-data.h, so it was +> obviously a dummy placeholder and has been removed from possible +> generation lists. + +== 105. Assorted typos: +> +> You possessions no longer seem quite so burdensome. +> You heara loud "Zot"! +> +> File name: Minh.txt +> File name: Minh.txted successfully. + +== 106. Something causes misformatting of the descriptions for +> SPELL_APPORTATION and RING_TELEPORT_CONTROL; + +== 107. After I picked something up, I could drop one thing, but nothing after +// that. I think we ought to have periodic checks that num_inv_items is +// correct - recounting once per turn is not a significant calculation. + +Ah! There's the problem... that variable was deprecated a while back +and replaced with explicit code in the standard places (because it +was impossible to keep it up to date). If someone is actually making +use of it again then of course the entire system is going to break +down. + +>> really deprecated this time. + +== 108. Fixed apply_area_within_radius(). Makes far fewer unnecessary calculations + now. + +== 109. Fixed rendering slowdown on windows console. + +== 110. Scorefile reading doesn't pick up special characters like a-umlaut or e-ague + +== 111. I was in the Tomb, slaying mummies with style and grace, so naturally +a fair amount of cursing of my stuff took place. + +The Ring of Shadows now has an inv_plus of 100, I assume since +monstuff::curse_an_item() adds 100 to inv_plus. I can't remove it, +since inv_plus > 80. It is not labeled as cursed and scrolls of remove +curse are ineffective since inv_plus < 130. I suggest that, for now, +curse_an_item() should leave randarts alone. + +As an aside, is "artefact" a valid variant spelling of "artifact"? + + +== 112. Another result of the great Mummy slaying was that my flesh would +rot away. I think display_char_status() should list this. + + +xx 113. I came a across a butterfly which had color 66. I could not +determine why (N.B. 66 is MONS_BUTTERFLY.. what's going on?!) + +> me neither. All calls to create butterflies should go through +> define_monster(), which sets m->number to 0..15. See #85. + +== 114. in view.cc, inside the #ifdef DOS_TERM things there are some +bad things happening to the puttext calls. buffer.buffer() +should be replaced with buffer, and buffer2.buffer() (or is it +buffer.buffer2()? I forget) should be replaced with buffer2. +Otherwise it refuses to compile (this may be an incompatibility +between borland C++ and djgpp, Gordon) + +MV: Buffer.buffer() should be only buffer. Problem is with _buffy_ which +needs to be _buffy.buffer()_. + +== 115. Also in view.cc in noisy() at 1304 the distance function is +being used wrongly. Change if (dist <= distance(... to +if (dist >= distance(.... This problem caused most monsters on +a level to wake up as soon as a noise was made, and was why +characters were getting mobbed. + +== 116. the init file is broken, at least under DOS. It is reading +in the player's name okay and is finding the other options, +but when read_bool() tries to work out whether an option is +followed by "true"/"1" or "false"/"0" it fails to detect +anything and just goes with the default. I don't know how any +of the weird code in initfile.cc works (what was wrong with +the stdlib string functions?) but, at a guess, this might +have to do with the way DOS writes End Of Line in its text +files - if a line is concluded by something other than +'\0' the string code might fail. But that's just a guess. + +>> made a couple changes and it seems to work fine on win32.. +>> but this is highly dependent on the compiler's implementation +>> of the standard string template (grrr!) + +== 117. A blank/empty scorefile will not be updated; scores of 0 not kept. + +> both fixed. + +== 118. If you aren't carrying anything except money, you can't drop it (money) + +> can now specify quantity of money to drop. Accepts any value. + +== 119. My character entered the Tomb, arriving in the upper left hand corner, +at position (9,7). I tried to target, and failed the ASSERT for the +mgrd array. This took place around line 1227 of direct.cc in the +mons_find() routine. const int targ_x = you.x_pos + temp_xps - 17; + const int targ_y = you.y_pos + temp_yps - 9; + const int targ_mon = mgrd[ targ_x ][ targ_y ]; + +In this case, you.y_pos is 7, temp_yps is 1, and so targ_y is -1. + +== 120. The Amulet of Cekugob does not stop one from teleporting when one + has the teleport mutation. + +== 121. I entered Hell from level 22. When I exited Hell I was placed on + dungeon level 27. + +BWR:I believe this was the better alternative of earlier problems dealing +with returning to the main dungeon... used to be you could end up on +level zero, or on a semi-random level inside solid rock. After those +problems were fixed the portals seemed to work as above. + +== 122. When I returned to Hell, I was placed on one of the down stairwells. + +== 123. Remove which piece of jewellery? + That isn't a piece of jewellry. + +Webster has jewelry, jeweled. Changed all occurances. + + +== 124. Oops, that ring feels deathly cold. + B - a cursed amulet of the gourmand (around neck) + +xx 126. I hit a giant spore with a bolt of poison flame, and the critter +> didn't explode. It just disappeared. + +LRH writes: +Not sure exactly, but I'm pretty sure that if you do enough +damage to a spore with a single attack it will fail to explode. +The relevant code should be in monster_die(). + +== 127. A fire giant hit my Spriggan (AC: 5, EV: 13) with several fire balls +> over a few turns, but none hurt much. I didn't get any messages about +> resisting the effects. Is this the odd fire resistance problem? + +>> monster fireball damage wasn't being set correctly. + +== 128. The Spriggan has strength 10 and dexterity 21. When he wields a bow +> or crossbow, I get the message: +> +> Your relatively low strength is limiting your use of this weapon. +> +> I don't think strength has any effect with crossbow, and probably doesn't +> effect bows. + +BWR: As a side note, is the low Throwing skill message still on the skills +screen? Has anybody tested it with all the skills yet (there is a +lack of room, and the screen should fit in 24 lines). Maybe that +message would be better as a message when wielding the bow itself, +although I'm not sure how much the mechanic is required (I typically +upped Throwing skill along with Bows because it's a cheaper and faster +way to up accuracy and damage than raising Bows alone). + +== 129. The file makefile.obj seems to be missing... this is a problem + for most of the other makefiles which include it. + +== 130. The APPNAME in makefile.sol should probably be changed back to crawl. + +== 132. In spells0.cc should be also included stdio.h under DOS +because sprintf() is used. + +xx 133. > Are you going to do the player-ghost/demonlord "structure" as well? +// + Um, dare I ask, why? I've never looked at this part of the code. +BWR: +It's currently an array of chars. It would probably be easier to +understand as a struct with fields for AC, max HP, spells, resistances +and such. + +== 134. When I cast Static Discharge, I get occasional fails of the ASSERT +on line 419 of spells4.cc: for (int i = 0; i < targs_found; i++) + { + ASSERT( targs[i].x && targs[i].y ); + func( targs[i].x, targs[i].y, divided_power, 0 ); + } + +> Fixed. Brent's algorithm is sound, but his coding wasn't. :P + +== 135. When I use the Sif Muna granted ability of Selective Amnesia, I hit +an array bounds assert in seekspell() - which is exactly: + +return &spelldata[plyrspell_list[spell]]; + +The value of spell is 210 (SPELL_NO_SPELL), and so plyrspell_list[] +goes out of bounds (it is not protected by the Fix[Ary|Vec] stuff) +which then triggers spelldata[] going out of bounds. + +>> plyrspell_list[xx] being set to SPELL_NO_SPELL _before_ call +>> to spell_power. stupid logic error. + +== 136. I swung my Staff of Air: + +You miss the imp. +You miss the imp.the imp is jolted. +You are wielding a staff of air. + +== 137. I'm wearing an amulet of the gourmand, but I never seem to get labelled +as being Full (or Engorged). + +>> is this a problem? Gourmand allows you to eat rotten/contaminated flesh, +>> how could this be related? + +== 138. Trolls can eat huge amount of chunks of flesh without becoming full + +> oops. Nobody could ever get full. Stupid logic error. + +== 139. Name in INI file causes crash unless all caps. + +xx 140. Non-Beams displayed one cell at a time (thanks to Michal) + +== 141. M_SPELLCASTER removed from ball lightning. + +== 142. All beams/missiles leave a visible trail now (at least until window + redraw). Was too hard to get right w.r.t. killed creatures and cloud + trails, and most liked it the other way anyways. + +== 143. Some enchantment beam behavior fixed. + +== 144. Update & examine command-line switches & options + +// - update & verify behavior of command line switches & options +Monochrome isn't connected to anything. The "no colour" option could +be handled by imposing a set of colour macros (if they were made widely +available)... most monochrome systems can do bold/standout, although +that typically ends up backwards or ugly (if it's done via reverse). +Could possibly just be removed rather than bother with it. +The "-nb" (no black) option is obsolete with colour macroing. +Basic options to consider: +- list scores (param for top X) +- select race/class +- character name (for loading and starting new character) +- pointer to game directory (ala crawl_dir option) +- pointer to initfile (ala CRAWL_RC environment variable) +Later things can get fancy, but we should at least have those. + +xx 145. I'm playing the latest win32 binary pre-release (January 11). +The first problem is that I can't get to the religion screen. To produce +'^' with my keyboard I have to press + +followed by a space. However, in Crawl this doesn't work (it used to work +with earlier versions before this series of win32 binary pre-releases). +All I get is 'Unknown command'. + +== 146. When zapping a wand of Draining at a line of Kobolds and Big Kobolds, +: the game froze if something was killed. The game was recoverable, and +: the bug repeated itself. Killing these by hand caused no problems. +: Using this wand on other creatures caused no problems. + +>> probably related to double-whammy monsters were suffering from poison/ +>> draining. Hit dice might have gone below zero, etc. + +== 147. Any ranged attack that hits you has a chance of destroying +: your scrolls, not just fire-based ones, and they all give the message +: that your scroll has burst into flames. Confused the heck outta me +: the first time it happened. "The puff of frost hits you! One of your +: scrolls bursts into flames!" + +== 148. +: 1 other thing I just thought of. When targetting in version 3.43 +: you could use the dot on the keypad to select the target. Now, to +: use that dot, I have to use the shift button with it. + +xx 149. Also it seems like mummies have lost some of their cold resistance... I +had trouble with an ice dragon that should probably have been real easy... +on the other hand fire damage does not seem to be all that nasty to them +anymore (I dunno about the mummy monster but this seems to be the case for +mummy player chars, none of my equipment provided fire resistance). + +== 150. Fixed new description() problem. Oops. + +== 151. Changed some messages for burning and chilling monster attacks. + note that mummies _could_ be chilled by melee attacks - "chilled" in fact + means that the player resists cold. New messages are tied to actual + extra damage from fire/cold. + +== 152. Fixed "always poison/drain" on beams/bolts that didn't actually + hit (problem with side effects in check_mons_resists() -> + mons_adjust_flavoured()) + +xx 153. The level files for my characters don't seem to get deleted, even after +the character dies. I'm assuming that they're meant to be deleted, as +they used to be... or is there some reason that the game now keeps them? + +> can't repro - works fine on 2000. + +== 154. I found one of those checkerboard-like rooms with alternating wall and +floor squares (you know what I mean? The ones where you can only move +diagonally, sort of like the Hive, but occuring in the regular +dungeon?)... it was made of metal walls, and had a small open area in the +middle. There were some items which seem like they should have been +placed inside the open area, but were inside the walls instead, and +therefore inaccessible. I can't figure out how to get Crawl to dump a +screenshot, but I'll recreate it here, using X to represent a wall. +.X.XXXX +X.X.[.X +.X.X@)X +X.XX!.X +.X..XXX +X...X.X +.X.X'X. +All three of the items around my character are inside walls; examining +them says: +You see a [item name] here. +A metal wall. +You can't move on to them or anything. Note that if you shifted them all +three squares down and two to the left, they'd fit nicely in that little +open area, which leads me to suspect that possibly that's where they were +meant to be. + +>> several places in dungeon.cc where this could happen. Think I've squished +>> them. + +== 155. I'd suggest killing /unused, but only after moving oldmaps.txt +into /misc. Within /misc, scoretab.cc should probably be updated +to the new scorefile format (or killed) and untab.pl should be +killed, as it is an unreliable detab script - rh.bat seems +near useless. + +In /Docs (why is this uppercase?), NEW.txt is empty, buglist.txt +should be updated to the current status (about which, Gordon only +knows), I need to migrate messlog into changes.340, changes.340 +needs to be renamed changes.400, the remaining files need to be +updated. + +The old LOS code can die, I think I lost my fascination with it. +I don't believe anyone else was defending its existence. + +== 156. On this topic, I get tons of warnings about FixVec.h and FixAry.h +not having a final newline.   Could you add one to these? + +== 157. The compiler also noted a problem in dungeon.cc: + if (you.where_are_you == BRANCH_CRYPT || you.where_are_you == BRANCH_TOMB) + { + if (type_floor == DNGN_LAVA) + type_floor = DNGN_SHALLOW_WATER; + if (type_2 == DNGN_LAVA) + type_2 == DNGN_SHALLOW_WATER; + } +The last statement should probably be an assignment. + +== 158. Finally, I can't compile dungeon.cc at all: +dungeon.cc: In function `void link_items ()': +dungeon.cc:6395: warning: comparison between signed and unsigned integer expressions +FixVec.h: In method `FixedVector::FixedVector (TYPE, TYPE, ...) +[with TYPE = char, int SIZE = 7]': +dungeon.cc:7998:   instantiated from here FixVec.h:125: `char' is promoted to `int' +when passed through `...' FixVec.h:125: (so you should pass `int' not `char' to `va_arg') + +This also affects spells4.cc (instantiated from line 729). + +== 159. Problems with print_description() under DOS? +Stupid, stupid, stupid.. good god. used .data() instead of .c_str() + +== 160. Make Boris back into a non-Unique and give him appropriate mons_speak() + +== 161. More portable savefile format. + +== 162. Well, played with the new pre release, speed is the same (drat) and the +ghoul food bug still exists... the one where they have to eat a meat +ration to cure the 'hungry' status. Haven't hit on any other bugs yet but +I've only run 3 characters who all had very short lives. + +== 164. Direct-effect monster castings (smiting, etc) would crash the +game (forgot to set beam_source for non-beam type attacks). + +== 165. The warning messages given for wielding objects should also be given +at the start of the game (if applicable). + +== 166. Anyways, I'm starting to +think that the margin should be a little smaller, the 79 colomn one is +just too wide to read comfortably... a 70 column one should be fine. + +== 167. +// > All staves work like this - the special power can activate even if +// > you miss your foe by a mile. +// > +// > Is this desired behavior? +// +// I would think not. + +** 168. Enable loading of 3.30/1.x chars & level files. + +== 169. When casting Corona and hitting somebody I'm allways getting +additional message "Nothing appears to happen.". +eg. The goblin is outlined in light. + Nothing appears to happen. + + (silly logic problem) + +== 170. In ouch.cc is under DOS missing #include + +== 171. There is still small problem with new print_description(). + Description window for DOS is (25,1,80,25) - see for example + describe_spell(). It means that lineWidth in print_description() + can't be 70 under DOS_TERM and should be 54 or so (of course + those windows can be changed but it's much more work). + DOS term and shoul be 54. + +== 172. I started a grey elf wizard and it begins play with an orcish robe, not an +elven one. (flimsy coding) + +== 173. +"You miss the ice beast. +The ice beast hits you! +The ice beastchills you. +Ouch! That really hurt!" + +== 174. tag.h and monstuff.cc need final newlines + +== 175. tags.cc and files.cc include mem.h, but gcc doesn't come with one. + The routine memcpy is declared in string.h, which is already included + in these files, so commenting out worked for me. + +== 176. spells3.cc has the same problem with FixVec.h that dungeon.cc had + in pr6. + +I guess around line 729 or so. :) g++ -Wall -DLINUX -g -DDEBUG -c spells3.cc +FixVec.h: In method `FixedVector::FixedVector (TYPE, TYPE, ...) +[with TYPE = unsigned char, int SIZE = 7]': +spells3.cc:729: instantiated from here +FixVec.h:125: `unsigned char' is promoted to `int' when passed through `...' +FixVec.h:125: (so you should pass `int' not `unsigned char' to `va_arg') + +== 177. Was just looking at that code, and noticed the comment about the +"other five gods" (the one's the player cannot start the game +worshipping). Anyways, that comment was added there before the +always_greet option, which does meet the requirement for filling +in the extra gods (since the real purpose of always_greet is to +remind the player of some non-obvious details about their character +in case they haven't been playing in a while (ie. race, class, deity, +weapon penalty). + +== 178. Could you please put the string "-O2 -fno-strength-reduce" in your makefiles +dealing with GCC? It'll speed up the game by a *huge* amount. (The +-fno-strength-reduce is to get around a bug in many versions of GCC.) +Because of the exceeding slowness in the released versions, I compiled my own +version, which leads to point + +== 179. Why in the name of Cthulu did you remove "#include " from ouch.cc? +To misquote Rufus Wainwright, "Cause all I get is instant errors/Instant errors +Instant errors". + +== 180. Update scorefile format to a delimited ACSII numeric representation. + (hmmm - will take some thought) + +xx 181. I am not sure if its a bug or not, but using pr7 on NT4, every now and +again when I die, Crawl causes a general protection fault (or whatever its +called in NT) and the game crashes. The good side to this is I don't lose +my character and can go back to my last save and keep playing. + +> When I'm having a good character going ("good" being +> 1000+ points or so), the game tends to crash when the character dies. + +== 182. I just got the mutation "you can exhale a cloud of poison" but I recieved +no special ability to activate it. At the time of the mutation, I was +wearing a ring of shadows that gave me the ability to turn invisible. +Perhaps the ring interfered with it? Hope this helps. + +> data error in mutation.cc. Fixed. Nagas now get breathe poison +> sometimes if they _would_ have got the spit poison mutation. + +jmf> That mutation ought only occur for Nagas. A non-Naga getting +jmf> the mutation is a bug. + +xx 183. Move rand(), random(), srand(), srandom() to libxxx + +> behavior is too complicated.. + + + +== 184. Files are not cleaned up in DOS - see end_game() in ouch.cc + +== 185. Fixed more monster spell crashing-if-kills-player problems. + +== 186. Quokkas have no mass, hence they never leave corpses. + +> That was there original stat, should probably be set to 200. + +== 187. I found lots of bug while using 'recall undead slave' skill. + +I noticed this bug as well. Seems the recall spell places your servants in +spaces next to you, regardless if there is already something there or not. +In effect, monsters which are stacked seem unable to move, including +hostile monsters. When the top monster leaves the space the game places a +"floor" tile there. + +> really, really dumb logic error - corrupted mgrd as a side effect!! + +== 188. Several piles of gold on the same spot should merge + +>> so should other things. Fixed item_place() and drop_gold() appropriately. + +== 189. Merfolk hunters not available, NEWGAME.CC suggests they should + +== 190. Weld potion drank should dissappear from the screen + +== 191. First the bug: While in the Abyss, I came across an orange 8. Hit x and positioned +the cursor over it to see what it was (thinking it was probably a type +of golem I'd never seen or something) and it said: + +>> There was a tiny bit of overlap between the area which got nuked and +>> the area that got transferred. Probably left pointers to invalid +>> items lying around, which would produce exactly this: + +!questionable item (c100, +0, p50, p(2)50, d0:q0) + +== 192. Now the complaint: Because you can use the letter keys to move around, +the numeric pad +has obviously been modified so that the numbers map on to the letter +keys... but there is a problem with this, namely that 7 maps on to y, +and can therefore be used to answer in the affirmative to a question. +I now realize why easy_confirm exists, since some people no doubt use +the letter keys to move and may accidentally say yes to something they +didn't intend to... but for those of us who use the numeric pad, the +option doesn't seem to make much sense, since your finger doesn't come +near the 'y' key all that often, so I just had it set to all. Then I +was in a situation with one of my best characters ever where there was +lava directly north of me and I wanted to move northwest, but my +finger hit directly between the two keys, basically hitting 8 then 7 +in rapid succession, plunging me into the lava and killing me. I +suggest one of two things; either make the numeric pad work the same +way as the letters ONLY for movement, since the only time other than +movement when you're going to receive input from the numeric pad is +when it's accidental, or at least put a warning in the init.txt where +it talks about easy_confirm saying something like "WARNING TO KEYPAD +USERS: The number 7 is mapped on to the letter 'y,' which can result +in accidentally answering yes to questions; it is suggested that you +leave easy_confirm off." + +== 193. > An orc priest who hellfired him. + +>> fixed in general non-tracer spell cleanup. Oops. + +== 194. Scrolls of immolation don't do anything. The big fireball +: appears on the screen, centred on you, but it doesn't damage you or +: any of the creatures surrounding you, and doesn't have any other +: effects. I'm assuming that this is a bug. + +> Good catch. Direct explosions were being treated as tracers. :P + +== 195. A more minor bug: if you read a scroll of teleportation, then +: start butchering a corpse, you'll continue to butcher the corpse even +: after you've teleported, successfully chopping it to pieces, even +: though it hasn't come with you. + +== 196. Well, the title says it all, but, when I reach level 27 of the dungeon the game +crashes (not a windows page fault, a 'dos page fault'). The character has not +retrieved any of the runes of zot yet, so I figure I'll try again after getting +one (or if that don't cure it 3 just in case). I'm on a windows 98 computer +running the DOS compilation of pre release 7. I also had a few times on level +26 where I couldn't move (alt tabbing out and forcing the game closed worked +but I was set back a ways... so I made it a point to level level 26 hehe). One +other thing I noticed was the dungeon clean up never happened (on level 25 but +I had no problems on that level even after the floor was full). New monsters +seemed to get weapons and armor but no more corpses once the floor was full. + +Something else I've always wondered about was the slime pits, are you supposed +to get a rune of zot out of there or does the royal jelly 'eat' it or +something, I've never gotten anything from there but it seems like it's the +kind of place that would have one (specially with a monster that is no where +else in the game sitting in a pre-fab dungeon). + + ...and then this follow-up on Feb 9th... + I mention the runes because it was level 27 I was trying to enter when it +crashed on me, I wasn't actually entering zot, just the level with all the +gateways to zot. Was just trying to go down there to get a little more exp +before I went to get the runes necessary to get into zot (the advantage of +being a mummy... you can go do things in squirly order according to whim hehe + +mannix writes: + +Just confirmed it, lvl 27 is definitely a gaurenteed crash, even with 3 +(well, 4... got two in pandemonium... should that have been possible?) I +still crashed when I tried to enter lvl 27. On the other hand I've found +some fairly nifty places to explore for exp :). Another problem I found +was that in a lot of areas the dungeon clean up is not nearly aggressive +enough, I'd go so far as to say that when it happens all non-quest items +should probably be removed, in some areas after spending a bit of time +repeatedly killing random monsters (the joys of playing a mummy hehe) item +drops would show up something like 'item 923589237 has dropped' (and +that's a sure sign of impending doom, or at least a lock up on exit). I +worked around the problem on one level by using my own clean up method... +summoning imps/demons... some of them will pick up weapons (and in places +like hall of blades that's all you'll normally see) and when they +dissappear those items are gone for good. + +== 197. : Using a spell staff of smiting in melee combat reveals the following message: +: You're wielding some sort of staff I've never heard of. (fight.cc) + +== 198. Trying to cast Apportation on a pile of gold crashes the game + (division by zero) + +== 199. Draconian Hunters start with a club instead of a bow. + +> It's a little bit worse than that... The bow is clobbered into being +> a club instead of the leather armour being turned into a robe (draconians +> shouldn't being wearing leather armour since it doesn't fit). + +== 200. Need more aggressive item cleanup. + +>> perhaps trigger this on item creation, if a spot can't be found.. go +>> through the item list destroying less valuable items or small piles of +>> gold. + +== 201. Teleporting a fish (by hitting it with weapon of distortion) might +cause misc. problems - e.g. fish is teleported again and again +(because it lands on the floor) + +> won't happen; checked & rewrote bits of monster_teleport() to be +> more readable, but the code was fine. + +== 202. I was getting mutations after wielding/unwielding weapon of +distortion + +> yes, it's in the code. Nice eh? + +== 203.Darts of bugginess found in shop + +> dumb logic in dungeon.cc::items() + +xx 204. Electric eels sometimes shoots lightning to strange (probably +random) places and not at player. + +> don't see how. + +== 205. Put in a fix for scorefile lines longer than 80 chars (will break) + +== 206. a new score at the bottom of the list would not be added. + +== 207. Misc documentation changes from Don + +== 208. Won't get "Sorry, you can't target what you can't see." when you're +just looking around.(with 'x') + +== 209. Improved 'C' command (gives XP left to go) + +== 210. Far strike & twist could not target with direction keys (they are +pseudo-direct effects, which screwed stuff up. Argh!). Changed mode +for those spells to DIR_TARGET, which means hitting a direction key will +take player into targetting mode. No doubt will be hearing gripes about +this too. + +== 211. Patched up multiuser compile. + +== 212. Quokkas don't generate corpses now. Someone else wants to revamp +the corpse system, go for it. + +== 213. Easy butcher defaults to false now. + +== 214. Options for Race & Class added to init file + +== 215. Replace mutate() calls for miscast effects with addition to mutagenic +radiation; perhaps all miscasts (may) add to this, and high level miscasts +changed to give_bad_mutation? + +>> done. all spell miscasts give small mutagens; high level spell miscasts +>> can get pretty nasty too, but still only small chances of mutation unless +>> you're also invisible/hasted/wielding nasty artifact. +>> missing a couple high level spells badly in quick succession can be really +>> nasty. I'll leave it as an easter egg. :) + +== 216. Monsters won't throw stuff if they can melee. + +== 218. Misc stylistic & code fixes from Jesse + +== 219. Charmed monsters will no longer be described as 'friendly'. + +== 220. Brave attempt made to use correct pronouns (introduced mons_pronoun) + +== 221. Shop names more visible when looking around & moving + +== 222. Can now pickup auto-combine items even with full pack + +== 223. scrolls of fear won't auto-identify if nobody is scared by them. + +== 224. "Killed by giant ant" when smitten from afar by Orc priest? + +> very subtle. Death_source can be zero, since it is an index into +> the monster array. But I didn't think it could be - if killed by +> monster#0, scores like this would be generated: +:4:0:89:Methea:0:6:3::3:14:3:0:0:0::2:0:0:0:0: +> which would be translated to "killed by a giant ant" + +== 225. Don't generate monsters in LOS? + +== 226. Get name after race & class (pretty easy now) + +== 227. Fixed up some job titles. + +xx 228. Game crash on character death; after equip list, but before hiscore list + +== 229. Massive speedup on win95/98. Fixed all cursor dance and buffering +problems. Fullscreen is still pokey on most machines, but it's finally +playable. + +== 230. No staircases to Zot on level 27 (dlevel == 26). It looks like a + piece of code in dungeon.cc::builder() may be changing stairways to Zot + to dungeon floors, regardless of level (occurs after place_branch_ + entrances()) + +== 231. crawl -plain now actually uses non-gfx character set + +== 232. All female uniques are now properly gendered (missing break statement) + +== 233. Divine resistance messaged a bit better (w.r.t. Xom, Makhleb) + +== 234. messaging for vampiric attacks fixed up. + +== 235. Monsters generated on teleport traps will have unobtainable loot! + > shouldn't generate them on tport traps any more. + +== 236. Fixed DOS include of + +== 237. Fixed overly long string in '?' screen + +== 238. More multiuser fixups. Changed default makefile to linux. + +== 239. Moved god favor messages more in line with prayer messages (too confusing + otherwise). Fixed a couple grammatical errors. + +== 240. Can't hit some monsters in LOS (rounding problem?) + Need to rewrite for integer math. :P + +== 241. Crash on long player names (duh!) + +== 242. Miscellaneous spelling/grammatical errors + +== 243. Do something about this: probably remove from compile options. But leave + bow/throwing warning in, as it is a _very_ important penalty. + + : One odd thing, though. I chose a Human Fighter with a short sword and when + : I began the game I get "Your relatively low dexterity is limiting your use + : of your weapon." Other than the three occurrences of "your" in this + : sentence, I find it odd that 10 dexterity is too low to wield a short + : sword. Or is this a bug? + + "Your relatively low is limiting use of your ." + + Would be a slight alteration to kill one "your" and actually + designate the weapon being affected (I know it is pretty clear + that the only weapon affected is the one wielded, but I like + some things spelled out). + + To avoid those excessively long weapon names with all the plusses + and things, the weapon name string should probably be just the base + weapon type (e.g., "short sword" instead of "+1, +2 short sword of + orc-slaying and back-scratching"). As the str/dex modifiers are + based on the base type and not all that other goodness, this seems + an ok thing to do. + + Anyway ... I still think that this check ought to be performed + prior to weapon selection by a player at start-up, so that he + or she knows his/her character will be handicapped by the choice + of one weapon type or another. I think that thread was raised + briefly last week or so. + +== 244. The game crashes when I start a monk. + + In skills2::wield_warning(), these two statements need to be swapped: + + int wepType = you.inv_type[you.equip[EQ_WEAPON]]; + + // early out - no weapon + if (you.equip[EQ_WEAPON] == -1) + return; + + +== 246. Rewrote monster behavior routines. + +== 247. Cleaned up some function prototypes in dungeon.cc + +== 249. Put gendering into monspeak.cc + +>> couldn't find anything.. wonder what Michal meant? + +== 250. More typos + +== 251. remove caps from filenames + +== 252. Summoned critter problems: +From: "Ben Goetter" +Sent: Thursday, March 15, 2001 9:45 PM +Subject: Crawl 4.0pr10z 13 Mar report Bug report: summoned creatures are +appearing in the same space as the +caster. (Cast spell, summoned creature not visible; move one space, +creature appears in space vacated by caster.) + +Date: Fri, 16 Mar 2001 09:00:41 PST +From: tgord +Subject: Re: Crawl 4.00 pr10zf [Yahoo! Clubs: Linley's Dungeon Crawl] +I've noticed that summoned monsters sometimes appear on the other sides of +walls now. ^^^^^^^^^^^ + + +== 253. Change messages for weidling awkward weps to show up only at + values <= -4 (for real problems) and change message to "not taking + full advantage of the weapon" or somesuch. More flavour, too.. + maybe messages like "you're too clumsy" for dex<10; others for + high (but unbalanced) stats: "You'd be (a lot) better with + that weapon if you were (stronger/more dextrous)" + +xx 254. Give Earth Elementalists a few stones (say 10-15) to help them + get started? + +>> addressed with the new, 'easier to run away from' monster AI? + +== 255. I thought someone had added the MST_* enum usage to mon-data.h, + +== 256. Would be nice if the wizard patch I put up in the files directory + made it into the code. + +== 257.PS Oh, using crawl -scores leaves the terminal in a bad mode... + stty sane is required to sort things out (either curses shouldn't be brought + up with this option, or it should be shut down properly). + +Just change the exit() call to a stuff::end() call. +// check for highscore list - must be done BEFORE libw32c init + if (Options.sc_entries > 0) + { + cprintf(" Best Crawlers -"EOL); + hiscores_print_list(); + end(0); + } The argument to end() is the exit value. That should probably be 0, +rather than 1, since there's no error here. + +== 258. This bug ( if it is a bug ) has been around for a while... it seems +: that sometimes when you poison a monster and it dies from the poison, +: it gives you exp, and other times it doesn't. Is there some logic +: behind this? A low level character of mine just barely managed to +: kill an OOD hippogriff using poison, and got gypped of the exp. =( + +>> Very old problem in beam code; poison_monster was being called +>> incorrectly. + +xx 259. I once got a corpse from a summoned snake - I hadn't been +able to reproduce it, but it's corroboration. + +== 260. Give monsters large bonus while target is MHITYOU and behavior is + BEH_WANDER, during player stealth checks - monsters will still be on + the lookout for the player. + + Give a small chance each clock tick of deleting the MHITYOU; i.e. monster + 'forgets' about the player. Stupid monsters forget faster.. + +== 261. +I was playing a transmuter, and noted that I was getting "You +punch the " messages while fighting in spider form. I'm not +getting the unarmed punch attack, so I think the verb comes from +fight::weapon_type_modify(), which doesn't take transformations into +account: + +static int weapon_type_modify(int weapnum, char *noise, char *noise2, + int damage) +{ + int weap_type = WPN_UNKNOWN; if (damage >= HIT_WEAK) + { + if (weapnum == -1) + weap_type = WPN_UNARMED; + else + { + if (you.inv_class[weapnum] == OBJ_STAVES) + weap_type = WPN_QUARTERSTAFF; + else if (you.inv_class[weapnum] == OBJ_WEAPONS) + weap_type = you.inv_type[weapnum]; + } + } strcpy(noise2, ""); switch (weap_type) + { ... case WPN_UNARMED: + if (you.species == SP_TROLL || you.mutation[MUT_CLAWS]) + { + if (damage < HIT_MED) + strcpy(noise, "claw"); + else if (damage < HIT_STRONG) + strcpy(noise, "mangle"); + else + strcpy(noise, "eviscerate"); + } + else + { + if (damage < HIT_MED) + strcpy(noise, "punch"); + else + strcpy(noise, "pummel"); + } + return damage; ... } +} + +xx 262. + +from Win32 precompiled pr10 on Windows 2000: + +You see here a white potion. +B - a white potion +Drink which item? (I choose B) +You feel much better. +Eat which item? +That banana was delicious! +B - a white potion +You finish eating. + +>> Must have had autopickup off, but I cannot reproduce.. think it +>> might have been fixed by fixes to message.cc + +== 263. When i name a character 'con' or 'Con' it freezes the game. + +== 264. Generate wandering monsters on/near stairs about 10% of the time, + regardless of player position, but disallow banding and generate a + message ("A %d enters from above/below!") if player is around. + +== 265. Has anyone else noticed that after a draconian dies, every high-score on the + screen is listed as having been a draconian? When a non-draconian dies, the + draconian is listed as having come from race "Yr". + +== 266. Cleaned up monster blinking. + +== 267. Monsters following up the stairs if they are "not aware" of the player (odd!) + +== 268. Some problems with monsters not following player position correctly, or + just plain waggling back and forth when they should be beating on the player. + Sigh.. gotta look closer at those movement routines. :P Not ready for + prime time yet. + +== 269. Simple fix to handle_behavior() + +== 270. After a while, crawl again went of bounds, this time with this + backtrace: + + #6 0x80e9119 in seekmonster (p_monsterid=0xbffff1e0) at mon-util.cc:816 + #7 0x80e91bc in mons_intel (mc=-1) at mon-util.cc:837 + #8 0x80db2a7 in behavior_event (mon=0x8247e90, event=1, param=0) + at monstuff.cc:394 + #9 0x81339c7 in noisy (loudness=8 '\b', nois_x=45 '-', nois_y=34 '"') + at view.cc:1249 + #10 0x8132927 in monster_grid (do_updates=true) at view.cc:941 + #11 0x8131bca in viewwindow2 (draw_it=0 '\000', do_updates=true) at view.cc:574 + #12 0x8052f76 in input () at acr.cc:2020 + + The bad thing here is that line #7 has mc=-1, and seekmonster() will use + that as an index. + +== 271. Could we tie this to smartitude? Killer Bees and other insects can + forget that I exist when they can't see me while Liches ought to + cast 'detect exact player loaction' and Dig or teleport their way + to me, for a LOOOOOOOONG time after I damage one. + +== 272. Cleaned up abyss generation; there was a monster leak and some very strange + code. + +== 273. Fixed minor screen redraw problem (screen should have updated before monsters' + turn, but it wasn't. Caused some odd SFX artifacts, like beams/missiles going + through walls) + +== 274. Fixed nasty bug with cornered monsters which had them looping from flee-> + cornered->seek->flee->... + +== 275. Fixed small logic error with perma-mutations + +== 276. I was invisible and an orc spotted me, shouted, and then came at me. + +== 277. gotta clean up monster target aquisition and release. Make more 'sensible' +>> Add 'persist' variable; which is # of turns a monster will go towards their +>> CURRENT target even if it is not in LOS anymore. + +== 278. Fixed type usage problem with quadrant_blink() + +== 279. Made monsters move a little more unpredictably along oblique paths + +== 280. Fixed up all cases I could find of friendly monsters frying players + (NOTE: they might still do so as part of calculated plans to help the player + out - some collateral damage is acceptable!) + +== 281. "The your cursed +1 robe is stuck to your body." + "You are a elf wizard." + +== 282. Can't pick a target with Apportation spell. + +>> works fine for me. Added a helpful message. + +== 283. It seems that sometimes monsters are not interested at you even if + you shout ("!") at them. Or is it feature ? + +>> nope, bug. Any noise coming from the player's position should alert +>> hostiles within range depending on the volume of the noise. + +== 284. Sometimes monsters (rats, bats and probably others) attacks you, + but they are still described as "not interested". + +>> fixed in direct.cc. + +== 285. I have also + made some changes to the file attributes when it is compiled with MULTIUSER + option turned on, since I think the player's save and level files should NOT + be group writeable :), but the score file should be. + +>> .sav and level files are private (600). Ghost and score files are not (664) + +== 286. There seems to be a more serious bug with summoning monsters in Crawl pr11: +: I`ve found that summoned creatures aren`t giving any experience to your +: character when they kill things any more, which makes summoners a bit crap. +: +: Also, when my Chaos Knight summoned a demon ( yquxy whatsit) it kept trying +: to eat my intelligence and mutate me, which has never happened before. +: Demons killing monsters didn`t give me any message from Makhleb either. + +Both fixed. #1 is logic problem, #2 is generic friendly fire problem. + +== 287. + I'm playing pr11, DOS version. My merfolk healer was in a situation like + this: + + ................. (water squares... + ..;;............. + ................. + ................. + ................. + ................. + ................. + ......;.......... water squares end) + ......@.......... this is solid ground + + The placing of the symbols is not accurate. + Now none of the eels could hit me with their blasts. The eel right next to + my character kept shooting straight upwards and the two eels farther away + kept missing me by my right side. At least one of them also hit the eel + right next to me. I killed the nearest eel, after which the other two just + kept missing me. My character was not invisible. + +: Also, it's not just electric eels. Storm dragons also tend to shoot in +: the exact opposite direction to the character. Looks to me like it might +: be a sign problem... + +>> ugh. bad side effect from tracer explosions. Fixed. + +== 288. Fixed whopper of a bug with generation of fast monsters which often hung + the game (especially in areas with lots of fast monsters, like the hive). + +== 289. Brent's balance patches + +>> applied all, reduced missile damages by 1 to compensate. Gave daggers +>> and spears better chances to hit. + +== 290. The "temporarily insulated" message is weak... it's kind of + confuing and looks a bit like a bug. Better would be a "god + protected you" message after the explosion... that would tell + both the source and the reason for the insulation. + +>> agreed. Changed to post-divine blast message. + +== 291. Hate to follow up to myself, but a small thing was brought to + my attention. Now that the dice for damage are one based, this + means that Magic Dart is now really the best first level spell, + this being because it uses the 3dX notation (ie dam > 100), so + it does a minimum of three damage (which isn't bad) and always + hits (which makes this too good for a spell which is very common). + + So I'm suggesting that the damage for Magic Dart be converted to: + + damage = 1 + (power / 2) (this is in it_use2.cc). + +>> changed to 1+pow/4. + +== 292. The third ability gained by followers of Zin is pestilence. This summons + a variety of bugs that hopefully will helpfully kill off whatever happens + to be bugging you. + + Trouble is, every time my character uses it at least one my little + chitinous friends gets killed. Zin doesn't like that, so my character + feels guilty. + + The same thing happens with the fifth ability, Summon Guardian, but + it's not so bad there. The summoned Angel (or Daeva, for fans of the + TSO) can generally take care of itself, although I did lose a Daeva to + a dragon once. Luckily it left behind a long sword of holy wrath to + assuage my guilt. + +>> add a flag to god-summoned critters so that their death doesn't cause +>> piety loss. Summoned friendlies will still give piety loss; the 'good' +>> gods don't appreciate you summoning beings as cannon fodder! + +>> tried to apply the god_gift flag wherever it made sense; Zin Pestilence +>> was the only place I could find. + +== 293. Finally found and fixed 'critters summoned out of LOS' bug. + +== 294. Fixed logic problem in quadrant_blink() + +== 295. Fixed buffer overflow in acr.cc during char dumps. + +== 296. Fixed minor display problem in backlight_monsters() + +== 297. Added Guus' -plain and doc patches + +== 298. CHMOD_PUBLIC now uses 664 instead of 666. + +xx 299. Actually, there was at least the comment from the newsgroup +about elven conjurors starting with the Ice/Air book (because +they're better at Air than Earth and equal in Fire and Ice). +The actual spells tend to lean a bit more to the Fire/Ice +side so I really don't see why they shouldn't have the choice +(or rather why anyone should have this auto-picked). Adding a +selection screen and an initfile option wouldn't be that hard. + +== 300. Change magic dart damage to 2+power/4 + +== 301. +>I'm wearing a ring of Shadows. When I try to take it off, it says +: >that it's stuck to me. When I 'v'iew it, it says that it has a curse +: >placed upon it. But it doesn't show up as cursed in my inventory +: >list, and scrolls of remove curse don't work. +: +: Oh... and if it helps at all: I killed a mummy at a certain point, +: with no apparent curse effect. This may be how the ring got cursed + +>> the check for randart rings was looking for 200, but the actual +>> inv_dam value for randart rings is 201. "Pluses2" of 100 is not +>> well defined in the code... :( + +== 302. Abyss go to shits after abyss_teleport() +>> wasn't setting terrain to DNGN_UNSEEN. Was using old (stupid) +>> value of 30 (white triangle!) + +== 303. In fact, they seem able to sneak right up to alert monsters and still +deliver the first blow. I think that such a blow should sometimes count +as a stabbing attack, just as blows delivered to fleeing or confused +monsters currently are. Currently such attacks have a + +random2(200) <= you.skills[SK_STABBING] + you.dex + +chance of being stabs. + +>>Gave chance if monster isn't paying attention to you (foe != MHITYOU), but +>>stab bonus is much lower (3) than stabbing a sleeping/fleeing monster. + +== 304. Not sure if you saw my big report on roguelike.misc, since it hasn't +: been fixed and doesn't seem to appear on the 'to do' list. The spell +: 'Lee's Rapid Deconstruction' doesn't do any damage at present. It +: occasionally destroys the wall which is targetted, but I detonated 20 +: walls next to a rat and didn't scratch it. This leaves Earth Mages +: without an area-effect damage spell, which is rather detrimental to +: their health :(. + +>> Fixed. Needed subtle wrinkle in explosion map, as well as some +>> fixes to the spell itself. + +== 305. Currently, if you skip the first naming screen but use the second +you can overwrite a previous game. Although this is unusual +behaviour, it's not very desirable, it should at least warn +about this and potentially give an option to load the old game. + +>> fixed. good catch. + +== 306. Wielding a bunch of stones and trying to throw one of them, +results in all of the stones being thrown (and potentially disappearing +as well). + +>> Very, very subtle bug in beam.cc inherited from original codebase. +>> Fixed. + +== 307. monster_move(monster); + // reevaluate behavior, since the monster's + // surroundings have changed (it moved) + handle_behavior(monster); + + Some monsters are getting killed on their move, and then the + code in handle_behavior() will fail an ASSERT since monster->type + will be -1. + +== 308. After one hit with a poison dart, "the goblin looks rather +more sickly". The non-"...more..." message is (repeatably) +never shown. - Josh PS: Could we consolidate the poison-effect-namespace to either +"ill" + "rather more ill" or "sickly" + "rather more sickly"? +I favor the former. + +>> oops. simple messaging problem. Similar prob. in sticky flame. + +== 309. Only one bug found - in newgame.cc (line 2222) should be used +strnicmp() instead of strncmpi(), because the second one isn't +existing function :) + +From BWR: +>Actually, we should probably avoid both, I don't think they're +>very stardard (BSDish systems will use "case" over "i"). +>strncmp() is POSIX (among others) so it's okay, but the case +>insensitive compare almost always causes problems (if we're going +>to use it, we should probably have it defined somewhere, so it +>can be adjusted or handled by autoconf (should we go that route)). + +>> correct - neither are POSIX. However it is being used in a DOS/win32 +>> section only, and strnicmp() is the proper call as Michael pointed out. + +== 310. I've looked at monster pronouns and IMO (supported by dictionary) + Erica and Frances should be female and Francis should be male. + + Probably also description of uniques could be slightly changed +according their gender, for example +Jessica - "An evil apprentice sorceress." + +>> done. + +== 311. +In either event, to get crawl to compile, the strcmp(x,y) == NULL +in initfile.cc needs to be changed to "...== 0". The line is near 520. + +== 312. Change shops back to old [0][5+i] item location. Leave items + carried (ie not on grid) at 0,0. Make sure to modify link_items(); + keep compatibility with old saved games. + +== 313. I think giving Ogre and Troll Fighters Dodging 2 is probably in order. + +== 314. Fleeing monsters were not taking advantage of the flexible movement + code (Guus) + +== 315. Gave monsters a little better chance of sniffing out foes (stealthy + players will fare better). After arriving at target x,y, will do a check + for continuing on via ESP/noise/whatever. + +== 316. Removed ability of monsters to see through walls. :) + +== 317. : Just tried casting Tukima's dance while wielding an artifact weapon. + : I get the message "You hear a popping sound." and although my artifact + : stays in my hand, something that looks like a Shadow appears. Its + : name: 36317738 iron wands. If you 'x' it and hit '?' it says "A + : dancing weapon floating in the air." just as if the spell had worked + : right. The thing even moves and attacks like a summoned monster, and + : seems to have combat stats of some sort, since it can kill things. + : When the spell expires, it says "The weapon drops from the air." as + : normal, but the monster just ceases to exist; it doesn't leave a copy + : of the weapon behind or anything. You can even summon several of + : these "36317738 iron wands." + +>> ugh, two separate logic problems in dancing_weapon(). Fixed. + +xx 318. I could be wrong, but I think that the Orcish Mines had no scrolls, + potions, wands, rings, or amulets. Very odd. But since Gordon just + rewrote dungeon.cc, we should wait for reports about pr13. + +>> this is working exactly as designed, if I read the original code correctly. + +== 319. But I failed in my casting too often, and the + buildup of mutagenic energy had some unfortunate effects. Even after I + gained some levels in Divination, and my Success chance was up to Fair, + I failed to successfully cast the spell sufficiently often that I mutated. + So be wary of casting even second level spells. + + from BWR: + We've have people getting mutations here from level one spells. + I'm thinking that at the very least we need to lower the baseline + for noticing that you're accumulating radiation... and possibly + put in some warning messages so people know that they're getting + a bit "hot" and that they need to take it easy for a while. + +>> messaging much better. toned down nastiness from low level spell failure. +>> made my easter egg much less abusable. + +== 321. I do wonder that Zin wasn't upset when I zapped the Angel initially. + +>> Zin is stupid and can't differentiate between a hurtful and helpful +>> spell. Perhaps a small subset could be classed as obviously harmful, +>> so that if you e.g. healed or hasted the daeve it wouldn't get pissed. +>> have to be done in beam.cc, I think... any non-enchantment would be +>> classified as harmful, I think. (?) Other enchantments would have to +>> go in a big if/switch. + +>> this will also help to NOT piss monsters off if you're trying to help +>> them. + +== 322. 2) Item clean-up in the dungeon seems far more + aggressive than before. I've dropped items, + popped down a staircase and right back up, + only to find everything I dropped gone, gone, + gone! This would be on "cleared" levels where + the likelihood of item overload is almost nil. + Is this a change in gameplay that I missed? In + pr13, I am finding myself holding onto *everything* + because I *know* that if I drop it and leave the + level it will simply disappear ... a PITA situation + for low-strength characters wanting to stash some + extra stuff for later. + +>> oops. Somehow broke item save/reload for any item dropped by player +>> or monster. Took closer look, cleaned up horrible hacky code. :P + +== 324. Make random zombie generation reflect the actual level; it is currently + random. + +>> no more horribly OOD zombies. + +== 325. Monsters with OFFENSIVE spells in mspell[2] will still use them + on the player (sigh..) + +>> fixed all cases in mon-spell.h + +== 326. Accidentally doubled the number of monsters created w/ level. + +== 327. : Scrolls of fear appear to be bugged. Read one, got messages saying + : that the monsters were frightened (ie, not "The blah resists."), but + : they kept moving towards me and attacking me. + +== 328. In pr12, my Troll could see an unseen horror. He was not wearing any + devices that could lend him see invisible, and orcish wizards were + turning invisible earlier in the game. + +>> oops. logic problem in mons_del_ench() + +== 329. Sigmund and other uniques appearing multiple times + +>> logic error in dungeon.cc + +== 330. Magical staves are described using the old style (speed) + +== 332. Monsters walk into clouds, except for intelligent ones?? Check code: +mannix writes: +Now here's an idea to which I can warm: stupid animals + thinking "where there's smoke, there's fire", and more + intelligent critters in possession of the ability to + discern betwen the two. + +== 333. Monster Placement: is there a place where, if you can't find a sensible + location for a monster in a group, you just put that one anywyere? + I think that's part of what makes monsters appear in LOS ... I just + got a gnoll and two orcs. + +>> stupid error in monplace.cc. Forgot that distance() function returns squared +>> values. + +== 334. Shapeshifters: one turned into a Swamp Worm. This ought not happen, + as those are water-only monsters, despite their worm designation. + +>> fixed. Won't let monster poly into water-based monster on land. + +== 335. dungeon.cc::pick_an_altar(): needs to have a case added, near line 5988: + case BRANCH_SLIME_PITS: + case BRANCH_ECUMENICAL_TEMPLE: //jmf: ADD THIS LINE + altar_type = DNGN_FLOOR; + break; + + ... to prevent "bonus" altars in the Temple. This was probably the + original author's bug (i.e.: mine). + +== 336. So the city-like dungeon code has some sort of an off-by-one error. + The "buildings" (squares with doors) once were separated by at least + one space of floor; no longer! Furthermore, they once didn't overlap. + + The changes provide much more interesting cities, however the door + generation hasn't quite caught up. I've seen things like: + + ######### + ####+...# + #####...# + #####...# + ######### + + ... where it's fairly obvious what went wrong. (I discovered these + types of things when playing a gnome.) + + The quick fix would be to restore the 'air' around buildings, but + IMHO that would be a loss. The new cities are so much cooler. + + A more complex fix would be in two steps: + + 1) make sure there's a passageway around the border of the level. + A single sweep setting all those squares to floor would be fine. + +>> tightened up door placement in box_room(); since both city_level() +>> and plan_4() use it, stuff works better now. + +== 337. + Sticky Flame puts monsters in the player's thrall + + This last one is really bizarre, because it doesn't happen + in the wizard mode compile (although I can take that character + over to the normal version and have it happen there). + + It's intestesting to note that these monsters end up with + enchantment number 30, which is one less than the sticky + flame enchantments... in the wizard mode they seem to get + enchantment number 60 (which is one less than the other + set of monster sticky flame enchantments... also known + as POISON_IV). I'm wondering if anyone else can verify + this. + + I suspect that there's some problems in the enchantment system, which + could be responsible for both of these. Looking at sticky flame today + it seems that my sticky flame ends up as ENCH_POISON_III or _IV + (59 or 60) regardless of playing crawl or wizcrawl. The in-thrall + thing seems to not be happening right now. It occurs to me that I + never actually got "burn" messages in pr12 when I was using napalm + (I hit an Ice Dragon about six times with it and it never seemed + to take any damage after the initial hit)... looking at the code now, + I'm pretty sure I should have been (and that any appearance of working + in the recent past might have in fact been delayed poisoning). + +>> Fixed. sticky_flame_monster() was badly broken. gawd I bunged that up. + +== 338. As a side note, I now backstab bats quick often (I take it that +this is a side effect of the new backstabing situtation). I'm +not really sure I should be able to do that (or more to the point, +does this mean I can expect regular backstabbing of ball lightning +and spatial vortices which might be a bigger problem). + +== 339. In Win32 pr13, if you set class = C in init.txt, your character will be a +priest ('c') instead of a wanderer ('C'). This happens regardless of if +your race allows wanderers. + +>> bug in initfile.cc + +== 340. Basically, nowdays if you turn a bat into an undead slave, +it suddenly comes to it's senses and becomes an inadvertant +killing machine (well against monsters that can't easily kill +it in one hit), as it walks straight up to them and hits them +3 or 4 times a round. Undead bats should still flutter around +(that's what keeps them in check considering their amazing speed). + +== 341. I've run into some surprisingly powerful ghosts in pr13. +They are only overly powerful in non-wizard compiles; the +two times I switched to a wizard-compile they acted normal. One +was casting MS_ENERGY_BOLT instead of either magic +dart or throw flame (the two spells that character knew). + +>> very bad indexing bug in ghost loading. Who knows what else +>> this was screwing up.. :P + +== 342. Some attempts to animate a skeleton result in a puff of smoke in addition +(I think) to a new slave. + +== 343. We've had several reports here about necromancers zombies and skeletons +actually getting poisoned from time to time by monsters. As far as +I can tell this really shouldn't be happening. + +>> probably a side-effect of messed up enchantment code. + +xx 344. If you start a game with -plain, Save, then continue the game without -plain, +then the displayed map for remembered locations uses the -plain characters. + +If you start a game without -plain, Save, then continue the game with -plain, +then the displayed map for remembered locations uses the extended characters. + +== 345. I haven't heard this one mentioned, but when wielding an ego item you +typically get this: + +d - an elven short sword (weapon in hand) +Wielding this short sword is a little awkward. +It softly glows with a divine radiance! + +The elven short sword should be id'd as "holy wrath" in the first line... +it was unid'd when I did this, so it looks like a simple case of moving +the identify code to a place before the printing. + +xx 346. Breathing fire via the mutation prints this unnecessary line: +" .\n" + +xx 347. I got a segfault when entering the abyss; wasn't playing under +gdb, for some reason, so didn't get a stackdump. Sorry. + +== 348. Brent's XP patches + +== 349. Josh's sludge elf, etc patches + +== 350. In mon_util.c::define_monsters(), there are some mystical values + assigned to m2_sec, some of which can be made more apparent by + using the appropriate MST_* values. + +== 351. Actually, a thought just occured to me that the new stabbing + code that gives occasional backstabs against flutterers, is + probably very annoying to Paladins. We might need at least an + additional check to prevent some of the excusable backstabs from + being naughty... perhaps it's just as simple as only making + attacks on fleeing, sleeping, and confused monsters call naughty + (in which case, it might be reasonable to remove the random + chance for TSO applying penance). + + One of the problems with confusion based stabbing is that some + monsters are created with it, and most of those probably shouldn't + be backstabable (various voritices, ball lightning, vapours). So + maybe we might need some way of distinguishing if the stab is + appropriate (or if not that, we should probably leave them off the + above list for naughtiness). + +>> new code to void backstabbing against flutterers (solely because +>> they are flutterers) and perma-confused critters (solely because +>> of confusion). + +== 352. in check_mons_magres(), the return value for the special "< 6" + bonus is backwards. I'm probably to blame for not noticing that + the function is logically backwards, I probably got confused by + one of the cases in spells4.cc which use this function backwards + (a few of which are my own). + +== 353. I added a "gotoxy( 18, 9 )" to the top of our direction function, + which nicely solved the porblem where the cursor was left at the + end of a prompt (ie for conjure flame). + +xx 354. We've had a report of skeletons picking up skeletons. + +xx 355. I've had several people reporting some oddness when returning + to a level via a straight up and down... things like monsters + completely disappearing and traps being created. + +== 356. pets seem to try and track the target monster even when they're + on the wrong level. Basically, if you go down stairs and tell + your pets to attack something and the go upstairs to try and + bring more pets down, the upstairs pets will be running around + wildly... going downstairs and killing the target made the + upstairs pets return to the master homing behaviour. + +>> simple fix. Set pet_target to MHITNOT on level change. + +== 357. The lastest in the bizarre happenings around here was a friendly + player ghost... wonderful entertainment as it would should out + things like "Run, I'll cover you" and such. + +>> always a possible problem; some fields were left uninitialized from +>> monster_cleanup(), and never initialized in the ghost code!! + +== 358. Removed digging ability from Disrupt() + +== 359. Added 'random' beam that affects each cell as one of { fire, + cold, magic, electricity, poison, negative energy, acid }. Only + used in my easter egg so far. + +== 360. Maybe we should instead be considering shifting the greater +vaults down to level 10+, and the lesser vaults to 7+ (there +are many more mini-vaults (and better quality these days, and +this does have the advantage removing dlev 4 guardian naga +encounters... we've had several). + +== 361. Okay, compiled it up and the only problem was that link_items() is +declared both static and extern (removed the static prototype). + +== 362. One other little problem: The magic resistance check for monsters +is now correct, but there are some inappropriate calls to it over +in spells4.cc (in particular Twist is currently unusable). + +>> reversed the logic.. this was just too non-intuitive and backwards. + +== 363. Move the Crawl.mcp file out of the source folder. + +== 364. Add "#define ESCAPE 0x1B" to defines.h + +== 365. In eat_food() in food.cc add some code before the "You don't have + any such object." case: + if (keyin == ESCAPE) + return; + +== 366. lava_spaces and water_spaces in builder_monsters() in dungeon.cc +aren't inited. (This looks like a nasty bug). +6) In quadrant_blink() in spells4.cc there's a line that reads "while +(!done && random2(100) < pow--);". Please move the semi-colon to its +own line. + +== 367. Snakes now flutter like bats did. They also display the "not interested +in you" message when e'x'amined. + + Josh: + I've had a batty frog and batty snake. Both had the old + 'not interested in you' inspection message. Most frogs + and snakes were not batty. + +>> oops. Monster->flags was not being set to 0 at monster creation. + +== 368. in monstuff.cc::handle_spell(), the CONFUSION && !vapour + should probably be changed to use M_CONFUSION to be generic. + +== 369. the contamination messages should probably be in the warning channel + +== 370. wizard's hats say they give AC, but they don't + +xx 371.Fireballs are rather larger than I remember. +Mana explosions from magic accumulation are the same size (very big). +I'm pretty sure the former is unintentional; is the latter? + +== 372. There's an illiterate "it's" in the description of Silence. The word +ought to be "its". (This is a peeve of mine. "We hate's them, ye's +presciou's!") + +beam.cc::2753 +- hearMsg = "You hear a gentle \'poof\'"; ++ hearMsg = "You hear a gentle \'poof\'."; + +== 373. I haven't seen any miscast effects except for the irradiation one. +I think this is due to a loop in spell.cc which tries to figure out +which school of miscast-effects applies to a given spell. The loop is +a bit past line 300 and seems to ignore the new 'bitmap' representation +of spell-schools. I know that miscast_effects is getting bogus sptyps. + +Full, real fix: +unsigned int sptype = 0; +do { + sptype = 1 << (random2(SPTYP_LAST_EXPONENT+1)); +} while (!spell_typematch(spc2, sptype)); + +== 374. +newgame.cc::3410 + if (you.species == SP_HILL_DWARF || ++ you.species == SP_MOUNTAIN_DWARF) ++ you.skills[SK_MACES_FLAILS] = 1; ++ else + you.skills[SK_SHORT_BLADES] = 1; + +== 375. Later in newgame.cc: Now that Sludge Elves suck at enchantments +and conjurations, we could remove the options for them to be Conjurers, +Reavers, Enchanters and Crusaders. + +** 376. Something is still deleting the ABJ_xx enchantment for summoned +monsters. Don't know what though. + +== 377. Fixed magic resistance of normal & small snakes. + +== 378. case CLOUD_POISON: + case CLOUD_POISON_MON: + if (mons_res_poison(monster->type) > 0) + continue; + if (monster->hit_points >= random2avg(37, 4)) + continue; + break; + +THIS IS WRONG VVV + + // dumb monsters can be fooled by smoke + if (mons_intel(monster->type) > I_ANIMAL || coinflip()) + continue; + + // this isn't harmful, but dumb critters might think so. + case CLOUD_GREY_SMOKE: + case CLOUD_GREY_SMOKE_MON: + if (mons_res_fire(monster->type) > 0 + || (monster->inv[MSLOT_ARMOUR] != NON_ITEM + && mitm.special[monster->inv[MSLOT_ARMOUR]] % 30 + == SPARM_FIRE_RESISTANCE)) + { + continue; + } + +== 379. Brent's 'friend-brand' patch + +== 380. Undead should *not* have morale failures, nor should the dumber ones avoid + flaming clouds of death (brown & white 'z's & 'Z's). Skeletal warriors + might avoid FCoD since they do make one other intelligent decision (wrt/ + casting their spell), but they ought never run away. + +>> who says running away is due to morale failure? +>> REALLY dumb (I_PLANT) creatures will now walk through harmful clouds. +>> this includes most of the shambling (mindless) undead + +== 381. quadrant_blink() from Brent +Brent Ross + + In this method, what we're going to try for is the best match, and + allow the number of choices to be based on power. The basic hope + is that while even high power characters have to put up with some + randomness, the diameter of the cone decreases making it more + reliable. + + let line = line segment extending out from player in the chosen dir + let best = NO_SQUARE + + for i = 1 to f(power) + targ = random nearby square + if (dist( targ, line ) < dist( best, line)) then + best = targ + else if (dist( targ, line ) == dist( best, line )) then + // Not really sure we want this part, maybe we should throw in + // a random to keep the distance sane. + if (dist( targ, player ) > dist( best, player )) then + best = targ + endif + endif + endfor + + if (best == NO_SQUARE) + mpr( "teleport control screwed up" ) + random_blink + else + player = best + endif + +== 382. De-twink wanderers + +>> undefined USE_SPELLCASTER_AND_RANGER_WANDERER_TEMPLATES until we have +>> "hedge" magic. + +== 383. Check that all spell books are listed for generation.. at least war chants + is missing. + +== 384. Add "Blowgun" (launcher) and "needle" (ammo) +: basically, go through all code looking for BOW, add blowgun +: go through all code looking for ARROW, add needle +: assassins now start w/ blowgun & needles + except for deep elves; they get hand xbows since they tend to + suck at HTH and will rely more on ranged damage. +: some chance for needles of Foo? (dungeon.cc) just poisoned +: some chance for blowguns of Foo? (dungeon.cc) of venom +: must remember to add in to item generation tables. :) +: change throw_it() so that blowguns and thrown darts are + very quiet; all others make a noise - check fight.cc for + a good noise value. Note that alert() is simply not called. +: give a couple monsters blowguns & needles to start +: needles get damaged far less often (but make them rarer; + maybe only carried by assassinish-monsters. +: Needle trap at higher levels; could be a source of needles? + +TODO: dungeon.cc::give_item() . which monsters have bguns/needles? +other files not searched for WPN_BOW and MI_ARROW (our template for +this stuff): + +== 385. fixed logic problem in cast_sandblast() + +== 386. If I cast a fire spell at something in the water, it leaves a trail of +steam behind it. A fireball should have the same effect (but of course +over a larger area) + +== 387. Josh' new diff (mostly Xom acts) + +== 388. A Skeletal Warrior just drank a potion of healing. This strikes me as +wrong, from both pseudo-physiological and gameplay perspectives. + +== 389. I saw hellwing which polymorphed jackal to lava fish. Probably +this is not bug but we should consider this. + +== 390. We've had +someone complain here about his Ogre not being able to wear one. +I thought we had decided that caps and wizard hats were wearable +by all characters, regardless of headsize or horns. +Anyone remember? + +>> there's a comment in item_use about caps & wiz hats being +>> wearable by anyone "unless their head is too big (ogres, etc)" + +== 391. I've found a number of eggplants in pr15, err, 4.1.15 + (these were supposed to be MI_NEEDLE.. what happened!?) + +== 392. +I made it to the Abyss... Now I'm stuck in this loop in +dungeon::define_zombie(): while(true) + { + // this limit can be updated if mons->number goes >8 bits.. + test = random2(182); // not guaranteed to be valid, so.. + cls = mons_charclass(test); + if (cls == MONS_PROGRAM_BUG || mons_rarity(cls) == 0) + continue; + +>> VERY tricky to fix correctly.. no wonder it was never done. + +(which monsters to allow as zombies in the abyss?) + +BWR: +Or perhaps just picks with the base level set as high as +possible... which will allow for Zombie Titans (which are high +enough level that they're never "naturally" generated, I believ + +Well simulacrums are out right away. They don't appear naturally +anywhere, due to the fact they sublimate away. On a similar note, +ball lightning shouldn't be generated anywhere, but I believe I +accidentally put them in the Realm of Zot... short lived creatures +should have to be summoned in. As for zombie/skeletons or even spectres (which I don't believe +are generated anywhere.... Spectral Warriors are generated, +but they're like Skeletal Dragons in that they're completely +different... don't think I've ever seen a Spectral "Thing" +in any dungeon, at least not one I didn't create myself) are +probably okay in the abyss... there are things like abominations, +necrophages, skeletal dragons/warriors there already. Spectres +might also be interesting in the Realm of Zot. + +== 393. Oh, dear. I think I might have left in a debugging bit that changes _all_ +generated traps to needle traps - they're supposed to be fairly rare, and only +seen below level 3! + +== 394. It looks like the logic in poison_monster() needs adjusting, too, if you're +getting credit for monsters done in by the poison from needle traps. Ah well. + +== 395. // * fixed: magical staves now described with new speed + +Actually, there's still one problem here. The '%' needs to be doubled, +since the description string will eventually be fired through cprintf()... +it currently gets dropped in both cases (weapon and stave). + +xx 396. An eloquent method of handling this would be to 'queue' shouting messages +between character actions and conflating multiple shouts into a single +message ("Several s shout" or whatever), possibly conflating by +monster type ("Several s shout out! A yelps!") so that the +player can be alerted to unique shouts and/or get the *flavor* of all +the various bellowing beasties. + +== 397. Make zombie monsters appear a few levels (3-4?) earlier than their non-zombie +counterparts + +== 398. +> I was blowing needles at an orc wizard, and he very politely gathered +> all the needles up for me. I appreciated him doing that rather than +> casting those nasty spells at me. :) + +Now, I thought that logic had been fixed (at least, in the case +of darts) such that monsters with potent HTH or spell attacks would +not lower themselves to gather scattered items for characters :P + +>> fixed better. Monsters won't pick up if there's not much there, they're +>> not wandering, and they already have ammo. Fleeing monsters never stop +>> to pick up ammo. + +== 399. Needle traps will poison the player even if he or she resists poison. + +xx 400. Some first level spells won't allow the player to target him- or herself. +This means that a player can't use those spells to see if he or she +resists their damage type. Knowing if one resists a damage type is useful +when trying on mysterious rings. + +>> need some restructuring to do this; burn_freeze() isn't set up to +>> actually affect the player. :P + +== 401. Personally, +I think Ijyb should probably get an XP modifier of 5 (and even +then is still worth 40 xp) + +== 403. +I think some kind of notice should be given, when body wich is carried +becomes rottens. And ghouls should definetly be able to see when +chunks of meat become rotten. As should everyone else, I think. + +>>mv: added appropriate messages + + +== 404. My Draconian monk (not so difficult as you might think) got mangled +by a goblin with seemingly limitless ammount of scrolls of summoning. +He summoned like 5-7 abdominations before my monk got killed. And +this was at level 2. Extremely bad luck or bug? + +== 405. Crash in pr14 +This occurred in the Realm of Zot, while attacking an Orb of Fire, which had +just exploded. + +>> very nasty. Fleeing monsters with "emergency" spells requiring tracers +>> would crash the game. + +xx 406. +When using Stone Skin with Dragonian it says "Your skin feels harder" +and "Your skin feels tender" instead of "Your scales feel harder" and +"You scales feel softer". + +>> These guys still have skin underneath all those scales.. + +== 407. Fix quadrant blink again: +Which gives us the one-step formula: + + dist = abs( (y - you.y_pos) * (tx - you.x_pos) + - (x - you.x_pos) * (ty - you.y_pos) ) / s + + where (x,y) is the player's targeted square/vector, + (tx,ty) is the spell's targeted square, + (you.x_pos, you.y_pos) is the player's position, + + and s is the distance between (x,y) and (you.x_pos, you.y_pos). + + + The important thing to notice here is that s is constant for all + of the trials (one or root-2), and since we don't care about + an accurate measurement (only a relative one between trials), + we can reduce it to one + +== 408. Although, 'f' does fire needles correctly, the ')' command doesn't + actually show that this is the case (see command.cc::list_weapons()). + +== 409. Poisoned needle gives messages in bad order. Patch from Guus. + +== 410. > I just noticed that my character has a Dex of 63. I've chosen every + > ability increase to be in dex, and he occasionally wields an artefact + > dagger that is +3 to dex. I don't think it relates to save files, + > as I haven't saved the game in three days. + + The stat growth is caused by autobutchering when the butchering weapon + has a stat bonus. I get the stat bonus when I wield the weapon, but do + not relinquish the bonus when I unwield it. + +>> ewww. this was ugly. + +xx 411. I was playing a Spriggan Transmuter when i entered the mines. I was + overwhelmed by +10 Orcs so i went back up. One orc followed me. I + then started running away until i was several spaces away, turned and + cast disrupt killing the orc. As the orc died the stairs to the + mines disappeared. + +>> can't reproduce. + +== 412. I've been trying out Chaos Knights and the critters that Xom summons + for you have this annoying habit of polymorphing the bad guys to + *way* OOD monsters. For example, my last knight was level 3 and is + listed at -19/28 HPs in the morgue file. This was one spell and he + was at full health when it happened. Although this was before the + latest patch so perhaps it's related to the other OOD problems. + +== 413. >I've seen that disorder message a few times too. The first time the + >game hung when I tried to go back up to that level. After that I + >avoided loading those levels again. :-) There really needs to be + >better sanity checking here. It's not right that a bad level can be + >generated and only found when the player stumbles across a bad pile + >of items. + + From what I can remember, this kind of thing is almost + certainly the result of bugs in either the monster inventory + code or the code responsible for placing monster corpses on + death. The behaviour where the player picks up an item and + it doesn't get listed in the inventory tended to be caused + by the existence of a link to an item with a quantity of 0 + (this also causes "a scrolls labelled SDFKLSFD" - when the + quantity is zero it puts an 's' on 'scroll' but leaves the 'a' + in front). + +== 414. Characters cannot exercise fighting, weapon, or unarmed combat skills + against plants/fungi, so perhaps they shouldn't exercise stabbing. + And plants/fungi should probably always appear disinterested. + + This assassin has also been paralyzing monsters, but can't seem to stab + one afterwards. + +== 415. My assassin carefully approached his victim: + + Move the cursor around to observe a square. + Press '?' for a monster description. + A plant. + It doesn't appear to be interested in you. + Floor. + +>> obviously need some kind of data-driven thingie here for stabbing / paying +>> attention. + +== 416. I fire a "Disrupt" at a worm just off screen (as I'm running away): + + You kill the worm! + Nothing appears to happen. + +== 417. He was standing on a down stairwell. He had full view of each of the + adjacent squares, but not all of distance 2 squares. He was at a little + over half his hp, and I hit '5' to rest and recover. + + Suddenly there was a bellow, and a hydra was beside him. The hydra + proceeded to lay the smack down, slaying the poor assassin. I guess + it's poetic justice, since the assassin slew quite a few monsters + by suddenly appearing beside them, fiery blade in hand. + +>> almost definitely a result of the new 'near stairs' code. Needs some +>> refinement, I suppose. (evil grin) + + +== 418. Elyvilon got upset when a needle trap killed a monster just after + I had prayed. :) + + +== 419. Over the course of the game I obtained around a dozen blowguns and only + one crossbow, so they may be too numerous. + + (most blowguns came from the ground) + +== 420. Two minor quibbles on spell descriptions. + + a) Unlike the other brand weapon spell dscriptionss, the Poison Weapon + spell description does not mention that the spell won't work on + branded weapons. + + b) The description of the Disrupt spell says that the spell "disrupts the + matter of another creature's body", but the spell also affects + creatures with non-material bodies. + +== 421. Fixed formatting problem with randart descriptions + +== 422. Changed slaying to be a little less powerful. + +== 423. Butchering with bare hands and a short blade in slot a doesn't +switch back to bare hands. (Naturally, I'm using the experimental +auto switch when butchering -setting.) + +== 424. mons_speed() should be extern, remove static declaration from mon-util. + +** 425. I have a ring of Baldness that somehow got cursed and now I am +stuck with it. Scrolls of remove curse have no effect. +Its not bad ring, but the increased metabolism isn't nice. + +== 426. More inventory problems: +while playing 4.0.0b16 I found two bugs: +1) when picking up items from the floor, after picking them up - it says "no +more items" (but it picks up the item). This bug is strange it happens only +at the very beginning of the game. For some reason after descending to Level +2 it has stopped from happening. + +2) picking up items from the same type: when you have say 2-chokos and there +is on the floor another one then when you stand on top of it - it says +3-chokos(it takes into account the ones you have in your inventory). Or the +other solution is that when you pickit up from the floor it replaces your +previous chokos with the last amount of that type picked up. (Because I had +2 chokos and after picking 3 chokos = I got 3, so it could be either +problem...dunno) + +== 427. Fix descrip. for rings of slaying. + +== 428. I met monsters with infinite potions. I hope it's also fixed. + +== 429. + in monstuff.cc::handle_nearby_ability() should be also handled + monsters behaviour - BEH_WANDER and BEH_SEEK, beacuse monsters speak + even if they don't know about player. Also it looks that Giant + eyeball can stare at player even if he isn't noticed (or if he is + invisible, but it's probably feature) + +== 430. Michal's patch (new unrands?) + >> mv: now included - not only unrands but mainly clean-ups and minor upgrades + +== 431. In view.cc:viewwindow2() was buffy changed from unsigned char to + unsigned short (I'm talking about + FixedVector buffy). + But at least with my compiler it doesn't work and viewwindow2() + doesn't show anything (only black screen). When I changed buffy back + to unsigned char it started to work again. + +== 432. Giant eyeballs no longer stare at friends. + +== 433. You throw a dart. + You throw a dart. + You throw a poisoned orcish dart. + You shoot a poisoned needle. + You shoot a poisoned needle. + You hear a grinding noise. + + ... with a dex 18 / darts 7 / throwing 4 player! + This is repeatable, and at times, I managed to + clear a rock wall with just two needles!!! Couple + this with the durability of needles, and players + have a poor-man's dig spell at their disposal. + +== 434. +I think I will change this condition so that a + monster with no ammo won't bother picking any up, + unless their melee attack really sucks. + +== 435. + You destroy the shapeshifter zombie! + + I sneak up on a defenseless cockroach and crush it with + my quarterstaff, only to be messaged that my character's + stabbing skill has increased. Is is just me, or does the + idea of stabbing with a quarterstaff seem a bit off? I + weakly suggest changing the name of the skill to something + less tied to impaling weapon types. "Ambush" skill or + "Bushwhack" skill or something similar. + +>> no more shapeshifter zombies. Improved messaging for stabbing. + +** 436. + + + Hi, + + Could you add a description of the / and * keys to the help screen? Keypad is + not always useable, especially not with ctrl and shift keys, this might help + some people. Patch attached. + + +== 437. + Note the extra space before the period: + + Methea's ghost stares at you . You feel cold. + + + This is a common construction used (I presume) + in mon_speak() [or whatever]. There should be + a comma placed after the verb ['begs' in this + case] for grammar's sake: + + Methea's ghost begs "Please don't hurt me!" + +== 439. + Package: crawl + Version: 1:4.0.0beta16-1 + Severity: minor + + Another small upstream gameplay issue. In the context of a rat I had + summoned attacking a kobold which was wielding a poisoned dagger: + + The rat hits the kobold. + The rat hits the kobold! + The kobold hits the rat with a runed dagger! + The rat looks ill. + You kill the rat! + That felt strangely unrewarding. + The rat's corpse disappears in a puff of smoke! + + The rat was killed by the kobold (via poison), not by me, but the messages + seem to indicate I killed it. + + This may be very tricky to reproduce, unfortunately :( + +== 440. +> * removed: no more spellcasting wanderers, until such time as we +> have some reasonable "hedge magic", which I will not add before +> release. + + A healthy percentage of my wanderers still start out with magic + skills. + + >> but not spells. + + +== 442. Repel undead doesn't seem to actually repel the undead. + + >> mv: fixed + +== 443. The enslaved stay enslaved even when you attack them. + +== 444. Change 'points' to 'point' if points needed == 1 in 'C' message + +== 445. +This is me and a summoned zombie vs. a goblin: + + You miss the goblin. + The goblin hits you with a club! + The giant cockroach zombie misses the goblin. + The goblin fails to defend itself. + You kill the goblin! + +>> very possible. Goblin was concentrating on the cockroach (lucky +you!) + +== 446. Add ???'s patch for FreeBSD support + +== 447. Zombie generation hangs in the various hells, the crypt, and probably + slime pits, ecu. temple, and others. + + >> think I got all cases of levels with no zombifiable native life. + +== 448. Monster polymorph can hang in HoB: + >> only valid monster for poly in HoB is Dancing weapon, which is EXPLICITLY + NOT a valid poly target. So it hangs. Duh! + +== 449. Shapeshifters no longer gain the extra abilities (spells, specials) + of their forms (they used to - I considered this a bug). + +== 450. Incredibly, monster enchantments were not being reset when a new level + was generated. This is an absolute showstopper and has probably corrupted all + games in progess. Most notable with permanent enchantments like shapeshifter - + this is what caused the "shapeshifter" dancing weapons that Josh (indirectly) + reported. + +** 451. As you read the scroll, it crumbles to dust. +Your club glows black for a moment. +Drop which item? +You drop a +0 dwarven hand axe. +You are empty-handed. + +-- 452. +I hit an assert failure after reading a scroll of curse armour. From the +traceback, we see an immediate problem at the call to itemname::in_name() +at line 3358 of item_use.cc. The object to be named is -1. +#6 0x80b1797 in in_name (inn=-1, des=4 '\004', + str_pass=0x825b9a0 "a +1,+0 elven long sword") at itemname.cc:69 +#7 0x80b125b in read_scroll () at item_use.cc:3358 +#8 0x8050e2d in input () at acr.cc:880 + +Doing a quick compare between the pr16 & pr17 code, I think this line: + ok_to_curse[i] == (you.equip[i] != -1 + && you.inv_plus[you.equip[i]] < 130); + +should be: + ok_to_curse[i] = (you.equip[i] != -1 + && you.inv_plus[you.equip[i]] <= 130); + +** 453. +DOS, 486sx +4.1.16 Floating above a (dart) trap discovers it but gives no message. + + I'd like to see a message when Coronas wear out. + + >> mv: added + +4.1.17 Loading the game; Okawaru says: Welcome, disciple. + +A monster called "a human" was displayed as a darker (non-visible) + floor tile. + + >> mv: fixed + + +** 454 .Goblins and orcs still get infinite potions of healing?? + +** 455. I'm playing Crawl pr17 (I double-checked this time) under Solaris, and I just +got the "Too many items" bug with a minotaur monk. It had to do with a +cursed runed leather armor that I was carrying. I had a bunch of stuff in +my inventory, and read a scroll of detect curse (this is how I discovered +that the armor was cursed). So I dropped the armor and moved to another +spot. There I dropped some weapons that I wasn't interested in. I stepped +back to this spot later, there's a cursed runed leather armor. There's also +a cursed runed leather armor on the spot where I actually dropped it. I +picked one up and dropped in on the other, looked, and "Too many items." The +game hung when I tried to save. :^/ + +** 456. I was playing the same minotaur monk (I was able to salvage the game) when I +saw what I thought was a statue (an '8'). When I looked at it, I saw: + +You see 26 !questionable item (c100,t0,p0,p(2)0,d0:q26)s here. + +** 457. +I was wandering along when I met a hobgoblin. I kill him and decide to pick +up his weapon to see if it's good. I then get "do you want to pick up +hobgoblin corpse (y/n/a/q)"(or something like that). I type no. "do you +want to pick up hobgoblin corpse" No. "do you want... " no ad nauseum. I +give up and press q the game crashes. I restart and load the autosave. +Same thing happens. I this time press a and get +x - a hobgoblin corpse +x - a hobgoblin corpse +x - a hobgoblin corpse etc +It won't stop doing that + +Yours + +William Hull + +Another one: +at another time there was this situation: + +### +@g! the potion is yellow +### + +### +@!! after killing the goblin,a second yellow potion appeared +### + +but walking over both just gave me the msg "m - a yellow potion" twice. +afterwards i had just one yellow potion in my pack. + +(more) + +The item bug (duplicate items and potential lockup) seems to happen whenever +a monster picks something up off the floor. The most recent incident is +typical (at least in my games). + + + #'#### + #! + # ### + #K# + # + <@ ### + +Near the door is an emulsified red potion. After I kill the kobold (who had +previously been wandering around, i.e. he wasn't asleep), I find that he was +carrying an emulsifed red potion. Coincidence? I think not. In this +instance, I left the potion where it was sitting and checked out the potion +near the door. Underneath the potion is a kobold corpse. I go up the stairs +to the previous level, then return; the corpse and potion near the door are +gone. From previous experience, I know that picking up both potions/corpses +would have left me with just one potion/corpse in my inventory (assuming I +didn't have any before), and picking up one potion/corpse and dropping it +on top of the other potion/corpse will create the "Too many items" bug, and +cause the game to hang when saving the level. + +(more) + +Sorry to follow up on my own post, but I was browsing through the sources and +I noticed that in pickup() in items.cc, relink_cells() is called after the +player successfully picks up an item off of the floor. No such function is +called in handle_pickup() in monstuff.cc. Perhaps handle_pickup() should +call relink_cells() (which we know works) instead of trying to update the +igrd array itself. + + +-- 458. My char with some stabbing skill stabbed a mimic wich was nerly dead +after many rounds of battle. I know there is bonus when attacking a +fleeing moster, but mimics cannot flee. + +>> fixed. Immobile monsters cannot flee. + +** 459. An artifact weapon of holy wrath does allow a demonspawn to wield it, wich +is bug or maybe not. + +** 460. ..to Sif Muna, so I went back to the Temple and converted. Little did I know +that Vehumet would hold a grudge. I survived a blue demon, an abomination, +and several magical blasts, but Vehumet eventually blasted me when I was low +on HP and did me in. *sigh* + +Anyway, here's the buglet: the high score list claims that my character was +killed by bad targeting. + +-- 461. There is another one in monstuff.cc in handle_scroll when checking for +negative numbers of scrolls... +And yes it would be cool if they removed all the warnings (or at least +most of them). Removing unused variables would be a first step. + +>> + +** 462. In the dos binary of Crawl 17, when running the game with "crawl -plain" +option, the game screen is totally black. I still get the player statistics +and messages, but the map display that you normally see is blacked out. + +This is bad because the normal crawl display (without -plain) is a bit buggy +for me. (no cursor under the character). I also kinda prefer the # +character for walls (got used to ADOM) :) + +xx 463. Beam tracers: tweak to take into account what might happen if they _miss_. + +** 464. Level draining can cause -1/-1 -magic when used against ogre (or maybe +troll) character. + +== 465. Automatic weapon change when dissectiong gives a litle funny messages when +berserk: +Switching to your swap slot weapon. +You are too berserk! +Maybe you should try using a sharper implement. +Switching back to a - the uncursed great mace "Res". + + >> mv: fixed + +xx 466. My deep elf summoner cast summon demon from a staff of summoning (A +great item for a starting summoner.), and received an orange demon, +which proceded to attack me. None of the other demons had attacked. Is +this a bug, or is there some way to make demons hostile? + +>> 1 in 4 chance of hostile demon. + +-- 467. Ettins have no description. I just met an elf and I think those should only +appear as corpses. It had description "A monster whose description has yet +to be written.". + + +== 468. Invalid polymorph targets (this has been reported several times). + There are several generic monster types which are _not_ valid poly. + targets: 'human' and 'elf' being two of the more common results when + polymorphing stuff. And yet, 'human' should probably be given some + generic statistics and then allowed as a target (it makes sense, after + all). + +>> mv: fixed now diff --git a/crawl-ref/docs/obsolete/messlog.txt b/crawl-ref/docs/obsolete/messlog.txt new file mode 100644 index 0000000000..d04ae19f83 --- /dev/null +++ b/crawl-ref/docs/obsolete/messlog.txt @@ -0,0 +1,562 @@ +CHANGES TO pr31: + + + +* #defines MWATER6-10 (values 436 - 440) removed, unused in code, not needed and there is no point in reserving space for nonexistent monsters +* #defines for MLAVA4,5,6,7,8,10 (and MLAVA10 should really have been MLAVA9, anyway), values 424-429, removed -- now unneeded, unused in code anyway. +* #ifdef'd (USE_DEBRIS_CODE) enum DEBRIS -- really have to look at how this is implemented now! +* ATTR_LAST_ATTR -> NUM_ATTRIBUTES +* BEAM_CLOUD -> BEAM_ACID on strength of evidence in plant_spit() and zappy(), but now stinking_cloud() looks odd ... hmmm +* DEBRIS_LAST -> NUM_DEBRIS +* DNGN_TRAP_I -> DNGN_TRAP_MECHANICAL; DNGN_TRAP_II -> DNGN_TRAP_MAGICAL +* ENCH_LAST_ENCH -> NUM_ENCHANTMENTS +* FOOD_LAST -> NUM_FOODS +* GOD_LAST_GOD -> NUM_GODS +* GOOD_LAST_GOOD -> NUM_GOOD_THINGS +* KILLED_LAST_KILLED -> NUM_KILLBY +* MH_NORMAL -> MH_NATURAL, H_NORMAL -> H_NATURAL ... may want to add in {M}H_MAGICAL for creatures that are mortal though magical ... +* MI_LAST_MI -> NUM_MISSILES +* MONS_LAST_MONS -> NUM_MONSTERS +* MONS_SMALL_SKELETON -> MONS_SKELETON_SMALL; MONS_LARGE_SKELETON -> MONS_SKELETON_LARGE; removed #defines in enum.h that josh added to achieve similar effect +* MS_LAST_MS -> NUM_MONSTER_SPELLS +* NAUGHTY_LAST_NAUGHTY -> NUM_NAUGHTY THINGS +* OBJ_LAST_OBJ -> NUM_OBJECT_CLASSES +* POT_LAST_POT -> NUM_POTIONS +* SCR_LAST_SCR -> NUM_SCROLLS +* SHOP_LAST_SHOP -> NUM_SHOPS +* SK_LAST_SK -> NUM_SKILLS +* SPELL_LAST_SPELL -> NUM_SPELLS +* SPELL_MANNA and spells4::cast_manna() struck from the code, along with all supporting tie-ins +* SPWPN_LAST_SPWPN -> NUM_SPECIAL_WEAPONS +* STAFF_LAST_STAFF -> NUM_STAVES +* SYM_SPORE -> SYM_BURST, as it is used all over the place for things other than spores +* TOTAL_CARDS replaced with enum meber NUM_CARDS +* TRAN_LAST_TRAN -> NUM_TRANSFORMATIONS +* Vehumet will no longer shield one's intelligence when casting SUMMON_HORRIBLE_THINGS -- made no sense that he did in the first place +* ZAP_LAST_ZAP -> NUM_ZAPS +* a lot of cleanup/compaction in itemname.cc +* a lot of general clean-up +* a lot of mpr() clean-up +* ability::show_abilities() made static +* ability::species_ability() -> activate_ability() +* abyss::generate_area() recoded for efficiency in selecting replacement tiles +* abyss::priest_spells() -> player::priest_spells() and commented out, declaration from abyss.h moved to atop player.cc and also commented out -- part and parcel of above reasoning +* added "you.redraw_hit_points = 1" to calc_hp() -- caught a number of instances where it was not being set +* added #define ENDOFPACK for max size of player backpack +* added #undef MAX to macro definition in it_use3::reaching_weapon_attack() +* added CANNED_MESSAGES and stuff::msg_something_appears -> stuff::canned_msg() with appropriate parameter +* added DARM_PLAIN to fill out ARMOUR_DESCRIPTIONS enum +* added DNGN_LAST_SOLID_TILE to track this value's usage ... wish me luck +* added DWPN_PLAIN +* added MDSC_NOMSG_WOUNDS for monsters that do not message wound status to player +* added MONSTER_DESCRIPTORS and monstuff:monster_descriptor() to handle usage +* added MSG_SPELL_FIZZLES to stuff::canned_msg() +* added NUM_TRAPS and TRAP_RANDOM +* added OBJ_RANDOM +* added OBJ_UNASSIGNED +* added SHOP_UNASSIGNED and SHOP_RANDOM +* added SPARM_RANDART_I +* added STAT_ALL to deal with royal jelly, etc. +* added TRAP_UNASSIGNED +* added a number of CANNED_MESSAGES and handling by stuff::canned_msg() +* added and implemented newgame::jobs_hpmp_init() +* added declaration for monstuff::handle_behavior() atop file +* added declaration of monstuff::flag_ench() atop monstuff.cc -- no idea why there wasn't one +* added enum DIRECTION and applied members to codebase +* added enum GENUS_PLAYER and started population of the enum for cases +* added enum MONSTER_INVENTORY_SLOTS and applied members to codebase +* added enum PLAYER_DESCRIPTORS +* added enum SPECIAL_ROOMS and applied to codebase +* added food::make_hungry(int bool) to streamline hunger decrements and messaging +* added itemname::is_demonic() and applied to codebase -- probably should be expanded at a later date as more demonic items are introduced +* added itemname::launched_by() which returns the appropriate missile subtype for a given weapon[launcher] subtype and implemented into code -- this will probably have to be reworked +* added itemname::launches_things() which simply returns whether or not a WPN_foo launches other objects or not +* added message to spells2::cast_toxic_radiance() for cases where light passes through invisible monsters +* added misc::trap_at_xy() to handle determination of "which trap" for a given (x,y) coordinate +* added misc::trap_category() to return grd[][] symbol for a given env.trap_type[] +* added monstuff::message_current_target() for multiple instances of same messaging -- seemed the best place to stick it +* added monstuff::monster_index() to return index value of a given monster pointer +* added monstuff:heal_monster() and applied to codebase +* added monstuff:hurt_monster() and applied to codebase +* added monstuff:monster_habitat() to determine native habitat of creatures without resorting to range checking on MONSTERS enum -- better future flexibility +* added mstruct::mons_itemuse() to replace global array gmon_use[1000] -- too much memory wasted there +* added newgame::enterPlayerName() +* added newgame::give_basic_knowledge() +* added newgame::give_basic_spells() +* added newgame::openingScreen() +* added newgame::verifyPlayerName() +* added player::dec_hp() -- probably should be inline or macro -- to unify handling decrementing of hp and catch error of not setting redraw to 1 (!!!) +* added player::dec_mp() -- probably should be inline or macro -- to unify handling decrementing of mp and catch error of not setting redraw to 1 (!!!) +* added player::decrease_stats() -- yes, I know that decrease_stats() and increase_stats() could be merged, but I'm too tired to do it now +* added player::deflate_hp() to catch possible redraw bugs +* added player::enuf_hp() to clarify ability.cc +* added player::enuf_mp() to clarify ability.cc +* added player::inc_hp() to catch possible redraw problems and bounds checking +* added player::inc_mp() -- probably should be inline or macro -- to unify handling incrementing of mp and catch error of not setting redraw to 1 (!!!) +* added player::job_title() and implemented +* added player::player_descriptor() -- plan on future expansion +* added player::reset_hp() to catch possible redraw problems +* added player::set_hp() to catch possible redraw bugs +* added player::set_mp() to catch redraw problems and to clarify coding +* added player::species_abbrev() to stand in place of code in ouch::ouch() +* added spellbook::spelltype_name() to permit recoding of certain portions of code as loops!!! (see: spells0.cc, spellbook.cc) - maybe should be moved elsewhere - output not in traditional order, but does it matter? -- cf. chardump::spell_type_name() -- grrrr!!! +* added spells0::set_spellflags() to handle routine tasks +* added spells0::spell_enhancement() +* added spells0::spell_type2skill() +* added static enum CARDS to decks.cc -- only used within this file -- and applied +* added stuff::canned_msg(MSG_SOMETHING_APPEARS) to handle frequent use of set message: "Something appears at your feet." +* added stuff::index_to_letter() and applied across codebase +* added stuff::player_can_hear() to handle silence checking for both a distant (x,y) coordinate and the player's own coordinate +* added stuff::random_colour() to generate a random color -- clarifies usage of particular calculation, prefer overhead of function to macro definition -- and applied to codebase +* added view::mons_near_2() as future replacement for view::mons_near() -- takes a pointer rather than an index +* anything relating to #ifdef CLASSES has been pulled out of the codebase -- it was never defined (or undefined for that matter), the code was out-of-date, got in the way of the actual operating code, and there is was a note dating all the way back to version 3.10 stating all this and more -- hope no one will miss it +* applied stuff::yesno() to codebase -- a couple more complicated instances can use application +* bang::explosion() now takes into account monster clouds as well as player clouds for "sizzle" +* bang::explosion() now takes struct bolt * instead of struct bolt[] as second parameter +* bang::explosion1() now takes struct bolt * instead of struct bolt[] as only parameter +* beam::beam() now takes struct bolt * instead of struct bolt[] as only parameter +* beam::check_mons_magres() returns bool instead of int +* beam::check_mons_magres() takes struct monsters * instead of int as first parameter +* beam::check_mons_resists() now takes struct bolt * instead of struct bolt[] as second parameter +* beam::check_mons_resists() takes struct monsters * instead of int as second parameter +* beam::mimic_alert() now takes struct monsters * instead of int as parameter +* beam::missile() now takes struct bolt * instead of struct bolt[] as first parameter +* beam::mons_ench_f2() no longer takes the second parameter (int foo[]) -- completely uneccesary, as it can be passed directly to the bolt struct +* beam::mons_ench_f2() now returns bool instead of int -- not that the return value is ever used elsewhere +* beam::mons_ench_f2() now takes struct bolt * instead of struct bolt[] as third parameter +* beam::mons_ench_f2() takes bool as second parameter instead of char +* beam::poison_monster() now takes struct monsters * instead of int as parameter +* beam::poison_monster() takes bool instead of char for second parameter, renamed from "source" to "fromPlayer" and values reversed in passes (as it actually was t/f on fromMonster, but double m's looked silly) +* beam::sticky_flame_monster() takes bool instead of char for second parameter -- no idea what it really means, as the function is called but once and the parameter ("source") is set to false +* beam::tracer_f() now takes struct bolt * instead of struct bolt[] as second parameter +* beam::tracer_f() now takes struct monster * instead of int as first parameter +* bugfix (again): mummies get "closer to death" at levels 13 and 26 +* bugfix (of sorts): wizard commands 'x' and '$' no longer add to experience and call level_change() directly, but rather call gain_exp() instead -- these commands should still be bound by experience limits imposed by player::gain_exp() +* bugfix in beam::beam() referenced menv[0] when menv[o] was meant ... cripes (!!!) +* bugfix(?): items::handle_time() now forces one to exercise stealth -or- armour ... the original coding was a little odd (players with no or light armor had less of a chance to exercise stealth than those with heavier armour) -- but the intent seemed to be to make this tradeoff ... can't be stealthy in plate (unless elven), don't even try ... will potentially boost learning of armour skill by not wasting xp on stealth practicing. -- odds collapse on stealth practicing is 1 in 18 ... cf. to armour, which is 1 in 6 -- does that seem right, because that was the way it was and still is. +* bugfix(minor) monstuff::monster_move() now cases monster clouds as well as player clouds for determination of safe move +* bugfix/added itemname::hide2armour() and applied to codebase -- includes STEAM_DRAGON_HIDE, which had for some reason been overlooked in certain routines in dungeon.cc +* bugfix/kinda: mstuff2::mons_trap() rewritten for better handling, silence checks for Zot trap, etc. +* bugfix: (I think this was the case) warning message for followers of good gods weilding demonic weapons now outputs upon wield regardless of how special the item is +* bugfix: I think I got the "off-by-one" for the Overmap error fixed +* bugfix: NAMED_WEAPONS now begins at 181 and not 581 [josh admits fault here] +* bugfix: [Daniel] SPWPN_FLAMING -> SPWPN_FLAME and SPWPN_FREEZING -> SPWPN_FROST for missile weapons in dungeon::items() +* bugfix: abilities exercised by monsters in monstuff::handle_nearby_ability() were often dependent upon whether or not the monster was visible to the player -- which is stupid, a monster should stare at you (for example) regardless of whether you can see it +* bugfix: ability case for ABIL_TO_PANDEMONIUM was only checking for 4 magic points when ability costs 7 +* bugfix: acr::input() -- changed "if ( you.duration[DUR_WEAPON_BRAND] > 0 )" to "if ( you.duration[DUR_WEAPON_BRAND] > 1 )" and else-if'd the ( you.duration[DUR_WEAPON_BRAND] == 1 ) -- as coded before, brands would jump from 2 to 1 to 0 in one call to input() -- just plain wrong! +* bugfix: acr::input() -- changed instances of "if (foo > 1) foo--; if (foo == 1) foo = 0;" for durational things to "if (foo > 1) foo--; else if (foo == 1) foo = 0;" so that durational values of 2 would mean "two turns left" and not "expire now" as the code actually worked +* bugfix: added #include atop spell.cc {Brent} +* bugfix: added bounds checking to dungeon::check_doors() +* bugfix: added descriptor strings for transformation states missing from chardump::dump_char() +* bugfix: added josh's acquirement book bugfix to dungeon::items() [Josh] +* bugfix: applied SPTYP_RANDOM to appropriate spells::miscast_effect() calls and added appropriate code to spells::miscast_effect() -- much easier to change later, now +* bugfix: bang::explosion1() had the potential to dump out duplicate lines from info[] due to careless placement of mpr() calls +* bugfix: calls to "miscast_effect(10+random2(15), ...)" changed to "miscast_effect(10+random2(14), ...)" as there is no SPTYP_foo value assigned to 24! +* bugfix: ditto for spells4::tame_beast_monsters() +* bugfix: dungeon::build_minivaults() would attempt to build an undefined vault 1 out of 34 times ... no idea whether it would cause the game to hang, but not good to do that +* bugfix: dungeon::give_item() was placing scrolls in the potion slot of monsters -- cripes (!!!) +* bugfix: dungeon::hide_doors() fixed to not reference things outside bounds of grd[][] +* bugfix: dungeon::items() for OBJ_WEAPONS was going off a value of 0 [no descrip] and not 3 [DWPN_ORCISH] in disallowing orcish weapons of orc slaying or holiness +* bugfix: dungeon::items() was not generating the last four spellbooks (Josh's additions) -- it is now +* bugfix: effects::forget_spell() would only check to "forget" spells in range of [0,19] and not [0,24], the full range of you.spells[] - and infinite loop check rewritten so as not to be probabilistic itself (!!!) +* bugfix: eliminated references to feet for players who are centaurs +* bugfix: fight::jelly_divide was locating suitable spots for the new jelly thusly: + "if ( mgrd[parent.x + jex][parent.y + jey] == MNG && mgrd[parent.x + jex][parent.y + jey] > 10 && ( parent.x + jex != you.x_pos || parent.y + jey != you.y_pos ) )" + the second grid check should be against grd[][] and not mgrd[][] -- the way it is coded, the second conditional is automativally satisfied by the first (MNG > 10) !!! +* bugfix: fight::monster_polymorph() will only message the transformation if the player is near, the monster is visible or player can see invisible (before, messaging would only check for first case, and would do the strcpy/strcat regardless, only putting mpr() within a conditional) +* bugfix: fight::you_attack() change in to hit bonus for sure blade changed from "5 + random2(10)" to "5 + random2limit(you.sure_blade, 25)" [Daniel] and changed messages in player::display_char_status() +* bugfix: food::eating() case FOOD_PIZZA to properly display the "Mmmm..." string prior to the name of player's favorite kind of pizza +* bugfix: for some reason Red Draconians were the only Draconians that did not get a tailslap attack in fight.cc -- now they do +* bugfix: general change of "if (mons_near(o) && menv[o].enchantment[2] != ENCH_INVIS)" to "if (mons_near(o) && ( menv[o].enchantment[2] != ENCH_INVIS) || player_see_invis() ) )" -> simple_monster_message() where appropriate and some bugfixes with where checks were not applied against messages +* bugfix: in abilities, moved some spells cast to positions prior to exercising so players would not get potential skill increase (and application) during act of casting +* bugfix: in acr::input() you.delay was decrementing from 2 to 0 ... fixed by making an if-else rather than if-if situation +* bugfix: in beam::beam() wand_id for LIGHTGREY (TELEPORTATION), WHITE (DISINTEGRATION), LIGHTRED (ENSLAVEMENT), BEAM_SLEEP only set to 1 for monsters that player can see +* bugfix: in dungeon::plan_3() it was calling clear_area() to replace DNGN_FLOOR with DNGN_FLOOR -> should have been replacing DNGN_ROCK_WALL with DNGN_FLOOR {linley} +* bugfix: in dungeon::plan_4() it was calling clear_area() to replace DNGN_FLOOR with DNGN_FLOOR -> should have been replacing DNGN_ROCK_WALL with DNGN_FLOOR {linley} +* bugfix: in fight::monster_die() for case KILL_RESET cloud was only being placed if monster was near player +* bugfix: in mstuff2::mons_cast() menv[0] was being referenced, preventing monster abjuration for spells MS_LEVEL_SUMMON, MS_SUMMON_DEMON, MS_SUMMON_UNDEAD, and MS_SUMMON_DEMON_GREATER +* bugfix: in skills::exercise2() fixed determination of which skills impact recalculation of certain stats and/or forced redraws +* bugfix: it_use2::unwear_armour() removed message checking for SPARM_COLD_RESISTANCE -- no real check for "lowered" resistance [how to save state w/o recalling player_res_foo()? problem with "stateless" resistances!] +* bugfix: item_in_shop() no longer generates items of type OBJ_UNKNOWN_I or OBJ_UNKNOWN_II +* bugfix: items::add_items() calculations for item_weight recoded to take advantage of itemname::mass() properly and permit Josh's USE_LIGHTER_MAGIC_ITEMS modification -- screwy it was +* bugfix: message in player::display_char_status() for sure_blade now based on you.sure_blade and not you.confusing_touch [Daniel Ligon] +* bugfix: messaging for spells2::holy_word() would only happen for invisible monsters for players unable to see invisible !!! (d'oh!) +* bugfix: messaging screwed-up for monstuff::handle_potion() -- also, would only quaff potions of invis or haste iff not near player (latter makes little sense) +* bugfix: misc::manage_clouds() now handles monster clouds, too. +* bugfix: misc::in_a_cloud() for MIASMA cases was doing "double damage" by decrementing hp directly, then calling ouch (which does the same) +* bugfix: monster flying over trap message was copied into info but never output by mpr() +* bugfix: mstuff2::mons_throw() was checking against MSLOT_MISSILE instead of MSLOT_WEAPON in determining whether monster was in fact using a missile launcher (I think that was a bug) +* bugfix: mstuff2::mons_throw() was checking against a value of 120 (not possible, AFAIK) and not DWPN_ELVEN in providing a to-hit bonus to the use of elven missile launchers +* bugfix: mstuff2::monster_teleport() messaging was occurring for nearby monsters that were either visible or in the presence of a player that could not see invisible -- odd +* bugfix: no description was output for runes of zot if id level was 0 (actually, would output debug string) +* bugfix: no more messaging that a monster "almost triggered" a blade trap and no more revealing the trap, then -- makes no sense if it was "almost triggered" to perform either action +* bugfix: player thrown missiles now match monster thrown missiles +* bugfix: player::level_change() had mummies receiving "closer to powers of death" messages at levels 13 and 23 and not 13 and 27 as set in player::player_spec_death() [Daniel] +* bugfix: related to above, gift timeout for YRED not set if he can't get a servant to you +* bugfix: religion::lose_piety() did not have a message of losing ability to hasten self if follower of GOD_OKAWARU (piety > 120) or ability to receive minor healing (piety > 50) or ability of temporary might (piety > 30) +* bugfix: repaired messaging for it_use3::box_of_beasts() to check to see whether a creature actually appears before saying one does (!!!) +* bugfix: same as above for items::item_place() +* bugfix: shopping::item_value() was going off a value of 6 [DARM_ORCISH] (and not 3 [DWPN_ORCISH]) when devaluing ocish weapons +* bugfix: some possible messages were not being directed to player because of improper random limits being set in religion::Xom_acts() +* bugfix: species selection screen in newgame::new_game() now starts with clrscr() call for all platforms -- was ugly under linux with just two EOLs output +* bugfix: spells3::cast_selective_amnesia() will now return mana to player equivalent to the spell's cost ... looks like it was supposed to, but prior code did nothing at all +* bugfix: spells3::entomb() did not destroy the traps it overwrote with walls - now, mechanical traps destroyed, magical traps retained +* bugfix: spells4::cast_evaporate() was not messaging string constructed for "hands flaking" case +* bugfix: spells4::make_shuggoth() could potentially have referenced menv[-1] -- fixed, but I still have to fix messaging +* bugfix: spells4::passwall() attempts to reference areas outside the bounds of grd[][] -- still need to figure out what proper "borders" should be (see function) +* bugfix: spells4::sleep_monsters() was using check_mons_magres() instead of !check_mons_magres() for condition where monster "saved" -- yes, I know it is a bit backward, but that is the code +* bugfix: started applying GXM and GYM - caught instances where things were being checked/added/whatever beyond bounds of env.foo[][] +* bugfix: the "Symbol of Immediate Regeneration" card was producing POT_HEALING effect, when it should have been generating a POT_HEAL_WOUNDS effect, according to the commented name of the card and the fact that there is already a Card of Healing +* bugfix: dungeon::give_item() switched "(mitm.quantity[bp] == 0 || mitm.quantity[bp] == 100)" to "(mitm.quantity[bp] == 0 || mitm.base_type[bp] == 100)" as it should have been all along +* bugfix: restore_foo() will no longer reset foo to foo_max in cases where foo >= foo_max -- don't know if it is the case, but may be at some point in the future +* bugfixes: messaging based on create_monster() has been fixed to be dependent upon whether a monster actually appears -- probably did not get them all << checks spells2, spells3, and spells4 still >> +* changed H_foo to MH_foo in spells4.cc (shame on you, Josh) +* clean-up of mons_lev.cc +* clean-up: player::player_AC() recoded as switch on species rather than bunch of if's -- too bad things weren't coded as species/subspecies to make working with draconians easier!!! (future change?) +* cleaned up remaining "% 100" madness when it comes to cloud handling routines +* cleaned-up cloud description coding in direct::look_around() -- last of the "foo % 100" coding, I think +* cleaned-up dungeon::prepare_swamp() +* cleaned-up dungeon::prepare_water() +* cleaned-up dungeon::vault_grid() +* cleaning up my own bugs +* codebase: it_use3 definition of "extern unsigned char show_green" removed - already in externs.h, which is included +* codebase: moved spells4.cc and spells4.h to "unused" folder for the time being, removed spells4.o from makefile.obj list -- none of the functions in these files are called elsewhere +* codebase: which_spellbook() definition moved from atop spells.cc to atop spellbook.cc -- it is only used there +* commented out GOOD_ATTACKED_FRIEND in enum.h and only reference to it in fight::you_attack() -- not even accounted for in religion::done_good() so what the h*** is the point? way open to potential abuse if implemented, anyway. grumble, grumble. +* commented out global char filenam[80] in dungeon.cc -- cannot find a single instance of usage +* commented out global char save_file[9] in dungeon.cc -- cannot find a single instance of usage +* commented out global char whole_line[80] in dungeon.cc -- cannot find a single instance of usage +* commented out global char wm_1[5] in dungeon.cc -- cannot find a single instance of usage +* commented out global char wm_2 in dungeon.cc -- cannot find a single instance of usage +* commented out global int leng_str in dungeon.cc -- cannot find a single instance of usage +* commented out global int old_x in dungeon.cc -- cannot find a single instance of usage +* commented out global int old_y in dungeon.cc -- cannot find a single instance of usage +* commented out global int rd in dungeon.cc -- only used in dungeon::specr_2() as near as I can tell +* commented out global int x_fin and y_fin in dungeon.cc -- cannot find a single instance of usage +* commented out global int x_max and y_max in dungeon.cc -- can only find variables local to dungeon::clear_area() that share these names +* commented out globals int put_x and put_y in dungeon.cc -- cannot find a single instance of usage +* commented out mstruct::def_letters() as the function is no longer being used anywhere +* commented out stuff::output_value() - not used anywhere in the codebase +* commented out unused gods in enum GODS and their unused altars in enum DUNGEON_FEATURES +* completed ifdef of ABIL_GLAMOUR routines in abilities.cc -- josh didn't do it all the way through +* created obj-weap.cc, corrected signage on parameters passed to some functions (char -> unsigned char) +* deck_of_wonders[], deck_of_summoning[], deck_of_tricks[], and deck_of_power[] made static to decks.cc +* decks::cards() made static to decks.cc +* declaration for food::can_ingest() moved from food.h to atop food.cc -- internal to sourcefile +* declaration for food::eat_from_floor() moved from food.h to atop food.cc -- internal to sourcefile +* declaration for food::eaten() moved from food.h to atop food.cc -- internal to sourcefile +* declaration for monstuff::simple_monster_message() moved from atop monstuff.cc to monstuff.h as it is now used in other sourcefiles +* declaration of spells4::cast_detect_magic() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage +* declaration of spells4::cast_eringyas_surprising_bouquet() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage +* declaration of spells4::cast_summon_serpents() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage +* declaration of spells4::do_monster_rot() moved from spells4.h to atop spells4.cc and commented out, along with actual function -- not in current usage +* declaration of spells4::make_a_random_cloud() moved from spells4.h to atop spells4.cc +* declaration of spells4::make_a_rot_cloud() moved from spells4.h to atop spells4.cc +* definition of monstuff::handle_special_ability() added atop monstuff.cc -- no idea why it was not there already +* definition of religion::divine_retribution() moved from religion.h to atop religion.cc +* dungeon::item_in_shop() returns unsigned char instead of char, and takes unsigned char instead of char as sole parameter +* dungeon::items() takes unsigned char instead of int for second and third parameters +* dungeon::place_spec_shop() takes unsigned char instead of char for all three parameters +* dungeon::plan_1() returns unsigned char instead of char +* dungeon::plan_2() returns unsigned char instead of char +* dungeon::plan_4() returns unsigned char instead of char +* dungeon::plan_5() returns unsigned char instead of char +* effects::direct_effect() now takes struct bolt * instead of struct bolt[] as parameter +* effects::mons_direct_effect() now takes struct bolt * instead of struct bolt[] as first parameter +* eliminated default parameter for spells3::cast_selective_amnesia() +* enum: MUT_LAST_MUT reverted back to NUM_MUTATIONS ... to me, it is clearer to use NUM_foo rather than the particular enum prefix, as it denotes clearly that *this is not really a member of the enum, but rather a description of them* also for cases where LAST is not really last (see MONSTER_CATEGORIES), also removed related #define +* enum: SPTYP_LAST -> NUM_SPELL_TYPES +* enum: added SPTYP_RANDOM for use in spells::miscast_effect() -- I'd like to set to 255, but don't know how many things need to be switched to unsigned char to do so +* enum: added SPWLD_PRUNE, SPWLD_HUM, SPWLD_CHIME, SPWLD_BECKON, SPWLD_SHOUT as per it_use3::special_wielded() +* enumery and clean-up +* enumery in describe.cc +* enummed MH_foo where appropriate and changed inequalities to equivalence tests +* etc. etc. on the messaging bugfixes +* f(x): added food::hunger_warning() to break-out functionality from acr::input +* f(x): spells::miscast_effect() returns bool instead of char +* fight::jelly_divide() takes struct monsters * instead of int as parameter +* fight::monster_die() takes struct monsters * instead of int as first parameter +* fight::monster_polymorph() now returns bool -- whether the polymorphing took place or not -- needs to be more rigorous in determation of return value, though +* fight::monster_polymorph() takes struct monsters * instead of int for first parameter +* fight::place_monster_corpse() takes struct monsters * instead of int as parameter +* fight::place_monster_corpse() takes struct monsters * instead of unsigned char as parameter +* figured out proper inclusions for spells4.h throughout codebase +* figured out proper places to #include items.h +* files::find_spell() returns bool instead of char +* files::load() now takes bool instead of char for 2nd, 3rd, 5th and 6th parameters +* files::save_game() takes bool instead of char for only parameter +* files::save_level() now takes bool instead of char for 2nd parameter +* filpped first and second parameters to beam::check_mons_resists() -- makes more sense +* finished putting in new spell struct, see spl-util.cc/.h and spl-data.h +* first parameter to bang::explosion() renamed from ex_size to is5x5 to denote properly what it means -- changed to bool (as the f(x) only does 3x3 and 5x5 explosions now) +* first two parameters to beam::mons_ench_f2() replaced by a single parameter of type struct monsters * +* fixed a bug in dungeon::item_colour() which was not colouring namwed weapons properly +* fully ifdef'd anything relating to elvish glamour +* general clean-up +* general clean-up +* general clean-up +* general clean-up +* general clean-up +* general clean-up +* general clean-up -- trying to rid the codebase of goto statements here and there +* general clean-up and enumery +* general clean-up and enumery +* general clean-up and enummery -- starting to unravel dungeon::give_item() +* general clean-up and optimization in dungeon.cc -- starting to unravel the mysteries of dungeon.cc and all its glory! +* general clean-up in monstuff.cc --> don't bother to strcpy()/strcat() if final mpr() dependent upon mons_near() -- *all* operations dependent on mons_near(), then !!! +* general clean-up of religion.cc +* general clean-up, mostly in dungeon.cc +* general cleanup +* general cleanup and enumery +* general fixing of messaging for invisibility checks +* general: indentation and enumming +* global "int diag_door = 0" in dungeon.cc deleted -- only used and set within dungeon::make_room() +* global "int max_doors" in dungeon.cc moved to atop dungeon::builder() -- only passed between builder() and make_room() -- which now takes an int [max_doors] and not "void" as parameter +* global int band and band_no moved into dungeon::place_monster() -- only used within that function, near as I can tell +* global int dir_x2 and dir_y2 moved into dungeon::make_trail() -- only used within that function near as I can tell +* global int no_rooms moved into dungeon::builder() -- only used within that function near as I can tell +* global int roomsize moved into dungeon::builder() -- only used within that function near as I can tell +* global int x_start and y_start moved into dungeon::builder() -- only used within that function near as I can tell +* global ints cx and cy in dungeon.cc moved into dungeon::specr_2(), only used there +* global ints dx and dy in dungeon.cc moved into dungeon::specr_2(), only used there +* global ints sx and sy in dungeon.cc moved into dungeon::specr_2(), only used there +* got rid of the MLAVAfoo defines +* got rid of the MWATERfoo defines +* had to un-#ifdef the DEBRIS enum ... I want it gone, goddamn it!!! +* heavy_armour modifier in fight::you_attack() for large species using large shields fixed at +1, and not potentially +3 -- reasoning that id ARM_SHIELD is +1 regardless for all races, ARM_LARGE_SHIELD should be equivalent modifier for large races (SHIELD :: SPECIES as LARGE_SHIELD :: LARGE_SPECIES), and besides, on average, large and regular/small species were getting the same modifier on use of large shields, which did not seem fair. +* implemented newgame::give_last_paycheck() +* implemented newgame::jobs_stat_init() +* implemented wrapper f(x) religion::simple_god_message() +* in monstuff:handle_wand() - monsters will no longer zap themselves with wand of invisibility if player can see invisible -- a cheat, I know, but every bit helps +* invent::list_commands() now takes bool instead of int +* it_use2:: zapping() <---> zappy() relationship worked out, parameters passed between them have changed +* it_use2::zapping() now takes struct bolt * instead of struct bolt[] as last parameter +* it_use2::zappy() made static +* it_use3::ball_of_energy() made static +* it_use3::ball_of_fixation() made static +* it_use3::ball_of_seeing() made static +* it_use3::box_of_beasts() made static +* it_use3::disc_of_storms() made static +* it_use3::efreet_flask() made static +* it_use3::staff_spell() made static +* item_use::eat_food() -> food::eat_food() -- just so I can keep everything together wrt food thingees +* item_use::throw_it() made static +* item_use::throw_it() takes struct bolt * instead of struct bolt[] as first parameter +* itemname::is_a_vowel() now returns bool instead of char +* items::conv_letter() -> stuff::letter_to_index() -- more descriptive of actual function, stuff more central for now +* made global char is_a_specroom in dungeon.cc into a static variable -- not utilized outside this file +* made global char oblique in dungeon.cc into a static variable -- not utilized outside this file +* made global char oblique_max in dungeon.cc into a static variable -- not utilized outside this file +* made global int bno_mons in dungeon.cc into a static variable -- not utilized outside this file +* made global int corrlength in dungeon.cc into a static variable -- not utilized outside this file +* made global int finish in dungeon.cc into a static variable -- not utilized outside this file +* made global int intersect_chance in dungeon.cc into a static variable -- not utilized outside this file +* made global int no_corr in dungeon.cc into a static variable -- not utilized outside this file +* made global int time_run in dungeon.cc into a static variable -- not utilized outside this file +* made global ints room_x1 and room_x2 in dungeon.cc into static variables -- not utilized outside this file +* made global ints room_y1 and room_y2 in dungeon.cc into static variables -- not utilized outside this file +* made global ints vsx and vsy in dungeon.cc into static variables -- not utilized outside this file +* made global ints x_ps and y_ps in dungeon.cc into static variables -- not utilized outside this file +* made several functions in mons_lev.cc static +* made spells4:::yesno() accept lower-case responses, too +* maintenance: removed curly-braces at end of lines to indented beginning of next line, as per coding standard +* mass enumery of m_list.h and reformatting for legibility +* minor bugfix in dungeon::items() -- demon tridents apparently forgotten in initial conditional to set special enchantments on weapons -- esp. given that they are singled out later in a nested conditional, added back in to parent conditional +* minor bugfix in dungeon::items() -- many_many was being set from 351 to 200 when determing weapon specials, but a subsequent conditional was still relying on the value of 351, meaning fewer special weapons than the algortihm intended +* minor bugix: reading scroll of summoning will only message if the creature actually appears +* minor clean-up of dungeon::labyrinth_level() +* minor tweak - fight::monster_polymorph() will no longer allow monsters to polymorph "in place" -- i.e. to the same type as they already are +* minor tweak -- wand_id for polymorphing now dependent upon outcome of monster_polymorph() +* minor tweak: monsters that drain hps and heal beyond current max hp will gain +1 max_hp in some circumstances {just to make things a bit more interesting} +* misc::dart_trap() made static +* misc::dart_trap() takes struct bolt * instead of struct bolt[] as first parameter +* misc::itrap() takes struct bolt * instead of struct bolt[] as first parameter +* misc::manage_clouds() now returns void instead of int -- since env.foo is externed, no need to pass back integer value to acr.cc +* misc::manage_clouds() rewritten slightly to clarify logic of function +* misc::trap_item() returns bool instead of int +* mon-util::mon_init() scrapped and replaced by mon-util::mons_colour() -- let's see what the slowdown is +* mon-util::mons_pan() -> mon-pick::mons_pan() +* monstuff::distance() -> stuff::distance() +* monstuff::handle_behavior() now takes struct monsters * instead of int as only parameter +* monstuff::handle_enchantment() takes struct monsters * instead of int as parameter +* monstuff::handle_movement() takes struct monsters * instead of int as parameter +* monstuff::handle_nearby_ability() takes struct monsters * instead of int as parameter +* monstuff::handle_potion() takes struct monsters * instead of int as parameter +* monstuff::handle_reaching() takes struct monsters * instead of int as parameter +* monstuff::handle_scroll() takes struct monsters * instead of int as parameter +* monstuff::handle_special_ability() takes struct monsters * instead of int as parameter +* monstuff::handle_spell() takes struct monsters * instead of int as parameter +* monstuff::handle_throw() takes struct monsters * instead of int as parameter +* monstuff::mons_in_cloud() now takes struct monsters * instead of int as parameter +* monstuff::mons_pickup() made static monstuff.cc for the time being +* monstuff::mons_pickup() returns bool instead of char -- it never returns anything other than false, is this intentional? +* monstuff::mons_pickup() takes struct monsters * instead of int as parameter +* monstuff::monster_blink() takes struct monsters * instead of int as parameter +* monstuff::monster_habitat() takes struct monsters * instead of int as parameter -- had to create monplace::monster_habitat_2() as a workaround for one case for the time being +* monstuff::monster_move() made static monstuff.cc for the time being +* monstuff::monster_speaks() made static to monstuff.cc for the time being +* monstuff::monster_speaks() takes struct monsters * instead of int as parameter +* monstuff::plant_spit() now takes struct bolt * instead of struct bolt[] as only parameter +* monstuff::plant_spit() takes struct monsters * instead of int as parameter +* monstuff::print_wounds() now takes struct monsters * instead of int as parameter +* monstuff::simple_monster_message() no longer requires first parameter, so it has been dropped +* monstuff::simple_monster_message() returns bool intead of void to permit testing and outputting of alternate message +* monstuff::swap_places() takes struct monsters * instead of int as parameter +* monstuff:mons_in_cloud() and monstuff:plant_spit() made static to monstuff.cc for now +* monstuff:monster() -- commented all lines having to do with variable no_mons -- it was initialized, decremented, and incremented, but never applied in the codebase +* monstuff:monster_regenerates(foo) removed in favor of monstuff::monster_descriptor(foo, MDSC_REGENERATES) +* more clean-up +* more general clean-up +* more general clean-up +* more messaging fixes +* more work toward completing determination of proper #includes for each file +* moved enum DEBRIS from enum.h to atop spells4.cc -- not well-implemented yet, so buried there instead +* moved some things from skills::exercise2() into skills::exercise() -- function could probably be folded in together, given the set value of deg ... +* moved the #ifdef inside of spells4::silence() to clarify that it all applies to a single function +* moved the FEATURE enum from overmap.h to atop overmap.cc -- no need to open it to use outside the file +* mstuff2::dragon() now takes struct bolt * instead of struct bolt[] as second parameter +* mstuff2::dragon() takes struct monsters * instead of int as parameter +* mstuff2::mons_cast() takes struct bolt * instead of struct bolt[] as second parameter +* mstuff2::mons_cast() takes struct monsters * instead of int as first parameter +* mstuff2::mons_throw() takes struct bolt * instead of struct bolt[] as second parameter +* mstuff2::mons_throw() takes struct monsters * instead of int as first parameter +* mstuff2::mons_trap() takes struct monsters * instead of int as first parameter +* mstuff2::monster_teleport() now takes struct monstes * instead of int as first parameter +* mstuff2::spore_goes_pop() takes struct monsters * instead of int as parameter +* much cleanup and compaction of religion.cc +* newgame::new_game() now returns bool instead of char +* optimization: some optimization of it_use3::special_wielded() +* optimized mon-util::seekmonster() but odd things are happening (monsters on level 1 don't awaken and missiles may now appear to go through walls) +* player::forget_map() takes unsigned char instead of char for sole parameter +* player::how_hungered() -> food::how_hungered() added appropriate #include atop it_use2.cc +* player::increase_stats() now can increase by more than one by adding a a third parameter for amount of increase +* player::reset_hp() pulled in favor of more flexible player::set_hp() +* player::species_name() takes unsigned char instead of char to match you.species +* player::you_are_draconian() -> player::player_genus(), now uses switch (don't use comparatives!) and broadened to cover other cases +* possible bugfix: fight::monster_polymorph() - first two parameters were of type unsigned char when they should have been of type int (MONS_foo definitely falls outside range [0,255]) -- also double-checked types of old_foo variables used within the function itself +* propagated effects::lose_stat() throughout codebase +* propagation of silenced() to cover instances of "You hear ..." messages << bang.cc - +* pulled out all the code relating to MONS_TUNNELING_WORM and MONS_WORM_TAIL -- haphazard and deprecated (monster never appeared) +* pulled out all the code relating to the QUOKKA, SWORD, GUARDIAN ROBOT, and DORGI -- all were deprecated a long time ago +* recoded dungeon::special_room() for efficiency -- was filling monster arrays on each and every loop-through (sheesh!) +* recoded monplace::mons_place() to do away with way too many calls to random2() in order to generate random nasty for dungeoneers heading downwards +* recoded monplace::summon_any_demon() to make types more apparent and to remove calls to stuff::table_lookup() +* recoded monstuff::print_wounds() for clarity of logic flow, got rid of that damn goto statement +* religion::Xom_acts() now takes bool for first and third parameters +* religion::god_name_long() commented out (but left intact) -- as jmf flagged, this function is not in use within the codebase +* religion::god_name_long() struck from codebase -- relevant salvaged information now conveyed through comments +* religion::god_speaks() no longer has a default parameter value -- confusing use of GOD_foo enum as it was +* religion::naughty() now ordered by deity then by naughty -- makes more sense to be able to see naughty by deity rather than deity response by naughty +* removed Isk's Cross garbage from spell::your_spells() -- no longer a spell, had been replaced by Symbol of Torment +* removed MS_ZULZER -- only used by Dorgi ... +* removed some useless typedefs from atop mon-util.h and randart.cc +* removed the "guarantee knife" code in dungeon::builder() as per brent's suggestion +* rename mons_lev -> mon-pick +* renamed ability -> ply-abil +* renamed levels -> lev-pand +* renamed m_list -> mon-list +* renamed mstruct -> mon-util +* replaced C_foo defines with appropriate CE_foo enums +* replaced H_foo defines with appropriate MH_foo enums +* restructured monplace::create_monster() to get rid of the silly goto statements and clarify program flow +* reversed the parameters passed to player::slaying_bonus() to align with PWPN_foo and applied enum function calls +* rewrote a lot of ability.cc +* rewrote effects::lose_stat() to be a bit more robust and now player_sust_abil() no longer fullproof protection against stat loss +* ripped out mstruct::def_letters() -- no longer in use anywhere in the codebase +* second parameter passed to ouch is now int instead of char -- typical of source code that it should be int and not anything else, as it refers to menv[foo] +* set wield_change to a single type (it was used as a char, unsigned char, and int all over the place) -- I decided to make it type bool for clarity +* shifted MH_foo and H_foo flags up one to start at 0 and include MH_HOLY at start -- should not be problematic +* shopping::clear_line() removed entirely -- did not do anything but return upon being called +* simple_monster_message() propagated throughout codebase +* skills2::best_skill() now takes unsigned char instead of char for all three parameters -- it also now returns unsigned char instead of char +* skills2::calc_ep() -> calc_mp() -- I always think of experience and not magic points when I see the f(x) - you.redraw_magic_points moved into f(x) and duplicate settings removed from codebase +* skills2::skill_name() takes unsigned char instead of char for sole parameter +* skills2::skill_title() no longer takes you.char_class as third parameter -- available globally and no longer utilized within the f(x) itself +* skills2::skill_title() no longer takes you.experience_level as fourth parameter -- not utilized at all within function, meaningless pass +* skills2::skill_title() takes unsigned char instead of char for its two remaining parameters +* skills::exercise2() made static +* some enumeration work +* some enumery +* some enumery and housekkeeping +* some enummery and clean-up in files.cc +* some fixing up in dungeon::item() -- knive will no longer be quite so common in the deeper parts of the dungeon (minor bugfix/tweak) +* some general clean-up +* some general clean-up +* some more general cleanup +* some restructuring of newgame.cc to clarify what is being done +* spell::exercise_spell() second and third params now bool not int +* spell::surge_power() made static +* spell::your_spells() returns bool instead of char, third parameter (allow_fail) now bool not char +* spellbook::spellbook_contents() returned unsigned char instead of char +* spellbook_contents() declaration moved from spellbook.h to atop spellbook.cc - native only to file +* spells0::spell_hunger() now takes only the first parameter - second parameter not used in function +* spells0::spell_spec() no longer takes a second parameter -- it was never used !!! +* spells1::identify() now takes a power parameter (currently unused) and a value of -1 flags it as coming from an item (in this case, a scroll) +* spells1::spell_direction() takes struct bolt * instead of struct bolt[] as last parameter +* spells2::manage_shock_shield() -> spells1::manage_shock_shield() and definition moved from spells2.h to spells1.h -- better fit here +* spells2::restore_foo() [three functions] rolled into spells2::restore_stat() -- permits restoration of STAT_RANDOM now, which may be useful at some future point +* spells2::summon_butter() -> effects::summon_butter() and definition moved from spells2.h to atop effects.cc (only used here) +* spells3::aistrike() now returns a success value +* spells3::cast_bone_shards() now returns a success value +* spells3::cast_smiting() now returns a success value +* spells3::create_noise() now returns a success value +* spells3::create_noise2() renamed to spells3::create_noise() -- what happened to the other function? +* spells3::death_channel() now returns a success value +* spells3::entomb() now returns a success value +* spells3::monster_on_level() made static +* spells3::recall() now returns a [apparent] success value +* spells4::cast_summon_large_mammal() -> summon_large_mammal() +* spells4::cast_warp_brand() deleted -- does not conform to existing usage of brands in spell.cc +* spells4::drop_everything() -> transfor::drop_everything(), declaration moved from spells4.h to atop transfor.cc -- only used here (for now), so just move it there, already +* spells4::silenced() -> stuff::silenced() +* spells4::yesno() -> stuff::yesno() +* standardized somewhat the ordering of ability evaluation and effects when used in abilities.cc to make editing easier +* started cleaning up maps.cc -- made everything static, moved old, unused vault maps to "unused" folder +* started newgame.cc cleanup +* started rectifying the global vars in dungeon.cc: int's rannum, randnum, & q deleted - border_type moved into builder() - lev_mons moved into place_monster() and special_room() - passout moved to place_monster() - char dung1 & dung2 deleted, set to random2(100) each in builder() but never used beyond that - skipped moved to builder() +* starting clearing out oddball global variables in spellbook.cc: int's i, sc_read_1, sc_read_2; unsigned char keyin +* stuff::magic_ability() folded into player::player_mag_abil() and the latter function now takes parameter as to whether or not to weight value by intelligence +* stuff::magic_ability() no longer takes a second parameter +* stuff::output_value() struck from the codebase -- not used anywhere +* stuff::table_lookup() yanked -- I think I was trying to swat a fly with a sledgehammer originally +* too much time spent cleaning-up ouch::item_corrode() but recoded nonetheless +* tweak(minor) - jellies may now split upon eating secret / closed doors, and the types of jellies that do has been expanded +* tweak/bugfix: airstriking your own tile causes spell to fizzle +* tweak: all draconians now get a 20% lowering on breath failures if transformed into dragons -- should not affect much, as failure rates are already pretty low. +* tweak: blinking in the abyss is a bit more difficult -- reordered the conditionals in spells1::blink() to place barring of teleport in abyss prior to merely interfering with it +* tweak: in religion::pray() sustenance is now only provided by ZIN and ZIN only, as per discussion on onelist +* tweak: it_use3::ball_of_seeing() and it_use3::ball_of_energy() now flow to confusion case from drain mana case when invoker has no mana at time of invocation +* tweak: monstuff::handle_behavior() now picks a new target tile for BEH_WANDER that is within "normal" bounds of dungeon (10 to GfooM-11 instead of 0 to GfooM-1) -- wonder if it will keep monsters more to center +* tweak: spells3::detect_curse() take a bool parameter and returns a bool signifying success -- scrolls of detect curse no longer ID if no curses detected +* tweak: spells3::remove_curse() take a bool parameter and returns a bool signifying success -- scrolls of remove curse no longer ID if no curses removed +* updated VERSION and BUILD_DATE +* variable "char already" struck from ability:show_abilities() -- initialized to zero and never used +* view::mons_near(int) replaced with view::mons_near(struct monsters *) and applied throughout codebase -- should not be a problem +* which also means that skills2::add_skill() was pulled, meaning that the definition of the function in skills2.h had to be pulled (now why wasn't *that* #ifdef'd, I ask?) + + +*** SOME OF THE THINGS SINCE THE TESTDEV RELEASE *** + +* fixed typo concerning Chaos Knights [josh] +* added in macro definitions to replace the ENUMS for SPLFOOD SPLMANA and SPLEVEL [brent] +* stuff::yesno() fixed to take uppercase only, also now clears message screen and reprints query [josh] +* SPELL_POISON_CLOUD now has the correct associated types [POISON/CONJURATION/AIR] [brent] +* SPELL_MEPHITIC_CLOUD now has the correct associated types [POISON/CONJURATION/AIR] [josh] +* bugfixes: some fixes noted by Jesse were applied -- and then even more fixes noted by Jesse were applied +* all tabs removed from the sources +* bugfixes: more fixes noted by Jesse in re: array indexing +* bugfix (potential): ghoul rotting separated out from regular rotting, preventing negative you.rotting value from arising +* "You smell ..." messages now take into account the fact that mummies cannot smell -- except for a couple mutations and a random demon description +* added enum SPECIAL_MISSILES to separate out weapon and missile specials +* bugfix: players resistant to poison eating poisonous chunks will no longer get diseased, unless chunk is rotting +* bugfix: amulet of gourmand now works as described, and will work to the benefit of both normal species and ghouls +* added food::lessen_hunger() and food::set_hunger() and some other routines, which led to ... +* reworked food.cc +* bugfix: ghouls will no longer become "full" +* bugfix: summon_small_mammals() will now summon at least one creature [Daniel] +* minor messaging tweaks here and there +* killed monster_habitat_2() and reverted monster_habitat() to take int instead of pointer to monster struct +* added in Jesse's Mac-specific files +* borrowed a couple tweaks from Gordon +* fixed a few minor things in spells4.cc and added some small annotations + diff --git a/crawl-ref/docs/obsolete/todo.txt b/crawl-ref/docs/obsolete/todo.txt new file mode 100644 index 0000000000..6974ecff3b --- /dev/null +++ b/crawl-ref/docs/obsolete/todo.txt @@ -0,0 +1,456 @@ +Enhancements: + +* make screen update correctly when player vision is <2. + +* Make dangerous things be shown on top of a stack. This includes traps, + walls of fire, etc. + +* Make food acquirement give you more kinds of food. + +* file locking for the high score file + +* adjust EV for low levels. + +* repopulate levels on the way out + +* should species armour bonus work on EV instead of AC? + +* make rings of fire/ice (and others?) auto identify with use + +* miscast effects too weak? Not enough of a threat, especially when used + by gods, Zot traps, or mummies as a form of punishment. + +* add toggled stealthy mode? + +* print out '@' status in character dumps (might be nice to have the + chacters status in the dump... method of death might be good as well). + +* fix green crystal room so its not boring (pretty vault, just no real + point to it currently) + +* fix the summoning abuse problem properly. Ideally, the player should + not get piety for killing things he summoned, but should get piety + for things that are summoned against him. + +* Add a wizard debugging function to output several thousand items for + a particular depth (should make item frequency tuning easier). + +* Perhaps races should be physically "described" (stucture or bit + fields) to keep track of their size and physical body parts that + interfer with armour. This could also be used in other ways... + small races could be harder to hit with ranged weapons + than larger ones, but the larger races might get a bonus + to carrying capacity... could also probably simplify the + extra unarmed combat attacks code + +* Speaking of the character info, I really like that Linley now displays + the weapon being wielded. We should think about displaying all ten + wielded/worn objects. + +* Need to make sure that ghost names will be OK when long player names + are used. + +* Blink prompt is bogus (probably also happens elsewhere). Can probably + fix this by adding a prompt argument to look_around. + +* Some of the more important messages should be in color? + +* The spores contaminate the food by exploding, only the + > explosion effect should destroy food on the ground. + + Right. Maybe this should be implemented (it shouldn't be too + hard; fiery explosions already destroy scrolls laying on the + floor). + + One idea I had with contaminated food was to use the it_plus2 + variable (which IIRC is currently unused for all types of + food) to store the number of items in a stack of food which + are contaminated. Say you have a stack of 4 meat rations, if the + plus2 value is 1 then one is bad, 3 are good. Any operations + carried out on the stack (eating, dropping, picking up etc) + have a 1 in 4 chance of taking the bad ration and 3/4 of + taking the good. A quantum thing, sort of. Poisoned food could + be done in the same way (if there are any variables left - dam?) + + This means that contaminated food doesn't just disappear, it + stays around to haunt you. + + This could perhaps lead into a 'food' skill, which lets you + cook food, get the most out of corpses, separate the good + food from the bad etc. + +* Heavy armor doesn't offer enough protection? + >The big problem is the strange evasion modifier calculation that + >results in armour completely destroying your EV with the + >double subtraction thing. + + I don't think this is so strange. It only affects chars who have + high dodging skills, and it makes sense to me that dodging + effectively and wearing heavy armour should be mutually + exclusive unless you're used to wearing heavy armour, in which + case the evasion penalty is reduced according to your armour + skill and the dodging skill (which can only be picked up when + you're wearing light or no armour) is usually ignored. + + I did it this way so that the two skills (dodging and armour) + would rarely both be useful at the same time, so players would + have to choose between them. Otherwise they could just practice + both and everyone would end up the same. + + Personally, I think the double subtraction thing should be left + in, but with the following changes to the way armour works: + - base AC should be upped considerably, as discussed + - the limit on the proportion of the evasion penalty removed by + a high armour skill could be raised or scrapped (currently only + half of the evasion penalty of a piece of body armour can be + negated by the armour skill) + + I would have fixed these problems before I stopped working on the + code myself, except that nobody ever complained about them and I + didn't notice them myself. + + -- EV penalty now recovered faster, Armour skill slightly easier to + get -- base ACs should probably still be upped (bwross) + +* New spell realms (Linley doesn't like these): + NATURE - spells connected with some nature forces, animals and plants +e.g. summon small mammal, summon scorpions, summon elemental, passwall, +resist , create plant/fungus, charm animal/plant and so on + + PROTECTION - protective spells - shield, resist sth., Fire/Ice armor, +Deflect missiles... HEALING - Cure Light/Serious/Critical Wounds, Cure +Disease, Neutralize/Slow Poison, Heal + +* DRUID class - with spells allowing him to summon animals & plants, +charm them, also some to work with natural forces - eg. elementals, +resist fire..., also some healing spells - neutralize poison etc... + +* Maybe some God of Nature, which offers to his believers some of Druid + ablities + +* "write scroll" skill + +* Dagger of Backstabbing - hit and Damage bonus when you are backstabbing + +* purify food spell + +* create water/lava pool spell, also some monsters creating this kind + of terrain + +* Some work needs to be done for multi-user environments. + -- some done, more could be useful (bwross) + +* Targetting isn't intuitive enough? + -- slightly improved (bwross) + +* Use gdbm to save games? However gdbm won't compensate for endian + differences... + +* Use gdmn to save bones? + +* Use zlib to compress saved games? + +* larger windows + -- number of lines is now handled more dynamically, but only at + during init or compile time (depending on NUMBER_OF_LINES) (bwross) + +* multiple-windows + +* Use XML for monster definitions + +* Use XML for room layout/fixed levels + +* Use XML for item definitions? + +* moves[0], beam[0] should be simplified to use pointers to structs instead. + +* Locking to prevent multiple game loads/save file overwrites? + +* Allow access to the new longer high score files... add user id field (for + multi-user systems). + +* Add DEC graphics support for non-IBM machines (like nethack). + +* Come up with a better save file system that will accomidate versions + easily and involve (hopefully) one smaller file... instead of the + large number of current files. + +* Add Food/Survival skill + +> (1) Cooking Food -- by far the most potential to unbalance the game. +> +> Cooking food should probably cost a limited resource to use (fire +> sources? -- some like spellcasting would be very powerful). It would +> allow anyone to eat chunks of flesh, thus removing an advantage +> that carnivores and gourmands have... so you probably don't want +> to add other advantages like extended shelf life. The food value +> of chunks of flesh would probably have to be made smaller to maintain +> the food balance. +> +> Maybe cooking should be an ability that's either granted by a god, +> being a member of a race or class, or becomes available with a +> certain (high) level of the Food skill (perhaps Survival is a better +> encompassing name... it could potentially be used for other things +> as well then). +> +> (2) Butchery -- not much of a game unbalance. +> +> This doesn't effect the game balance unless its made really powerful +> (ie. I can get 6 chunks from a bat). Right now you can get a full +> stomach off of any number of large monsters. A few extra chunks +> doesn't count for much unless you can improve their shelf life. +> +> (3) Detecting Bad Food -- depends +> +> If Giant Spores secretly contaminate rations this could be an +> important skill. Perhaps it could give you a slightly better +> save on eating meat chunks (limiting the advantage of the +> carnivore's save and to a lesser extent the "AotG). It could +> also warn you about things like mutagenic and necrophage meat +> (give you a yes/no prompt you wouldn't normally get). + + +* New inventory/equip/drop system + +>>> // > Makes a certain sense, but I can drop any number of the healing potions +>>> // > as one action that suggests a bit more care... also I could just drop +>>> // > all of my potions and that would take an action for each stack I had, +>>> // > whereas all it probably requires is me dropping my "potion sack" or +>>> // > dumping it out. +>>> // > +>>> // How about a compromise where you can hit d% to drop all your food, +>>> // or d! to drop all your potions, but if you want to discriminate you have +>>> // to do them individually? +>>> +>>> I'm wanting something a bit more featured like the nethack system (not +>>> the old traditional, but the newer ones). Bascia concept would be that +>>> I could either select via inventory slot letter, or optionally pull down +>>> an inventory browser/selector and select the items I want. Complete +>>> with options like "select all potions", "toggle all potions", "select all", +>>> and "unselect all" (for example). +>>> +>>> If you want to add aditional time for discrimination, you can do it +>>> Ragnarok style (I like the Ragnarok armour equip system) and have a +>>> counter on the top line (with a short list of commands) that tells the +>>> player how many turns the action will take. There are a few problems +>>> with calculating this value, because there are any number of ways +>>> I can select all potions and the value should be independant of +>>> which ever I choose to use. +>> +>> Well, it would seem that the time calculation should depend on the +>>final set of selected items rather than the steps taken to select them. +>>That would remove abiguity. We could generate a time based on the variety +>>of things dropped. So, if you were dropping potions, swords, rings, and +>>scrolls, it would take you much longer than to just drop your rings. It +>>might be worth it to let weight factor into drop speed as well. +> +>You don't want to get too complicated. There's a limit to the +>granularity here, as you probably don't want to have it taking a +>couple dozen actions to drop some equipment. A simple little +>penalty for dropping only part of a stack, or only some types +>of potions is probably enough of a change. + + +* Options files + -- must keep two distinct types of options and handle them separate: + - ones that would be loaded from a "crawlrc" file and would effect + the players characters in a general way. + - ones selected during the game and would be carried between + saves, but not to other characters the player is playing. + +* fix non-magical traps + -- should have some number of "charges" for those that shoot items... + these should be more dangerous as well. + -- monsters should "learn" the traps of a level. + +> Could be done with a bit array (if there is a limit of 32 traps on +> a level, that would be bonus... but it could be extended to more +> for not too much trouble). That would take up little space, and +> testing would be by simple boolean operators (to test if the monster +> knows about trap X, you check (monster.traps & (1 << X))). We could +> have the code test the line of sight from a trap everytime it is +> activated, and set the appropriate bit of the array in any monster +> within line of sight. + + +* Revert/change the Elementalist spellbooks? + +> // >This brings up another little problem around here. People around +> // >here weren't entirely happy about the change to the Elemental +> // >Spellbooks in 3.30. For the most part its considered that the +> // >elementalists are becoming less individual in flavour and that +> // >they're now just slight variations of Fire. In particular (and +> // >pertaining to this discussion), was the loss of levitation from +> // >the Air book, which was considered a useful "Tensor's Disk" for +> // >lifting stuff up stairs. +> // +> // I removed levitation because it no longer fit, and I didn't +> // want to stretch air out to three books. As for the other changes, +> // these were made because I thought the non-fire elements were too +> // weak by far. Which spells in particular are problematic? (I'll +> // try to write an explanation for the differences between the +> // elements when I have a little more time) +> +> Well, we didn't think the other elements were actually "weaker". +> They're only weaker in combat potential -- Fire was all attack, the +> others offered more utility and defensive abilities. There was +> enough combat in the others to get you well into the midgame, at +> which point you adapt to whatever books you find (its typically +> quite hard to get the advanced versions of your magic discipline... +> I remember how happy I was when I finally had a necromancer find +> Unlife... my Paladin had a complete set of death books early on). +> +> The main problem is that the elements were made too similar (we +> really liked the fact that they all played quite different, it +> was one of the things that made crawl really popular here). +> +> For example, they all start with a slight variation of the same spell. +> This means that they all start playing the same way, with the same +> tactics. Before you could play Earth for the range attack, or Air for +> the somewhat risky-yet-powerful Shock. +> +> There's still a little varity left, but certain bits are gone. You +> can't depend on getting summoning when you start with Ice, for +> example. The Levitation spell is now only in the Enchantment book, +> it used to be a something you could depend on as an Air mage (now +> you have to hope to get the book of Sky, and that gets you Fly, which +> is better, but is also a level four spell). +> +> Earth had a little issue before (too many similar throwing spells), +> but replacing Throw Pebble with Crush just makes it the same as the +> other elements. Stone Arrow has always been better than Iron Bolt, +> IMO... iron bolt just isn't effective enough to justify the extra +> cost and difficulty... it requires really high skill levels to +> be better. I would have rather seen Iron Bolt go, in favour of +> something a bit more interesting (Earthquake, Pass Wall, Stair +> Creation). + +* Improve running code + +* Carrion eating mutation + -- like vegetarian and carnivore, only gives a preference for + rotten meat. Progesses with level until the character + can only effectively eat rotten food. + +* Add rumours/fortune cookies? + +* Improvements to the character dump + -- is the current dump as verbose as wanted/too verbose? + -- add spell failures to dump? + +* Change character for throwing weapons to '(' and small armour to '['. + -- Problem: '(' is used for dancing weapons. + +* Put some limits of teleport/teleport control? Make it rarer? + +* Improve artefacts to compete better with Sword of Power? Improve + non-sword weapons so they become more of a choice? + +* Currently possible to gain 0hp when gaining a level... should + be safeguards added to make sure this is at least never negative, + if not guaranteeing 1hp / level. + +* should be able to see contents of books in stores? + +* remove possibility of teleport control with the Blink spell (require + the player to use the Control Blink spell instead). + +* merge the chardump spell listing code with the other spell listing code. + +* throw traces to target should coincide with line-of-sight better + +* item inscriptions + +* are crossbows correct? The other launchers seem to be adding their + skill bonuses twice + +* The Throwing skill isn't particularly useful. You could use it for + throwing daggers, axes, or spears but they don't stack and are + heavy. + +* add some weapons/change weapon code so that non-swords are more of + an option + + // >I was thinking that this might be a good way to increase the value of + // >non-sword weapons. + // + // .. which probably needs to be done anyway. One or two + // suggestions for new weapons which could help: + // + // - axe (just axe, no 'hand' or 'battle' there): this would be to + // a hand axe what a long sword is to a short sword. Skills may + // need to be adjusted (a new 'great axes' skill, covering the + // two-handed axes? Or just condense the sword skills). + // - Spiked flail: like a flail, but more damage and slightly + // slower (heavier etc). + // - Great flail/mace: two-handed versions. + + These would certainly help out a bit. The other weapon classes were + lacking good intermediates. I don't think a "great axe" skill is + required, removing "great swords" might be correct (although it + does add a limiting factor on the power of swords). Having weapon + skills where only one member of the class exists doesn't seem very + worthwhile. Maybe fighting style skills could be used instead... + + - 'two handed weapons' could be a skill for all two handed weapons, + it would be used in conjunction with the appropriate weapon skill. + + - 'shields' would cover "weapon and shield" style, maybe allowing + for the possibility of offensive shield bashing. + + - 'unarmed combat' or 'fighting' could cover the cases where one + or both hands are empty. Characters not using one of the other + styles should be able to use unarmed strikes more often and + more efficiently. + + Potentially, you could add a bastard sword to the game. Its hand and + a half nature could put it in any of the above categories (if you + have a shield, it would be the second... if not it could be either + of the other two). + + Of course, adding new skills has its own problems... there is already a + shortage of space on the skills screen. + + -- add special attacks to weapons and allow them to be accessed by the + player via SHIFT- onto an adjacent monster. + +- fix monster enchantments to have proper timeouts and a better structure + +- score file still gets messed up from time to time... should probably + change the format into something that can be expanded and contains more + information that might be printed (user id on multiuser systems, time, etc) + +-- add checking for legal background colour (or just let it ignore the + "bold" colours like it does now?) + +-- change file formats and functions + -- change score file format (see nethack for additional fields... also + maybe a field for damage done by killing attack... could be used to + spice up the death description (use final HP?))... also a userid + field for MULTIUSER systems would be nice (to tell likenamed + charcters apart and identify the player). + +-- sort out spells into separate spl-* files based on type/skill + +-- make all this you.inv_*, mitm/itm stuff the same instead of + having conversions everywhere. + +-- differentiate the good gods more + +-- break up dungeon.cc more + +-- a check floor for lava/water function + +-- a simple "summon hostile unfriendly/random demon" spell with fewer params? + +-- centralize the elemental resistance code into a single entry point that + takes damage and type and does the appropriate things... some of the + cases are notably special, so some extra damage cateogries might have + to be created (ie. stepping/falling into lava is an instadeath for + characters with negative fire resistance, but being hit with a lava + bolt is only extra damage). + +-- functions to check for specific equipment (ie reduce checks for "!= -1") + +-- move ghost/demon array into a proper structure. + diff --git a/crawl-ref/docs/obsolete/versions.txt b/crawl-ref/docs/obsolete/versions.txt new file mode 100644 index 0000000000..d7387c60ca --- /dev/null +++ b/crawl-ref/docs/obsolete/versions.txt @@ -0,0 +1,782 @@ + Crawl Versions History + + The name after each bug is the person who found it and told me + first. If you find a bug and for some reason don't want to be + credited, just tell me on the bug report. + +First DevTeam Release: 3.40 [23.02.2000] + + This is an abbreviated list of changes. For the full list, see + changes.340. + + Bug Fixes: + + * Fixed Abyss-related crash bug; + * Should now be able to escape the Labyrinth; and + * Players can no longer descend below the 27th level. + + Gameplay and Mechanics: + + * Implemented initfile (see init.txt for explanation of options); + * Added autopickup option (see init.txt for details); + * 'Easy Crawl' -- doors open when running or walking into them; + * 'V' and 'v' commands swapped -- now examine object and version + check, respectively; + * "Over-map" added; + * max hit points ceiling displayed when the player's max is down; + * Information about character's experience pool added to main + screen; + * Implemented new equipment listing commands: ')', ']', and '"'; and + * Removed halving of cost for spellcasting skills. + + Game (re-)Balancing: + + * Three runes (at least) required to enter Realm of Zot; + * Killing creatures created friendly no longer generates xp; + * Skill gain modified for better balance; + * Backstabbing with daggers now much more effective; + * Stealth is now much more effective (try playing thieves again!); + * Resistances to electricity and poison no longer absolute; + * Disarming traps may now trigger them; + * Armor and evasion skills are more effective; + * Great and triple swords now treated as long swords for purposes of + skill (Great Swords skill removed); and + * Berserk mode made more interesting: + + Berserk counter decrements more quickly when not attacking; + + Butchery no longer penalized, resets the penalty counter; + + Eating no longer penalized, does not reset penalty counter; + and + + Added exhaustion counter to track berserk fatigue + + Monster Modifications: + + * Monster AI improved in various ways; + * More info available when examining monsters and when their + enchantments expire; + * A few new low-level monsters added; + * Ghosts inflict less damage, heal more quickly, and may teleport; + and + * Three 'silly' monsters (dorgi, sword, guardian robot) removed. + + Character Changes: + + * Stalkers, assassins, and venom mages now being with knowledge of + Potions of Poison; + * Spriggan assassins and stalkers now allowed; + * Halfling assassins and warpers now allowed; + * Horned characters may wear caps and hats; + * Lessened penalty for use of large shields by giant races; + * Rangers are now called hunters; + * Assassins now begin with unarmed combat, stat modifiers for + thieves and assassins reversed; + * Altered stat modifiers for wizards, making them smarter than other + spellcasters; + * Rebalanced the Gladiator and Fighter classes; + * Lowered the experience penalty for demonspawn characters; + * Kobolds now receive a stat increase every five levels; and + * Spriggans and Halflings now consume less food than before. + + Item Changes: + + * Hand-and-a-half weapons added -- bonus if no shield wielded; + * Added weapons of reaching, permitting attacks two squares over; + * Cekugob no longer confers resistances to fire and cold; + * Worn cloaks no longer prevent donning/removal of body armor; + * Amulet of maintain speed now the amulet of resist slowness; and + * New weapon types: knife, axe, broad axe, spiked flail, great + flail, great mace, trident, demon trident. + + + +3.31-pre [~28.04.1999] + + * An attempt to merge the Mac port with the DOS/Linux code. + + + +Linley's Last: 3.30 [30.03.1999] + + * All known bugs (a *huge* list) fixed; + * Several spells added, mostly to make Earth, Ice, and Air magic + viable in comparison to Fire; + * Numerous rebalancings; + * "Unrandom artefacts" added -- see the source files randart.cc and + unrand.h for details (These are very easy for non-coders to add); + * 'V' command made available in shops; + * Crossbows upgraded; + * Characters lacking magic skills cannot learn spells; + * It's now possible to get level 1 Spellcasting just by reading + scrolls; and + * A whole heap of other stuff. + + + +3.20 [09.02.1999] + + * New races: Demonspawn, Ghoul and Kenku; + * A new God, Yredemnul, and this one is a lot better than Nemelex, + who has also been upgraded a bit) -- another option for Priests + and Death Knights; + * Changes to a few spells, and I finally got around to upgrading the + crappy armour spells; + * Heaps of the usual rebalancing and some new features; and + * Many bugs found by Daniel Ligon and others fixed. + + + +3.11 [31.01.1999] + + * Fixed minor bugs; and + * Tweaked the balance of the early levels and monsters. + + + +3.10 [27.01.1999] + + * New races: Spriggan and Minotaur; + * Added a new and rather strange God; + * Shallow water implemented; + * An Invocations skill was added; + * Invocations are generally much cheaper to use, especially in + piety; + * Random demons in Pandemonium; + * Many, many new monsters and several items added; + * New mutations; + * Plenty of rebalancing done; + * Chaos Knights now have a choice between Xom or Makhleb; + * Centaurs have been toned down a lot (and now require more food); + * Heaps of new minor features; and + * Many bug fixes. + + + +3.02 [~04.01.1999] + + * Certain monsters' attacks upgraded and spells balanced, too; + * Fixes the currently known about bugs and tweaks balance; and + * Only one known bug remaining (an empty macro.txt file can cause a + crash). + + + +3.01 [~01.01.1999] + + * Bugfix release: Version 3.0 was a little bug-ridden, including a + small problem where stats were raised by wearing almost anything. + + + +3.0 [23.12.1998] + + * Fixes all known bugs (but unfortunately invalidates old save); + * Lots of new dungeon features -- new monsters, items, etc.; + * Random artefact armours, rings and amulets; + * Two new races: centaur and demigod; + * Three new classes: stalker, warper and monk; + * Unarmed Combat skill added; + * Ghosts upgraded -- they now remember a little more from past lives; + * Various minor miscellaneous changes have been made -- for example, + the 'x' command now describes items as well as monsters/dungeon + features; + * A new dungeon branch; + * A new God to worship; and + * Sam Jansen has reformatted several modules (including the horrible + dungeon.cc), making them far easier to read and work with. + + + +2.95 [15.12.1998] + + * Fixed the bug in 2.94, by which reloading a level with a mapped + arch on it crashed the game, has been fixed by saving all files in + binary, rather than text, format; + * Gives crusaders the full range of spells in their initial + spellbook; + * Species-skills table in skills2.cc has been converted to an array; + * For source-readers, the horrible dungeon.cc module has been + revised and reformatted by Sam Jansen; and + * A Linux message output bug fixed by Robert Glowczynski. + + + +2.94 [09.12.1998] + + * All known bugs fixed (including, I hope, the notorious Item Link + Error bug); + * Several interface improvements; + * Several rebalancings; and + * File I/O rewritten by Alexey Guzeev -- it's now several times + faster. + + + +2.93 [~23.11.1998] + + * Alexey Guzeev's OS/2 port integrated into the code; and + * Many bugs fixed, and a few new features (mostly user interface). + + + +2.92 [??.??.????] + + * I think I forgot to release this version. + + + +2.91 [17.11.1998] + + * Bug fix version; + * Trolls and Ogres can now choose the Berserker class; + * Random artefacts are now a bit more common; + * Shops contain better items; and + * Source code should now compile properly under Linux (thanks to + Svante). + + + +2.90 [13.11.1998] + + * Juho Snellman's macro-patch was added; + * Random "artefact" weapons added -- these are special weapons with + a wide range of possible abilities; + * Several new items and monsters; + * Hell and the Realm of Zot are now much nastier. + * Considerable balance changes; + * New dungeon formations; + * The 'V' command now gives more specific information for weapons + and armor; + * 'Target previous monster' function is now a bit easier to use; + * You can now command your servants to attack ('!' command); and + * Bugs fixed. + + + +2.83 [31.10.1998] + + * Yet another bugfix release; + * Some new monsters and items; + * Reaver class added; and + * The Dungeon is again only 27 levels deep. + + + +2.82 [24.10.1998] + + * Another bugfix release; and + * Adds some new user-interface features. + + + +2.81 [20.10.1998] + + * Bugfix release. + + + +2.80 [18.10.1998] + + * New species: Draconian (yes, I have been playing too much + Zangband!); + * New classes: Healer, Chaos Knight, Transmuter; + * New monsters, including some which make curse skulls look + completely harmless; + * Religions and altars -- there are 8 or 9 gods who you can worship, + each of whom requires different forms of devotion and offer + different advantages; + * Greatly expanded Transmigration magic, including + self-transformations; + * Several new dungeon branches; + * Necromantic weapons (draining, vampiric, etc) are now more + effective; + * Significant balance changes -- deep levels should be harder now; + * Special abilities ordered in the new 'a' abilities menu; + * New items, spells, monsters, etc. as usual; and + * A number of bugs found in the source by Daniel Ligon were erased. + + + +2.72 [~02.10.1998] + + * Another bug fix version (there seem to be a lot of these); and + * Still a couple more bugs from 2.71 to bash and the balance may + have been a little on the easy side. + + + +2.71 [25.09.1998] + + * Bug fix version. + + + +2.70 [22.09.1998] + + Heaps of new features (I almost called this version 3.0): + + * New species to choose from: Ogre, Troll, Ogre Mage; + * New class: Venom Mage; + * Several huge branches (extra dungeons branching off from the main + one), each containing special new monsters and terrifying vaults; + * New winning conditions; + * Player ghosts; + * Mutations; + * Many new items, spells, monsters; + * Several bugfixes; and + * ... a heap of other stuff. + + + +2.61 [06.09.1998] + + A bug fix version: + + * Levitation is no longer permanent; + * Fixes dropping-worn-armour bug; + * Fixes item destruction bug (when picking up an item from the + middle or bottom of an item pile); + * Fixes poison and sticky flame bugs (neither worked properly); + * Fixes 'program bug' bug; + * The recall message screen no longer crashes the game; + * Paralysis works again; + * Drained dexterity is now displayed properly; + * Some essential files were accidentally omitted from the source + distribution -- they have been replaced; + * Something I forgot to mention for 2.60: most rings no longer use + food -- check them with 'V' when identified; and + * There is a 'little surprise in this release which gives an + indication of what will be in the next big release'. + + + +2.60 [01.09.1998] + + The Source Code Clean-up is finally finished! + + * Functions have been split up into about 30 different modules, + making coding *much* easier; + * All functions are now available from any module; + * An alternative display set for non-IBM graphics displays included + (activate it with a -c command-line switch); + * Several minor balancing changes were made; and + * If the game crashes, you can continue from the last save (unless + it crashed during saving). Your game is autosaved every time you + climb stairs. + + A great number of interface changes were made, many of which were + suggested by Eino Keskitalo and Jim Baranovich. These include: + + * The clumsy '^' untrap command has been replaced by a new use for + the control key; + * The character selection menus have been streamlined, with a new + random option; + * Shop displays are easier to read; + * The old message display has been rendered readable; + * It is now possible to reorder items and spells; and + * Various other things. + + + +2.51 [18.05.1998] + + Purely a bug fix version: + + * Item 1 no longer turns green on saving; + * *Hopefully* the horrible item bug has been permanently removed (at + least parts of it have, anyway); + * Repeatedly casting Deflect Missiles no longer causes problems; + * Skill selection now works properly (there were some problems in + 2.50); and + * A couple of bugs in monster teleportation have been fixed. + + + +2.50 [03.05.1998] + + Changes made: + + * Character classes made much more relevant; + * Class system is back, in a slightly different form. Characters now + gain a certain amount of skills when the gain levels (depending on + which class they are). The old system is still in place but + advancement is slower with it; + * New class: Death Knights; + * Monsters can now use more kinds of items; + * Heaps of items, monsters, spells etc added; + * Naga and Gnome character species added; + * Rings of teleport control now available; + * Levitating across water or lava works properly now; + * Shields are now much more effective; + * All known manifestations of the horrible item bug have been + tracked down and fixed (except for the apparently harmless + items-turning-green thing); and + * Et cetera. + + + +2.41 [~22.04.1998] + + Bugs fixed: + + * The game occasionally crashed in the iron city of Dis; + * Gates out of pandemonium were too rare; + * There were problems with saving and restoring magic points; and + * The source code distribution was extremely confusing. + + + +2.40 [~19.04.1998] + + * Two new races: Kobolds and Mummies; + * Five new classes: Four types of elementalist and a fighter/wizard + [Crusader] class; + * New skills -- elemental magic and traps and doors; + * New spells to go with the new skills and a spell failure system; + * Heaps of spells, items, and monsters added (as usual); + * You now get 1/2 experience for monsters killed by tame monsters; + and + * A large part of the monster and skills code was rewritten and + generally cleaned up by $pellbinder (Wladimir van der Laan). + + + +(2.33) 2.34 [~22.03.1998] + + * A crash bug and some problems with items should be fixed with this + release; and + * I forget right now, but these releases probably just fixed stuff. + + + +2.32 [~15.03.1998] + + * Even more cool stuff fixed; + * Level files are now deleted properly under Windows 95; + * Removed a bug which sometimes caused the dungeon generator to + hang; and + * Compiling no longer generates warnings. + + + +2.31 [~13.03.1998] + + * Lots of cool stuff fixed; + * Fixes the problem with magic missiles and saves; and + * Adds amulets and several new types of armour. + + + +2.30 [~11.03.1998] + + * Lots of cool stuff added; + * New in this version is a character race system with ten races to + choose from and a trove of new monsters and items; and + * Character dump feature implemented in the last version has been + fixed now so you'll be able to swamp the newsgroups and annoy the + regulars with ritualistic weekly reports of your favourite + adventurer. + + + +2.21 [~20.02.1998] + + * Various bugfixes and minor changes; + * Added the ability to produce character dumps (popular with the + newsgroup egocentrics); and + * Among the usual bunch of fixes, characters now get the chance to + disarm traps (especially thieves). + + + +2.20 [~15.02.1998] + + * Added a comprehensive skills system; + * Angband-style vaults and unique monsters; + * Fixed a few very minor bugs and added a vast number of new + features, the Abyss, Pandemonium, etc.; and + * Dungeon architecture is also a lot more varied. + + + +2.11 [~21.01.1998] + + * First Linux release, ported to Linux by Svante Gerhard; + * Updated source tree allows for easier ports onto other Unix + systems; and + * The port will apparently also run on a Sun Sparc running SunOS. + + + +2.10 [30.12.1997] + + Sorry to all of the many people who've been sending me bug reports, + but it's become too tricky to list all bugs and credit their + finder. I'm just getting too much email, and my mail reader has a + strange way of eating some messages and making them very difficult + to find. So from now on, I'll just list some of the major bugs + fixed and major features added: + + * A bug with wearing armour of fire/cold resistance was fixed; + * The properties of several items and spells were tweaked a bit; + * Specialist wizards were made even more powerful in their + discipline; + * The dungeon was made deeper (36 levels now), and lots of new + monsters were added to fill in the deeper levels; + * Several spells (mostly necromancy) were added; + * The dungeon architecture is a bit more varied, especially as you + get deeper; and + * A warning was added to labyrinths ... among other things. + + + +2.03 [22.12.1997] + + This version fixes a few bugs, and puts back the floating point + emulation which was missing from previous version 2 releases + (Daniel Josef Dekok and someone else noticed this). It also removes + the debugging code which was accidentally included. Bugs fixed: + + * Butterfly corpses were coloured black, making them invisible + (Bridget Farace); + * Shadow lanterns were also coloured black, and kept on working even + after you unwielded them (Bridget Farace); + * Items purchased from shops were not identified properly (Lord Gek, + Timo Laitila); + * Scrolls of Acquirement weren't being identified after being read; + * When you got hit by a monster wielding a weapon of draining, + events could become confusing (Timo Laitila); + * Finally, the '5' key on the keypad works as a rest key (Timo + Laitila); and + * Names longer than 8 letters caused problems with saving and + restoring games, especially in Windows 95 (Lord Gek and Timo + Laitila). + + The following new features were also added: + + * When tame creatures kill monsters, you now get 1/3 xp (Howard + Liu); + * Orcish spellcasters have been downgraded a bit (lots of people + recommended this); + * Specialist wizards are now slightly more powerful in their + specialisation, especially with magical staves (I can't find the + usenet post which told me about this); and + * ... A few other minor changes. + + + +2.02 [13.12.1997] + + I'm afraid that 2.01 didn't fully fix the bug in the shop code, but + hopefully this version does. Just about the only differences + between this version and 2.01 are: + + * Pressing 'r', 's', or 't' while in a shop really no longer crashes + the game (Saradon and Bridget Farace); + * If the scores file is not present, a new one is generated. I've + stopped including a scores file in the distribution, so that you + can unpack the zip file into your old crawl directory and keep on + using the old score file; and + * Save games should be compatible with 2.01. + + + +2.01 [12.12.1997] + + I had wanted version 2.0 to be a stable and bug-less release, but + this was not to be. Anyway, 2.01 fixes these bugs: + + * Zapping a wand of polymorph at yourself caused problems (polymorph + self hasn't been implemented anyway) (Saradon); + * Polymorph other didn't work properly; + * Choosing a non-existent item in a shop crashed the game (but only + sometimes, which was why I didn't notice it) (Saradon); + * Spell descriptions weren't working properly (Saradon); + * Some messages were misspelt due to an indiscriminate + search/replace (Adam Horowitz); + * Detect curse didn't detect curses on unrecognised rings (this bug + had been present right from version 1.0); + * Sometimes, a special weapon in the hands of a monster would not + function properly (watch out for creatures wielding weapons of + draining!); + * The use of the control key was not mentioned in the command list + (it opens/closes doors, like in Angband); and + * ... a few others (if I haven't credited someone, please tell me). + + Also, a few new things were added, as suggested by Saradon: A shout + command ('!') to attract your followers (and enemies!), and better + equipment for the enchanter. Also, you are now given a difficulty + message and prompted when memorising spells, so you will know which + spells you won't be able to cast reliably before you memorise them. + + * Scrolls of Acquirement create much better items; and + * Enchanters now get a magical dagger/robe with which to start. + + + +2.0 [09.12.1997] + + There have been so many additions in this version that I'm not + going to list them all, but here is a very incomplete list of bugs + and things rectified: + + * Characters could cause an excessive amount of damage empty-handed + (Bridget Farace); + * Darts didn't fire properly when character not wielding anything + (Bridget Farace); + * Hand crossbows didn't work properly; + * Fireballs always did the same amount of damage (0-27), regardless + of who cast them and how powerful they were; + * Going to Hell could have unexpected results due to an + out-of-bounds reference to levels_exist[]; + * Permanent levels, which are saved when you leave, and to which you + can later return; + * Shops; + * Several new character classes, including Rangers, Assassins, + Summoners, etc.; + * A more interesting Hell; + * New creatures, items, and spells; + * Written descriptions of every single item, spell, and monster in + the game; and + * Several bugs squashed. + + + +1.22 [~06.11.1997] + + * Fixes a minor bug with weapons of slay orc and brings back the old + spell level system. + + + +1.21 [~03.11.1997] + + * Fixes a bug which caused problems with high-level spellcasting. + + + +1.2 [02.11.1997] + + * The monster and cloud location bits have been completely + rewritten, a process which turned out to be rather easier than I + thought it would be. The new system is much more flexible; + * Monsters are now a bit more intelligent, especially in the way + they treat clouds; + * Several monsters have been added; + * Several items and two new classes of items (Carrion and + Miscellaneous) have been added; + * Several spells, most of them necromantic, have been added; + * The Gladiator, Necromancer, and Paladin classes have been added; + * A spell type system has been implemented, and several new staves + to specialise in particular types of magic have been added + (conjuration, summoning etc.); + * New unique items have been added, and a bug (actually, a mistype) + which prevented some from being generated has been removed; + * A few bugs have been removed; and + * Several other changes have been made, too numerous to mention + here. + + + +1.10 [14.10.1997] + + * Several new items and monsters were added; + * Labyrinths were added; + * Magical weapons are now less powerful; + * Some bugs have been fixed -- I forget what they were right now; + and + * The source was released, and Crawl is now under the GPL (see + Licence.txt for details). + + + +1.05 [07.10.1997] + + * A minor display bug was fixed; + * A bug with restoring clouds from saved games was fixed; + * A major bug which caused a segment violation when restoring saved + games if there were any magical traps on the level was finally + discovered and fixed; + * Those pathetic worms you see around level 6 are now nastier, and + jackals now tend to appear in packs; and + * This time, your item memory really does work. + + + +1.04 [06.10.1997] + + * A few really nasty bugs with saved games were fixed. The game + would not save enchantments affecting monsters, and would mess up + the items carried by the monsters (Adam Horowitz); + * A bug with the enchanting/corroding of shields was fixed; + * A '<=' instead of a '<' led to characters not using shields + occasionally blocking trap missiles (Adam Horowitz); + * You can now type '+' or '-' in the map screen to move around + faster (Adam Horowitz); + * The direction function now accepts '.' as well as delete (Adam + Horowitz); + * During your first step while long-walking, you can walk on + anything (still prompts for water, etc., though) (Adam Horowitz); + and + * I think that was all. + + + +1.03 [04.10.1997] + + * Some unique items were added; + * A silly bug, by which your item knowledge was not saved, was fixed + (Darren Hebden); + * Teleport traps now work properly; and + * I think I fixed another bug, but I can't remember. + + + +1.02 [04.10.1997] + + * A few more items and traps have been added; + * The game now uses the rogue keys (hjklyubn) properly; and + * You used to be able to throw and zap straight when confused. No + longer! + + + +1.01 [03.10.1997] + + * Shields were changed; + * Items were made more common; + * Monsters were made less common (this was a bug); + * Cursed weapons were made less common (this was just bad planning); + and + * I changed the name to make it a bit less egotistical. + + Bugs removed include: + + * A debugging feature of the 'x' command was unintentionally left + in; + * The summon scorpions spell summoned a vampire (oops) (Haran + Pilpel); + * Sometimes +50 armour could be generated (oops again) (Haran + Pilpel); + * The inventory item counter was not decremented when you dropped + something! This would lead to you being unable to pick things up + after a while (Darren Hebden); + * A bug with detect curse scrolls (Darren Hebden); + * Slime creatures and jellies were a bit weak; + * Killing normal (not spitting) plants gave you far too much xp; + * Your rate of regeneration was not saved properly; + * About half of the rings could never be generated; + * The 's' command would sometimes make you repeat your last move + (Haran Pilpel); + * I forgot to mention the walk-in-place function in any + documentation; + * I set the level builder to put 100 monsters on each new level for + debugging, and forgot to reset it -- I really should playtest + more!; + * If you tried to cast spell 'z', you cast the identify spell (Lucas + Ackerman); and + * A few more fixes which I forget right now. + + + +Linley's First: 1.00 [02.10.1997] + + * First (rather buggy) version. diff --git a/crawl-ref/docs/pcre-license.txt b/crawl-ref/docs/pcre-license.txt new file mode 100644 index 0000000000..daea2e48a3 --- /dev/null +++ b/crawl-ref/docs/pcre-license.txt @@ -0,0 +1,68 @@ +PCRE LICENCE +------------ + +PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + +Release 6 of PCRE is distributed under the terms of the "BSD" licence, as +specified below. The documentation for PCRE, supplied in the "doc" +directory, is distributed under the same terms as the software itself. + +The basic library functions are written in C and are freestanding. Also +included in the distribution is a set of C++ wrapper functions. + + +THE BASIC LIBRARY FUNCTIONS +--------------------------- + +Written by: Philip Hazel +Email local part: ph10 +Email domain: cam.ac.uk + +University of Cambridge Computing Service, +Cambridge, England. Phone: +44 1223 334714. + +Copyright (c) 1997-2006 University of Cambridge +All rights reserved. + + +THE C++ WRAPPER FUNCTIONS +------------------------- + +Contributed by: Google Inc. + +Copyright (c) 2006, Google Inc. +All rights reserved. + + +THE "BSD" LICENCE +----------------- + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the name of Google + Inc. nor the names of their contributors may be used to endorse or + promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +End diff --git a/crawl-ref/docs/tables.txt b/crawl-ref/docs/tables.txt new file mode 100644 index 0000000000..271b0e17fc --- /dev/null +++ b/crawl-ref/docs/tables.txt @@ -0,0 +1,151 @@ +The following three tables describe all aptitudes of the various races for the +various skills. These are not necessary for winning in Crawl, neither explicit +nor implicit. The qualitative information behind this sheet (ie. which species +is good at which tasks) can be obtained in two other, less sophisticated ways: +- read the species section in the manual about strenghts and weaknesses +- look which combinations of race and class are possible. + +If you consider figuring out such things yourself to be fun, stop reading now. +Otherwise, just go ahead. A lower a value, the better the aptitude. 100 is the +Human standard. Please note that many things effect how quick a character will +actually learn a skill. Thus the numbers below are good enough for comparisons +among races, but not necessarily among skills. + +The abbreviations used for the skills are: + +General skills, Experience Melee and Ranged Combat Spellcasting and Magic +-------------------------- ----------------------- ---------------------- +Arm - Armour Fgt - Fighting Spc - Spellcasting +Ddg - Dodging SBl - Short Blades Coj - Conjuration +Sth - Stealth LBl - Long Blades Enc - Enchantments +Stb - Stabbing Axs - Axes Sum - Summonings +Shd - Shields M&F - Maces & Flails Nec - Necromancy +T&D - Traps & Doors Pla - Polearms Trl - Translocations + Stv - Staves Trm - Transmigration +Inv - Invocations U C - Unarmed Combat Div - Divination +Evo - Evocations + Ran - Ranged Combat Fir - Fire Magic + Slg - Slings Ice - Ice Magic +Exp - Experience Bws - Bows Air - Air Magic + Crb - Crossbows Ear - Earth Magic + Drt - Darts Poi - Poison Magic + + + Arm Ddg Sth Stb Shd T&D Inv Evo Exp +--------------------------------------------------------------------- +Human 100 100 100 100 100 100 100 100 100 +Elf 120 80 80 100 120 100 100 80 120 +High Elf 110 90 90 110 110 100 100 90 150 +Grey Elf 140 75 70 100 140 100 100 90 140 +Deep Elf 140 70 65 80 140 100 100 90 140 +Sludge Elf 140 70 75 100 130 100 100 110 120 +Hill Dwarf 70 120 150 140 70 100 100 60 140 +Mountain Dwarf 60 110 140 130 70 100 100 70 140 +Halfling 150 70 60 70 130 100 100 90 100 +Hill Orc 90 140 150 100 80 100 100 100 100 +Kobold 140 70 60 70 130 100 100 80 100 +Mummy 140 140 140 140 140 140 140 140 150 +Naga 150 150 40 100 140 100 100 100 120 +Gnome 150 70 70 80 120 100 120 60 110 +Ogre 140 150 200 150 110 200 130 170 140 +Troll 150 130 250 150 150 200 150 180 150 +Ogre Mage 170 130 100 130 150 150 100 100 150 +Draconian Red 200 120 120 100 100 100 100 100 130 + White 200 120 120 100 100 100 100 100 130 + Green 200 120 120 100 100 100 100 100 130 + Yellow 200 120 120 100 100 100 100 100 130 + Grey 200 120 120 100 100 100 100 100 130 + Black 200 120 120 100 100 100 100 100 130 + Purple 200 120 120 100 100 100 100 90 130 + Mottled 200 120 120 100 100 100 100 100 130 + Pale 200 120 120 100 100 100 100 90 130 +Centaur 180 170 200 170 180 150 100 130 140 +Demigod 110 110 110 110 110 110 110 110 160 +Spriggan 170 50 50 50 180 60 130 70 130 +Minotaur 80 80 130 100 80 120 130 170 140 +Demonspawn 110 110 110 110 110 110 80 110 140 +Ghoul 110 110 80 100 110 120 110 130 120 +Kenku 90 90 100 80 100 100 160 100 130 +Merfolk 160 60 90 70 100 120 100 100 120 +--------------------------------------------------------------------- + Arm Ddg Sth Stb Shd T&D Inv Evo Exp + + + Fgt SBl LBl Axs M&F Pla Stv U C Ran Slg Bws Crb Drt +--------------------------------------------------------------------- +Human 100 100 100 100 100 100 100 100 100 100 100 100 100 +Elf 120 80 80 120 130 130 100 110 80 120 60 100 90 +High Elf 100 70 70 130 150 150 100 130 80 140 60 100 90 +Grey Elf 140 90 95 140 160 160 100 130 80 130 70 100 90 +Deep Elf 150 100 105 150 165 165 100 130 80 135 74 75 75 +Sludge Elf 80 110 110 130 140 140 100 80 70 100 100 100 100 +Hill Dwarf 70 80 80 60 70 110 130 100 120 130 150 120 120 +Mountain Dwarf 70 90 90 70 70 110 120 100 115 125 140 100 120 +Halfling 120 60 100 120 150 160 130 140 60 50 70 90 50 +Hill Orc 70 100 80 70 80 80 110 90 130 130 120 120 130 +Kobold 80 60 100 110 140 150 110 100 60 70 80 90 50 +Mummy 100 140 140 140 140 140 140 140 140 140 140 140 140 +Naga 100 100 100 100 100 100 120 100 120 120 120 120 120 +Gnome 100 75 100 100 130 140 130 110 100 80 100 90 60 +Ogre 100 140 120 100 100 110 120 130 100 150 150 180 150 +Troll 140 150 150 150 130 150 150 100 130 180 180 180 180 +Ogre Mage 100 110 100 100 100 100 100 100 150 150 150 150 150 +Draconian Red 90 100 100 100 100 100 100 100 120 120 120 120 120 + White 90 100 100 100 100 100 100 100 120 120 120 120 120 + Green 90 100 100 100 100 100 100 100 120 120 120 120 120 + Yellow 90 100 100 100 100 100 100 100 120 120 120 120 120 + Grey 90 100 100 100 100 100 100 100 120 120 120 120 120 + Black 90 100 100 100 100 100 100 100 120 120 120 120 120 + Purple 90 100 100 100 100 100 100 100 120 120 120 120 120 + Mottled 90 100 100 100 100 100 100 100 120 120 120 120 120 + Pale 90 100 100 100 100 100 100 100 120 120 120 120 120 +Centaur 100 120 110 110 110 110 110 100 60 75 60 85 80 +Demigod 110 110 110 110 110 110 110 110 110 110 110 110 110 +Spriggan 150 90 140 150 160 180 150 130 90 70 70 100 70 +Minotaur 70 70 70 70 70 70 70 80 90 90 90 90 90 +Demonspawn 100 110 110 110 110 110 110 110 110 110 110 110 110 +Ghoul 80 110 110 110 110 110 110 80 130 130 130 130 130 +Kenku 100 75 75 75 75 75 75 80 90 100 80 80 90 +Merfolk 80 70 90 140 150 50 130 90 100 150 140 140 100 +--------------------------------------------------------------------- + Fgt SBl LBl Axs M&F Pla Stv U C Ran Slg Bws Crb Drt + + + Spc Coj Enc Sum Nec Trl Trm Div Fir Ice Air Ear Poi +--------------------------------------------------------------------- +Human 100 100 100 100 100 100 100 100 100 100 100 100 100 +Elf 80 105 70 100 120 100 100 100 100 100 70 130 110 +High Elf 70 90 70 110 130 90 90 110 100 100 70 130 130 +Grey Elf 60 90 50 90 130 80 80 80 90 90 60 150 110 +Deep Elf 55 80 50 80 70 75 75 75 90 90 80 100 80 +Sludge Elf 70 130 130 90 90 100 60 130 80 80 80 80 80 +Hill Dwarf 160 120 150 150 160 150 120 130 80 120 150 70 130 +Mountain Dwarf 140 115 135 150 160 150 120 130 70 130 150 70 130 +Halfling 130 130 100 120 150 100 150 140 100 100 90 100 120 +Hill Orc 150 100 120 120 100 150 160 160 100 100 150 100 110 +Kobold 110 110 110 105 105 100 110 130 100 100 100 100 100 +Mummy 100 140 140 140 100 140 140 140 140 140 140 140 140 +Naga 100 100 100 100 100 100 100 100 100 100 100 100 60 +Gnome 120 100 100 110 130 130 120 120 100 100 170 60 130 +Ogre 220 180 220 200 150 200 200 200 150 150 200 120 150 +Troll 200 160 200 160 150 160 160 200 160 160 200 120 160 +Ogre Mage 70 100 80 100 100 100 100 100 100 100 100 100 100 +Draconian Red 100 100 120 100 100 100 100 100 70 135 100 100 100 + Green 100 100 120 100 100 100 100 100 100 100 100 100 70 + White 100 100 120 100 100 100 100 100 135 70 100 100 100 + Yellow 100 100 120 100 100 100 100 100 100 100 100 100 100 + Grey 100 100 120 100 100 100 100 100 100 100 100 100 100 + Black 100 100 120 100 100 100 100 100 100 100 70 135 100 + Purple 70 100 90 100 100 100 100 100 100 100 100 100 100 + Mottled 100 100 120 100 100 100 100 100 80 100 100 100 100 + Pale 100 100 120 100 100 100 100 100 90 100 90 100 100 +Centaur 140 120 110 120 120 120 120 130 120 120 120 120 130 +Demigod 110 110 110 110 110 110 110 110 110 110 110 110 110 +Spriggan 60 160 50 150 120 50 60 70 140 140 120 120 100 +Minotaur 180 170 170 170 170 170 170 170 170 170 170 170 170 +Demonspawn 100 100 110 100 90 110 110 110 100 110 110 110 100 +Ghoul 120 130 130 120 100 120 120 120 150 90 150 90 100 +Kenku 100 60 160 70 80 150 150 180 90 120 90 120 100 +Merfolk 100 140 90 100 150 140 60 80 160 80 150 150 80 +--------------------------------------------------------------------- + Spc Coj Enc Sum Nec Trl Trm Div Fir Ice Air Ear Poi diff --git a/crawl-ref/docs/todo.txt b/crawl-ref/docs/todo.txt deleted file mode 100644 index 6974ecff3b..0000000000 --- a/crawl-ref/docs/todo.txt +++ /dev/null @@ -1,456 +0,0 @@ -Enhancements: - -* make screen update correctly when player vision is <2. - -* Make dangerous things be shown on top of a stack. This includes traps, - walls of fire, etc. - -* Make food acquirement give you more kinds of food. - -* file locking for the high score file - -* adjust EV for low levels. - -* repopulate levels on the way out - -* should species armour bonus work on EV instead of AC? - -* make rings of fire/ice (and others?) auto identify with use - -* miscast effects too weak? Not enough of a threat, especially when used - by gods, Zot traps, or mummies as a form of punishment. - -* add toggled stealthy mode? - -* print out '@' status in character dumps (might be nice to have the - chacters status in the dump... method of death might be good as well). - -* fix green crystal room so its not boring (pretty vault, just no real - point to it currently) - -* fix the summoning abuse problem properly. Ideally, the player should - not get piety for killing things he summoned, but should get piety - for things that are summoned against him. - -* Add a wizard debugging function to output several thousand items for - a particular depth (should make item frequency tuning easier). - -* Perhaps races should be physically "described" (stucture or bit - fields) to keep track of their size and physical body parts that - interfer with armour. This could also be used in other ways... - small races could be harder to hit with ranged weapons - than larger ones, but the larger races might get a bonus - to carrying capacity... could also probably simplify the - extra unarmed combat attacks code - -* Speaking of the character info, I really like that Linley now displays - the weapon being wielded. We should think about displaying all ten - wielded/worn objects. - -* Need to make sure that ghost names will be OK when long player names - are used. - -* Blink prompt is bogus (probably also happens elsewhere). Can probably - fix this by adding a prompt argument to look_around. - -* Some of the more important messages should be in color? - -* The spores contaminate the food by exploding, only the - > explosion effect should destroy food on the ground. - - Right. Maybe this should be implemented (it shouldn't be too - hard; fiery explosions already destroy scrolls laying on the - floor). - - One idea I had with contaminated food was to use the it_plus2 - variable (which IIRC is currently unused for all types of - food) to store the number of items in a stack of food which - are contaminated. Say you have a stack of 4 meat rations, if the - plus2 value is 1 then one is bad, 3 are good. Any operations - carried out on the stack (eating, dropping, picking up etc) - have a 1 in 4 chance of taking the bad ration and 3/4 of - taking the good. A quantum thing, sort of. Poisoned food could - be done in the same way (if there are any variables left - dam?) - - This means that contaminated food doesn't just disappear, it - stays around to haunt you. - - This could perhaps lead into a 'food' skill, which lets you - cook food, get the most out of corpses, separate the good - food from the bad etc. - -* Heavy armor doesn't offer enough protection? - >The big problem is the strange evasion modifier calculation that - >results in armour completely destroying your EV with the - >double subtraction thing. - - I don't think this is so strange. It only affects chars who have - high dodging skills, and it makes sense to me that dodging - effectively and wearing heavy armour should be mutually - exclusive unless you're used to wearing heavy armour, in which - case the evasion penalty is reduced according to your armour - skill and the dodging skill (which can only be picked up when - you're wearing light or no armour) is usually ignored. - - I did it this way so that the two skills (dodging and armour) - would rarely both be useful at the same time, so players would - have to choose between them. Otherwise they could just practice - both and everyone would end up the same. - - Personally, I think the double subtraction thing should be left - in, but with the following changes to the way armour works: - - base AC should be upped considerably, as discussed - - the limit on the proportion of the evasion penalty removed by - a high armour skill could be raised or scrapped (currently only - half of the evasion penalty of a piece of body armour can be - negated by the armour skill) - - I would have fixed these problems before I stopped working on the - code myself, except that nobody ever complained about them and I - didn't notice them myself. - - -- EV penalty now recovered faster, Armour skill slightly easier to - get -- base ACs should probably still be upped (bwross) - -* New spell realms (Linley doesn't like these): - NATURE - spells connected with some nature forces, animals and plants -e.g. summon small mammal, summon scorpions, summon elemental, passwall, -resist , create plant/fungus, charm animal/plant and so on - - PROTECTION - protective spells - shield, resist sth., Fire/Ice armor, -Deflect missiles... HEALING - Cure Light/Serious/Critical Wounds, Cure -Disease, Neutralize/Slow Poison, Heal - -* DRUID class - with spells allowing him to summon animals & plants, -charm them, also some to work with natural forces - eg. elementals, -resist fire..., also some healing spells - neutralize poison etc... - -* Maybe some God of Nature, which offers to his believers some of Druid - ablities - -* "write scroll" skill - -* Dagger of Backstabbing - hit and Damage bonus when you are backstabbing - -* purify food spell - -* create water/lava pool spell, also some monsters creating this kind - of terrain - -* Some work needs to be done for multi-user environments. - -- some done, more could be useful (bwross) - -* Targetting isn't intuitive enough? - -- slightly improved (bwross) - -* Use gdbm to save games? However gdbm won't compensate for endian - differences... - -* Use gdmn to save bones? - -* Use zlib to compress saved games? - -* larger windows - -- number of lines is now handled more dynamically, but only at - during init or compile time (depending on NUMBER_OF_LINES) (bwross) - -* multiple-windows - -* Use XML for monster definitions - -* Use XML for room layout/fixed levels - -* Use XML for item definitions? - -* moves[0], beam[0] should be simplified to use pointers to structs instead. - -* Locking to prevent multiple game loads/save file overwrites? - -* Allow access to the new longer high score files... add user id field (for - multi-user systems). - -* Add DEC graphics support for non-IBM machines (like nethack). - -* Come up with a better save file system that will accomidate versions - easily and involve (hopefully) one smaller file... instead of the - large number of current files. - -* Add Food/Survival skill - -> (1) Cooking Food -- by far the most potential to unbalance the game. -> -> Cooking food should probably cost a limited resource to use (fire -> sources? -- some like spellcasting would be very powerful). It would -> allow anyone to eat chunks of flesh, thus removing an advantage -> that carnivores and gourmands have... so you probably don't want -> to add other advantages like extended shelf life. The food value -> of chunks of flesh would probably have to be made smaller to maintain -> the food balance. -> -> Maybe cooking should be an ability that's either granted by a god, -> being a member of a race or class, or becomes available with a -> certain (high) level of the Food skill (perhaps Survival is a better -> encompassing name... it could potentially be used for other things -> as well then). -> -> (2) Butchery -- not much of a game unbalance. -> -> This doesn't effect the game balance unless its made really powerful -> (ie. I can get 6 chunks from a bat). Right now you can get a full -> stomach off of any number of large monsters. A few extra chunks -> doesn't count for much unless you can improve their shelf life. -> -> (3) Detecting Bad Food -- depends -> -> If Giant Spores secretly contaminate rations this could be an -> important skill. Perhaps it could give you a slightly better -> save on eating meat chunks (limiting the advantage of the -> carnivore's save and to a lesser extent the "AotG). It could -> also warn you about things like mutagenic and necrophage meat -> (give you a yes/no prompt you wouldn't normally get). - - -* New inventory/equip/drop system - ->>> // > Makes a certain sense, but I can drop any number of the healing potions ->>> // > as one action that suggests a bit more care... also I could just drop ->>> // > all of my potions and that would take an action for each stack I had, ->>> // > whereas all it probably requires is me dropping my "potion sack" or ->>> // > dumping it out. ->>> // > ->>> // How about a compromise where you can hit d% to drop all your food, ->>> // or d! to drop all your potions, but if you want to discriminate you have ->>> // to do them individually? ->>> ->>> I'm wanting something a bit more featured like the nethack system (not ->>> the old traditional, but the newer ones). Bascia concept would be that ->>> I could either select via inventory slot letter, or optionally pull down ->>> an inventory browser/selector and select the items I want. Complete ->>> with options like "select all potions", "toggle all potions", "select all", ->>> and "unselect all" (for example). ->>> ->>> If you want to add aditional time for discrimination, you can do it ->>> Ragnarok style (I like the Ragnarok armour equip system) and have a ->>> counter on the top line (with a short list of commands) that tells the ->>> player how many turns the action will take. There are a few problems ->>> with calculating this value, because there are any number of ways ->>> I can select all potions and the value should be independant of ->>> which ever I choose to use. ->> ->> Well, it would seem that the time calculation should depend on the ->>final set of selected items rather than the steps taken to select them. ->>That would remove abiguity. We could generate a time based on the variety ->>of things dropped. So, if you were dropping potions, swords, rings, and ->>scrolls, it would take you much longer than to just drop your rings. It ->>might be worth it to let weight factor into drop speed as well. -> ->You don't want to get too complicated. There's a limit to the ->granularity here, as you probably don't want to have it taking a ->couple dozen actions to drop some equipment. A simple little ->penalty for dropping only part of a stack, or only some types ->of potions is probably enough of a change. - - -* Options files - -- must keep two distinct types of options and handle them separate: - - ones that would be loaded from a "crawlrc" file and would effect - the players characters in a general way. - - ones selected during the game and would be carried between - saves, but not to other characters the player is playing. - -* fix non-magical traps - -- should have some number of "charges" for those that shoot items... - these should be more dangerous as well. - -- monsters should "learn" the traps of a level. - -> Could be done with a bit array (if there is a limit of 32 traps on -> a level, that would be bonus... but it could be extended to more -> for not too much trouble). That would take up little space, and -> testing would be by simple boolean operators (to test if the monster -> knows about trap X, you check (monster.traps & (1 << X))). We could -> have the code test the line of sight from a trap everytime it is -> activated, and set the appropriate bit of the array in any monster -> within line of sight. - - -* Revert/change the Elementalist spellbooks? - -> // >This brings up another little problem around here. People around -> // >here weren't entirely happy about the change to the Elemental -> // >Spellbooks in 3.30. For the most part its considered that the -> // >elementalists are becoming less individual in flavour and that -> // >they're now just slight variations of Fire. In particular (and -> // >pertaining to this discussion), was the loss of levitation from -> // >the Air book, which was considered a useful "Tensor's Disk" for -> // >lifting stuff up stairs. -> // -> // I removed levitation because it no longer fit, and I didn't -> // want to stretch air out to three books. As for the other changes, -> // these were made because I thought the non-fire elements were too -> // weak by far. Which spells in particular are problematic? (I'll -> // try to write an explanation for the differences between the -> // elements when I have a little more time) -> -> Well, we didn't think the other elements were actually "weaker". -> They're only weaker in combat potential -- Fire was all attack, the -> others offered more utility and defensive abilities. There was -> enough combat in the others to get you well into the midgame, at -> which point you adapt to whatever books you find (its typically -> quite hard to get the advanced versions of your magic discipline... -> I remember how happy I was when I finally had a necromancer find -> Unlife... my Paladin had a complete set of death books early on). -> -> The main problem is that the elements were made too similar (we -> really liked the fact that they all played quite different, it -> was one of the things that made crawl really popular here). -> -> For example, they all start with a slight variation of the same spell. -> This means that they all start playing the same way, with the same -> tactics. Before you could play Earth for the range attack, or Air for -> the somewhat risky-yet-powerful Shock. -> -> There's still a little varity left, but certain bits are gone. You -> can't depend on getting summoning when you start with Ice, for -> example. The Levitation spell is now only in the Enchantment book, -> it used to be a something you could depend on as an Air mage (now -> you have to hope to get the book of Sky, and that gets you Fly, which -> is better, but is also a level four spell). -> -> Earth had a little issue before (too many similar throwing spells), -> but replacing Throw Pebble with Crush just makes it the same as the -> other elements. Stone Arrow has always been better than Iron Bolt, -> IMO... iron bolt just isn't effective enough to justify the extra -> cost and difficulty... it requires really high skill levels to -> be better. I would have rather seen Iron Bolt go, in favour of -> something a bit more interesting (Earthquake, Pass Wall, Stair -> Creation). - -* Improve running code - -* Carrion eating mutation - -- like vegetarian and carnivore, only gives a preference for - rotten meat. Progesses with level until the character - can only effectively eat rotten food. - -* Add rumours/fortune cookies? - -* Improvements to the character dump - -- is the current dump as verbose as wanted/too verbose? - -- add spell failures to dump? - -* Change character for throwing weapons to '(' and small armour to '['. - -- Problem: '(' is used for dancing weapons. - -* Put some limits of teleport/teleport control? Make it rarer? - -* Improve artefacts to compete better with Sword of Power? Improve - non-sword weapons so they become more of a choice? - -* Currently possible to gain 0hp when gaining a level... should - be safeguards added to make sure this is at least never negative, - if not guaranteeing 1hp / level. - -* should be able to see contents of books in stores? - -* remove possibility of teleport control with the Blink spell (require - the player to use the Control Blink spell instead). - -* merge the chardump spell listing code with the other spell listing code. - -* throw traces to target should coincide with line-of-sight better - -* item inscriptions - -* are crossbows correct? The other launchers seem to be adding their - skill bonuses twice - -* The Throwing skill isn't particularly useful. You could use it for - throwing daggers, axes, or spears but they don't stack and are - heavy. - -* add some weapons/change weapon code so that non-swords are more of - an option - - // >I was thinking that this might be a good way to increase the value of - // >non-sword weapons. - // - // .. which probably needs to be done anyway. One or two - // suggestions for new weapons which could help: - // - // - axe (just axe, no 'hand' or 'battle' there): this would be to - // a hand axe what a long sword is to a short sword. Skills may - // need to be adjusted (a new 'great axes' skill, covering the - // two-handed axes? Or just condense the sword skills). - // - Spiked flail: like a flail, but more damage and slightly - // slower (heavier etc). - // - Great flail/mace: two-handed versions. - - These would certainly help out a bit. The other weapon classes were - lacking good intermediates. I don't think a "great axe" skill is - required, removing "great swords" might be correct (although it - does add a limiting factor on the power of swords). Having weapon - skills where only one member of the class exists doesn't seem very - worthwhile. Maybe fighting style skills could be used instead... - - - 'two handed weapons' could be a skill for all two handed weapons, - it would be used in conjunction with the appropriate weapon skill. - - - 'shields' would cover "weapon and shield" style, maybe allowing - for the possibility of offensive shield bashing. - - - 'unarmed combat' or 'fighting' could cover the cases where one - or both hands are empty. Characters not using one of the other - styles should be able to use unarmed strikes more often and - more efficiently. - - Potentially, you could add a bastard sword to the game. Its hand and - a half nature could put it in any of the above categories (if you - have a shield, it would be the second... if not it could be either - of the other two). - - Of course, adding new skills has its own problems... there is already a - shortage of space on the skills screen. - - -- add special attacks to weapons and allow them to be accessed by the - player via SHIFT- onto an adjacent monster. - -- fix monster enchantments to have proper timeouts and a better structure - -- score file still gets messed up from time to time... should probably - change the format into something that can be expanded and contains more - information that might be printed (user id on multiuser systems, time, etc) - --- add checking for legal background colour (or just let it ignore the - "bold" colours like it does now?) - --- change file formats and functions - -- change score file format (see nethack for additional fields... also - maybe a field for damage done by killing attack... could be used to - spice up the death description (use final HP?))... also a userid - field for MULTIUSER systems would be nice (to tell likenamed - charcters apart and identify the player). - --- sort out spells into separate spl-* files based on type/skill - --- make all this you.inv_*, mitm/itm stuff the same instead of - having conversions everywhere. - --- differentiate the good gods more - --- break up dungeon.cc more - --- a check floor for lava/water function - --- a simple "summon hostile unfriendly/random demon" spell with fewer params? - --- centralize the elemental resistance code into a single entry point that - takes damage and type and does the appropriate things... some of the - cases are notably special, so some extra damage cateogries might have - to be created (ie. stepping/falling into lava is an instadeath for - characters with negative fire resistance, but being hit with a lava - bolt is only extra damage). - --- functions to check for specific equipment (ie reduce checks for "!= -1") - --- move ghost/demon array into a proper structure. - diff --git a/crawl-ref/docs/versions.txt b/crawl-ref/docs/versions.txt deleted file mode 100644 index d7387c60ca..0000000000 --- a/crawl-ref/docs/versions.txt +++ /dev/null @@ -1,782 +0,0 @@ - Crawl Versions History - - The name after each bug is the person who found it and told me - first. If you find a bug and for some reason don't want to be - credited, just tell me on the bug report. - -First DevTeam Release: 3.40 [23.02.2000] - - This is an abbreviated list of changes. For the full list, see - changes.340. - - Bug Fixes: - - * Fixed Abyss-related crash bug; - * Should now be able to escape the Labyrinth; and - * Players can no longer descend below the 27th level. - - Gameplay and Mechanics: - - * Implemented initfile (see init.txt for explanation of options); - * Added autopickup option (see init.txt for details); - * 'Easy Crawl' -- doors open when running or walking into them; - * 'V' and 'v' commands swapped -- now examine object and version - check, respectively; - * "Over-map" added; - * max hit points ceiling displayed when the player's max is down; - * Information about character's experience pool added to main - screen; - * Implemented new equipment listing commands: ')', ']', and '"'; and - * Removed halving of cost for spellcasting skills. - - Game (re-)Balancing: - - * Three runes (at least) required to enter Realm of Zot; - * Killing creatures created friendly no longer generates xp; - * Skill gain modified for better balance; - * Backstabbing with daggers now much more effective; - * Stealth is now much more effective (try playing thieves again!); - * Resistances to electricity and poison no longer absolute; - * Disarming traps may now trigger them; - * Armor and evasion skills are more effective; - * Great and triple swords now treated as long swords for purposes of - skill (Great Swords skill removed); and - * Berserk mode made more interesting: - + Berserk counter decrements more quickly when not attacking; - + Butchery no longer penalized, resets the penalty counter; - + Eating no longer penalized, does not reset penalty counter; - and - + Added exhaustion counter to track berserk fatigue - - Monster Modifications: - - * Monster AI improved in various ways; - * More info available when examining monsters and when their - enchantments expire; - * A few new low-level monsters added; - * Ghosts inflict less damage, heal more quickly, and may teleport; - and - * Three 'silly' monsters (dorgi, sword, guardian robot) removed. - - Character Changes: - - * Stalkers, assassins, and venom mages now being with knowledge of - Potions of Poison; - * Spriggan assassins and stalkers now allowed; - * Halfling assassins and warpers now allowed; - * Horned characters may wear caps and hats; - * Lessened penalty for use of large shields by giant races; - * Rangers are now called hunters; - * Assassins now begin with unarmed combat, stat modifiers for - thieves and assassins reversed; - * Altered stat modifiers for wizards, making them smarter than other - spellcasters; - * Rebalanced the Gladiator and Fighter classes; - * Lowered the experience penalty for demonspawn characters; - * Kobolds now receive a stat increase every five levels; and - * Spriggans and Halflings now consume less food than before. - - Item Changes: - - * Hand-and-a-half weapons added -- bonus if no shield wielded; - * Added weapons of reaching, permitting attacks two squares over; - * Cekugob no longer confers resistances to fire and cold; - * Worn cloaks no longer prevent donning/removal of body armor; - * Amulet of maintain speed now the amulet of resist slowness; and - * New weapon types: knife, axe, broad axe, spiked flail, great - flail, great mace, trident, demon trident. - - - -3.31-pre [~28.04.1999] - - * An attempt to merge the Mac port with the DOS/Linux code. - - - -Linley's Last: 3.30 [30.03.1999] - - * All known bugs (a *huge* list) fixed; - * Several spells added, mostly to make Earth, Ice, and Air magic - viable in comparison to Fire; - * Numerous rebalancings; - * "Unrandom artefacts" added -- see the source files randart.cc and - unrand.h for details (These are very easy for non-coders to add); - * 'V' command made available in shops; - * Crossbows upgraded; - * Characters lacking magic skills cannot learn spells; - * It's now possible to get level 1 Spellcasting just by reading - scrolls; and - * A whole heap of other stuff. - - - -3.20 [09.02.1999] - - * New races: Demonspawn, Ghoul and Kenku; - * A new God, Yredemnul, and this one is a lot better than Nemelex, - who has also been upgraded a bit) -- another option for Priests - and Death Knights; - * Changes to a few spells, and I finally got around to upgrading the - crappy armour spells; - * Heaps of the usual rebalancing and some new features; and - * Many bugs found by Daniel Ligon and others fixed. - - - -3.11 [31.01.1999] - - * Fixed minor bugs; and - * Tweaked the balance of the early levels and monsters. - - - -3.10 [27.01.1999] - - * New races: Spriggan and Minotaur; - * Added a new and rather strange God; - * Shallow water implemented; - * An Invocations skill was added; - * Invocations are generally much cheaper to use, especially in - piety; - * Random demons in Pandemonium; - * Many, many new monsters and several items added; - * New mutations; - * Plenty of rebalancing done; - * Chaos Knights now have a choice between Xom or Makhleb; - * Centaurs have been toned down a lot (and now require more food); - * Heaps of new minor features; and - * Many bug fixes. - - - -3.02 [~04.01.1999] - - * Certain monsters' attacks upgraded and spells balanced, too; - * Fixes the currently known about bugs and tweaks balance; and - * Only one known bug remaining (an empty macro.txt file can cause a - crash). - - - -3.01 [~01.01.1999] - - * Bugfix release: Version 3.0 was a little bug-ridden, including a - small problem where stats were raised by wearing almost anything. - - - -3.0 [23.12.1998] - - * Fixes all known bugs (but unfortunately invalidates old save); - * Lots of new dungeon features -- new monsters, items, etc.; - * Random artefact armours, rings and amulets; - * Two new races: centaur and demigod; - * Three new classes: stalker, warper and monk; - * Unarmed Combat skill added; - * Ghosts upgraded -- they now remember a little more from past lives; - * Various minor miscellaneous changes have been made -- for example, - the 'x' command now describes items as well as monsters/dungeon - features; - * A new dungeon branch; - * A new God to worship; and - * Sam Jansen has reformatted several modules (including the horrible - dungeon.cc), making them far easier to read and work with. - - - -2.95 [15.12.1998] - - * Fixed the bug in 2.94, by which reloading a level with a mapped - arch on it crashed the game, has been fixed by saving all files in - binary, rather than text, format; - * Gives crusaders the full range of spells in their initial - spellbook; - * Species-skills table in skills2.cc has been converted to an array; - * For source-readers, the horrible dungeon.cc module has been - revised and reformatted by Sam Jansen; and - * A Linux message output bug fixed by Robert Glowczynski. - - - -2.94 [09.12.1998] - - * All known bugs fixed (including, I hope, the notorious Item Link - Error bug); - * Several interface improvements; - * Several rebalancings; and - * File I/O rewritten by Alexey Guzeev -- it's now several times - faster. - - - -2.93 [~23.11.1998] - - * Alexey Guzeev's OS/2 port integrated into the code; and - * Many bugs fixed, and a few new features (mostly user interface). - - - -2.92 [??.??.????] - - * I think I forgot to release this version. - - - -2.91 [17.11.1998] - - * Bug fix version; - * Trolls and Ogres can now choose the Berserker class; - * Random artefacts are now a bit more common; - * Shops contain better items; and - * Source code should now compile properly under Linux (thanks to - Svante). - - - -2.90 [13.11.1998] - - * Juho Snellman's macro-patch was added; - * Random "artefact" weapons added -- these are special weapons with - a wide range of possible abilities; - * Several new items and monsters; - * Hell and the Realm of Zot are now much nastier. - * Considerable balance changes; - * New dungeon formations; - * The 'V' command now gives more specific information for weapons - and armor; - * 'Target previous monster' function is now a bit easier to use; - * You can now command your servants to attack ('!' command); and - * Bugs fixed. - - - -2.83 [31.10.1998] - - * Yet another bugfix release; - * Some new monsters and items; - * Reaver class added; and - * The Dungeon is again only 27 levels deep. - - - -2.82 [24.10.1998] - - * Another bugfix release; and - * Adds some new user-interface features. - - - -2.81 [20.10.1998] - - * Bugfix release. - - - -2.80 [18.10.1998] - - * New species: Draconian (yes, I have been playing too much - Zangband!); - * New classes: Healer, Chaos Knight, Transmuter; - * New monsters, including some which make curse skulls look - completely harmless; - * Religions and altars -- there are 8 or 9 gods who you can worship, - each of whom requires different forms of devotion and offer - different advantages; - * Greatly expanded Transmigration magic, including - self-transformations; - * Several new dungeon branches; - * Necromantic weapons (draining, vampiric, etc) are now more - effective; - * Significant balance changes -- deep levels should be harder now; - * Special abilities ordered in the new 'a' abilities menu; - * New items, spells, monsters, etc. as usual; and - * A number of bugs found in the source by Daniel Ligon were erased. - - - -2.72 [~02.10.1998] - - * Another bug fix version (there seem to be a lot of these); and - * Still a couple more bugs from 2.71 to bash and the balance may - have been a little on the easy side. - - - -2.71 [25.09.1998] - - * Bug fix version. - - - -2.70 [22.09.1998] - - Heaps of new features (I almost called this version 3.0): - - * New species to choose from: Ogre, Troll, Ogre Mage; - * New class: Venom Mage; - * Several huge branches (extra dungeons branching off from the main - one), each containing special new monsters and terrifying vaults; - * New winning conditions; - * Player ghosts; - * Mutations; - * Many new items, spells, monsters; - * Several bugfixes; and - * ... a heap of other stuff. - - - -2.61 [06.09.1998] - - A bug fix version: - - * Levitation is no longer permanent; - * Fixes dropping-worn-armour bug; - * Fixes item destruction bug (when picking up an item from the - middle or bottom of an item pile); - * Fixes poison and sticky flame bugs (neither worked properly); - * Fixes 'program bug' bug; - * The recall message screen no longer crashes the game; - * Paralysis works again; - * Drained dexterity is now displayed properly; - * Some essential files were accidentally omitted from the source - distribution -- they have been replaced; - * Something I forgot to mention for 2.60: most rings no longer use - food -- check them with 'V' when identified; and - * There is a 'little surprise in this release which gives an - indication of what will be in the next big release'. - - - -2.60 [01.09.1998] - - The Source Code Clean-up is finally finished! - - * Functions have been split up into about 30 different modules, - making coding *much* easier; - * All functions are now available from any module; - * An alternative display set for non-IBM graphics displays included - (activate it with a -c command-line switch); - * Several minor balancing changes were made; and - * If the game crashes, you can continue from the last save (unless - it crashed during saving). Your game is autosaved every time you - climb stairs. - - A great number of interface changes were made, many of which were - suggested by Eino Keskitalo and Jim Baranovich. These include: - - * The clumsy '^' untrap command has been replaced by a new use for - the control key; - * The character selection menus have been streamlined, with a new - random option; - * Shop displays are easier to read; - * The old message display has been rendered readable; - * It is now possible to reorder items and spells; and - * Various other things. - - - -2.51 [18.05.1998] - - Purely a bug fix version: - - * Item 1 no longer turns green on saving; - * *Hopefully* the horrible item bug has been permanently removed (at - least parts of it have, anyway); - * Repeatedly casting Deflect Missiles no longer causes problems; - * Skill selection now works properly (there were some problems in - 2.50); and - * A couple of bugs in monster teleportation have been fixed. - - - -2.50 [03.05.1998] - - Changes made: - - * Character classes made much more relevant; - * Class system is back, in a slightly different form. Characters now - gain a certain amount of skills when the gain levels (depending on - which class they are). The old system is still in place but - advancement is slower with it; - * New class: Death Knights; - * Monsters can now use more kinds of items; - * Heaps of items, monsters, spells etc added; - * Naga and Gnome character species added; - * Rings of teleport control now available; - * Levitating across water or lava works properly now; - * Shields are now much more effective; - * All known manifestations of the horrible item bug have been - tracked down and fixed (except for the apparently harmless - items-turning-green thing); and - * Et cetera. - - - -2.41 [~22.04.1998] - - Bugs fixed: - - * The game occasionally crashed in the iron city of Dis; - * Gates out of pandemonium were too rare; - * There were problems with saving and restoring magic points; and - * The source code distribution was extremely confusing. - - - -2.40 [~19.04.1998] - - * Two new races: Kobolds and Mummies; - * Five new classes: Four types of elementalist and a fighter/wizard - [Crusader] class; - * New skills -- elemental magic and traps and doors; - * New spells to go with the new skills and a spell failure system; - * Heaps of spells, items, and monsters added (as usual); - * You now get 1/2 experience for monsters killed by tame monsters; - and - * A large part of the monster and skills code was rewritten and - generally cleaned up by $pellbinder (Wladimir van der Laan). - - - -(2.33) 2.34 [~22.03.1998] - - * A crash bug and some problems with items should be fixed with this - release; and - * I forget right now, but these releases probably just fixed stuff. - - - -2.32 [~15.03.1998] - - * Even more cool stuff fixed; - * Level files are now deleted properly under Windows 95; - * Removed a bug which sometimes caused the dungeon generator to - hang; and - * Compiling no longer generates warnings. - - - -2.31 [~13.03.1998] - - * Lots of cool stuff fixed; - * Fixes the problem with magic missiles and saves; and - * Adds amulets and several new types of armour. - - - -2.30 [~11.03.1998] - - * Lots of cool stuff added; - * New in this version is a character race system with ten races to - choose from and a trove of new monsters and items; and - * Character dump feature implemented in the last version has been - fixed now so you'll be able to swamp the newsgroups and annoy the - regulars with ritualistic weekly reports of your favourite - adventurer. - - - -2.21 [~20.02.1998] - - * Various bugfixes and minor changes; - * Added the ability to produce character dumps (popular with the - newsgroup egocentrics); and - * Among the usual bunch of fixes, characters now get the chance to - disarm traps (especially thieves). - - - -2.20 [~15.02.1998] - - * Added a comprehensive skills system; - * Angband-style vaults and unique monsters; - * Fixed a few very minor bugs and added a vast number of new - features, the Abyss, Pandemonium, etc.; and - * Dungeon architecture is also a lot more varied. - - - -2.11 [~21.01.1998] - - * First Linux release, ported to Linux by Svante Gerhard; - * Updated source tree allows for easier ports onto other Unix - systems; and - * The port will apparently also run on a Sun Sparc running SunOS. - - - -2.10 [30.12.1997] - - Sorry to all of the many people who've been sending me bug reports, - but it's become too tricky to list all bugs and credit their - finder. I'm just getting too much email, and my mail reader has a - strange way of eating some messages and making them very difficult - to find. So from now on, I'll just list some of the major bugs - fixed and major features added: - - * A bug with wearing armour of fire/cold resistance was fixed; - * The properties of several items and spells were tweaked a bit; - * Specialist wizards were made even more powerful in their - discipline; - * The dungeon was made deeper (36 levels now), and lots of new - monsters were added to fill in the deeper levels; - * Several spells (mostly necromancy) were added; - * The dungeon architecture is a bit more varied, especially as you - get deeper; and - * A warning was added to labyrinths ... among other things. - - - -2.03 [22.12.1997] - - This version fixes a few bugs, and puts back the floating point - emulation which was missing from previous version 2 releases - (Daniel Josef Dekok and someone else noticed this). It also removes - the debugging code which was accidentally included. Bugs fixed: - - * Butterfly corpses were coloured black, making them invisible - (Bridget Farace); - * Shadow lanterns were also coloured black, and kept on working even - after you unwielded them (Bridget Farace); - * Items purchased from shops were not identified properly (Lord Gek, - Timo Laitila); - * Scrolls of Acquirement weren't being identified after being read; - * When you got hit by a monster wielding a weapon of draining, - events could become confusing (Timo Laitila); - * Finally, the '5' key on the keypad works as a rest key (Timo - Laitila); and - * Names longer than 8 letters caused problems with saving and - restoring games, especially in Windows 95 (Lord Gek and Timo - Laitila). - - The following new features were also added: - - * When tame creatures kill monsters, you now get 1/3 xp (Howard - Liu); - * Orcish spellcasters have been downgraded a bit (lots of people - recommended this); - * Specialist wizards are now slightly more powerful in their - specialisation, especially with magical staves (I can't find the - usenet post which told me about this); and - * ... A few other minor changes. - - - -2.02 [13.12.1997] - - I'm afraid that 2.01 didn't fully fix the bug in the shop code, but - hopefully this version does. Just about the only differences - between this version and 2.01 are: - - * Pressing 'r', 's', or 't' while in a shop really no longer crashes - the game (Saradon and Bridget Farace); - * If the scores file is not present, a new one is generated. I've - stopped including a scores file in the distribution, so that you - can unpack the zip file into your old crawl directory and keep on - using the old score file; and - * Save games should be compatible with 2.01. - - - -2.01 [12.12.1997] - - I had wanted version 2.0 to be a stable and bug-less release, but - this was not to be. Anyway, 2.01 fixes these bugs: - - * Zapping a wand of polymorph at yourself caused problems (polymorph - self hasn't been implemented anyway) (Saradon); - * Polymorph other didn't work properly; - * Choosing a non-existent item in a shop crashed the game (but only - sometimes, which was why I didn't notice it) (Saradon); - * Spell descriptions weren't working properly (Saradon); - * Some messages were misspelt due to an indiscriminate - search/replace (Adam Horowitz); - * Detect curse didn't detect curses on unrecognised rings (this bug - had been present right from version 1.0); - * Sometimes, a special weapon in the hands of a monster would not - function properly (watch out for creatures wielding weapons of - draining!); - * The use of the control key was not mentioned in the command list - (it opens/closes doors, like in Angband); and - * ... a few others (if I haven't credited someone, please tell me). - - Also, a few new things were added, as suggested by Saradon: A shout - command ('!') to attract your followers (and enemies!), and better - equipment for the enchanter. Also, you are now given a difficulty - message and prompted when memorising spells, so you will know which - spells you won't be able to cast reliably before you memorise them. - - * Scrolls of Acquirement create much better items; and - * Enchanters now get a magical dagger/robe with which to start. - - - -2.0 [09.12.1997] - - There have been so many additions in this version that I'm not - going to list them all, but here is a very incomplete list of bugs - and things rectified: - - * Characters could cause an excessive amount of damage empty-handed - (Bridget Farace); - * Darts didn't fire properly when character not wielding anything - (Bridget Farace); - * Hand crossbows didn't work properly; - * Fireballs always did the same amount of damage (0-27), regardless - of who cast them and how powerful they were; - * Going to Hell could have unexpected results due to an - out-of-bounds reference to levels_exist[]; - * Permanent levels, which are saved when you leave, and to which you - can later return; - * Shops; - * Several new character classes, including Rangers, Assassins, - Summoners, etc.; - * A more interesting Hell; - * New creatures, items, and spells; - * Written descriptions of every single item, spell, and monster in - the game; and - * Several bugs squashed. - - - -1.22 [~06.11.1997] - - * Fixes a minor bug with weapons of slay orc and brings back the old - spell level system. - - - -1.21 [~03.11.1997] - - * Fixes a bug which caused problems with high-level spellcasting. - - - -1.2 [02.11.1997] - - * The monster and cloud location bits have been completely - rewritten, a process which turned out to be rather easier than I - thought it would be. The new system is much more flexible; - * Monsters are now a bit more intelligent, especially in the way - they treat clouds; - * Several monsters have been added; - * Several items and two new classes of items (Carrion and - Miscellaneous) have been added; - * Several spells, most of them necromantic, have been added; - * The Gladiator, Necromancer, and Paladin classes have been added; - * A spell type system has been implemented, and several new staves - to specialise in particular types of magic have been added - (conjuration, summoning etc.); - * New unique items have been added, and a bug (actually, a mistype) - which prevented some from being generated has been removed; - * A few bugs have been removed; and - * Several other changes have been made, too numerous to mention - here. - - - -1.10 [14.10.1997] - - * Several new items and monsters were added; - * Labyrinths were added; - * Magical weapons are now less powerful; - * Some bugs have been fixed -- I forget what they were right now; - and - * The source was released, and Crawl is now under the GPL (see - Licence.txt for details). - - - -1.05 [07.10.1997] - - * A minor display bug was fixed; - * A bug with restoring clouds from saved games was fixed; - * A major bug which caused a segment violation when restoring saved - games if there were any magical traps on the level was finally - discovered and fixed; - * Those pathetic worms you see around level 6 are now nastier, and - jackals now tend to appear in packs; and - * This time, your item memory really does work. - - - -1.04 [06.10.1997] - - * A few really nasty bugs with saved games were fixed. The game - would not save enchantments affecting monsters, and would mess up - the items carried by the monsters (Adam Horowitz); - * A bug with the enchanting/corroding of shields was fixed; - * A '<=' instead of a '<' led to characters not using shields - occasionally blocking trap missiles (Adam Horowitz); - * You can now type '+' or '-' in the map screen to move around - faster (Adam Horowitz); - * The direction function now accepts '.' as well as delete (Adam - Horowitz); - * During your first step while long-walking, you can walk on - anything (still prompts for water, etc., though) (Adam Horowitz); - and - * I think that was all. - - - -1.03 [04.10.1997] - - * Some unique items were added; - * A silly bug, by which your item knowledge was not saved, was fixed - (Darren Hebden); - * Teleport traps now work properly; and - * I think I fixed another bug, but I can't remember. - - - -1.02 [04.10.1997] - - * A few more items and traps have been added; - * The game now uses the rogue keys (hjklyubn) properly; and - * You used to be able to throw and zap straight when confused. No - longer! - - - -1.01 [03.10.1997] - - * Shields were changed; - * Items were made more common; - * Monsters were made less common (this was a bug); - * Cursed weapons were made less common (this was just bad planning); - and - * I changed the name to make it a bit less egotistical. - - Bugs removed include: - - * A debugging feature of the 'x' command was unintentionally left - in; - * The summon scorpions spell summoned a vampire (oops) (Haran - Pilpel); - * Sometimes +50 armour could be generated (oops again) (Haran - Pilpel); - * The inventory item counter was not decremented when you dropped - something! This would lead to you being unable to pick things up - after a while (Darren Hebden); - * A bug with detect curse scrolls (Darren Hebden); - * Slime creatures and jellies were a bit weak; - * Killing normal (not spitting) plants gave you far too much xp; - * Your rate of regeneration was not saved properly; - * About half of the rings could never be generated; - * The 's' command would sometimes make you repeat your last move - (Haran Pilpel); - * I forgot to mention the walk-in-place function in any - documentation; - * I set the level builder to put 100 monsters on each new level for - debugging, and forgot to reset it -- I really should playtest - more!; - * If you tried to cast spell 'z', you cast the identify spell (Lucas - Ackerman); and - * A few more fixes which I forget right now. - - - -Linley's First: 1.00 [02.10.1997] - - * First (rather buggy) version. diff --git a/crawl-ref/init.txt b/crawl-ref/init.txt index 672f51d9f2..7214e8687f 100644 --- a/crawl-ref/init.txt +++ b/crawl-ref/init.txt @@ -1,6 +1,9 @@ -# # Crawl Init file # +# On Unix systems (such as Mac OS X, Linux and the BSDs), you must copy init.txt +# to ~/.crawlrc as: +# cp init.txt ~/.crawlrc +# # Lines begining with '#' are comments. The basic syntax is: # # field = value or field.subfield = value @@ -12,665 +15,203 @@ # on a system that has case-sensitive filenames). # # White space is stripped from the begining and end of the line, as -# well as imediately before and after the '='. All other whitespace -# is left alone. -# - - +# well as imediately before and after the '='. If the option allows multiple +# comma/semicolon-separated terms (such as ban_pickup), all whitespace around +# the separator is also trimmed. All other whitespace is left intact. # -# Player name +# For descriptions concerning the option consult the file +# crawl_options.txt +# in your crawl/doc directory. Also note that the ordering of the +# options is taken from that file; this is for presentational reasons +# only. # +# Note that all boolean options (i.e. values of 'true' or 'false') have +# their non-default value commented out. You can toggle these by just +# uncommenting. -# name=kernel - +##### 1- Starting Screen ############################################ # -# If remember_name set, the game remembers the last name you used. -# - +# name = Delilah # remember_name = true +# weapon = (random | short sword | hand axe | spear | mace | trident) +# chaos_knight = (Xom | Makhleb | random) +# death_knight = (necromancy | Yredelemnul | random) +# priest = (Zin | Yredelemnul | random) +# race = (Human |...| Merfolk | random) +# class = (Fighter |...| Wanderer | random) +# random_pick = true -# Directory for reading macro.txt and init.txt, and dumping characters. -# It should end with the path delimiter. -# crawl_dir=/home/bwross/crawl/ - - -# Here's a list of autopickup types: -# -# ) Weapons -# ( Missiles -# [ Armour -# / Wands -# % Food -# ? Scrolls -# " or = jewellery -# ! Potions -# + or : Books -# \ or | Staves -# 0 Orbs -# } Misc items -# X Corpses -# $ Gold - -autopickup = $?!:"/0 - -# -# assign_item_slot -# -# When picking up items, the inventory slot into which the item goes is -# normally the first free slot from a-zA-Z. Setting assign_item_slot to -# "backward" changes the slot assignment to work backwards. For instance, if -# you have items on 'a' and 'c', and assign_item_slot = forward, the next item -# will go into 'b'. If assign_item_slot = backward, the next item will go to -# 'd' instead. -# +##### 2- File System ############################################### +# +# crawl_dir= +# save_dir = saves +# sound = : + +##### 3- Lua Files ################################################# +# +lua_file = lua/base.lua +lua_file = lua/stash.lua +lua_file = lua/wield.lua +lua_file = lua/kills.lua +lua_file = lua/runrest.lua +lua_file = lua/gearset.lua +lua_file = lua/eat.lua +lua_file = lua/trapwalk.lua + +##### 4- Interface ################################################# +# +##### 4-a Picking up and Dropping ############### +# +autopickup = $?!:"/% +# default_autopickup = false +# safe_autopickup = true +# safe_zero_exp = false +# pickup_thrown = true +# pickup_dropped = false # assign_item_slot = backward - -# -# dump_kill_places -# -# In the Vanquished Creatures list, this option controls how the locations of -# each kill are displayed. Use 'none' to suppress place display altogether, -# 'all' to display all known kill places, anything else to default to showing -# the kill place only for single kills -# -# dump_kill_places = all - # -# dump_item_origins -# -# The game remembers where you find items. If you want this item origin memory -# listed in your dumps, use this option to select which items get annotated. The -# default behaviour is for artifacts and rods to get annotated. -# -# Available selectors: artifacts, ego_arm, ego_weap, jewellery, runes, rods, -# staves, books, all. -# -# If you use multiple dump_item_origins lines, the last line takes effect; all -# preceding lines are ignored. -# -# If you don't want any items to be annotated, set dump_item_origins to "none", -# and set dump_item_origin_price to -1. -# -# dump_item_origins = artifacts, ego_weap, ego_arm, rods, staves, runes - -# -# dump_item_origin_price +ban_pickup = degeneration,decay,confusion,potions? of slowing +ban_pickup = potions? of strong poison,potions? of poison +ban_pickup = inaccuracy +ban_pickup = scrolls? of paper,immolation,curse armor,curse weapon +ban_pickup = forgetfulness,uselessness,noise,torment # -# Item origins are dumped if the price of the item is greater than or equal -# to this amount. Set this to -1 to prevent selection by price. -# -# dump_item_origin_price = 100 - -# -# Base Lua file that's needed by other Lua scripts. You must source this -# before you source any Lua script that relies on this. For safety, always -# source this first. -# -# lua_file = lua\base.lua - -# -# Control what messages stop shift+running and resting. -# -# lua_file = lua\runrest.lua - -# -# If you want more detailed kill statistics, you can use a LUA script to do -# that. See kills.lua for more ideas. -# -# lua_file = lua\kills.lua - -# -# If you'd like to switch quickly between sets of gear, you can use this. See -# gearset.lua for more information. -# -# lua_file = lua\gearset.lua - -# -# This lua script prompts you to eat chunks in inventory (after prompting for -# eating off the floor). -# -# lua_file = lua\eat.lua - -# -# stash.lua annotates items to make for easier stash-searches. Weapons are -# prefixed by the name of the weapon skill, so you can search for "long blades" -# and find everything that exercises that skill. See stash.lua for more details. -# -# lua_file = lua\stash.lua +drop_mode = multi +# drop_filter = skeleton, rotting, corpse +##### 4-b Targetting ############################ # -# wield.lua selects items to show in the wield menu based on the spells your -# character knows. For instance, if you know Sublimation of Blood, chunks -# will be added to your wield menu. -# -# lua_file = lua\wield.lua - -# The number of messages to be displayed in character dump files. Defaults to 4 -dump_message_count = 4 - -# Set to false to disable targeting zero exp monsters in hostile targeting mode # target_zero_exp = false +# target_wrap = false +# target_oos = false +# target_los_first = false +# confirm_self_target = true +# default_fizzlecheck = true -# -# Set to true if targeting should wrap around from last to first and vice versa -# -# target_wrap = true - -# -# When cycling through items/features with 'x' look-around, setting target_oos -# to true allows you to jump the cursor to items and features that are outside -# line-of-sight but in the main view. Defaults to true. See also -# target_los_first. -# -target_oos = true - -# -# When cycling through items/features with the 'x' look-around command, setting -# target_los_first to true will force the cursor to squares in line-of-sight -# before going to squares outside LOS. Defaults to true. -# -target_los_first = true - -# -# Allows you to specify special characters as \{nn} when creating macros or -# keymaps. For instance, you can macro a key to Enter by specifying a mapping -# of \{13} when this is set to true. If you want to map a key to a backslash -# with macro_meta_entry set true, escape the backslash as \\. -# -# Defaults to true. -# -macro_meta_entry = true - -# pickup_thrown causes autopickup to grab thrown/fired missiles -# -pickup_thrown = true - -# pickup_dropped lets autopickup affect objects you've dropped. Set to false to -# block autopickup for dropped objects -# -pickup_dropped = false - -# assign_item_slot = backward - -# List of item name regexes for items which autopickup will never touch. You -# can use multiple ban_pickup lines. -# -# ban_pickup = degeneration,decay,confusion -# ban_pickup = inaccuracy -# ban_pickup = scrolls? of paper - -# Option to turn off colouring the level-map with travel information -# travel_colour = false - -# -# Monsters found by detect creatures will be coloured this colour (defaults -# to darkgrey): +##### 4-c Passive Sightings ##################### # detected_monster_colour = lightred +detected_item_colour = green +remembered_monster_colour = darkgrey +# colour_map = true +# clean_map = true - +##### 4-d Branding ############################## # -# Items found by detect items will be given this colour (defaults to darkgrey) -# -detected_item_colour = green +heap_brand = reverse +friend_brand = hi:green +stab_brand = hi:blue +# may_stab_brand = hi:yellow +##### 4-e Level Map Functions ################### # -# Remembered monsters can be shown with their actual colours (real), or -# assigned an arbitrary colour by name. -# -# remembered_monster_colour = real -remembered_monster_colour = darkgrey - +level_map_cursor_step = 10 +item_colour = true +# show_waypoints = false -# How long travel waits after each move (milliseconds). +##### 4-f Travel and Exploration ################# # +# travel_colour = false travel_delay = 20 - -# Prevent travel from routing through shallow water. +travel_stair_cost = 500 # travel_avoid_terrain = shallow water - -# For merfolk and/or characters with permanent levitation, prevent travel from -# routing through shallow _or_ deep water -# -# travel_avoid_terrain = shallow water, deep water - -# The square of the radius around travel-excluded squares where travel will -# refuse to go. Set to zero if you want to exclude single squares. +travel_exclude_radius2 = 68 # -# travel_exclude_radius2 = 68 - -# If set to true (the default), waypoints will be numbered on the level map, -# assuming that they're on a floor square with nothing on it. -# -# show_waypoints = false - -# Explore will stop for one of these conditions. Whatever you set this option -# to, anything that stops travel will also stop explore. -# -# Multiple explore_stop lines are *not* cumulative! The last explore_stop -# line will override all previous explore_stop lines. -# -explore_stop = items,stairs,shops,altars - -# How many squares the cursor moves on the level map when using Shift+direction. -# Defaults to 10. -# -# level_map_cursor_step = 10 - -# Playing sounds: -# Option is set as sound = :. Your regex should not -# include commas or colons. -# sound = LOW HITPOINT WARNING:sound\sounds2\danger3.wav - -# Tracking stashes. Valid options are 'all', 'dropped' and 'explicit'. Anything -# else disables stash tracking -stash_tracking = all - -# Filter corpses (14) and chunks of meat (4:21) out of the stash-tracker. -# The filter syntax is object class:object subtype. So, to filter, say, potions -# of degeneration, you'd use 8:14 (where 8 is for OBJ_POTIONS and 14 is -# POT_DEGENERATION). See enum.h for all the magic numbers involved. -stash_filter = 14, 4:21 - -# Substrings that will stop travel if they're present in any message the game -# displays. Substrings can be comma separated, and multiple stop_travel lines -# are accepted. - -# Stop travel if Xom grants us a gift suddenly. -stop_travel = Something appears - -# To limit a substring match to a message channel, prefix the substring with the -# channel name and a colon. For instance, if you want travel to stop when you're -# hit by divine retribution, you could use: +# stop_travel = Something appears # stop_travel = god:wrath finds you - -# If you'd like to stop travel for any message sent to a particular channel, use -# a stop_travel line with that message channel name and a colon alone. For -# example, if you've an amulet of the gourmand, and are hankering after rotten -# meat, or you're playing a ghoul: -# stop_travel = rotten_meat: - -# Stop travel for any god messages (including prayer) -stop_travel = god: - -# verbose dump causes less important item details to appear in character dumps -# verbose_dump = false - - -# Colours out of sight map features on the playing screen -colour_map = true - - -# Cleans up out of sight monsters and clouds on the map -clean_map = false - -# To be able to drop multiple items from the drop menu in one go, enable -# multidrop (you can also switch to multidrop from the classic drop menu using -# the @ key). # -# drop_mode = multi - -# When selecting items using the global select key (, or -) in a multidrop -# listing, you can choose to apply a filter - only items whose names match -# the filter will be selected. The filter strings are regexes. +# explore_stop = items,stairs,shops,altars # -# For instance, to quickly select carrion and rotting chunks of meat, you -# could use: +# runrest_ignore_message = prayer ends # -# drop_filter = skeleton, rotting, corpse - -# Open doors by moving on to them -# easy_open = false +# runrest_ignore_message = You feel.*sick +# runrest_ignore_poison = 4:100 +# trapwalk_safe_hp = dart:15, needle:25, spear:50 -# Auto-switch to uncursed short blade for butchery (EXPERIMENTAL!) -easy_butcher = true - - -# Allows auto removal of armour when dropping it -# easy_armour = false - - -# Make confirmation queations easier to answer: -# none = force capitals on Y/N questions -# safe = force only on questions that will end game -# all = never force capitals - -# WARNING TO KEYPAD USERS: The number 7 is mapped to the letter 'y', -# which can result in accidentally answering yes to questions; it is -# suggested that you use a value of 'none' or 'safe' - -easy_confirm = safe - - -# Setting this option to true allows the quitting of item listing with -# space as well as escape. These lists are essentially all of those -# that are requesting an inventory item and accept '?' and '*'. +##### 4-g Stashes ############################### # -# The identify list will never easy quit. The default is false. - -# easy_quit_item_lists = true +# stash_tracking = (explicit | dropped | all) +# stash_filter = 14, 4:21 -# In multidrop (and pickup) menus, paging past the end will exit the menu if -# you set the easy_exit_menu option +##### 4-h Command Enhancements ################## # +# auto_list = true +# lowercase_invocations = true +# easy_open = true +# easy_butcher = true +# easy_armour = false +# easy_confirm = (none | safe | all) +# easy_quit_item_lists = true # easy_exit_menu = true +# default_autoprayer = true +# sort_menus = true -# This option adds the text "uncursed" to items where the -# curse status is relevent and known. Does not bother to -# show "uncursed" on items that are fully identified (showing pluses), -# since that wound be redundant and waste space. - -show_uncursed = true - - -# -# The weapon option allows defaulting on the weapon selection screen -# -# Valid weapons are short sword, hand axe, spear, mace, and trident... -# although tridents are restricted to only merfolk and gladiators, so -# you'll get queries for the illegal cases. -# - -# weapon = hand axe - - -# -# These allow auto-selection of other third-screen options. -# -# Select "random" for random choice. -# -# chaos_knight => Xom or Makleb -# death_knight => necromancy or Yredelemnul -# priest => Zin or Yredelemnul -# - -# chaos_knight = xom -# death_knight = necromancy -# priest = random - - -# -# The random_pick option will randomly generate a character. -# The above options (weapons and class options) will override where -# appropriate. -# - -# random_pick = true - - -# Macro colours to other colours -# -# Useful for terminals where some colours are hards to read (and cannot -# be adjusted), as well as for creating a custom scheme, especially -# when used with the background option on a terminal with a non-black -# background. -# -# Format is colour.OLDCOLOUR = NEWCOLOUR, later rules take preference and -# the NEWCOLOUR is always literal (ie. it won't re-evaluate to a different -# colour). -# -# The colours are: -# -# black, blue, green, cyan, red, magenta, brown, lightgrey, darkgrey, -# lightblue, lightgreen, lightcyan, lightred, lightmagenta, yellow, white -# -# lightgray = lightgrey, darkgray = darkgrey - -# colour.lightgray = black -# colour.white = black -# colour.lightcyan = cyan -# colour.yellow = brown - - -# -# always_greet will give the race/class and god messages everytime the -# game is started. -# - -always_greet = true - - -# Set the default background colour of your window -# Warning: setting this to a value different than the window's background -# colour, will probably result in some very ugly results. - -# background = white - - -# -# Brand friendly monsters with a curses attribute... these might not -# do what you think, it depends on the terminal being used (and won't -# work with non-curses compiles). -# -# Available options, with typical results: -# -# standout -- often the same as reverse, might be underline or dim -# bold -- used by colour curses for brightening foreground colours -# blink -- used by colour curses for brightening background colours -# reverse -- this will probably work -# dim -- probably no effect -# underline -- this will probably work -# highlight:col -- set background colour of highlighted monsters to "col" -# -# This is somewhat interesting (blink here is used to give friends a -# dark grey background, and then we change dark grey so we can see bats): -# -# friend_brand = blink -# colour.darkgrey = magenta -# -# Brand friends with a green background. If the friend is itself green, it'll -# show up as black on green. -# -# friend_brand = hi:green - -friend_brand = reverse - -# -# Stab warning. -# -# Some deities object to you stabbing monsters. Certain classes specialise -# in stabbing monsters. For both these cases, it helps to identify monsters -# that are susceptible to being stabbed without using the 'x' command. This -# option brands sleeping monsters. All the normal 'brand' options apply. -# -# stab_brand = hi:blue - -# -# Stabbing may be possible even if the monster is not asleep (if it's confused, -# for instance). This option brands monsters that you *might* be able to stab, -# provided the monster is adjacent to you. Primarily useful for worshippers of -# The Su^WShining One. Purists may consider this unnecessarily spoily and a -# cheat. Direct such opinions to -# -# may_stab_brand = hi:darkgrey -# - -# -# On DOS and Windows, if you're using a console that can do high-intensity -# background colours, set this option to true for superior friend-branding. -# If your console doesn't like this option, some friendly monsters will appear -# as blinking characters (and setting this option to false may be advisable -# to preserve your sanity in such cases). -# -# dos_use_background_intensity = true - -# Colour items on level-map +##### 4-i Messages and Display Enhancements ##### # -# item_colour = true - -# Brand heaps of items (more than one item or stack). Options apply as for -# friend_brand. -# -# heap_brand = reverse - - -# Message channel options: -# -# Format is channel.CHANNEL_NAME = (COLOUR|mute|default|on|off|plain) -# -# CHANNEL_NAME can currently be one of these: -# plain = regular text (and things "uncoloured") -# prompt = input prompts to the player -# god = messages from the gods -# duration = messages about character spells/effects wearing off -# danger = serious threats to the characters existence -# food = warnings about food -# warning = various other warnings -# recovery = recovery from disease/stat loss/poison conditions -# talk = monsters talking (acting) -# intrinsic_gain = level/stat/species power gains -# mutation = gain/lose mutations -# monster_spell = messages about monsters gesturing and casting spells -# monster_enchant = messages pertaining to monster enchantments (up or down) -# monster_damage = messages telling how damaged a monster is -# rotten_meat = messages about chunks/corpses becoming rotten -# -# COLOUR can be any of the colours in the colour section above. -# -# Other channel options: -# -# mute = show no messages from channel (dangerous, be careful!) -# default = turn channel on to it's default scheme -# alternate = turn channel on to it's alternate "colourful" scheme -# on = same as default -# plain = make channel the same colour as the "plain" channel -# (won't do anything silly like "mute" if plain == mute, though) -# off = same as plain -# -# Note: The only multi-colour channels currently are monster_damage and -# god. Setting god to a COLOUR will make all god messages that -# colour. Setting monster_damage to a colour will make the -# "monster dies" messages that colour, and the "injured" messages -# will be plain coloured. More control of these and other channels -# will be coming later. -# - -# channel.plain = green -# channel.talk = mute -# channel.warning = plain -# channel.diagnostic = mute -# channel.rotten_meat = yellow -# channel.god = alternate -# channel.mutation = green - - -# -# hp_warning gives "* * * LOW HITPOINT WARNING * * *" on the danger channel -# when the player takens damage and their hitpoints are less than this -# percentage of their maximum (use 0 to turn off these messages). - +# show_uncursed = false hp_warning = 25 - - -# race -# -# Use to preselect race. Argument can be: -# -# - letter used in the character creation process -# - two letter abbreviation used on the high score board -# - a string to match against the full name - -# race = human - - -# class +# terse_hand = false +# delay_message_clear = true +# always_greet = true +# increasing_skill_progress = true # -# Used to preselect class. Same format as race option above. - -# class = fighter +# menu_colour = lightred: cursed.*(worn|neck|hand|weapon)\) +# menu_colour = green:(worn|neck|hand|weapon)\) +# menu_colour = red: cursed - -# -# Wizard mode options (available only in WIZARD compiles): -# -# yes = start games in wizard mode (game might not be scored) -# no = still allows player to enter wizard mode after start of game -# never = never allow a wizard command to be used +##### 4-j Firing Commands ####################### # +fire_items_start = a +fire_order = launcher, dart, stone, dagger, spear, handaxe, club -wiz_mode = no - - -# -# Fire command options -# -# fire_items_start - sets the first inventory item to consider (default is a) -# -# fire_order - controls when to consider types of items -# -# launcher, dart, stone, dagger, spear, handaxe, club +##### 4-k Channels ############################## # -# The list should be on one line, with commas between items. -# -# Launcher refers to firing the appropriate missile for the wielded -# weapon (ie crossbow, bow, sling)... you'll probably want it first, as -# it'll be ignored when you're not wielding a ranged weapon. The default -# is "launcher, dart" which matches the old behaviour. -# - -fire_items_start = c -fire_order = launcher, dart, stone - +#channel.multiturn = mute +##### 4-l Inscriptions ########################## # -# auto_list -# -# Setting this to true if you want to automatically list appropriate -# inventory items for commands like quaff and read. This is like -# immediately hitting '?', and can be confusing to beginners because -# they won't get to see the prompts. -# -# This option does not apply to spell casting... Conjurers would probably -# find that really annoying. -# - -# auto_list = true +# autoinscribe = royal jell:=g - -# -# Input buffer flushing options (flush.*) -# -# These are useful when using macros. Setting one of these -# sub-options to true will cause the entire input buffer to -# be dumped and thus effectively stop the macro. -# -# The sub-options currently are (and their defaults): -# -# failure -- when spells/abilities get miscast (true) -# command -- whenever the game is aboutn to get the next command (false) -# message -- whenever the game outputs a non-mute message (false) +##### 4-m Macro related Options ################# # # flush.failure = false # flush.command = true # flush.message = true +##### 5- Dump File ################################################# # -# lowercase_invocations -# -# Set this option to true if you prefer to have invocations on 'a'-'e' -# instead of the traditional 'A'-'E' (which is the default). +##### 5-a Items and Kill List ################### # +# kill_map = friend:you, other:you +# dump_kill_places = (single | all | none) +# dump_item_origins = all,artifacts,ego_arm,ego_weap,jewellery,runes +dump_item_origin_price = 100 +dump_message_count = 4 +# dump_order = header,stats,misc,notes,inventory,skills +# dump_order += spells,mutations,messages,screenshot,kills +# verbose_dump = true -lowercase_invocations = true - - +##### 5-b Notes ################################# # -# terse_hand -# -# Set this to false to have the "in hand" description on the main screen -# the same as the inventory. The default setting of true will give the -# newer more terse description that should fit the limited space better -# (but will be harder for newbies to understand). - -# terse_hand = false - +# use_notes = false +note_items = rod,book,rune +ood_interesting = 8 +# note_hp_percent = 5 +# note_skill_levels = 1,5,10,15,27 +# note_skill_max = true +##### 6- Miscellaneous ################################################# +# +##### 6-a All OS ################################ # -# delay_message_clear - experimental (may be ugly at points) +# colour.lightgray = black +# colour.lightcyan = cyan +# colour.yellow = brown # -# Setting this option to true will delay the clearing of messages until -# the message space is full (default is false which results in clearing -# between player actions). +# use_ascii = ascii +wiz_mode = no -# delay_message_clear = true +##### 6-b DOS and Windows ####################### +# +# dos_use_background_intensity = true diff --git a/crawl-ref/mac/68K_Stub.r b/crawl-ref/mac/68K_Stub.r deleted file mode 100644 index 391dda2ad6..0000000000 --- a/crawl-ref/mac/68K_Stub.r +++ /dev/null @@ -1,144 +0,0 @@ -/* - * File: 68K_Stub.r - * Summary: Mac resources - * Written by: Jesse Jones - * - * Change History (most recent first): - * - * <1> 3/30/99 JDJ Created - */ - -#include - - -// ============================================================================ -// Resources -// These resources create a tiny 68K app that pops up an -// alert telling the user that the app will not run and -// exits when the user dismisses the alert. This -// file should only be added to PPC builds. -// ============================================================================ -resource 'ALRT' (30000) { - {84, 122, 174, 486}, - 30000, - { - OK, visible, silent, - OK, visible, silent, - OK, visible, silent, - OK, visible, silent - }, - alertPositionMainScreen -}; - -resource 'DITL' (30000) { - { - {60, 280, 80, 338}, - Button { - enabled, - "Quit" - }, - - {10, 60, 46, 360}, - StaticText { - disabled, - "This program requires a PowerPC processor and will" - "not run on your Macintosh." - } - } -}; - -data 'CODE' (1, "Sources", locked, protected, preload) { - $"0000 0001 9DCE 598F 2F3C 434F 4445 4267" /* ....ù'Yè/ 5/25/02 JDJ Added some Carbon resources - * <1> 3/26/99 JDJ Created - */ - -#include -#include - - -// ============================================================================ -// Carbon Resources -// ============================================================================ -data 'carb' (0) { -}; - -// $$$ is this only for bundled apps? -resource 'plst' (0) { - "\n" - "\n" - "\n" - "\n" - "CFBundleInfoDictionaryVersion\n" - "4.0\n" - "CFBundleIdentifier\n" - "Crawl4\n" - "CFBundleVersion\n" - "4.0\n" - "CFBundleDevelopmentRegion\n" - "English\n" - "CFBundleName\n" - "Crawl\n" - "CFBundlePackageType\n" - "APPL\n" - "CFBundleSignature\n" - "????\n" - "\n" - "" -}; - - -// ============================================================================ -// Finder Icon Help Message -// ============================================================================ -resource 'hfdr' (-5696, "Finder Help") { - HelpMgrVersion, - hmDefaultOptions, - 0, 0, - - { - HMStringItem { - "Crawl is a fun game in the grand tradition of games like Rogue, Hack and Moria." - }, - } -}; - - -// ============================================================================ -// Get Info String -// ============================================================================ -type 'Crwl' {pstring;}; - -data 'Crwl' (0, "Owner resource") { - "Crawl 3.3 ©1997 -1999 by Linley Henzell (Mac Port by Jesse Jones)" -}; - - -// ============================================================================ -// Derezed Resources -// ============================================================================ - -resource 'BNDL' (128) { - 'Crwl', - 0, - { - /* [1] */ - 'FREF', - { /* array IDArray: 2 elements */ - /* [1] */ - 0, 128, - /* [2] */ - 1, 129 - }, - /* [2] */ - 'ICN#', - { - /* [1] */ - 0, 0, - /* [2] */ - 1, 0 - } - } -}; - -resource 'FREF' (128) { - 'CrlF', - 0, - "" -}; - -resource 'FREF' (129) { - 'APPL', - 1, - "" -}; - -resource 'DITL' (129) { - { - /* [1] */ - {45, 353, 65, 411}, - Button { - enabled, - "OK" - }, - /* [2] */ - {19, 68, 90, 339}, - StaticText { - disabled, - "^0" - }, - /* [3] */ - {38, 21, 70, 53}, - Icon { - disabled, - 128 - } - } -}; - -resource 'DITL' (130) { - { - /* [1] */ - {81, 136, 101, 194}, - Button { - enabled, - "No" - }, - /* [2] */ - {81, 37, 101, 95}, - Button { - enabled, - "Yes" - }, - /* [3] */ - {24, 43, 56, 188}, - StaticText { - disabled, - "Do you really want to quit without savin" - "g?" - } - } -}; - -resource 'DITL' (256, "About", purgeable) { - { - /* [1] */ - {70, 220, 90, 280}, - Button { - enabled, - "OK" - }, - /* [2] */ - {10, 70, 64, 279}, - StaticText { - disabled, - "Crawl 3.3 \n© 1997-1999 by Linley Henzell" - "\nMac Port by Jesse Jones" - }, - /* [3] */ - {10, 20, 42, 52}, - Icon { - disabled, - 1 - } - } -}; - -resource 'DITL' (131, purgeable) { - { - /* [1] */ - {71, 288, 91, 348}, - Button { - enabled, - "Save" - }, - /* [2] */ - {71, 215, 91, 275}, - Button { - enabled, - "Cancel" - }, - /* [3] */ - {71, 75, 91, 159}, - Button { - enabled, - "Don't Save" - }, - /* [4] */ - {10, 75, 58, 348}, - StaticText { - disabled, - "Do you want to save your game before qui" - "tting?" - } - } -}; - -data 'ALRT' (129) { -$"0028 0028 0096 01D7 0081 5555" /*.(.(.ñ.×.ÅUU */ -}; - -data 'ALRT' (130) { - $"0090 009A 011B 0180 0082 5555" /* .ê.ö...Ä.ÇUU */ -}; - -resource 'ALRT' (256, "About", purgeable) { - {88, 85, 184, 378}, - 256, - { - /* [1] */ - OK, visible, silent, - /* [2] */ - OK, visible, silent, - /* [3] */ - OK, visible, silent, - /* [4] */ - OK, visible, silent - }, - alertPositionMainScreen -}; - -resource 'ALRT' (131, "Save Changes", purgeable) { - {104, 130, 205, 488}, - 131, - { - /* [1] */ - OK, visible, silent, - /* [2] */ - OK, visible, silent, - /* [3] */ - OK, visible, silent, - /* [4] */ - OK, visible, silent - }, - alertPositionParentWindowScreen -}; - -resource 'clut' (256) { - { - // [0] // DOS colors crayon colors - 0xFFFF, 0xFFFF, 0xFFFF, // white - - // [1] - 0x0000, 0x3333, 0xCCCC, // blue - - // [2] - 0x0000, 0x6666, 0x3333, // green pine - - // [3] - 0x6666, 0xCCCC, 0xCCCC, // cyan fog - - // [4] - 0xFFFF, 0x0000, 0x3333, // red - - // [5] - 0xCCCC, 0x6666, 0xCCCC, // magenta orchid - - // [6] - 0x9999, 0x6666, 0x3333, // brown dirt - - // [7] - 0x9999, 0x9999, 0x9999, // light grey granite - - // [8] - 0x3333, 0x3333, 0x3333, // drag grey gabbro - - // [9] - 0x6666, 0x9999, 0xFFFF, // light blue sky blue - - // [10] - 0x3333, 0x9999, 0x3333, // light green clover - - // [11] - 0x6666, 0xCCCC, 0x9999, // light cyan ocean green - - // [12] - 0xFFFF, 0x6666, 0x0000, // light red fire - - // [13] - 0xFFFF, 0x9999, 0x0000, // light magenta orange - - // [14] - 0xFFFF, 0xFFFF, 0x0000, // yellow lemon - - // [15] - 0x0000, 0x0000, 0x0000 // black - } -}; diff --git a/crawl-ref/mac/Crawl4.mcp b/crawl-ref/mac/Crawl4.mcp deleted file mode 100644 index d59edd3cd3..0000000000 Binary files a/crawl-ref/mac/Crawl4.mcp and /dev/null differ diff --git a/crawl-ref/mac/Precomp (Common).h b/crawl-ref/mac/Precomp (Common).h deleted file mode 100644 index f4f9450d05..0000000000 --- a/crawl-ref/mac/Precomp (Common).h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * File: Precomp (Common).h - * Summary: The header included by the CodeWarrior precompiled header files. - * Written by: Jesse Jones - * - * Change History (most recent first): - * - * <1> 5/25/02 JDJ Created - */ - -// In order for precompiled headers to work on MSVC this header must be included -// before *anything* else. -#if _MSC_VER >= 1100 - #pragma message("Compiling Precomp (Common).h (this message should only appear once per project)") -#endif - -#ifndef PRECOMP_COMMON_H -#define PRECOMP_COMMON_H - - -// =================================================================================== -// Debug Macros -// =================================================================================== -#ifdef _DEBUG - #define DEBUG 1 - #define RELEASE 0 - - #if __MWERKS__ - #define MSIPL_DEBUG_MODE - #endif -#else - #define DEBUG 0 - - #if __profile__ - #define RELEASE 0 - #else - #define RELEASE 0 - #endif - - #if !defined(NDEBUG) - #define NDEBUG // used by - #endif -#endif - - -// =================================================================================== -// Misc Macros -// =================================================================================== -#if MAC - #define TARGET_API_MAC_CARBON 1 - #define __CF_USE_FRAMEWORK_INCLUDES__ -#endif - -#if MAC && !defined(macintosh) // macintosh isn't defined for MACH-O - #define macintosh 1 -#endif - -#include - - -// =================================================================================== -// C++ Includes -// =================================================================================== -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#endif // PRECOMP_COMMON_H \ No newline at end of file diff --git a/crawl-ref/mac/Precomp (Mac-D).pch++ b/crawl-ref/mac/Precomp (Mac-D).pch++ deleted file mode 100644 index 32d0b7a246..0000000000 --- a/crawl-ref/mac/Precomp (Mac-D).pch++ +++ /dev/null @@ -1,16 +0,0 @@ -/* - * File: Precomp (Mac-D).pch++ - * Summary: Precompiled header for Mac debug builds. - * Written by: Jesse Jones - * - * Change History (most recent first): - * - * <1> 5/25/02 JDJ Created - */ - -#pragma precompile_target "Precomp (Mac-D)" - -#define MAC 1 -#define _DEBUG // this is how we know a build is a debug build on Windows so we'll use the same mechanism on the Mac - -#include "Precomp (Common).h" diff --git a/crawl-ref/mac/Precomp (Mac-R).pch++ b/crawl-ref/mac/Precomp (Mac-R).pch++ deleted file mode 100644 index e72da8198e..0000000000 --- a/crawl-ref/mac/Precomp (Mac-R).pch++ +++ /dev/null @@ -1,19 +0,0 @@ -/* - * File: Precomp (Mac-R).pch++ - * Summary: Precompiled header for Mac release builds. - * Written by: Jesse Jones - * - * Change History (most recent first): - * - * <1> 5/25/02 JDJ Created - */ - -#if __profile__ - #pragma precompile_target "Precomp (Mac-P)" -#else - #pragma precompile_target "Precomp (Mac-R)" -#endif - -#define MAC 1 - -#include "Precomp (Common).h" diff --git a/crawl-ref/mac/Precomp (Posix-D).pch++ b/crawl-ref/mac/Precomp (Posix-D).pch++ deleted file mode 100644 index 313f4a33bc..0000000000 --- a/crawl-ref/mac/Precomp (Posix-D).pch++ +++ /dev/null @@ -1,17 +0,0 @@ -/* - * File: Precomp (Posix-D).pch++ - * Summary: Precompiled header for Posix debug builds. - * Written by: Jesse Jones - * - * Change History (most recent first): - * - * <1> 5/25/02 JDJ Created - */ - -#pragma precompile_target "Precomp (Posix-D)" - -#define UNIX 1 -#define BSD 1 -#define _DEBUG // this is how we know a build is a debug build on Windows so we'll use the same mechanism on the Mac - -#include "Precomp (Common).h" diff --git a/crawl-ref/mac/Precomp (Posix-R).pch++ b/crawl-ref/mac/Precomp (Posix-R).pch++ deleted file mode 100644 index f6d249a5f4..0000000000 --- a/crawl-ref/mac/Precomp (Posix-R).pch++ +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File: Precomp (Posix-R).pch++ - * Summary: Precompiled header for Posix release builds. - * Written by: Jesse Jones - * - * Copyright © 2002 Jesse Jones. - * - * Change History (most recent first): - * - * <1> 5/25/02 JDJ Created - */ - -#pragma precompile_target "Precomp (Posix-R)" - -#define UNIX 1 -#define BSD 1 - -#include "Precomp (Common).h" diff --git a/crawl-ref/readme.txt b/crawl-ref/readme.txt index 3174052c27..0fd1b23ead 100644 --- a/crawl-ref/readme.txt +++ b/crawl-ref/readme.txt @@ -1,13 +1,15 @@ Crawl Quick-Start Guide (Copyright 1999 Linley Henzell) -So, you want to start playing Crawl straight away without bothering with the -manual? Read this, the guide to starting Crawl with a minimum of preparation. -When you get some more time, you can read crawl.txt in the Docs directory -for more detailed information. - -I suggest printing it out and following its instructions while playing your -first few games (you can also press '?' while playing for a list of commands). +So, you want to start playing Crawl straight away without bothering with the +manual? Read this, the guide to starting Crawl with a minimum of preparation. +When you get some more time, you can read crawl_manual.txt in the Docs directory +for more detailed information. Also take a look at README.stone_soup.txt - this +is not the official distribution of Linley's Dungeon Crawl. + +I suggest printing out this file and following its instructions while playing +your first few games (you can also press '?' while playing for a list of +commands). INTRODUCTION TO CRAWL -- cgit v1.2.3-54-g00ecf