RaM Fire Updated/
081021	Quixadhal
  1321	This is a shopping list of things we need to address.  Some of them
	are just ideas I have as I go along, some are bugs I find but don't
	have time to fix right then, some are hard-coded constants that
	really should become configurable.

	I noticed that do_ofind() and do_mfind() both do really nasty
	loops over empty vnum spaces to look for things.  That should
	really be redone.

	In "The Future(TM)", I'd like to move away from linked lists and
	actually store all these things in trees so it's easier to
	maintain and faster to access.

	Here's the idea... instead of storing things in an array of linked
	lists, how about just storing them in a balanced binary tree.
	Walking the tree is easy, and at each node we can not only store
	the definition for the prototype, but we can keep a linked list
	of all instances.  Thus, the reset system also benefits.

  1325	obj_check(), uses IS_TRUSTED() to see what various level immortals
	are allowed to "load".  It has hard-coded constants for the level
	and cost of the items.  Those should really be something that
	can be configured at boot time.

	Personally, I dislike the whole level/trust entwining, and I'd
	rather redo it all as a more clear and distinct permission system,
	but that's probably something best poked at down the road a ways.

  1413	The PC and NPC races really should be merged, with a flag to say
	if a particular race is available for character creation.
080125	Quixadhal
  0209	I noticed that stuff in const.c is used from objects via their
	weirdo flag values.... The code attempts to do one sided bounds
	checking (for things < 0), but doesn't check for running off the
	other ends of the array.

	All this stuff will need to be loaded from disk files to support
	OLC anyways, but keep it in mind... we should check both sides
	or use a function to get the info so it can do the checks.

  0408	Weep for the children!

	   1.        /*
	   2.         * hack to make new thalos pets work
	   3.         */
	   4.         if ( ch->in_room->vnum == 9621 )
	   5.             pRoomIndexNext = get_room_index( 9706 );
	   6.         else   
	   7.             pRoomIndexNext = get_room_index( ch->in_room->vnum + 1 );
	   8.         if ( pRoomIndexNext == NULL )
	   9.         {         
	  10.             log_error( "Bad pet shop at vnum %d", ch->in_room->vnum );
	  11.             send_to_char( "Sorry, you can't buy that here.\n\r", ch );
	  12.             return;
	  13.         }

	That kind of hard-coded nonsense has to go.

  1736	I think the zone reset logic needs a bit of love.  My own game
	lets you specify reset times per zone AND say if you care that
	there are players present or not.

081031	Quixadhal
  1627	Hunt down all the places we have N * MAX_STRING_LENGTH, since that
	means MAX_STRING_LENGTH isn't big enough (it isn't really a MAX).

081105	Quixadhal
  0930	In the do_outfit() function, the hard-coded level restriction should
	at least become a define, at best become configurable at runtime.

  1027	We need to move the hard-coded banned names into a file, rather than
	being in check_parse_name().

081109	Quixadhal
  1641	Argh!  Begone foul daemons!!!!!!

        /*
         * hack to make new thalos pets work 
         */
        if ( ch->in_room->vnum == 9621 )
            pRoomIndexNext = get_room_index( 9706 );
        else
            pRoomIndexNext = get_room_index( ch->in_room->vnum + 1 );

	How about, instead, we (a) rearrange the rooms in New Thalos to work
	the way the pet shop code works, or (b) rewrite the pet shop code to
	specify the room, rather than vnum + 1 hack?  Of course, dropping
	New Thalos is a good idea too... as is dropping EVERY zone in here.

081112	Quixadhal
  1228	Merge all the skill utility functions into skills.c.  Right now, some
	are there, some are in magic.c, and some are in handler.c

081113	Quixadhal
  1425	I was thinking that the whole skill group system is kindof weird.
	Why bother to store the groups in your character?  Shouldn't a group
	just be a set of skills?  If you "add" a group, isn't that just adding
	each skill in it?  If you "remove" a group, doesn't it just remove all
	the skills in it (unless they're also part of another group)?

081116	Quixadhal
  1447	In changing the skill lookup system, I made a slight change to the way
	things work that MIGHT affect gameplay (hasn't been tested yet).  Namely,
	I implemented a binary search on the skill array, but in doing so I
	switched from using str_prefix() to using an exact match by strcasecmp().

	IF the parser relied on skill_lookup() to do prefix matching for commands,
	this might cause some spells or skills to act differently, since abbreviations
	like cast 'invis' won't work.  I don't consider that a bug, since it wasn't
	doing proper globbing anyways (IE: if you did cast 'in', would it match
	invisibility, or invulnerability?  Undefined and unclear).

	Doing a proper prefix-enabled parser might be in the future.  On the old
	VAX/VMS system I worked on, you defined things to the degree of matching
	you wanted to allow... so you could say "INVI*SIBILITY" and "INVU*LNERABILITY".
	That could be automated if we have a routine that returns ALL matches and if
	the return set is more than 1 large, it's ambiguous.

  2357	Moving to C++, we'll need to start doing some conversion work before we
	tackle adding features.  I'll sit down tomorrow and work out a roadmap, but
	for now assume we want to replace char *'s and funky shared string code with
	std::string, and apply liberal use of std::list, std::vector, and std::map
	as appropriate to make the code both clean and safe.