grendel-1.0.0a7/backup/
grendel-1.0.0a7/bin/
grendel-1.0.0a7/boards/
grendel-1.0.0a7/clans/
grendel-1.0.0a7/documentation/todo/
grendel-1.0.0a7/help/
grendel-1.0.0a7/logs/
grendel-1.0.0a7/players/
grendel-1.0.0a7/progs/
grendel-1.0.0a7/races/
grendel-1.0.0a7/src/contrib/
grendel-1.0.0a7/src/modules/speller/
grendel-1.0.0a7/src/modules/status/
grendel-1.0.0a7/src/tests/
grendel-1.0.0a7/src/tests/dunit/
Wishlist for the 1.0.x tree
(! = closed, * = normal, l = lower priority, . = ongoing)


! run as service (NT/2K/XP)

  * raises the need of some sort of "admin console", remote? through the webservice?

. more stability when starting/shutting down, especially on Win98/ME

* we really need another way of registering commands to the server, pluggable interfaces?
  maybe a rewrite of the damn thing

* use XML extensively, use dynamic storage of properties in objects

  - player & area files: dynamic storage of "modifcation" specific data
    in an associative array, possibly with callbacks/triggers when
    new data is stored, see below for description of "modifications"
   
  - server configuration: store known server-side variables and
    introduce new ones, such as experience formulas, experience per level, 
    damage formulas, number of stats, stat maximums, etc.   
    
  - GHL (working title): Grendel Help Language, which is an XML DTD or Schema,
    use XML to describe help/manual content, use stylesheets to transform
    GHL to (X)HTML for web viewing or ASCII for online help

! events

  - raise events when important things happen, e.g.
  	* server boots/shuts down
  	* player logs in/off
  	* player enters/leaves a room
  	* player looks at object/npc/room
  	* player performs action on object (wear/wield/whatever)
  	* timers
  	* etc. etc.
  
  - objects/scripts/modules should be able to register event handlers
    
* revise grouping system: generalize GObject to some form of object 'list'
  (possibly named GItem), which can contain 1 or more GItems or subsets
  of GItem, something along those lines
  
  -> do not group objects solely on basic stats, two objects must be an
     *exact* match if they are to be grouped
     
  -> Bags and containers should be saveable
    
* get rid of a lot of obsolete smaug/diku/emlen-inspired code, this
  only helps in keeping the system unstable and hard to manage. 
  
  ! rewrite position code, instead of mutual exclusive POS_XXX identifiers
    use flags to describe a combination of states
    
  - possibly rewrite/rename the fighting & magic code, this will break
    compatibility but improve code re-usage and stability

  ! remove special timer states, unify as action timer

  . generally clean up code according to new coding standard,
    remove obsolete stuff like GObjectIndex etc.
  
* generalize races & clans to configurable character "modifications",
  with some form of plugin architecture to add specific behaviours to
  a character (access to commands, properties, etc.)
  
  - modifications possible for areas as well, enables "dynamic" areas,
    such as randomizing mazes etc.
    
  ! give races unique 'wear' locations; dragons should wear armor on their wings
    instead of their arms

* use coordinates and mpfindpath code to make NPCs more intelligent

  - generalize current experimental coordgen code to generate multiple
    "coordinate spaces", each space allocated for a disjunct, unlinked set
    of areas (usually, a new space begins when a portal is reached)
    
  - move towards 'true' AI by using the findpath code to allow NPCs
    to find particular targets or locations in the game world

* better damage/experience calculus

  - unusually difficult task, maybe worth the time to investigate 
    the possibility of auto-balancing tools or algorithms
    
  - relies extensively on configurability of server-side variables (see above)
  
* gmc specific features/extensions:

  - extracting matching parts from a string (possibly using full regexps instead
    of the fastmatch used now)
  
  - global/mudwide (static) variables
  
* area loader
  
  - auto linewrap, filter out hard line breaks

* shops

  - opening times
  
  - out-of-stock possibility
  
  - shopkeepers must be able to carry their own gear

! string matching
  "Goto orc"; first complete match, then names that *start* with orc, and then
   a full search on '*orc*'


! IMC (intermud communication): both channels *and* noteboards
  (perhaps separate server for noteboard, or whatever)

l implement isPlayerName(), isObjectName(), isMobName() and (perhaps)
  isSpellName() and enforce their use throughout the code
  
l (optional) "real life" sleep - players need sleep to keep from falling 
             down after 2 days, some rooms (with beds) have better sleep ratios etc.,
             possibly as a demonstration of the "modification" system
             
l (optional) mud police, implemented as a series of gmc scripts