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 <element>, 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-<move> 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.
