summaryrefslogtreecommitdiffstats
path: root/stone_soup/crawl-ref/docs/changes.340
diff options
context:
space:
mode:
Diffstat (limited to 'stone_soup/crawl-ref/docs/changes.340')
-rw-r--r--stone_soup/crawl-ref/docs/changes.3401860
1 files changed, 1860 insertions, 0 deletions
diff --git a/stone_soup/crawl-ref/docs/changes.340 b/stone_soup/crawl-ref/docs/changes.340
new file mode 100644
index 0000000000..2891d5c976
--- /dev/null
+++ b/stone_soup/crawl-ref/docs/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_<BRAND_TYPE> 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 <kathomps@julian.uwo.ca>) -- 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 <stdio.h>' 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