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