X = Complete.  When completed for a week or two, delete the task from the list.
D = Done but not committed.
. = In progress


---------------------------
---------------------------
    MOLECULAR BLUE
---------------------------
---------------------------

[x] No useful error message when you add a buddy to your list that is
    already on your list.  Instead you get a SQL error shown on your
    client.

[X] Save memory on loading sounds. We should give an option to players to
    not load sounds. in the pssetup I see there is an option about that.
    We can skip loading of sounds if that flag is on...

[ ] Also we can unload sounds if the player clicks on the "music off" 
    checkbox in the options window in game.

[X] Add delay in Connect button after pressing it, before it can be
    pressed again.

[X] Improve performance: Add the fastmesh prepare fix, as explained by Jorrit.

[X] The -prepare and -dupes options can be done in PS too by using the appropriate
    API (iThingState->Prepare() and iLoadMapFile->LoadMap()). 

[D] Save memory by unloading unneeded images:
    Ok I found the leak in CS. It only happens when loading into
    regions. So if you add the following code to PS:
   
    iTextureManager *txtmgr = G3D->GetTextureManager ();
    txtmgr->FreeImages ();

    then about 35! megs of memory will be freed after loading.
    (Venge: Where does this get added?)

[X] Remove First name and/or Last name of NPC from player phrase before parsing triggers
    so for example: "How are you Thorian?" will become ""How are you ?"


[X] Improve synonyms substitutions:
    - First of all it should be made before any other trigger checking 
      (already discussed that with Venge)
    - then it should extract all synonyms ordering them by ID
    - then it should check if the phrase of the player contains one of
      the synonyms extracted always respecting ID ordering
    - if a substitution occurs, it should then analize the rest 
      of the phrase, skipping the part that was just substituted. 

    Example:
    If we define those 2 synonyms:
    INSERT INTO npc_synonyms VALUES("i'd like to buy","give me");
    INSERT INTO npc_synonyms VALUES("i'd like","give me");

    the order is very important. The player says:

    "I'd like to buy a beer"

    if the sequence of synonyms is respected it becomes: "give me a beer"
    is sequence of synonyms is reversed it becomes: "give me to buy a beer" 

[X] Test and Fix Prox-based chat

[X] Confirm fix to item meshfact names

[X] Drop max of 10 items at a time

[X] Fix mem leaks on client

[ ] Test the fix already implemented for staying connected even when server restarts

[ ] Look at the lighting that doesn't work right (ask boonet for specifics)

[ ] Fix color clamping problems in plaza when lights change

[X] When equipping items they first appear between the player's feet before 
    being moved into the correct position for the socket.

---------------------------
---------------------------
    CRYSTAL BLUE
---------------------------
---------------------------

Misc
----
Thanks to Thekkur for this list.

 * it's very easy to get outside of the city. (by means of jumping barrels, or even climbing the wall)
 * you can also access the smith building.
 * NPC's don't respond properly
 * walls don't properly hold a character back (character partly disappears into it)
 * Sometimes strange bright colors show up on polygons in the city (especially during day)
 * you can get stuck in the entrance to the dungeon inside the temple
 * some polygons aren't shaded properly
 * it rains inside the smith building
 * lightning is visible inside the temple
 * there's a lag on the moment it starts to rain/thunder sound is loaded
 * if you walk inside or outside the tavern, the temple, the tower or the library you disappear partly when going through a door
 * you can jump some fences/walls and exit the city (and view it from the hills)
 * you can't enter the large tower easily.
 * there's a torch in the dungeon that has square flames
 * camera goes through walls in 3rd person mode
 * there's some floating barrels around in the city
 * you can walk through certain barrels and crates in the city and chairs in the temple
 * in the tavern you walk onto tables
 * the greeting animation sequence is played very quickly
 * you can pick up objects from 10 feet away
 * you climb stair extremely fast
 * on very steep slopes (like the one in the dungeon) you sink into the ground
 * you can stand on the water in the fountain
 * some lanterns don't go on when it gets dark


Client
------
[ ] Fix switching focus between chat window and world.



Server
------


Client/Server
-------------
[ ] Implement wield capability in inventory window (acraig)
[ ] Convert our XML file parsing to use CS iDocument system.  Nicer and
    more robust but probably a lot more code.  We'll see.
[ ] Merge the initcs.inc and scfreg.inc into a nice general helper class. 
    Possibly the mountcfg.cpp as well.


Bugs
----
[ ] Actual camera positions need to be put in and fixed up for all races.
[ ] Auto-spawn doesn't work the first time you login if you have fallen
    through the floor.  It sets it correctly in the database but you do not
    login all the way to the world, but instead "hang" on the Initializing
    World screen.

Miscellaneous
-------------
[.] Update platform-independent updater client to use multiple web servers.  (Sarmaael)
[ ] Add a GUI interface on the updater to use pluggable GUIs. (Sarmaael)
[ ] Switch to VFS for file i/o for the updater. (Sarmaael)
[ ] Implement directional thunder
[ ] Implement random ambient sounds (water droplets, birds)





Boonet Issues
-------------
[ ] Dwarf walk anim makes him bob up and down too much.
[X] Fem dermorian stand anim has her legs spread apart instead of together.
[X] Fem dermorian head needs fixing. In the stand anim it should be vertical and not bent to the right.
[ ] Fem dermorian's legs are too far apart when running.  Very obvious in 3rd person view.  Side view
    looks great though.












Next Release
============

Scripting
---------
[ ] Implement python interpreter on server, linking to entities. (margomaps)
[ ] Implement python script persistence in database.


Admin Tools
-----------
[ ] Implement Python Editor screen. (simple text editor, if we go to advanced
					take a look at scintilla)
[ ] Make CS messages show up on in-game console if a debug command has been
    activated
[ ] Implement general state update system for cel entities 
     (Chest Opening, etc.)


Effects/CS
----------
[ ] Change rain mesh particle system to use DrawTriangleMesh instead of Spr2d.
[ ] Implement animation-dependent noises (footsteps, chest creaks, etc.) on client.



Guilds/User Commands
--------------------
[X] Jump


Network/Network Security (MatzeB)
------------------------
[ ] Do something against clientnum overflow (could be used as a DOS attack)
[ ] Senders list is also limited -> Implement a queue, that dynamically
     increases it's size


Network rewrite (MatzeB)
---------------
[ ] Address all issues above and make the thing a separate project


Crystal Space
-------------
[ ] Implement sound effects (3d?) for things such as footsteps.  Investigate
    enhancement of CS animation defs to include sound triggers on exact frames.


CEL/Persistence/World Update
----------------------------
[ ] PosUpdate messages can be made a lot smaller by using single bytes to represent
    degrees (255 scaled to 360), and assuming rotation only in xz plane.
[ ] If specified map file does not exist on client, error is reported on console
    but not to user.  Session finally times out.
[ ] Make CS messages show up on in-game console if a debug command has been
    activated


Cheat Protection
----------------
[ ] Validate Movement


NPCs
----
[ ] Implement dynamic (random) respawn capability
[ ] Implement pathfinding/wandering.	(Sarmaael)


Combat
------
[X] Implement CombatManager to do all calcs and rolls.
[X] Implement CombatEvent scheduler in CombatManager to execute rolls.
[ ] Use weapon statistics from database instead of hardcoded values.
[ ] Use actual player statistics instead of hardcoded values.
[X] Implement appropriate sounds
[l] Implement appropriate animations.
[l] Extend player info window (Target) with health info for self and target.
[l] Implement duel confirmation messaging, similar to guild invite messaging.


Graphics/Maps
-------------
[ ] Implement standing water system for fountain pool.
[l] Write a script that converts .png to jpeg to reduce download size
[l] Write a script that converts textures in maps to .jpg


GUI
---
[ ] Create button class with user definable (text) names and scripts.
[ ] Create popup window to allow user to edit button name and script.
[ ] Create windows where user definable buttons can be placed, and UI to do it.
[ ] The Skill Area in the Path Screen is not big enough to fit all the data.
	-Bug only present in 640x480
[ ] Implement buttons for shortcuts to guild commands, buddies, etc. ("Socials" 
    in EQ parlance).
[ ] Implement server actions for basic items like doors and chests (acraig)
[ ] Implement client animation sequences for action triggers, so the chest is
	seen to open.


Authentication
--------------

