~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v3.0.9

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Update gs2compiler - add support for obj.insert(idx, val)
+ Update gs2compiler - add support for obj.remove(val)
+ Update gs2compiler - add support for obj.delete(idx)
+ Update gs2compiler - add support for bitwise operations (left-shift, right-shift, or, xor, invert)
* Update gs2compiler - Fixed modulus assignment
* Update gs2compiler - Fixed constants with negative values
* Update gs2compiler - Fixed precedence for power operator

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v3.0.8

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Added 'player.triggerclient'
+ Added 'createlevel(filltile, levelname)'
+ Added 'level.savelevel(filename)'
* Fixed support for v1.3x clients

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v3.0.7

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Update gs2compiler - fix getangle and getdir
+ Update gs2compiler - added gs2 support for arraylen/sarraylen functions
+ Added `public function` for serverside scripting, to access functions on an npc from another npc
+ Added ability to get/set tiles on serverside scripting via `level.tiles[index]`
+ Added arrow drop class, so if there's a class named `darts` it will drop this npc instead of the default item. Might change in a future release
* Fixed shoot2 for v6 clients
* Fixed updateboard request causing illegal packet disconnection
* Fixed so player.platform is correctly set when connecting with a v4+ client

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v3.0.6

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ Added npc.settimer() for setting timeout, similar to gs2
* Fixed a bug preventing serverside joins from propagating to the client in gs2
* Update gs2compiler - fix for assignment operators (+=, -=, *=, /=)
* Fix for tiles[x, y]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v3.0.5

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ Added npc.settimer() for setting timeout, similar to gs2
* Fixed a bug preventing serverside joins from propagating to the client in gs2
* Bug Fix - modified local files should now be replaced by the server
o Change triggeractions to be case-insensitive
* Update gs2compiler - fix for assignment operators (+=, -=, *=, /=)
* Update gs2compiler - fix for-loop continue/break
* Update gs2compiler - fix for integer casting
+ Embed javascript bootstrap file into gserver build
+ Changed sendtorc/sendtonc functions to print all arguments to the function
o Modified call signature of onActionServerSide - onActionServerSide(player: Player, params: String[]) {}
* Fixed GS2 triggeractions to serverside
o Slightly improved some serverside runtime execution errors in NC-tab
+ Exposed some common functionality into the global object, so you can call them directly without referencing the server object:
  - functions: findlevel, findnpc, findplayer, savelog, sendtorc, sendtonc
  - global variables: allplayers, timevar, timevar2
  - standard functions:
    - random(min, max)
    - abs(num)
    - arctan(angle)
    - char(code) - returns ascii character for the code
    - cos(angle)
    - exp(x)
    - getangle(dx, dy)
    - float(num) - cast to float
    - int(num) - cast to int
    - log(base, x)
    - max(x, y)
    - min(x, y)
    - sin(angle)

  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v3.0.0

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Built-in npc-server, with nc-support. For more information on scripting please read npcserver.txt
* Npcs should no longer duplicate on gmaps, and should be properly deleted.
* Fixed an issue with sockets not binding or connecting on OSX
o Changed build system to cmake
o Removed plugin system since it was never used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.5.1

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* The bigmap name is properly trimmed so whitespace in the settings won't break the load.
* Empty flags work again.
* Joey forgot how to version control and deleted lots of fixes.  They have been restored.  This fixes regressions in things like gmaps and level loading.
* Fixed an npc-server movement packet.
o Lots of build system fixes to make it easier to compile your own version of the gserver.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.5.0

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Fixed some bugs with gr.updatelevel.
* Fixed bugs with baddies.
* You can no longer set your shield to be sword1.png.  Default sword/shield/body images are properly locked to their type.
* Fixed gani attributes 10-30.
* Fixed a bug with the join script command.
* Various gmap fixes.
* All sorts of other bug fixes.
+ We can now write slightly larger scripts.  From 16383 bytes to 28767 bytes.
+ Added the startlevel, startx, and starty server options.  They override defaultaccount.
+ Added the //#BLOCKPOSITIONUPDATES script command.  It blocks NPC position updates for that specific NPC.
+ Added gr.fullhearts triggeraction hack to set the player's fullhearts to a specific amount.
+ Added gr.npc.move triggeraction hack for sending serverside move packets.
+ Added gr.npc.setpos triggeraction hack for positioning an NPC that blocks position updates.
+ Added gr.readfile triggeraction hack.
+ Added /refreshfilesystem RC command to re-scan the server's files.
+ Support multi-line rcmessage.txt.
o Added timestamps to log messages.
o We now keep a copy of the untrimmed script so we don't write the trimmed script back to the disk.
o Various changes were added for support for later clients (nothing much came of this).


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.4.0

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Fixed crash bugs.
* heartlimit now properly defaults to 3 in the gserver code.
* Fixed some bugs with player Z support.
* Fixed a crash when using gmaps.
* Fixed a guild tag exploit.
* The server only removes a port that it successfully opened via UPnP instead of removing all possible ports.
* Fixed a crash that could occur when banning players.
* Fixed a possible invalid packet crash.
* The gserver properly checks for heartlimit, swordlimit, and shieldlimit when sending props.
* Fixed a potential issue with weapon filenames.
* Fixed issues with CString::gtokenize and guntokenize.
* Added a fix to prevent Beholder from breaking stuff.
* Fixed a bug where the server was appending the ip/port when initializing UPnP. This was breaking UPnP when doing a /restartserver.
* Fixed a typo with /updatelevelsall.
* If a weapon is modified on the disk and reloaded via /reloadweapons, the new weapon will be sent to the players on the server.
* Fixed the following chests: glove2, shield, mirrorshield, lizardshield, sword, battleaxe, lizardsword, and goldensword.
+ Improved NPC-Server support.
+ Improved support for v4+ clients.
+ Added weapon bytecode support for v5 clients.
+ Account load-only support added.
+ Guest account support added.
+ Added the serverinterface option for specifying an interface to bind the server's listen socket to. Can be used in servers.txt.
o Added additional RC logging.
o Updated zlib to version 1.2.5.
o rcmessage.txt updated.
o Updated premake4 and added a Visual Studio 2010 batch file.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.3.0

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Server doesn't crash on a malformed weapon anymore.  Instead, it will display a warning.
* Version 2.2.0's setlevel2 bug fix involved with warping to the current level is properly fixed now.
* Fixed a crash when editing server flags via RC.
* Fixed an issue where, if the player tried to log in to a non-existent level, the gserver wouldn't send them to the unstickme level.
* Fixed a Linux case issue that cropped up if you manually created an account.txt file.
* Worked around a bug in RC 1.1.
* Fixed an infinite loop caused by killing baddies that were spawned via script.
* Fixed some NPC-Server related issues.
* The ServerHQ is properly updated when the settings are changed.
+ Added Downsider's execscript triggeraction hack.  The triggerhack_execscript server option turns it on and off.
+ Added gr.attr1 - gr.attr30 triggeraction hacks.  The triggerhack_props server option turns it on and off.
+ Added the ability to rename rclog.txt and serverlog.txt via the RC file browser.
+ Added UPnP support.
+ Added support for the RC2 disconnect message.
+ The server checks if a player is dead when they "leave" a level.  If they are dead, it brings that back to life with 0.5 hearts.  This is consistent with official Graal.
+ Added support for the NPC-Server sendrpgmessage() command.
+ Added built-in RC file browser protections to the config/ folder.  accounts/defaultaccount.txt, config/adminconfig.txt, config/allowedversions.txt, config/ipbans.txt, config/rchelp.txt, config/rcmessage.txt, and config/rules.txt require the 'change staff account' right.  config/foldersconfig.txt requires the 'set folder options' right.  config/servermessage.html and config/serveroptions.txt require the 'set server options' right.
+ Player flags are now sent to the NPC-Server.
+ Added support for say2 signs sent to a player by the NPC-Server.
+ Added the gr.setplayergroup triggeraction for setting the group of a specified player.
+ Added the gr.updatelevel triggeraction hack.  The triggerhack_levels server option turns it on and off.
o Updated adminconfig.txt to have ns_ip=AUTO at the end.
o Updated YOURACCOUNT.TXT to have access to folders that the default was missing.
o Updated serveroptions.txt with a bunch of new options.
o Servers are now hidden from the server list (marked as under construction) if the 'onlystaff' server option is set to true.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.2.0

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Some admin-only server options weren't in the list of protected options. They are now.
* Server now correctly deletes an empty string flag.
* A player's online seconds, kills, and deaths will now display correctly in their profile if their values exceed 1568735.
* Sign text is no longer trimmed.
* The server correctly handles UTF-8 file names in Windows now.
* Fixed a bug where moving a file in RC would fail to move the file and delete the original.
* Player gani parameters #P6 through #P9 should be correctly passed to other players now.
* String arrays in the profile field are correctly tokenized now.
* Fixed a bug with saving weapons where the SCRIPTEND field wasn't being written correctly in some instances.
* The RC command /restartserver no longer ignores the server overrides specified in servers.txt.
* The gr.removeguild triggeraction hack will remove the guild tag from all currently online players when the guild is deleted.
* Fixed a bug where the client's guild wasn't being cleared internally.
* If a player issues a setlevel2 command to warp to the same level he is in, the server just moves the player instead of attempting to warp him. This fixes some script issues with isleader.
* RCs will use their properly set nickname now, instead of using the nickname saved to the user's account file when they last logged in as a normal client.
* Fixed the creation of new directories via RC. It can now recursively create new directories.
* Fixed a bug with the sparring deviation decay algorithm.
+ Comments in settings files can be placed anywhere now.
+ Flag hack gr.ip added.
+ Triggeraction hacks gr.appendfile, gr.writefile, and gr.rcchat added.
+ Added new server options to enable/disable all the various triggeraction and flag hacks.
o Updated readme.txt with a bunch of information about the Graal Reborn gserver, including information on all the triggeraction hacks.
o Updated the build system to premake 4.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.1.0

  * bug fix, + new feature, o other
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Some admin-only server options weren't in the list of protected options.  They are now.
* Server now correctly deletes an empty string flag.
* A player's online seconds, kills, and deaths will now display correctly in their profile if their values exceed 1568735.
* Sign text is no longer trimmed.
* The server correctly handles UTF-8 file names in Windows now.
* Fixed a bug where moving a file in RC would fail to move the file and delete the original.
* Player gani parameters #P6 through #P9 should be correctly passed to other players now.
* String arrays in the profile field are correctly tokenized now.
* Fixed a bug with saving weapons where the SCRIPTEND field wasn't being written correctly in some instances.
* The RC command /restartserver no longer ignores the server overrides specified in servers.txt.
* The gr.removeguild triggeraction hack will remove the guild tag from all currently online players when the guild is deleted.
* Fixed a bug where the client's guild wasn't being cleared internally.
* If a player issues a setlevel2 command to warp to the same level he is in, the server just moves the player instead of attempting to warp him.  This fixes some script issues with isleader.
* RCs will use their properly set nickname now, instead of using the nickname saved to the user's account file when they last logged in as a normal client.
* Fixed the creation of new directories via RC.  It can now recursively create new directories.
* Fixed a bug with the sparring deviation decay algorithm.
+ Comments in settings files can be placed anywhere now.
+ Flag hack gr.ip added.
+ Triggeraction hacks gr.appendfile, gr.writefile, and gr.rcchat added.
+ Added new server options to enable/disable all the various triggeraction and flag hacks.
o Updated readme.txt with a bunch of information about the Graal Reborn gserver, including information on all the triggeraction hacks.
o Updated the build system to premake 4.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Changelog for:
    v2.1.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bugs fixed:
- Fixed modifying player flags via RC.
- The gserver will now correctly display RC and npcserver version strings on connect.
- The gserver no longer mangles UTF-8 filenames on Windows.
- Players can no longer gain hearts if they have low AP.

Changes:
- GServer uses non-blocking sockets.  Hopefully this will fix problems where the server can block on a send() call to a slow client.
- zlib and libbz2 are now packaged with the server gserver source code.  It makes it easier to compile.
