TODO: encapsulate the data structures TODO: Get the rooms working TODO: Rejection packets TODO: Authentication TODO: server is slaved to the client TODO: I need to keep the documentation up to date. Namely, the GDD is getting out of date. TODO: I completely forgot about status ailments TODO: Time delay for requesting region packets TODO: command line parameters overriding config.cfg settings --Battle System-- TODO --Requirements-- The enemies need AI scripts The scripts need to be able to generate other enemies (frog king). The characters need a flag to show if they're in a combat instance or not, to signify of they should be unloaded client-side On each game loop, the server should envoke each combat instance's update function Each combat instance invokes each enemy's and character's update functions These update functions increase the ATB guagues if an ATB guage is full than the stored command is executed the players issue their commands during the build up if there isn't a command ready, then the player is still choosing for the enemies, the stored commands are driven by scripts, so when the enemies need to attack, their attached scripts are called. after the commands are called, the ATB is reset to 0. etc... --Enemy API-- enemyTables -- The global store of enemy tables. Only accessed by C++ code (unless you want to break something). enemy.new(parameters) -- return a new enemy object table.logic: the AI logic. If null, do nothing table.ref: reference to the enemy itself, for use by API functions, set by constructor? combat -- the combat API combat.new(mapIndex, x, y) -- return combat instance's index combat.pushenemy(c, enemy) -- return the enemy's position combat.popenemy(c, position) --