Forráskód Böngészése

Quick EOL fixes

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1138 54d463be-8e91-2dee-dedb-b68131a5f0ec
amber 20 éve
szülő
commit
3154906a1a
5 módosított fájl, 3181 hozzáadás és 3181 törlés
  1. 1972 1972
      Changelog-SVN.txt
  2. 32 32
      conf-tmpl/readme.txt
  3. 5 5
      db/mob_race2_db.txt
  4. 279 279
      src/lib/zconf_win32.h
  5. 893 893
      src/lib/zlib_win32.h

+ 1972 - 1972
Changelog-SVN.txt

@@ -1,1973 +1,1973 @@
-Date	Added
-
-02/18
-        * Fixed a bug with statpoint.txt reading and giving too much stat points,
-          thanks to Benz / eAthenaC [celest]
-        * Fixed client errors when pecopeco Lord Knights/Paladins log in with a weapon
-          equipped [celest]
-        * Added bAddRace2 -- check item_bonus.txt [celest]
-        * Added mob_race2_db.txt -- contains 'main races' of certain monsters [celest]
-        * Updated description for backup_txt in char_athena.conf a bit [celest]
-        * Set read_map_from_cache to 2 (enable compression), and map_cache_file back to
-          saving in /db instead of /save, as suggested by Poki#3 [celest]
-        * Updated description for auto_counter_type, and set plaer_auto_counter_type
-          to 0 by default, as suggested by Poki#3 [celest]
-        * Use the event names from script_athena.conf to check whenever a player event
-          trigger is being read/set [celest]
-        * Removed an unused save/bank.txt [celest]
-	* Added some new cards effects. (check DB\changelog.txt) [Lupus]
-
-02/17
-	* Now all mobs have 10 drops slots. the last one is used for Cards Drops [Lupus]
-	  Don't forget to update your SQL files (Drop Log: logs.sql and db_tables.sql
-	  if u were using SQL Mobs DB. Update it from TXT! )
-	* Fixed Branch Log TXT filename [Lupus]
-	* Made all logs work with compiled TXT Server, too (removed old #ifndef) [Lupus]
-	* Added 4 columns into mob_db.txt (check DB\changelog.txt) [Lupus]
-	* Fixed some mobs drops (Whisper, etc) and some MVP mobs (bonuses were shifted...) [Lupus]
-        * Readded Chemical Protection -- i forgot to check for it when changing some
-          jA stuff earlier, sorry ^^; [celest]
-        * Removed some old eA code that was causing Frost Nova to do an extra hit
-          [celest]
-        * Corrected Vulcan Arrow's hits in skill_db -- the bug appeared when the
-          correct numbers hardcoded were removed [celest]
-        * Readded zlib and zconf .h files to under /lib for compiling in Windows,
-          thanks to Ser [celest]
-        * Fixed some compile errors in Windows, thanks to Ser [celest]
-        * Changed remove_control_characters back to supporting korean chars [celest]
-        * Moved some other code around [celest]
-        * Added Shinomori's changes to Dissonance -- don't increment the timer again
-          if the target has died [celest]
-        * Changed some nullpo checks back to normal null checks -- in some situations
-          it would be normal to get a NULL [celest]
-        * Changed some nullpo checks to print some debug information [celest]
-        * Added some sd checks before calling pc_blockskill [celest]
-        * Added Dino9021's fix for SQL char's friend list updating [celest]
-        * Fixed a crash if the player invited to join a guild is not online, thanks to
-          Alex14 [celest]
-        * Find the guild invitation sender first before clearing its ID [celest]
-
-        * Added 2 new script commands to support 2/15's cards patch... most of the
-          effects in kRO should be available now ^^ [celest]
-
-          - isequipped(...): Accepts a list of item ID's and checks whether all of
-                             the items/cards have been equipped.
-          - isequippedcnt(...): Same as above, except it returns how many of the items
-                                are being equipped
-
-          Example: if(isequipped(4002,4004,4006)) bonus bStr,1;
-
-02/16
-	* Char SQL: Fixed the Whisper chat on splittet mapservers (i think now all features work!) [Sirius]
-
-        * Added 3 more of the new card effects -- check item_bonus.txt [celest]
-
-        * Added 'bonus4' to support the new card effects that might need up to 4
-          parameters [celest]
-        * Set 'killerrid' and do PCKillEvent before calling PCDieEvent, thanks to
-          mrmagoo for pointing it out [celest]
-
-        * Added some new script event related options to script config [celest]
-
-          - [die/kill/login/logout]_event_name: Name of script to activate when an
-                     event has occured
-          - event_requires_trigger: whether or not a 'set [EventName],1;' has to be
-                     defined first for the event to be activated
-
-        * Added 8 of the new card effects on the 2/15's patch (still untested and
-          not yet added to the item_db)
-          - Refer to doc/item_bonus.txt for description
-
-        * Minor rewrites on self and enemy weapon/armor breaking during battle [celest]
-        * Added missing code for 'bBreakWeaponRate' and 'bBreakArmorRate' effects
-          [celest]
-        * Added missing code for 'bAddStealRate' effect [celest]
-        * Removed redundant 'infinite_autospell' in map_session_data [celest]
-        * Fixed Treasure Box spawn bug in all castles. [Lupus]
-        * Fixed wrong PresentLOG (it wasn't showing PRESENT BOX type ID) [Lupus]
-	* Expanded Monsters Drops Slots from 8 to 10. Everywhere in the sources. [Lupus]
-	  But in TXT / SQL monsters DB reading functions, I added a temp plug
-	  to make eA work fine with existing DBs. It reads only 8 drops and fills
-	  9th and 10th drops with Zero.
-	  On expanding MOB_DB.TXT we'll remove that plug.
-	  We are adding new cards and some monsters
-	  have no free slots for them. Current state is tested and works fine.
-
-02/15
-        * Allow Potion Pitcher to be able to cast on yourself -- i've almost forgot
-          about this, thanks to Filougarou and Poki#3 for the fix ^^; [celest]
-        * Added Wallex's changes for weapon skills to read list_num from the skill_db
-          when calculating damage [celest]
-	* Login / Login SQL: Fixed the EXE-Version check (now it works finally :) [Sirius]
-	* Char SQL: Fixed the '0x2b05' reply to the mapserver (now multi - mapservers works again!)
-        * Rewrote skill blocking system that was allowing people to bypass blocking
-          time simply by casting a different skill [celest]
-        * Edited out some inconsistencies with skillnotok [celest]
-        * Corrected Investigate's damage calculation, thanks to matthias [celest]
-        * Generate the remaining entries of the stat point DB if the number of
-          entries in db/statuspoints.txt is less than MAX_LEVEL, or statuspoints.txt
-          was not found [celest]
-        * Try to spawn the player at a default map ("prontera.gat") when logging in if
-          the save point map was not found [celest]
-
-02/13
-        * added an @autoloot switch that Upa-kun has forgotten [Shinomori]
-        * changed pet_skillattack_timer and corrected the poison spore attack
-        * tighter check's on "unknown skill" error; but added prints to trace it
-        * Added Wallex's changes to only evoke script_rid2sd if agitcheck(1) is used
-          [celest]
-        * Merged jA's equipment breaking system into the current one, and corrected
-          items with unbreakable effects in the item_db [celest]
-          - "bonus bUnbreakable,[chance];" changed to
-            "bonus bUnbreakable[Weapon/Armor/Helm/Shield],0;"
-
-02/12
-        * Merged Dexity's pc_statpointdb into pc_readdb, changed statp's string
-          array to short (less memory), and fixed the db not giving status points if
-          character level is above 255 [celest]
-        * fixing and optimizing sharp shooting
-          have implemented two different versions, just have a look and 
-          decide which to use, description is in the code [Shinomori]
-        * Changed default map cache path from db/map.info to save/mapinfo.txt [celest]
-        * Removed old code for Sharp Shooting (still a little buggy) [celest]
-        * Merged Shinomori's code into map_foreachinpath [celest]
-
-02/11
-        * mob.c fixed doubling entries in DROPS LOG, optimized [Lupus]
-        * item_noequip.txt now you can disable named consumable items
-	  during GvG / PvP, too by Maya, optimized and checked [Lupus]
-	NOTE: Get rid of old cards on your server!!! IDs: 4149-4332
-	  before using of this item_db.txt (some cards have changed their IDs)
-	  and it could cause ALIEN cards in your players equipment 8))
-		i.g. a weapon compounding CARDS inserted in armor, etc...
-        * item_db.txt Massive update: [Lupus]
-	  - Added all new missing items (up to st.Valentine's Day Event)
-	  - Added new cards 4149-4332, sorted them and set their sripts.
-	  - Fixed some names, typos, weigths and prices
-	* Commented out old custom cards from Old_Card_Album.txt till we brush them up [Lupus]
-	* Removed old custom cards from MOBs drops [Lupus]
-	  thanks to Landarma(new items templates) Poki#3(removing cards from drops)
-        * Tidied up battle_check_target abit [celest]
-        * Updated traps to affect allies as well in GvG [celest]
-        * Check if login server is online before setting character to online (in SQL),
-          thanks to Alex14 [celest]
-        * Synchronise storage as well when saving character to cut down on item
-          rollbacks or duping, by Yor / Frea [celest]
-        * Added fix for super novices' Guardian Angel system crashing when base_exp = 0
-          thanks to Alex14 [celest]
-        * not realy fixing the "unknown skill" error 
-          but returning skill_castend_damage_id when called with skillid < 0
-          still need to search a reason why it is called with -1 [Shinomori]
-        * EXPERIMENTAL: Reduced memory used for the skill_tree DB by 30+mb [celest]
-        * Added script commands isday and isnight - checks whether its night or 
-          daytime. Example: if(isnight()) ... [celest]
-        * Skill Updates [celest]
-          - Sharp Shooting: Dropped jA's and kA's code and wrote a new
-            map_foreachinpath function in map.c -- about 14 times faster, but still
-            uncomplete
-          - Ankle Snare: Added matthias' suggestion to let agility reduce more trap
-            time, but no less than 3 seconds.
-          - Magnum Break: simplified code a bit, and changed to non-targetting /
-            automatically damages an area around the caster
-          - Tiger Fist: enable it to be used by its own besides as a part of
-            the combo skills
-          - Devotion: Fixed maximum level difference not reading its setting from
-            battle_athena.conf, thanks to leinsirk
-          - Soul Burn: Added some safety checks
-
-02/10
-	* Login/Login SQL: fixed the client version check function [Sirius]
-
-02/09
-	* Added conf-tmpl/readme.txt, explaining the import folder [1066: Ajarn]
-	* SQL Char: Rewrote the char_create function (now it's faster/optimized) [Sirius]
-	* SQL Char: Fixed the reply if a charname is invalid on create (now it replys denied..) [Sirius]
-	* SQL Char: Added a Character limit per Account (can be set in the config) [Sirius]
-	* SQL Char: Optimized some SQL-Querys [Sirius]
-
-02/06
-	* NULL entries for guild data fixed [Credit to Sirius] [1060: Ajarn]
-	* Login server uses  login_db_userid and login_db_user_pass for 
-	  queries now [Credit to Sirius] [1059: Ajarn]
-	* Login server can now check clientversion in clientinfo
-	  [Credit to Sirius] [1059: Ajarn]
-	* Fixed txt build compile problems[1057: MouseJstr]
-	* Corrected end-of-line issues in source code [1056: MouseJstr]
-	* Coded new command: @MOBINFO <monster name|monster N> [Lupus]
-	  the command has also 2 aliases: @monsterinfo, @mi
-	  It shows all Monster stats, Element, Race and stuff
-	  It shows all items with their drop chance
-	  It also shows MVP bonuses (MVP EXP, MVP Drops)	
-
-02/05
-	* increased the max_files allowed in a grf [1054: MouseJstr]
-	* Changed the way char deletion works for SQL [1051: Ajarn]
-	  - If the email the client fails check then check if the
-	    email is blank and the DB email is a@a.com (default)
-	    If so, assume it was created with _M/_F, and delete it
-	* SQL Login accepts _M/_F now [Credit to Sirius] [1049: Ajarn]
-	* Map server now actually reads bind_ip [1048: Ajarn]
-	  Side note: login reads bind_ip, but doesn't use login_ip now.
-	* Made eA compile under AMD64 64-bit native [1047: MouseJstr]
-        * Changed interface binding to use a bind_ip instead of using
-          the login_ip, char_ip, or map_ip.  This lets you still be
-          able to set your WAN IP seperate from what interface you
-          wish to bind to.  Also, the default is back to binding to
-          all interfaces on the machine.  [1045: MouseJstr]
-        * optimizing OnTouch event name generation [Shinomori]
-        * fixing Celests Sharp Shooting [Shinomori]
-        * Updated Sharp Shooting AoE code, thanks to Neodis / k-Athena [celest]
-          - Update: Adapt jA's path_search algorithm and removed the need of struct
-            'dev' in map_session_data
-          - Update: Increase range to 14
-        * Tidied up explicit typecasts in status_get_max_hp, thanks to Ilpalazzo-sama
-          [celest]
-        * Non-MVP / miniboss summoned monsters should give exp, my mistake ^^; [celest]
-          Note:- minibosses are considered a 'Boss' as well, not just MVP's
-        * Fixed a typo that was preventing packet version 5 clients (628sak) from
-          logging in (it was supposed to only block those with 4 or below) [celest]
-
-02/04
-        * Fixed more compile signed/unsigned errors [SVN 1040: MouseJstr]
-	* TXT convertors now read the import command in inter_athena.conf
-	  [SVN 1038: Ajarn]
-        * Fixed some compile errors [SVN 1037: MouseJstr]
-	* Added common/buffer.(c/h) [SVN 1033: Ajarn]
-	* Login server can now set it's ip address in the config [SVN 1033: Ajarn]
-	* Servers now bind to a single ip address, thus allowing multiple servers to
-	  a single port [SVN 1033: Ajarn]
-        * Added experimental code to generate a stack dump when it segfaults, thanks
-          to Ser [celest]
-          - does not work with Cygwin, as it does not have glibc
-          - to enable, edit the Makefile and remove the # on the line:
-
-                # OPT += -DDUMPSTACK -rdynamic
-
-          - What it does: everytime eA crashes it'll generate a file "stackdump_
-            <number>.txt" in your save folder with a backtrace, which you can
-            examine and send to a dev to be fixed.
-
-        * Some more tidying up in status_get_ functions [celest]
-
-02/03
-        * When loading shop scripts automatically check if the prices can be exploited
-          with OC/DC [celest]
-        * If the buying price provided in item_db.txt is above 2x higher than selling
-          price for an item no need to reset and redetermine the buying price [celest]
-        * Fixed a mistake that was causing Ruwach to only work in PvP and PvM [celest]
-        * Added DracoRPG's code for Joint Beat effects, thanks! [celest]
-
-02/02
-	* Added checks to prevent some crashes in skill.c
-	  [Full credit to shinomori] [SVN 1022: Ajarn]
-        * Removed nullpo check in skillnotok() -- otherwise it will display fail 
-          messages for monster skills [celest]
-        * Added crash check for Ice Wall [celest]
-        * Added some optimisations by Ilpalazzo-sama [celest]
-          - reduce mob_data->size variable to 1 bytes
-          - change from if-else to switch statements in buildin_strmobinfo
-
-01/31
-        * Fixed a typo in Pressure causing it to deduct sp from the caster, and remove
-          its sp_rate requirement [celest]
-        * Updated skill_range_leniency code when casting a ground targetting spell      
-          ( as in Revision 968) [celest]
-        * Added Karma and Manner to const.txt
-          -- To change a player's alignment to more Good/Evil in scripting for example,
-             use:
-                 set Karma, Karma + <number here>;
-
-             In older exe's (11-08 or older) you can actually check your karma in the
-             character alignment screen (alt-A)
-             The rest is up to your scripting creativity ^^
-
-        * Delete players' ID from id_db when kicking everyone from the map-server due
-          to char disconnection -- Fixes an odd crash with lazy mob AI [celest]
-	* Added at(@) command @autoloot, which turns autoloot on or off for the
-	  player who uses it [Upa-Kun]
-	  
-01/29
-	* Fixed Storage Bug with Named Stackable items. Thanks to Nimion [Lupus]
-		e.g. Arrows, Iron, Elemental stones, etc...
-        * Added a crash check to Safety Wall, thanks to LebrEf[TaVu] / Freya for
-          pointing it out [celest]
-        * Added some optimisations in clif_parse_MapMove, by Ilpalazzo-sama [celest]
-
-01/28
-        * Fixed a typo that was causing /in to always report failure even when the
-          name was removed from the ignore list [celest]
-        * Link "wisexin", "wisexlist" and "wisall" to the PM ignore functions, and
-         "friendslistadd" and "friendslistremove" to the friends list functions
-          when parsing the packet DB [celest]
-        * added clif_parse_PMIgnoreList (packet 0xd3) from jA [celest]
-        * Added DUMP_ALL_PACKETS and moved dump packets code in clif_parse a bit to
-          support it [celest]
-        * Added base code for Party Item Sharing -- still needs some work in client-
-          server support [celest]
-	* new GC link http://amber.stormbirds.org/~joshs/gc6.4.tar.gz
-	  This fixes some issues... works better
-        * Added macros skill_chk and skill_get to check for out of bounds errors when
-          retrieving info from the skill_db [celest]
-
-01/27
-        * Added memory leak fixes with temporary script variables and pets-related
-          actions, by End_of_exam / jA 1109 [celest]
-        * Kick all characters when the char server disconnects from the map
-          server [celest]
-        * Added @changelook command for spriters to test view ID's [celest]
-        * Added a check to Pneuma to prevent crashing, thanks to LebrEf[TaVu]/Freya for
-          pointing it out [celest] [celest]
-        * Tweaked garbage collection code after feedback from users
-        [SVN 1002: MouseJstr]
-	* Fixed TRADE exploits (it cures proxy hack / vending+trade hack) thanks to Freya [Lupus]
-
-01/26
-        * Added bug fix for a memory leak caused when a character logs out,
-          by End_of_exam / jA 1108 [celest]
-        * Fixed a bug in gettick cache when compiling in Windows, thanks to Shinomori
-          (jA 1094) [celest]
-        * Added updates from jA 1092 [celest]
-          - Changed "read_map_from_bitmap" to "read_map_from_cache",
-            "map_bitmap_path" to "map_cache_file" in map_athena
-          - Fixed item effects not showing when only one was used
-          - Fixed a bug in Safety Wall
-          - Allow only either Storm Gust or Lord of Vermillion to cause damage if
-            stacked together
-          - Added path_search_long, map_find_skill_unit_oncell
-
-        * Added status_get_sc_def for calculating resistance against status
-          abnormalities [celest]
-        * Added status.c and status.h of jA 1091 update and moved some functions into
-          the new source files:
-          -- skill_status_change_  ->  status_change_
-          -- battle_get_  ->  status_get_
-          -- pc_calc_  ->  status_calc_
-          -- pc_getrefinebonus and pc_percentrefinery  ->  status_getrefinebonus and
-             status_percentrefinery
-
-        * Updated auto_counter_type's description in battle_athena, thanks to 
-          akusarujin for pointing it out [celest]
-        * Removed some unnecessary skill level checks in battle.c [celest]
-        * Removed my changes to /stable/Makefile which has libGC enabled by default
-          that i've accidentally commited, sorry ^^; [celest]
-        * Removed an unnecessary "cloneskill_lv" from map_session_data [celest]
-	* Removed WATER.TXT (this file wasn't used at all. There's no such mapflag as WATER even). [Lupus]
-	* Added Water Height of New Yuno Fileds 9 and 11.
-	  Now Water Ball works there as should. Wizards could levelup on sleepers, too. [Lupus]
-        * libGC isn't ready to be the default quite yet... [MouseJstr]
-        
-          Enough people have asked so... Once you grab a copy of the
-          libGC library from  (http://amber.stormbirds.org/~joshs/gc6.3.tar),
-          you start up a bash shell from inside cygwin and untar
-          the gc6.3.tar.  This will produce a gc6.3 directory.  Then
-          cd into that directory and type ./configure.  Once that is
-          done you type "make" and then "make install".  This will
-          spray the various includes and libraries all over your
-          cygwin install (most in /usr/local).  
-
-          Now, edit Makefile and change the CC line to use the
-
-             CC = gcc -pipe -DGCOLLECT
-
-          entry.  Also change the GCLIB to 
-
-             GCLIB = -L/usr/local/lib -lgc
-
-          Remember to comment out the ones no longer used.  Do a clean
-          build and good luck.  Obviously,  this has not been tested
-          by that many people so you really are on the cutting edge
-          but if you have good results, send me a note
-          (joshs@stormbirds.org) so that we can see if it really is
-          ready for prime time.
-
-          What should you see?  Well, the map-server should not
-          grow/consume extra memory anymore.  More so, it should use
-          dramatically less memory then it did before using the
-          garbage collector.
-
-          The downside is that it will consume a little more CPU...
-
-          The question is, how much?  how laggy?   what effect on lots
-          of players?  I've heard stories saying it makes the server
-          unplayable and others told me that they saw no
-          player-visible effects at all.
-
-
-01/25
-        * Fixed TXT compile problems with libGC [celest]
-        * Added "Clients older than 2004-09-06aSakray" option to packet_ver_flag in
-          battle_athena, just in case server owners still prefer the older clients.
-          With so many changes to Sakray over the past months its much better upgrading
-          to the newer clients (November or higher recommended) available ;P [celest]
-        * Merged Full Strip into jA's tidier stripping skills code -- also fixes
-          a typo that was causing Full Strip to do the reverse effect instead,
-          and the skill not updating the target's status after successfully unequipping
-          items [celest]
-        * Tidy up the 4 chemical protection skills into one code block [celest]
-        * Corrected Slim Pitcher's code -- sorry, i missed a few things ^^; [celest]
-
-01/24
-        * Fixed a typo in Provoke that was causing crashes [celest]
-        * Fixed another compile warning in src/char/char.c
-          [SVN 985] [MouseJstr]
-        * Fixed a account wipe bug in login/login.c (Thanks Wallex)
-          [SVN 984] [MouseJstr]
-        * Fixed a crash in char_sql/char.c where people were selecting
-          chars before requesting connections [SVN 983] [MouseJstr]
-        * some G++ compile tweaks and got through several files in the
-        map server - [SVN 976]   [MouseJstr]
-
-          Why are we doing a C++ conversion?  We have a lot of duplicate
-          code and would like to make the "classes" in the server share
-          code.. For example, a pet should be able to share code from
-          the player or from a mob.  Similerly, introducing a new type
-          of entity in the game should be as simple as creating a
-          sub-class instead of having to crawl through the entire source
-          tree searching for every class check and introducing handler
-          code in for your new type.
-
-          Finally, while a garbage collector is "cool", it would still
-          be nice to have enough object knowledge on how to clean up
-          data that it is not absolutely required.  It is faster for
-          us to clean up our own messes then introduce a whole system
-          for cleaning up after ourselves.
-
-          Is there a C++ performance penalty?  Not if the code is
-          written correctly.   For example
-                  1) No templates - code bloat and destroys cpu cache
-                     coheriancy
-                  2) No C++ exceptions - slows down entering and
-                     exiting functions
-                  3) No operator overloading - makes it hard to
-                     understand what is going on.
-                  4) No C++ STL libraries - Templates, huge, bloated,
-                     unportable
-                  5) No method inlining - code bloat and reduces cache
-                     coheriancy.  Let the optimizer do it...
-
-01/23
-	* char-server (SQL & TXT), login-server (SQL & TXT), and txt-coonvertors
-	  (char and login) all compile on g++ now [svn 975] [Ajarn]
-	* Fixed the sizeof errors in g++ [SVN 972] [Ajarn]
-	* Reverted back some of the char* changes [SVN 972] [Ajarn]
-	* Changed parse_script to now return char* [SVN 969] [Ajarn] 
-	* Converted run_script and run_script_main from unsigned char* to char*
-	  [SVN 969] [Ajarn]
-	* Forgot a couple small changes [SVN 35] [Ajarn]
-	* Changed map_data.gat and map_data_other_server.gat from unsigned char*
-	  to char* (this might be needed, because of unicode or something, please
-	  correct me if I'm wrong) [SVN 34] [Ajarn]
-	* Converted decode_zip, encode_zip, remove_control_chars, mapif_sendall*,
-	  and e_mail_check to use char* instead of unsigned char* (again, please test)
-	  [SVN 34] [Ajarn]
-        * Modified skill unit group checking in skill_unit_onplace that might have
-          been causing crashes [celest]
-        * Updated packet 0x143 length's for version 14 (2004-11-01Sakexe) and version
-          16 (2005-01-10Sakexe), thanks to jathena and ice2big [celest]
-        * Fixed login-server compile error with the "new" -> "new_" changes [celest]
-
-01/22
-	* Fixed an error that was in my last commit (optimising g++ build) [SVN 29]
-	  [Ajarn]
-	* Made strlib functions char*, instead of unsigned char*. Strings are meant
-	  to be char. (Shouldn't break anything, but might, please test this for me)
-	  [SVN 26] [Ajarn]
-	* Added cast for TXT version [SVN 25] [Ajarn]
-	* Added cast from allocation calls, from void* to intended type [SVN 24] [Ajarn]
-	* Changed bool -> bool_. Still need to make convertions between
-	  char* and unsigned char* valid, and some other convertions too.
-	  Also, sizeof is being used wierd in map.c, at least g++
-	  complains [SVN 22] [Ajarn]
-	* Changed the rest of the class variable names to class_ and all the new
-	  variable names to new_, for futher g++ support [SVN 21] [Ajarn]
-        * Update both caster and target's SP after using Soul Change -- thanks to Aalye
-          / Freya [celest]
-        * Force a monster to switch attack target when being casted Provoke [celest]
-        * Corrected description for @enablenpc -- "@npcon" -> "@enablenpc" [celest]
-        * Since job normalising is still buggy require all 1st class skills to check
-          for Basic Skill level when calculating the skill tree [celest]
-
-01/21
-        * Updated packet DB configurations : enable_packet_db, packet_db_ver,
-          -- check the .txt for description [celest]
-
-          Note: For people having connection problems try setting 'enable_packet_db'
-          to 'no'... and use the latest client (01-10Sakexe)
-
-        * Fixed a small typo in 12-06's packets -- 21b => 21d [celest]
-        * Updated packet_db.txt to only contain the latest version, like jAthena,
-          since there's not much point to re-read packets eA already supports 
-          (although if you remove all the //'s it can still read multiple versions)
-          [celest]
-        * Added clif_config in clif.c - for keeping packet/client connections related
-          stuff [celest]
-        * Send 'Game Exe not latest version' to a client if it hasn't been authentified
-          yet, but is sending a non-connection-related packet to prevent crashing
-          -- assume the client is using an unknown exe [celest]
-
-01/20
-	* Fixed compile time problems with the non-GC case [MouseJstr]
-	* Introduced aMallocA and aCallocA
-
-	  These two functions allocate "atomic" memory which means 
-	  "memory that does not contain references to other memory".
-
-	  This lets the garbage collector ignore these objects when searching
-	  memory for references to other objects dramatically increasing
-	  performance of the GC.  
-
-	  When in doubt, use aMalloc and aCalloc.  It is better to add
-	  a tiny bit of work to the GC then do cause a crash due to memory
-	  being cleaned up when it shouldn't.
-	  [MouseJstr]
-	* Modified all calls to aMalloc and aCalloc that reference
-	  atomic memory to use aMallocA and aCallocA
-	  [MouseJstr]
-	* Modified the socket buffer allocator to use "atomic" memory
-	  for the fifo data buffers [MouseJstr]
-01/19
-	* added support for the Hans-J. Boehm libC garbage collector
-	  (A copy is in http://amber.stormbirds.org/~joshs/gc6.3.tar).  
-
-	  It is ABSOLUTELY critical for people to use
-	  aFree/aMalloc/aCalloc/aStrdup for this to work.  If somebody
-	  has just used free or malloc, this will crash when used with
-	  the garbage collector.  
-
-	  A amusing environmental variable to set is GC_PRINT_STATS (to 1)
-	  so that you see real time statistics of leaked data being
-	  recovered.  
-
-	  grab a copy of the gc6.3.tar.. build it .. install it.. 
-	  modify the Makefile to have the 
-
-		CC = gcc -pipe -DGCOLLECT
-		GCLIB = -lgc
-
-	  lines... and make the sql servers (the txt server doesn't
-	  build using this right now due to stupid Makefile issues)
-
-	  [MouseJstr]
-	* SVN 3 on http://svn.stormbirds.org/svn/eathena will be what
-	  I diff against when I merge back into delta.. if we ever merge
-	  back into delta   [MouseJstr]
-        * Removed 12-06 Sakexe detection, since it doesn't seem to work, and
-          might be conflicting with 10-25 clients [celest]
-        * Update the Soul Burn target's SP when it has been successfully reduced to 0,
-          thanks to Aalye / Freya [celest]
-        * Moved SC_PRESERVE and SC_BATTLEORDERS's id so they'll display a status icon
-          when cast, thanks XiaoLin of cAthena [celest]
-        * Added missing code for Preserve -- i totally forgot to add it ^^; [celest]
-
-01/18
-        * Added some skill bug fixes, thanks to Aalye / Freya [celest]
-          - stop player attacking if the target goes into hiding
-          - fixed Sword Reject not working against swords, only daggers
-          - additional check in case Marionette Control doesn't end properly even
-            when one of the partners has logged off
-        * Added stun, bleeding and SP loss effect for Pressure, thanks to DracoRpg
-          [celest]
-        * TEST: Fixed more compile warnings in MSVC [celest]
-        * TEST: Fixed some compile errors in MS Visual C++, thanks to Ser [celest]
-
-01/17
-        * Some rewrites in skill_delayfix [celest]
-          - If the delay is < 0, add the weapon aspd delay to it
-          - If the skill is not weapon type, and has 0 delay, add 300ms as default
-        * Added min_skill_delay_limit as the minimum allowed delay for any skills
-          [celest]
-        * Some tidying up in battle_get_ functions [celest]
-        * Set exp table and job bonus table to 0 before reading - might solve some
-          memory bugs [celest]
-        * Updated skill range leniency code - If possible try and move towards the
-          skill target so that when casting it no longer falls out of range [celest]
-
-01/15
-        * Added effects to enemies for Gospel [celest]
-        * Added mobs spawn to all Yuno fields (according to 4th Jan patch) [Lupus]
-
-01/14
-        * Added party supporting effects for Gospel [celest]
-
-01/13
-        * Added and testing support for 2004-12-06Sakexe [celest]
-        * Removed emblem changing requiring Glory of Guild limited to TXT only [celest]
-        * Corrected a typo preventing Plagiarism to work, thanks to orn [celest]
-        * Fixed Berzebub card and other 'reduce cast delays' equipment not working
-          [celest]
-        * Updated packet_db.txt loading to support reading into multiple packet
-          versions [celest]
-        * Removed packet_db_ver defining in packet_db.txt -- it'll determine itself
-          based on MAX_PACKET_VER [celest]
-        * Integrated packet size and function DB's into 1 packet_db [celest]
-        * Added MAX_PACKET_VER -- maximum versions supported by eA, including the
-          packet_db -- and changed packet size and function DB's to use it [celest]
-        * When sending 'Game exe not latest version' packet don't close the session 
-          immediately so it will still be delivered [celest]
-        * Added map-server display if an unidentified client was rejected --
-          also fixes the 'empty string sent to _showmessage' [celest]
-	* Added a bug - Celest, LOOK AT THIS BUG ASAP. [Codemaster]
-        * Tided up/fixed some mobs [Lupus]
-
-01/12
-        * Implemented Vending Log [Lupus]
-	  TODO: use log option to log only important deals (much money, rare items, etc)
-
-01/11
-        * Added Shinomori's changes to npc event timers (I never realised it, thanks
-          ^^; ) [celest]
-        * Updated clif.c to be able to identify client versions based on the packet DB
-          [celest]
-        * Correct packet_db_ver to the maximum version allowed if it was set too high 
-          or too low in packet_db.txt [celest]
-        * Added support for 2005-01-10Sakexe [celest]
-        * Updated packet functions for 2004-11-08 and 2004-12-06 (Note: eA *can*
-          support 12-06, but still doesn't recognise it... so unless we find a way,
-          it is *not* supported yet) [celest]
-        * Updated packet_db, thanks to Sara-chan [celest]
-        * REMOVED support for clients before packet version 10 (2004-08-25 and 
-          earlier) - the client will receive a 'Game Exe not latest version' message
-          [celest]
-        * Added a check to prevent crashing when trying to log in with
-          2005-01-10aSakexe in servers that don't support it [celest]          
-	* Added a fix to @sound where if you forgot the .wav exention, i'd attempt to play the file without it (it adds the .wav) [Codemaster] [SVN 949]
-	* Added @disguiseall / @undisguiseall [Codemaster] [SVN 949]
-	* Added misc. clif.c fixes (jAthena added alot of close(fd)'s, so i added them, too) [Codemaster] [SVN 949]
-	* Added bug reports - Celest, you might want to check one of those out [Codemaster] [SVN 949]
-        * Fixed a bug in clif.c which didn't allow to enther the map-server.
-	  It worked under win32, but didn't under Linux. [Lupus]
-
-01/10
-        * Completed adding packet DB reading... still needs (a lot) more work in
-          clif.c [celest]
-        * Added Shinomori's suggestions for npc timers, thanks again ^^ [celest]
-        * Removed checking for script event timers' length, and added Shinomori's
-          changes [celest]
-        * Start adding packet DB reading [celest]
-        * Added 'max_eventtimer_length' (default is 32) to script_athena.conf. [celest]
-          Some event timers with names longer than 24 could cause the server to close
-          itself, change this if you need support for even longer names
-        * Removed PCLoginEvent requiring 'PCLoginEvent' for the player to be set to 1
-          first to be activated. [celest]
-        * Added Shinomori and orn's fix for the skill tree to only check the first
-          required skill in the DB and skipping the rest [celest]
-        * Modified 'wedding' script command to work with "OnTimer" scripts even without
-          doing 'attachnpctimer' (The 'player not attached' error will still display,
-          but the effect will appear *over the NPC* instead of the player...
-          at least it won't fail ^^) [celest]
-        * Added 'attachnpctimer' script command for attaching the player to the current
-          npc's timer in "OnTimerxxxx" scripts, thanks to Wallex for the idea. [celest]
-          Syntax:
-                 attachnpctimer;
-                 attachnpctimer "<Player Name">;
-
-          Check /npc/sample/npc_test_npctimer2.txt for example.
-        * Added 'detachnpctimer' script command for detaching players from the npc's
-          timer. [celest] Syntax:
-                 detachnpctimer;
-                 detachnpctimer "<NPC Name">;
-
-	* Added 'OnInterIfInitOnce' for WoE scripts & modified the WoE scripts as well [Ajarn & Codemaster] [Thanks to FREYA] [SVN 943]
-	* Added the @sound command and the NPC command of soundeffectall
-	 - works just like soundeffect, but plays for everyone in the area [Codemaster] [SVN 942]
-	* Don't allow Pets to attack Guardians outside of WoE [Codemaster] [SVN 940]
-	* Require 15% of HP or more for WE_MALE skill [Codemaster] [SVN 940]
-	* Require 15% of SP or more for WE_FEMALE skill [Codemaster] [SVN 940]
-
-01/07
-        * Upon changing to high novice 100 stat points should be given, not 88 [celest]
-        * Give high novices First Aid and Trick Dead upon job changing [celest]
-        * Remove some unnecessary checks in battle.c [celest]
-        * Added some checks to prevent novices still allowed to attack when using
-          Trick Dead [celest]
-        * Added 'summon' script command. Syntax:
-
-          	summon <monster name>,<monster id>[,<event>];
-
-          Example: 'summon "Poring", 1002, "OnPoringKilled"; 'will summon (note:
-                   not *spawn*) 1 poring that'll help its master for 1 minute,
-                   and activate the "OnPoringKilled" event when killed.
-                   'summon "--ja--",-1;' will summon a random monster.
-
-        * Added Wallex's fix for the wedding script functions [celest]
-        * Added the below-mentioned alive packet to SQL's char and login [celest]
-        * Enabled login server 'anti-freeze' by default as a temporary solution
-          to char-login disconnection [celest]
-        * The TXT char server was rejecting login's "i'm alive" packet and disconnecting
-          it... fixed [celest]
-        * Stall_time wasn't being read in login_athena at all (not by the login server,
-          because the code didn't read it, nor by TXT map server, since its in the SQL
-          inter_athena.conf reading)... so moved it to inter_athena.conf, and
-          change sql_config_read in map.c to inter_config_read [celest]
-        * Some tidying up of battle_get_def and _def2 [celest]
-        * Added 'bDelayrate' and changed Phen card, Marduk Card and Berzebub Card's
-          effects to use this instead of bCastrate (which was reducing casting time,
-          not delay time) [celest]
-        * Some tidying up of skill_castfix and skill_delayfix [celest]
-        * Added Filougarou's fix for Bowling Bash causing it to only display damage, 
-          but doesn't do any - thanks! [celest]
-        * Set delay_dependon_dex in battle_athena to 'no' by default [celest]
-
-          Note: Just to clarify things, on official servers dex is not supposed to 
-                reduce skill delays, only Poem of Bragi and Berzebub card does!
-
-        * Fixed typo in skill_delayfix - reduce delays only if delaynodex was *not* set,
-          sorry ^^; [celest]
-
-01/06
-	* Fixed various memory corruptions causing crashes (SVN 925) [MouseJstr]
-	* Fixed typo in src/map/map.c causing compile 
-	  errors (SVN 924) [MouseJstr]
-	* Removed the alive_timer mechanism entirly replaced with
-	  a stall detection mechanism that will disconnect a player
-	  who has not sent any data for a configurable 
-	  (conf/login_athena.conf:stall_time) amount of time.  The default
-	  is currently 60 seconds.
-
-	  The root cause of the disconnect error is that some NAT based
-	  routers are not dropping the TCP connection when the aliased
-	  machine goes offline abnormally.   This means that we are seeing
-	  a stalled but perfectly valid TCP connection.
-
-	  (SVN 924) [MouseJstr]
-01/05
-	* Fixed some typos in map_versionscreen() [MC Cameri]
-	* Removed loop freeing in map-server's do_final(), it was causing seg faults [MC Cameri]
-	* Finished do_storage_final() in map-server's do_final(), it was there but doing nothing [MC Cameri]
-	* Fixed Celest's typo making all vended items cost 0 zeny [Codemaster] [SVN 919]
-        * If a vending item was priced at 0 it'll be auto changed to 1million [celest]
-        * Fixed TXT logging - log_athena.conf reading was kind of messed up [celest]
-        * Added a simplified version of Qamera's OnConnect: OnDisconnect: OnDeath: 
-          NPC events mod, (All credits go to him.) except adapted based on eA's current
-          PCLoginEvent. (by davidsiaw) [celest]
-          - Currently only 4 events have been added: PCDieEvent, PCKillEvent, 
-            PCLogoutEvent and PCLoginEvent
-          - For notes and usage example check /npc/sample/PCLoginEvent.txt (by
-            davidsiaw)
-          - To enable them for a player in a script, do
-            "set <name of event>, <0 or 1>;"
-            (yes it's saved in a permanent character variable and auto read every time)
-          - Simply put, if any of them is set to 1 the appropiate event will activate
-          p.s - Scripters who are already using PcLoginEvent, you'll need to add a
-                "set PCLoginEvent, 1;" now, sorry for the trouble.
-
-        * Optimised PCLoginEvent activation a bit [celest]
-        * Set 'droprate0item''s default to 'yes' so that items with 0 rate will never
-          drop [celest]
-        * Look at item type other than item ID as well to check whether it is a card
-          in card-related script commands - better support for custom items [celest]
-        * Reset all skill variables if the skill fails so certain skills can't be
-          abused (such as Warp, thanks to Alex14 for pointing it out) [celest]
-        * Added /mapflag/noreturn.txt for disabling butterfly wings (not fly wings)
-          [celest]
-        * Fixed skill_require_db reading somehow getting corrupted if weapons usable
-          for the skill is more than 20, thus causing the skills to fail everytime 
-          [celest]
-        * Fixed @killmonster crashing the server with summoned monsters, thanks to 
-          Alex14 [celest]
-        * Added double_connection_system to battle_athena (not completed yet) [celest]
-
-01/04
-	* Fixed GM Command Logging (Not sure why TXT logging still isn't working properly :( ) [Codemaster] [SVN 907]
-	* Fixed one of Lupus' additions to the item_db [Codemaster] [SVN 907]
-        * Fixed Seismic Weapon Skill (it 100% didn't break target's weapon at 4 level of the skill) [Lupus]
-
-01/02
-        * Re-fixed map-server crashing if an empty line is in skill_castnodex.txt,
-          thanks to Alex14 for pointing it out (SVN 899) [celest]
-        * Modified breaking rates calculating - meltdown's chances is separated from
-          self breaking chances (SVN 900)  [celest]
-        * Reduced MAX_SKILL_LEVEL to 10 to save a bit of memory and speed [celest]
-        * Tidied up parts in skill_castfix a bit (SVN 895) [celest]
-        * Fixed map-server crashing if an empty line was added in any of the skill-xx
-          db files  (SVN 895) [celest]
-        * Updated skill_castnodex reading - An *optional* 3rd value can be added to set
-          whether a skill's delay time can be affected by dex  (SVN 895) [celest]
-          Example: 46,1,1 - double strafe's delay is not affected by dex
-                   46,1,0:0:0:0:1 - only level 5 double strafe is not affected by dex
-	* More atempts at memory leak fixes [Codemaster] [SVN 890]
-        * Updated weapon breaking rates, thanks to DracoRPG  (SVN 891) [celest]
-        * Optimized enchanting skills success rates calculation, thanks to Wallex
-          (you were right! ^^; )  (SVN 891) [celest]
-        * Modified Spiral Pierce and Breaker to type ranged (SVN 891) [celest]
-
-01/01/05
-	* Attempted to fix a memory leak [Codemaster] - tell me if it works XD (NPC/Mob memory leak in npc_parse_mob(...)) [SVN 886]
-	* Added a char config that allows GMs that have a certain level or above to 
-	  bypass the server's user limit [Codemaster]
-	* Changed some create arrow outputs for new kRO 12/21/04 patch [Aria]
-	* Fixed some respawn delays of MVP/Miniboss monsters. Redo Umbala/Niflheim fields, added missing mobs, corrected
-	  monsters quantity. In Niflheim fixed wrong Lord of Death monster ID. [Lupus]
-12/30
-        * Added ispartneron, getpartnerid, and warppartner script
-          commands to properly support jawaii NPC's (SVN 880) [MouseJstr]
-        * Moved supernovice guardian angel messages to msg_athena.conf [celest]
-
-12/29
-	* Fix account register wipe issue (SVN 868) [MouseJstr]
-	* Double storage/lag exploit fixed (SVN 867) [MouseJstr]
-	* Another -1 alive_timer fix (SVN 866) [MouseJstr]
-	* Added @dmstart and @dmtick for debugging malloc tests [MouseJstr]
-	* Fix some more compile errors on different platforms [MouseJstr]
-	* Fixing a crash if you change the name of a pet you don't have (SVN 863) [MouseJstr]
-	* Eliminated src/common/malloc.c when not needed [MouseJstr]
-	* Some code cleanup in prep for new debugging malloc (SVN 861) [MouseJstr]
-        * Updated Soul Breaker's damage calculation [celest]
-        * Updated Meteor Assault's cast delay to be not affected by dex [celest]
-        * Changed int_guild.c so it will calculate average guild level only if > 0
-          members are found - prevent divide by zero crashes (why would an empty guild
-          be requested to update its' member info in the first place?) [celest]
-        * Added Shinomori's fixes for string copying in script.c [celest]
-	* Removed @giveitem since #item it's the one that does this and added some of it's support to #item [MC Cameri]
-	  -#item <item_name> <item_count> <charname|all|everyone>
-	* Uncommented out import in charcommand_athena.conf, there is
-          need to have it commented (all the others ones are
-          uncommented) [Ajarn]
-
-12/28
-        * When restarting the char-server,  reset the online status
-          of all characters and guild-members (SVN 849) [MouseJstr]
-	* Fix double timer_delete caused by pc_alive_timer (SVN 848)
-	  [MouseJstr]
-	* Fixed typo in npcs_athena.conf (mc_cameri verses mc_Cameri),
-	  thanks Mellow972 for pointing that out (SVN 845) [MouseJstr]
-        * Reduced weapon breaking chance for Overthrust, thanks Draco - i almost
-          forgot to add this update [celest]
-	* added checks into the skill code to prevent proxy's/bots
-	  from crashing the server by using skillid's that
-	  are WAY out of range (SVN 841) [MouseJstr]
-	* Fixed clif.c errors that prevent old clients from being used. [nsstrunks]
-	* Fixed @jobchange to not default to upper (SVN 837) [MouseJstr]
-	* Fixed a compile error in @mobsearch (SVN 836) [MouseJstr]
-12/27
-        * Updated 1206's packet fuctions in clif.c [celest]
-        * Updated the new guild skills - cannot be reused within 5 minutes of 
-          activating it [celest]
-        * Added @mobsearch, @cleanmap and @giveitem from jA [celest]
-	* Fixed the guild issues (SVN 832) [MouseJstr]
-        * Updated description for player_check_cloak_type [celest]
-        * Increased skill range limitations in pc_no_footset [celest]
-        * Added exp_calc_type - to alternate between 3 different versions for exp
-          calculating [celest]
-	* Reinitialized variable 'c' in map_readmap, it's supposed to have a start value. Ex. '-'. [MC Cameri]
-	* Commented out dump_timer_heap() again... [MC Cameri]
-	* Added include of string.h in malloc.c, was causing compile errors/warnings [MC Cameri]
-	* Modified the map progress bar to reduce updates (SVN 829) [MouseJstr]
-        * Updated map cache system from jA 1087 - change read_map_from_bitmap to 2 to
-          enable zlib compression [celest]
-	* don't delete alive_timers of -1  (SVN 823) [MouseJstr]
-	* switched malloc,calloc,realloc to aMalloc, aCalloc, aRealloc
-	  so support the use of a garbage collector (SVN 821) [MouseJstr]
-	* Removed some printf's from map-sql [MC Cameri]
-	* Uncommented MSG_SQL, for _ShowMessage(), usage: ShowSQL() [MC Cameri]
-	* Removed fixed bugs in dev/bugs.txt [MC Cameri]
-        * Now I remember what I was smoking.. (SVN 819) [MouseJstr]
-	* Fixed a bug in the guild_castle persistance code
-	  in char_sql.  What was I smoking?  (SVN: 816) [MouseJstr]
-        * Corrected a bad error in itemdb_read_itemslottable [celest]
-        * Corrected wrong logging of text in int_guild.c, thanks to Alex14 [celest]
-        * Summoned monsters will not give exp and items [celest]
-        * Added the 6 new Yuno fields to maps_athena.conf [celest]
-        * Added some Freya's optimisations in clif_parse [celest]
-        * Added clif_update_mobhp - monsters' hp viewing now updates properly [celest]
-        * Set alive_timer to -1 when quitting, not 0, or the map server might assume
-          its still active [celest]
-	* Changed the *_override_grffile to no by default, because many were having issues with it [Ajarn]
-
-12/26
-	* Fixed ANOTHER pet crash (double free) (SVN: 804) [MouseJstr]
-        * Added a proper #define for MAX_VENDING (SVN: 802) [MouseJstr]
-	* Fixed crash associated with vending more then 12 items
-	  which walked on memory.. corrupting the pet data 	
-	  structure (SVN: 801) [MouseJstr]
-	* Fixed a crash that resulted when disconnecting (SVN 800)
-	  the new client when the old client is still connected [MouseJstr]
-	* Fixed some gcc 2.95 compile errors [MouseJstr]
-	* Fixed some array bounds errors (SVN 799) [MouseJstr]
-	* @mapexit (and do_final) now persist all data to the
-	  char server before exiting to eliminate storage/inventory
-	  inconsistancies.. [MouseJstr]  (SVN 793)
-	* Some cleanup of spiritball memory management [MouseJstr] 
-	* Dramatic performance work for exp updates to sql.  Previously, [MouseJstr]
-	  when u killed a mob (in party share), it would cause the char_server to 
-
-	  	1) Delete all guilds for all members of your party
-	  	2) Re-create all guilds for all members of your party with the new exp
-	     		values.
-
-          Now it just generates 2 sql statements per party member,  
-
-		1) update the guild exp, 
-		2) update the guild_member exp.
-
-
-      		src/common/socket.c src/common/socket.h src/char_sql/char.c 
-		src/char_sql/int_guild.c src/map/chrif.h src/map/pc.c 
-		src/map/map.c src/map/chrif.c
-
-        * Disabled import charcommand_conf.txt by default [celest]
-        * Added Bitmap File system from jA 1086 - automatically generates a cache
-          from maps in the GRF to speed up loading. You can enable/disable it with
-          read_map_from_bitmap in map_athena.conf. Note: AFM maps will override this
-          cache [celest]
-        * Added --run_once flag for the map server for testing purposes - closes itself
-          when everything is done loading [celest]
-        * Added some code for Moonlit Petals and Basilica [celest]
-
-12/24
-        * Added suggested fix when client disconnected [celest]
-          - send "disconnected due to time gap" and close session when timed out
-          - send "server still recognises last login" message and close existing
-            session when client reconnects
-	* Upped windwalk to lv 10 in skill_tree [MouseJstr]
-	* Fixed a scripting crash (SVN: 781) [MouseJstr]
-	* removed @changesex and @charchangesex until we can
-	  fix it properly [MouseJstr]
-	* Fixed item-dup bug in storage and cart [MouseJstr]
-	* @skilltree was looking outside of the particular class
-	  of the char to see if they could do a skill [MouseJstr]
-	* Fixed a calc_skill_tree bug where too many skills were
-	  visible [MouseJstr]
-	* Added Dev/GDB_reports.txt, take a look in it devs [Ajarn]
-        * Corrected description for player_skill_nofootset and monster_skill_nofootset
-          in battle_athena.conf [celest]
-        * Added a special NPC Logging command 'logmes'. It works as mes"Hello world!"; 
-	  It is useful for such NPC as BANKS, CASINO, etc. To keep track of won money, etc.
-	  Check kafra_bank.txt 1.1 for example.
-		Note:	mes = otput into client's NPC window
-			debugmes = output into map-server window
-			logmes = output into lognpc log DB.
-
-12/23
-	* Fixed some bugs in the clif.c changes (SVN 766 to SVN 767) [MouseJstr]
-	* Added ayo monsters to @disguise
-	* Began updated clif.c to work with 1108 and 1206, tested and works [nsstrunks]
-        * Fixed skills still being available after a job change [MouseJstr]
-        * Changed pc_alive_timer to use map_id2sd - should be more accurate [celest]
-        * Added jA 1084's fix to mob.c - check whether the player is still alive
-          when calculating exp [celest]
-        * Added clif_changed_dir, clif_adopt_process [celest]
-        * updated Backstab to show the target's new direction [celest]
-        * Corrected the file types of several files in the SVN tree to
-          fix the newline issues [MouseJstr]
-	* Updated mapflags (added missing payon_in03,ayo_in01,ayo_in02, que_god01, que_god02) [Lupus]
-        * Updated Sacrifice : it's now self-activating, and lasts for 5 attacks [celest]
-        * Fixed compile errors in party.c [celest]
-        * Moved SC_EDP back to 114 [celest]
-        * Added some of Shinomori's fixes [celest]
-        * Added optimisation in intif_parse_WisMessage from Freya [celest]
-
-12/22
-	* Eliminated skill tree mapping since we have entries
-	  for all the classes in the skill_tree.txt files  [MouseJstr]
-        * Added finding_ore_rate to battle_athena.conf, thanks to orn [celest]
-	* Changed how party exp is passed out to eliminate players
-	  current in a chat window or those who havn't moved or attacked
-	  in 2 minutes [MouseJstr]
-	* Fixed a bug in resnametable from local directories,
-	  by fixing a bug in grfio_read causing memory corruptions [MouseJstr]
-        * Rearranged how guild messages, gm messages, and party messages
-          are moved back and forth between the inter server and the
-          map server.. eliminating unneeded round trips to eliminate
-          lag on a loaded char-server.  [MouseJstr]
-
-            src\char_sql\int_party.c src\char_sql\int_guild.c
-            src\char_sql\inter.c src\map\atcommand.c src\map\guild.c
-            src\map\intif.c src\map\party.c src\char\int_guild.c
-            src\char\inter.c src\char\int_party.c 
-
-	* Reverted npc.c back to before jA 1081. This fixes warp portals missing and other npc bugs [Ajarn]
-	* Added conditional SHOW_DEBUG_MSG for displaying ShowDebug()'s output, it was missing before [MC Cameri]
-	* Added #zeny, removed @charzeny [MC Cameri]
-        * Fixed reading itemslottable.txt causing cards to become unuseable [celest]
-        * Added error message if file renaming in lock_fclose fails [celest]
-        * Fixed frost diver not working ... my bad =p [celest]
-        * Corrected typo in clif_hpmeter - md -> sd [celest]
-        * Check if the player has been authentified by the char server before
-          clearing any timers in map_quit [celest]
-        * Added eventtimercount and timerskill_count - check these before clearing
-          or deleting timers [celest]
-        * Added sc_count check in skill_stop_dancing [celest]
-        * Translated the japanese part in battle_athena.conf [celest]
-        * Added ignore the new skill delays when chaining monk combos [celest]
-
-12/21
-	* Since conf/maps_list.txt was removed, added conf/maps_athena.conf [Ajarn]
-	* Fixed a few NPCs that were giving curly errors. It seems to be caused by a bug that the NPCs' last line isn't read or something [Codemaster]
-	* Fixed a tiny compile warning in npc.c [Codemaster]
-	* Allowed the NPCs without proper curly brackets to still load, but give an error still [Codemaster]
-	* Added variable 'current_file' which tells the filename of the script while loading npcs [MC Cameri]
-	  -the variable its set in do_init_npc() or something like that, so you can only access it
-	   after the use of do_init_npc().
-	* Fixed the display of a warning saying that a right curly brace was missing [MC Cameri]
-	* Removed @charwarp and @rura+ and added #warp, #rura, #rura+ [MC Cameri]
-	* Removed conf/npcs_list.txt, and placed it in npc/npcs_athena.conf [MC Cameri]
-        * Moved some code in pc_break_equip that was causing compile errors [celest]
-	* guild skills vanished due to incorrect placement of a 
-	  check for quest skills in the calc_skilltree code [MouseJstr]
-	* Fixed skill LK_HEADCRUSH, LK_JOINTBEAT to work on both on 
-	  and off peco's for lord knights (fixed typo in
-	  skill_tree.txt) [MouseJstr]
-	* removed LK_SPIRALPIERCE from lord knights not on peco's[MouseJstr]
-	* Moved the code from map_quit to pc_makesavestatus that
-	  "adjusts" the skill tree before persisting to the character
-	  server [MouseJstr]
-	* made pc_makesavestatus() properly persist skills that are 
-          unavailable but not forgotten (example, spiral pierce).  You can now
-	  get spiral pierce,  get off your peco, log out, log in, and
-	  get back on your peco and still have not lost the skill
-	  points you invested.  This also solves the problems of when
-	  the skill tree gets changed, players loosing the points. [MouseJstr]
-	* Made pc_resetskill() properly reset skills that are
-          currently not visible due to skilltree changes [MouseJstr]
-        * Finished updating most of the map-server to 1082... i'll leave the more
-          technical ones for the other devs ^^; [celest]
-        * Added other new battle_athena options from jA 1082 ... descriptions not
-          translated yet [celest]
-        * Removed my own additions for skill delays using aspd and added jA's code
-          (-removed-) [celest]
-        * Adapted skill_range_leniency to jA's code - should be more stable [celest]
-        * Fixed drop rates only limited to multiples of 100's - thanks to jathena
-          for pointing it out [celest]
-        * Added missing code for castle_defense_rate [celest]
-        * Removed pc_undead_nofreeze - no code for it [celest]
-        * Updated unrefineable items table - thanks to jathena [celest]
-        * Added 3 new script commands: [celest]
-          - skilleffect : shows a skill effect on the player
-          - doskill/skilluseid (originally by Qamera) : casts a skill on the player
-          - skillusepos : casts a skill on a position
-        * Added SC_SpeedUp0 [celest]
-        * Merged itemdb_read for SQL and TXT [celest]
-        * Moved itemdb_read_itemslottable in itemdb.c for better readability [celest]
-        * Removed itemdb_read_cardillustnametable limited to TXT only [celest]
-        * Added reading itemslotcounttable.txt from the GRF to auto set number of slots 
-          per item [celest]
-        * Added a display message when reading itemslottable from the GRF [celest]
-        * Added options in battle_athena.conf to enable/disable reading the GRF for
-          indoorrswtable.txt, leveluseskillspamount.txt, num2cardillustnametable.txt, 
-          itemslottable.txt & itemslotcounttable.txt [celest]
-	* Removed conf/npcs_list.txt, and placed it in npc/npcs_athena.conf
-
-12/20
-	* Fixed npc_parse_mob with large/tiny monsters causing
-	  memory corruption [MouseJstr]
-	* Fixed a crash in char.c with new chars [MouseJstr]
-	* Updated npcs_list.txt [Ajarn]
-	* If last_pos.x or .y == 0, set to start point [MouseJstr]
-	* Fixed map loading. If a map was not found, it would remove the next map in the list [Ajarn]
-	* Moddified some *_athena.conf's (my typos and some inncorect default values) [Ajarn]
-	* Added Valaris' double connection bug fix (imalive watchdog) [Valaris]
-	* Fixed map-server exiting when it came across a bad NPC file [Codemaster]
-	* Updated Valaris' large/tiny monsters - of course, he told us what he did wrong and how to fix it :) [Codemaster & Valaris]
-	* Updated makefiles to new strlib locations [Codemaster]
-	* Moved strlib.h and strlib.c into the common directory [Codemaster]
-	* Updated a bit of jA 1081 - it's not completly updated yet!!! [Codemaster]
-	* Fixed some gcc 2.95 problems [MouseJstr]
-	* Speedups in socket code [MouseJstr]
-	* made samesex weddings work and give out correct ring [MouseJstr]
-	* CFixed wedding NPC halting after server reboot/crash (shadowlady put in comments but didn't add to code) [Aria]
-        * Added reading leveluseskillspamount.txt from the GRF to auto set sp used for each skill [celest]
-        * Added reading indoorrswtable.txt from the GRF to auto set 'indoor' mapflags
-          [celest]
-        * Added check in grfio.c to prevent crashing if a file wasn't found [celest]
-        * Rolling GUILDCACHE and FASTCHAR into main branches/stable
-          tree [MouseJstr]
-	* Changed max_paramter to an unsigned int so that you can have over 255 as your max stat [Codemaster]
-        * Experimental: Reverting a change on deleting any skill units when we're 
-          logging off - might reduce the 'delete_timer' errors [celest]
-        * Added check whether an item is allowed to be dropped, for example wedding
-          rings [celest]
-        * Updated Acid Terror - should never miss [celest]
-        * updated Sword Reject - should display reflected damage properly now [celest]
-        * Updated Double Strafe - should only work with bows [celest]
-        * Replaced checking whether items can be refined or not with a new function [celest]
-        * Added Gengar's fix for npctalk outputting to chat [celest]
-        * Allowed some values in script_config to be customised in script_athena.conf [celest]
-
-12/19
-	* Added -DFASTCHAR to char_sql for testing performance work
-	  before I merge it into the main running code [MouseJstr]
-	* Added ShowDebug(), Debug(), DisplayDebug(), printDebug(), CL_DEBUG, MSG_DEBUG to _ShowMessage() [MC Cameri]
-	* Replaced many \033[x;xm with their corresponding CL_xx constants [MC Cameri]
-	* Separated NPCs and Maps from map_athena.conf into npcs_list.txt and maps_list.conf [MC Cameri]
-	* Modified all the *_athena.conf's to have the import command enabled by default [Ajarn]
-	* Added charcommand_conf.txt and log_conf.txt in conf-tmpl/import [Ajarn]
-	* Fixed import command for log_athena.conf file [Ajarn]
-	* Updated charcommand.conf [nsstrunks]
-
-12/18
-	* Added some of my info to Dev/quotes.txt, not done yet... [Ajarn]
-	* Added some ideas to Dev/Ideas_Suggestions.txt [Ajarn]
-	* Fixed import command in inter_athena.conf file [Ajarn]
-	* Fixed a few command compiling problems for TXT [Codemaster]
-	* Modified the main.sql to add the friend0 column; also added the upgrade_1.0.0.sql file [Codemaster]
-	* Introduced StringBuf into utils for use in building larger queries [MouseJstr]
-	* tested GUILD_CACHE (reducing guild related sql traffic to 30%) in 
-	  prep for unleasing it on the sql using public [MouseJstr]
-	* Fixed some SQL queries crashing char server [davidsiaw]
-	* Added several PID GM commands, thanks to Dino9021 [nsstrunks]
-	* Storage was merging items incorrectly [Mousejstr]
-	* eliminated a uninitialized var when using afm maps [MouseJstr]
-	* Added concept of dirty storage to reduce saves/load
-	  to the char server (do a clean build!) [MouseJstr]
-	* Eliminated storage_storageopen2 as unused [MouseJstr]
-	* Switched to account2storage2() whenever possible
-	  to eliminate the possibility of saving empty storage
-	  back to the character server (storage wipes) [MouseJstr]
-	* Made it save storage as soon as you close the storage
-	  window to reduce possibility of loss/abuse [MouseJstr]
-
-12/17
-	* Added #item [MC Cameri]
-	* Added #storagelist, removed @charstoragelist [MC Cameri]
-	* db.c: Fixed probs with OnInit, OnTime, and etc NPC probs
-	  Just reverted it back. [Lupus]
-	* Fixed warning message in db.c line 445 [MC Cameri]
-	* Added #effect, removed @chareffect [MC Cameri]
-        * Reverted a change in map.c causing problems, sorry >.< [celest]
-        * Updated Sphere Mine - it'll now move in the opposite direction if
-          being hit by its master [celest]
-        * Updated Wind Walk [celest]
-	* Fixed skill #301 causing crashes [MouseJstr]
-	* Fixed documentation error on gm_skills_unconditionl [MouseJstr]
-	* added @grind test command.. only for testing [MouseJstr]
-	* Added clearweather to the atcommand configuration file. [nsstrunks]
-
-12/16
-        * Added a fix for AFM loading, thanks to Pete [celest]
-        * Updated maximum levels for supernovice to 99 [celest]
-        * Updated supernovice jobexp table - should be same from 50 onwards [celest]
-        * Corrected maximum job level checking in @joblvup and @charjob [celest]
-        * Added the new spell scrolls, thanks to Landarma [celest]
-        * Corrected a few skills, thanks to orn [celest]
-        * Corrected Extremity Fist to not require Explosion Spirits when being used
-          right after using Combo Finish or Dilemma [celest]
-        * Added instant cast weapon skills rely on attack speed as cast delays, not
-          on dex [celest]
-        * Fixed mob_ghostring_fix not working [celest]
-        * Changed default value for mob_ghostring_fix to 'yes' [celest]
-	* Added #itemlist, removed @charitemlist [MC Cameri]
-	* Changed @job and #job so that when it's used it unequips all the items, to prevent sprite errors [MC Cameri]
-	* Fixed a misuse of mysql_config (thanks Daegalus for
-	  creating a reproducable environment for me)   [MouseJstr]
-	* Fixed compile time errors for gcc 2.95 [MouseJstr]
-        * Updated Forging and Potion making formulas by DracoRPG [celest]
-        * Changes to the guild skills
-          - Dropped using sc_data and use flag values instead
-          - Changed moving guild skill units to once every 'move request' only instead
-            of every movement - should reduce server load abit
-          - Corrected crash when checking its skill requirements
-        * Initialise 'canregen' when logging into map - forgot to add this earlier,
-          sorry ^^; [celest]
-
-12/15
-	* Fixed more compile errors gcc 2.95 [MouseJstr]
-        * Removed log files from svn... they will be created when
-          needed [MouseJstr]
-        * Removed unused var in src/map/map.c:107 [MouseJstr]
-        * fix compile error in text converters [MouseJstr]
-        * Skill Updates [celest]
-          - Corrected traps to last longer in GvG
-          - Some minor changes to Hiding, Cloaking and Chasewalk to prevent it from
-            not working if sc_data is null
-          - Corrected an error in Cannibalize
-          - Updated Marionette Control to check its range from the partner
-          - Updated Berserk to disable hp and sp regen for 5 minutes after the skill
-        * Changed the weather gm commands to be able to toggle on and off. For example,
-          use @snow once to turn it on, reuse it again to turn it off. [celest]
-        * Added Jawaii and Ayothaya to @go list [celest]
-        * Changed the default values for ranged, magic and misc damage rate in
-          battle_athena to 60, 50 and 60 [celest]
-        * Removed redundant 'berserkdamagetick' from map_session_data [celest]
-        * Added changes to map.h according to Shinomori [celest]
-
-12/14
-	* Changed "Map-server can't connect to char-server" message to reduce output spamming and set it to
-	  display only once [MC Cameri]
-	* Added a busy animation for npc loading [MC Cameri]
-	* Replaced the way map loading was displayed into a progress-like way [MC Cameri]
-	* Fixed some typos in _ShowMessage() [MC Cameri]
-	* Replaced lots of more printf's in map-server with _ShowMessage() [MC Cameri]
-	* Added constants for console colors in showmsg.h [MC Cameri]
-	* src/char_sql/int_guild.c:56 - t_mes2 was not big enough causing
-	  stack overrun's, corruptions, and crashes [MouseJstr]
-	* common/mmo.h: changed base_level and job_level to unsigned int to increase max levels [Codemaster]
-	* char/char.c: added a NULL check for the file in parse_friend_txt [Codemaster]
-	* map/atcommand.c/.h: added @clearweather (thanks to Dexity) [Codemaster]
-	* map/charcommand.c/.h: added #spiritball [Codemaster]
-	* map/mob.c: fixed a compiler warning (ln was an int and was supposed to be an unsigned long int) [Codemaster]
-        * Added nullpo_retb to nullpo.c - does a break; if null [celest]
-        * Replaced some parts in skill.c with nullpo checks [celest]
-        * Corrected some typos - penaly -> penalty [celest]
-        * Skill Updates [celest]
-          - Most of 12/14's Sakray patch
-	* The SKILL_MAX_DB (yes, a different #define from the one below)
-	  was not large enough for current skills causing memory 
-	  corruptions and crashes [MouseJstr]
-	* Fixed how socket handles EAGIN errors (retry instead of
-	  disconnecting) [MouseJstr]
-
-12/13
-        * Skill Updates [celest]
-          - Added the new 'Throw Tomahawk' skill (Requires Sakexe1129 or newer) 
-          - Added some new monster skills - but still not complete.
-          - Adjusted Palm Strike, Tiger Fist and Chain Crush based on 12/14's patch
-        * Removed redundant 'sg_count' for map_session_data and mob_data [celest]
-        * Save both persons' data after trading in case a crash causes them to
-          rollback -  fix by Freya [celest]
-        * Removed 'type' paramater from pc_unequipitem to use 'flag' instead[celest]
-        * Moved unequip checking code from clif.c to pc.c [celest]
-	* Replaced many printf's in map-server with _ShowMessage(). [MC Cameri]
-	* Skill timers for skills with id's higher then 450 were
-	  corrupting memory [MouseJstr]
-	* Increased max skills to 650 from 450 fixing MANY crashes [MouseJstr]
-	* Creating Guild events were reading beyond supplied guild names ,
-	  causing crashes [MouseJstr]
-	* trades were derefing -2 into the inventory table sometimes [MouseJstr]
-	* Not having a arrow in your inventory but having a bow
-	  could cause it to set sd->status.inventory[-1].equip=32768
-	  resulting in a memory corruption [MouseJstr]
-	* local broadcasts of messages larger then 64 bytes were
-	  corrupting the stack, causing crashes [MouseJstr]
-	* mob eventnames were reading beyond source point, risking
-	  going over page boundries, causing crashes [MouseJstr]
-	* Internal MAIL system: moved all strings to msg_athena.conf [Lupus]
-
-12/12
-        * Made guild skills to check for skill levels first when casting [celest]
-
-12/11
-        * Modified arrow checking in skill.c [celest]
-        * Corrected Cart Revolution damage calculation [celest]
-
-12/10
-        * Fixed players unable to move in AFM maps [celest]
-        * Added error message if a player's last map couldn't be found [celest]
-        * Moved AFM map check to map_mapname2mapid [celest]
-        * Added USE_AFM and USE_AF2 to be used later [celest]
-        * Modified sc_data check in pc_damage [celest]
-
-12/9
-	* Moved a map_freeblock_unlock() around to eliminate a 
-	  crash [MouseJstr]
-	* Fixed how players are cleaned up when they disconnected
-	  during authentication [MouseJstr]
-	* Adjusted some messages in @marry [MouseJstr]
-        * Skill Updates [celest]
-          - Fixed Auto Spell not working
-          - Fixed skill level check causing Baphomet card not to work at all (possibly
-            other problems too)
-          - Added some new monster skills based on jA mod 1077
-        * Changed @job to accept text job names - For example: @job wizard, @job high
-          priestess, @job super baby [celest]
-        * Added sc_data check for pc_damage [celest]
-
-12/8
-	* Fixed @rings [MouseJstr]
-        * Added @marry, @divorce, and @rings [MouseJstr]
-        * fixed @revive [MouseJstr]
-        * Added option to turn off login server logging [celest]
-        * Moved char server starting logging to after we've read the configuration
-          file first [celest]
-        * Fixed crash with supernovices with 100% base exp [celest]
-	* Updated the readme a little. [Mass Zero]
-
-12/7
-	* Added GUILDCACHE #define to int_guild.c for testing performance
-	  effects [MouseJstr]
-        * Skill Updates [celest]
-          - Arrow Shower, Double Strafing, Charge Arrow, Throw Arrow, Sharp Shooting,
-            Arrow Vulcan, and Musical Strike now take arrows when used
-          - Level 6-10 Stone Curse will not consume a red gem now when it fails
-          - Players should be able to use items when they're stoned but not yet
-            completely petrified
-          - Corrected Triple Blow to work with bows (they actually do ^^)
-        * Added 'guildgetexp' script command [celest]
-        * Added bLongAtkRate item effect [celest]
-        * Implemented Confusion (50%) - still need more info on how monsters act
-          when they're confused [celest]
-        * Added 'Guardian Angel' code for supernovices [celest]
-
-12/6
-	* Fixed file props for new npcs [MouseJstr]
-	* Fixed weddings.txt as per Fress_Boy [MouseJstr]
-	* Added a case_sensitive to login [MouseJstr]
-	* Fixed follow crashing server when gm dies [MouseJstr]
-	* Fixed global message not working on txt [Wizputer]
-	* fixed a server crash in mobinsite [MouseJstr]
-	* fixed a server crash in party sharing exp [MouseJstr]
-	* fixed a server crash in BS_FINDINGORE [MouseJstr]
-        * Updated Chase Walk [celest]
-        * Added 'checkoption1' and 'checkoption2' script functions - Refer to
-          /npc/sample/npc_testchkoption.txt for similiar examples [celest]
-        * Updated maximum level for Guild Skills [celest]
-
-12/5
-	* Fixed another crash sending updates to disconnected 
-	  clients [MouseJstr]
-	* Fixed the range_check again to stop it from crashing 
-	  servers [MouseJstr]
-	* removed stubbed out unfinished atcommands as per Cameri [MouseJstr]
-	* Fixed nullpo's for gcc 2.95 [MouseJstr]
-	* Fixed bug in which login-txt was crashing in do_final() due to some free's [MC Cameri]
-	* Added nullpo's to all atcommand's functions, phew... [MC Cameri]
-	  Note: I point out that MouseJstr has added some @commands that start with char which
-	  havent been finished, they are just there but don't do anything.
-	* Removed mapbug.txt and corresponding function in map.c (realized it's pointless) [MC Cameri]
-        * Added allow_atcommand_when_mute - Change this to set whether muted players
-          can use gm commands [celest]
-        * Temporarily leaving the changing guild emblems requiring Glory of Guild 
-          feature only for TXT until the SQL char-server supports guild skills fully[celest]
-        * Modified battle_range again to check if src's type is a player first [celest]
-        * Corrected typo in battle_range [celest]
-	* Fixed a crash where party chats can be sent to a 
-	  partially disconnected player [MouseJstr]
-
-12/4
-	* Fixed a crash in clif_send when player disconnects but player
-	  object is not fully removed from map [MouseJstr]
-	* Fixed a crash associated with NPC_BARRIER [MouseJstr]
-	* Renamed flush_fifos_at_exit to flush_fifos [MouseJstr]
-	* call check_connect_char_server() on char_server disconnect [MouseJstr]
-	* stale skill groups were crashing server [MouseJstr]
-	* Fixed crash in SC_LULLABY [MouseJstr]
-12/3
-	* hacked the frozen mob issue [MouseJstr]
-	* Fixed a battle_range crash [MouseJstr]
-        * Updated Stone Curse, Soul Drain, Auto Berserk [celest]
-        * Added a fix for MVP exp being multiplied twice by Gengar
-        * Modified battle_range to check for sd first [celest]
-
-12/2
-	* Fixed double login feature, resets online users when map connects to char [Wizputer]
-	* Changed all LOGS inserts to INSERT DELAYED (MySQL has this feature and cache unimportant queries, then 
-	  executes them at once together = 10x faster) [Lupus]
-        * Skill Updates [celest]
-          - Modified Weapon Refine - should only +1 every time.
-          - Updated Berserk, Chase Walk, Slim Pitcher
-          - Added skill_range_leniency : In some cases when moving to cast a skill the 
-            exe will a send a UseSkill packet before the server has moved us to the 
-            correct position, causing it to fail. Leaving this at 1 should be enough.
-          - Fixed a bug that was causing monsters not to move towards the target
-        * Added check for clif.c in case the server didn't realise we've died [celest]
-        * Added a fix for @npcmove by JohnC and Fredzilla
-        * Added motd_type : Set this to 1 if your clients have langtype problems and 
-          can't display the motd properly[celest]
-        * Edited atcommand.c to fix compile warnings [celest]
-
-12/1
-	- Make it build against gcc 2.95 [MouseJstr]
-	- Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas]
-        * Skill Updates [celest]
-          - Updated Poison React
-          - Added Soul Change, Soul Burn
-          - Added a somewhat crude timer for Venom splasher
-          - Added a fix for Guild Skills causing crashes by Sara, thanks!
-
-11/30
-        * Fixed client crash when disguised characters die [celest]
-        * Skill Updates [celest]
-          - Fixed and finished Guild Skills (~90%)
-          - Fixed Meltdown and Overthrust used together breaking your own weapon
-          - Updated Weapon Repair :- uses different materials depending on repaired item
-            (Iron Ore/Iron/Steel/Rough Oridecon)
-          - Fixed sp recovery problem, thanks to OutSider for pointing it out
-          - Updated Tiger Knuckle Fist stun time
-          - Added cooldown time for Emergency Recall
-          - Fixed typo in skill.c, thanks to Toster
-
-11/29
-	* Fixed crash in src/char_sql/char.c when setting chars offline [MouseJstr]
-	* Added mapbug.txt which is displayed in map-server, displays
-	  the last bug or w/e fixed for the map-server [MC Cameri]
-	  -You may change it whenever you want
-	  -It will only show if mapbug.txt exists
-	  -This file must not be included in releases
-	* Made some changes in map_versionscreen() to make it easier to
-	  read/change in the source [MC Cameri]
-	* Fixed a typo in _ShowMessage() removing the message caption. [MC Cameri]
-	* Fixed typo in map_helpscreen() showing -h instead of --?. [MC Cameri]
-        * Added more sc_data checks in skill.c and pc.c [celest]
-        * Updated Quagmire, Enchant Deadly Poison, Fog Wall [celest]
-
-11/28
-	* Fixed a crash in login_sql/login.c [MouseJstr]
-	* made common/socket.c more crash resistant [MouseJstr]
-	* Added flush_fifos to socket.c so that we can make sure everything
-	  has been sent before we shut the process down [MouseJstr]
-	* Modified src/char_sql/char.c to flush fifos on exit [MouseJstr]
-	* Fixed a crash in src/map/map.c shutdown where it would
-	  use the char_fd session after it was alrady cleaned up [MouseJstr]
-	* removed conf-templ/atcommand_athena.conf.orig [MouseJstr]
-	* removed a USE from sql-files/main.sql that should not be there [MouseJstr]
-	* Changed MSG_INFO color to bright white, since bright blue want so bright... [MC Cameri]
-	* Made Map Removed: %d string be displayed only if there were maps removed. [MC Cameri]
-	* Fixed online system for char not sending players left "online" to login when restarting [Wizputer]
-	* Fixed damage formula of Cart revolution: 150% +1% per 80ea [Lupus]
-	* Removed 2x Chance of Equipment Breaking during CRITICAL attacks [Lupus]
-	* Fix some file props [MouseJstr]
-	* Added map_versionscreen(), displayed when --version flag is passed on command-line. [MC Cameri]
-	* Finished map_helpscreen(), displayed when --help flag passed on command-line. [MC Cameri]
-	* Changed Guilds Extention Skill to +6 people per level. [Lupus]
-	  (tested it for 2 weeks! or a big server)
-	* Added a fix for gettimeofday() for WIN32 [Codemaster]
-        * skill Updates:
-          - Updated Slow Poison, modified checks for skill_unit_onplace abit. [celest]
-          - Updated Finger Offensive, thanks to orn  [celest]
-        * Updated packet_ver_flag's default value, thanks to iscandium  [celest]
-        * Added warning if motd.txt was not found  [celest]
-          (Turn on error_log in battle_athena.conf to enable it)
-
-11/27
-	* Fixed a few map crashes when char-server crashes [Wizputer]
-	* Added fix of 0x2aff and 0x2af8 flooding [Wizputer - thanks Toster] 
-	* Fixed Map crash when person uses global message hacks [Wizputer]
-	* Fixed online system, online column works and prevent double login at the login server [Wizputer]
-	* Fixed some compile time errors associated with showmsg [MouseJstr]
-	* Added get_svn_revision() in core.c [MC Cameri]
-	  -Only if you have the file .svn\entries, it will show the revision # at runtime.
-
-11/26   
-	* Fixed Abrakadabra (2 minor bugs of consumed items - they were ignored if placed in 0 pos) [Lupus]
-        * Finished Full Strip, Weapon Refine, Slim Pitcher and Full Protection. [celest]
-        * Added skill_nocast_db.txt. Use it to set which skills cannot be used in
-          which conditions [celest]
-
-11/25
-	* Added @skilltree to help GM's answer skill tree questions [MouseJstr]
-	* Update Spider Web; I believe you cannot use it on yourself now. [Codemaster]
-        * Added Ore Discovery, and base code for Slim Pitcher and Preservation [celest]
-
-11/24
-	* @charreset #reset [MC Cameri]
-	* @charstatsall is now #statsall [MC Cameri]
-	* @charsave is now #save [MC Cameri]
-	* Updated most of jA's 1067; battle.c and skill.c might need more updates! [Codemaster]
-	* Fixed char-txt crashing when closing, Codemaster free()'s. [MC Cameri]
-        * Skill Updates: [celest]
-          - Updated guild skills (60%)
-          - updated Weapon Repair and Aura Blade by DracoRPG
-          - modified Weapon Repair to use Identify's packet, should show a list of
-            repairable items now
-
-11/23
-	* Fixed script loading small/large monsters. [Valaris]
-	* @charoption is now #option [MC Cameri]
-	* @charpetfriendly is now #petfriendly [MC Cameri]
-	* @charstats is now #stats [MC Cameri]
-        * Skill Updates: [celest]
-          - Added some code for the new guild skills (50%) and Moonlit Petals (5%)
-          - Notes to other devs: Guild skills with id's 10000-10014 will be stored in
-            skill_db[500-514]
-          - Corrected Hilt Binding
-          - Corrected Assassin Cross' dual wield
-          - Changed player_cloak_check_type to yes by default and edited description
-            since it's already fully implemented.
-          - Added a bit more restrictions to Call Partner and Emergency Recall and
-            updated mapflag for sec_pri.gat
-          - Added pc_calcspeed and updated Cloaking so it won't need to recalculate
-            the player's entire status everytime there is movement.
-
-11/22
-	* (TXT)Stripped some code off read_gm_accounts() and made with it addGM() [MC Cameri]
-	  -Usage: addGM(account_id,level);
-	* (TXT)Changed GM_accounts.txt to meet new standards. [MC Cameri]
-	* (TXT)Enabled the use of id ranges in GM_accounts.txt [MC Cameri]
-	* Added a few free()'s so that I am sure it freed the allocated memory (char & login) [Codemaster]
-	* Changed monsters_ignore_gm option to a level value. [Valaris]
-	  (accounts greater than or equal to this setting won't be attacked by aggressives.)
-	* Fixed mapflag #s and constants for setmapflag and remove mapflag. [Valaris]
-        * Added skill names for kRO 11/23's new skills [celest]
-          - Preserve, Full Strip, Weapon Refine, Slim Pitcher, Full Chemical Protection,
-            (Throw) Tomahawk
-	* timer.c static int timer_heap_max=0; //fix by Shinomori from eA forums
-	  ititialize static var!!!
-	* Added the old effect list # into effect_list.txt of spira's. [shadow]
-	* Added new flag (#3) to clif_specialeffect [MC Cameri]
-	* @doom,@die,@doommap now display the Dark Cross effect on you. [MC Cameri]
-11/21
-	* Display IP when wdata is expanded [Wizputer]
-	* Added bClassChange,%; Has random chance to turn monster into another monster. [Valaris]
-	* Re-Fixed Trade/Vending exploit [Lupus]
-	* Fixed @whozeny. [Valaris]
-	* Added rest of mapflags to const.txt. [Valaris]
-	* Closed AFM files after reading, this fixed the improper char-server session #. [Valaris]
-        * Skill updates: [Celest]
-          - Updated Basilica, Sharp Shooting, Berserk, Meditatio (Thanks to DracoRPG!)
-          - Fixed a typo with Blade Stop that was causing crashes, sorry. ^^;
-          - Reverted changes to Cloaking, ours is already more updated! ^_^
-          - Added temporary code for guild skills to stop crashing
-	* @alive, @raisemap, @raise, @revive now display the resurrection skill animation [MC Cameri]
-	* @charpetrename(AtCommand) is now #petrename(CharCommand) [MC Cameri]
-	* @charjob/(AtCommand) is now #jobchange(CharCommand) [MC Cameri]
-	* Removed japanese interserver packets, should fix various problems (jumpto, where, charposreq). [Valaris]
-	* Added Yor's trade exploit bug fix. Added 2 skills bugs in the bugs.txt [Lupus]
-	* Added charcommand.c/.h for the following reasons: [MC Cameri]
-	  - Less congestion in atcommand.c
-	  - Port commands that start with @char to #, example:
-		~ @charoption will now be #option
-
-11/20
-	* Added str_lower() function to atcommand.c (from OA). [MC Cameri]
-	* Simplified @charchangesex to @charchangesex [player], your sex is changed to the opposite one [MC Cameri]
-	* Added @refresh, which is like a @jumpto <<yourself>>. [MC Cameri]
-	* Added @petid <pet name> to find pet names, useful when you dont know which pets have eggs. [MC Cameri]
-	* Added an effect_list in docs/ for descriptions, free to add onto that later. [spira]
-          - Attempt to find new skill effects.
-	* Added "nogo" mapflag to prevent the use of @go on a specified map. [Valaris]
-	* Fixed small/big monster spawning crashing (mixed up the merge). [Valaris]
-	* Fixed crash with upgrading TXT and having more than 256 accounts. [Valaris]
-	* TXT upgrades will convert broken flag to attribute column. [Valaris]
-	* Prevent use of emotion packet to display red mute emote. [Valaris]
-	* Initialized "day" variable in npc.c. [Valaris]
-	* Added @whozeny. Shows list of top 50 online players and their zeny sorted from highest to lowest. [Valaris]
-	* Added @happyhappyjoyjoy. Makes all players on server do a random emote. [Valaris]
-	* Removed -funroll-loops from compile, thanks to kashy for pointing out the problems caused by this. (Do not re-add!) [Valaris]
-	* Added check for max vending_max_value when reading config [kobra_k88]
-	* Skill updates [celest]
-          - Napalm vulcan, Enchant Deadly Poison, Slow Poison (based on jAthena 1066)
-          - Create Deadly Poison, thanks to DracoRPG!
-          - Added effect for Meteor Assault
-        * Added night_darkness_level to battle_athena.conf. [celest]
-          Use this to set 'how dark' it'll become during night time. Use 0 for default,
-          or between 1-10. (Yeah, i know lots of people hated the original night! xP)
-          Warning: It may cause errors with old exe's!
-
-11/19
-	* Re-added check for empty bottle when using aqua benedicta. [Valaris]
-        * Fixed skills not showing after using @allskill [celest]
-
-11/18
-        * Added a line to @unmute, added @mute. [celest]
-          Usage: @mute <time in minutes> <character name>
-        * Added save_flag for skill_status_change_start [celest]
-        * Fixed muting not being saved when you quit/change characters/log off [celest]
-        * *Hopefully* fixed the skill tree problem where you have to use 49 skill 
-          points first before 2nd job skills will show... please report any bugs found
-          with it, thank you. [celest]
-	* Added flag to pc_unequipitem (thanks to DracoRPG for suggestion) [celest]
-	* Skill updates [celest]
-	  - Updated Cloaking (thanks to orn), Endure
-          - Pneuma (thanks to DracoRPG)
-          - Changed sc_ id for Basilica
-          - Cancel Basilica (100%) when caster moves or uses another skill
-          - Updated Poison React (90%), Endure
-          - Added SC_BLOCKSKILL, SC_SLOWDOWN
-	* Modified pc_attack to fix monster npc's not working in certain exes, thanks
-	  to leinsirk10 [celest]
-	* Moved mapflags organized by type to main mapflag folder and removed "type" folder.
-	  Removed mapflags organized by location.[kobra_k88]
-
-11/17
-	* Added stub-handler for packet 0x3090 into char_sql [MouseJstr]
-	* Fixed a crash in the afm reading/closing code [MouseJstr]
-	* Added skill_steal_type to battle_athena.conf for the new (but unconfirmed) 
-	  stealing formula [celest]
-	* Skill updates: [celest]
-	  - Removed annoying skill fail messages from rogue's Snatcher
-	  - Add sc_data check for firewall and fogwall
-	  - Fixed Berserk (99% hopefully? ^_^)
-
-11/16
-	* Fix for compiling against gcc 2.95 [MouseJstr]
-	* Added day of week events (OnSat2000) into scripting engine [MouseJstr]
-	* Temporarily Disabled GM Command Logs; Weren't working Properly >_<! [Codemaster]
-	* Fixed a typo in ../db/Changelog.txt [Nana]
-	* Added -funroll-loops argument to makefile to further increase performance [Shinigami]
-	* Fixed 2 bugs in DELITEM script command. [Lupus]
-	  - added deleting priority: If you have some items with the same ID and want to delete some of them, then
-	    at first it'll delete common items then, if necessary, delete the rest items but upgraded/named/with cards. [Lupus]
-	* Added checks for Perfect hiding [celest]
-	* Modified level 0 skill check to allow auto blitz beat and steal. [celest]
-	* Added constant BaseJob. [celest] Usage: For example, instead of
-	     If (Class==12) || (Class==4012) || (Class==4035)
-	  you can use
-	     If (BaseJob==12) or If (BaseJob==Job_Assassin)
-	* Added 'indoors' mapflag : When in-doors players will not be affected by Night [celest]
-	* Skill updates [celest]
-	  - Assumptio is now disabled in GvG maps.
-	  - Changed cloaking checks a bit.
-	  - Tidied up some parts of skill.c abit. ;P
-	* Added pk_min_level option in battle_athena.conf. Change this to define the
-	  minimum level players can attack others when pk_mode is on. [celest]
-
-11/15
-	* Added a Database Changelog.txt File, use it for any changes inside the db folder. [shadowlady]
-	* Added GM Command Logs & Added TXT Logs + TXT Log Options [Codemaster]
-	* Added spawning of monsters at specific level by adding ,# after the spawn name. [Valaris]
-	  mobs_level_up option should be on when using this.
-	  (Example: {ama_dun01.gat,0,0,0,0	monster	Shinobi,99	1401,1,0,0,0} to spawn a level 99 shinobi.)
-	* Added addtoskill script command for (levels can stack on top of existing levels). [Valaris]
-	  Use same usage as skill script command.
-	* Added -ffast-math argument to makefile to increase performance, thanks to kashy. [Valaris]
-	* Added small and big mob sprite spawning. [Valaris]
-	  -Added @monstersmall and @monsterbig commands.
-	  -For using in scripts, use id +2000 for small and id +4000 for big.
-	   (Example: 3002 for small poring and 5002 for big poring)
-	* Added mobs_level_up option. [Valaris]
-	  -Everytime a monster kills a play their level will increase and show levelup animation.
-	  -Their 6 main stats and speed will increase as they level.
-	  -They will recover 10% of the max hp of the player it kills.
-	  -Player will gain extra exp based on how much stronger a monster is than normal.
-	  -Skill estimation will show monsters current level (instead of reading from db).
-	  -Will display level 99 aura if and when a monster hits level 99.
-	  -They will not go higher than level 99.
-	* Fixed maximum skill levels not following skill tree [celest]
-	* Updated HP/SP for baby classes [celest]
-	* Corrected pc_calc_base_job [celest]
-	* Skill updates [celest]
-	 - Marionette Control (70%), Berserk (thanks to DracoRPG)
-	* Modified pc_jobchange code to work with new pc_calc_base_job [celest]
-	* Corrected skill_tree_get_max, sorry >.< [celest]
-
-11/14
-	* Made the Advance jobchangers to kRO standars with the following;
-	 - Checks if you are level 99/50 and 2nd class OR above.
-	 - Checks if you have an Cart of Falcon equiped.
-	 - Checks if you have any Quest Skills, stores a variable on you and gives them back
-	   when you change to 1st advance class.
-	 - Added minimum joblevel to change to an 2nd or 2-2 advance class to job 45 after kro. [Nana]
-	* Fixed loading of AFMs when no resnametable is found. [Valaris]
-	* mob_db.txt: Fixed Golden Thief Bug MVP MOB mode (it wasn't moving/attacking) [Lupus]
-	* Added AFM (Advanced Fusion Map) support, thanks to alexkreuz and fusion. [Valaris]
-	  Use the afm_dir option in grf-files.txt (currently needs a resnametable.txt). 
-	* Initialized password variable in login.c. [Valaris]
-	* Added zeny_from_mobs option. [Valaris]
-	* Corrected the file type attribute on most of the files in three which fixes the
-	  newline issues between linux and dos [MouseJstr]
-              svn propset -R svn:eol-style native .
-        * Skill changes [celest]
-          - Corrected steal formula, updated BladeStop, Headcrush.
-
-11/13
-	* Fixed map-server loading, doesn't require data\resnametable.txt anymore [Wizputer]
-	* Updated & Optimized TXT Login from FREYA. (need to do SQL now) [Codemaster]
-	* Removed compile warnings in intif.c. [Valaris]
-	* Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri]
-	* Updated some skills, credits to orn and midas. [celest]
-	  - Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire,
-	    Spider Web, Reject Sword, assassin's Dodge, Demonbane, Divine Protection.
-	  - Firewall, Quagmire, Fog Wall (100%), Marionette Control (30%), Sandman, 
-	    Claymore Trap
-	  - Adjusted some mob skills for mod support.
-	* Fixed weight increase when riding. [celest]
-
-11/12
-	* added folder: /save-tmpl, removed folder /save
-	* battle_athena.conf: Updated Packet Version Flags.
-	* !!!Fixed Mobs Attacking!!!: Thanks for MagicalTux and Yor, I fixed the mobs attacking by using one of their files. [Codemaster]
-	* Warps Update : Added ayothaya warps in ./npc/warps/ and in map_athena.conf [Nana]
-11/11
-	* Skill Updates : (Need to revise skill_cast_db.txt for new updates)
-		( Sharp Shooting, Sword Reject, Chain Crush Combo, Tiger Knuckle Fist,
-		Head Crush, Arrow Vulcan, HP COnversion) Thanks to DracoRPG. 
-		Fixed Devotion use requeriments. Thanks to Orn.	[shadow]
-11/11
-	* Corrected minor typo in item_db, and removed/commented out dupe items.[kobra_k88]
-
-11/10
-
-	* Updated Sprout (Item #7193), Thin Trunk (Item #7186),
-		Huge Leaf (Item #7198), and Rante Whip (Items #1956, #1957)
-		- thanks to cheng - [Codemaster]
-	* Updated Parasite (Mob #1500) Drops - thanks to cheng [Codemaster]
-	* Updated Soft Grass Leaf (Item #7194) - thanks to cheng [Codemaster]
-	* Added, Fixed & Updated ALOT of skills:	[Codemaster]
-		- Fire Pillar, Backstab, Grimtooth, Poison React, Falcon Assalt,
-		Skin Tempering, Hilt Binding, Frost Nova, TEMPORARY fix for Create Deadly Poison,
-		Enchant Deadly Poison, Endure, Sacrifice, Spider Web, Memorize,
-		Hyper Spirit Sphere, Palm Strike, Sword Reject, Pressure, Magic Crasher,
-		Amplify Magic Power, Napalm Vulcan, True Sight, Wind Walk, Aura Blade,
-		Concentration, Cart Boost, Magic Power
-		- Thanks goes to Celest, Midas, and DracoRPG!
-	* Fixed spira's mistake in using the packet_len_table; no biggie ^_^ [Codemaster]
-	* char/char.c & char_sql/char.c: Fixed start_armor and start_weapon - thanks to AppleGirl [Codemaster]
-	* Added packetver 6 flag to makefile. [Valaris]
-
-11/09
-	* mob_db.txt: Fixed Drake dropping the wrong card - thanks to roslen [Codemaster]
-	* chat.c: Fixed multiple joins in a single chat - thanks to Alex14 and CHaNGeTe. [Codemaster]
-	* clif.c: Fixed sitting. [spira]
-	* -  Fixed item 657 Job ID , 11/09 patch updates to item_db, Correct stats for item 5097
-	  - Added Unbreakable funcions to item_db armors/shields/garments/footgear [shadow]
-	* Defined SO_REUSEPORT to allow the servers to re-use ports if server crashes [Wizputer]
-
-11/08
-	* Added new script command: getMapXY(MapName$,MaxX,MapY,type,[CharName$]) by Lorky [Lupus]
-	  Get position for char/npc/pet/mob objects.
-	* Attempted to fix the mob bug (still haven't :( ). Still updated mob.c/clif.c/chrif.c according to jA 1057. [Codemaster]
-	* Fixed item_cardalbum.txt: Removed extra column which mad all albums empty [Lupus]
-11/07
-	- Fixed a few npcs will start implementing new ones soon, have alot on paper, need to type them up. [Nasedo]
-	* clif.c: Added a few things from jAthena 1057 [Codemaster]
-	* Corrected some typos in item_db. Items 1143 and 1719 need to be re-checked.[kobra_k88]
-	* Fixed compiling error in Map Server in which @repairall was using old broken system [Shinigami]
-
-11/06
-	- Added missing items in item_db.txt and reorganised it.[Nasedo]
-	- Fixed wrong coords for payon guild flags (it has the old map coords), fixed some weapon effects in item_db,
-	 updated the mob_db (90%+ done), added EP 5-9 mobs to mob_branch.txt and EP 6 cards to item_cardalbum.txt[shadowlady]
-	* atcommand.c/.h,chrif.c/.h, added @changesex. [MC Cameri]
-	* mob.c & clif.c: Added & Modified a few parts dealing with monsters and guilds [Codemaster]
-	* mob.c: Re-did a few parts according to jA's 1057 version. [Codemaster]
-11/05
-	* Fixed and redo optional Umbalian quests:
-	- Wise Man Fabius' Umbalian Language Quest (you can learn Umbalian language in
-	  alternative way)
-	- On speaking with Umbalian Chief about meaning of masks you activate Turban Thief Quest
-	  (For Sphinx Mask)
-	* Fixed several bugs in Niflheim Piano Keys Quest (wrong variable name, missing CLOSE buttons)
-	  Zeny/Item Exploit in Niflhein Sairin NPC quest (should add similiar checks in every
-	  easy quests with expensive prizes to avoid exploits) [Lupus]
-	* Revised and fixed all comodo,yuno,amatsu,gonryun,umbala mobs and drops. Also fixed mvp and woe mobs too [Shadowlady]
-	* Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still. [Valaris]
-	* Fixed committed typo in map_athena.conf, remove aria's dev npc (was giving errors preventing server startup). [Valaris]
-
-11/04
-	* Added sara-chan's packet db with support for 11-1 [Valaris]
-	* [alot of files >_<]: Changed connecting a bit, from oA source; it connected easier/better in my opinion so... [Codemaster]
-	* map/skill.c: Added a few checks for level 0 skills being used. [Codemaster]
-
-11/03
-	* Removed broken column, using attribute column for broken equip now. [Valaris]
-
-11/02
-	* Fixed compile time errors for gcc 2.95  [MouseJstr]
-	* Changed Blacksmith skill "Hammer Fall" to only be used with maces or Hammers [Aria]
-11/01
-	* Set Comodo Kafra to warp to Umbala (11/2/04 patch) [Aria]
-10/31
-	* Fixed Devnpcs giving off errors -_- [Aria]
-	* Fixed showmsg.c compile warnings thanks to LittleWolf. [Valaris]
-	* map/skill.c: removed a second declaration of sc_def_vit in skill_castend_nodamage_id; thanks to spira [Codemaster]
-	* map/battle.c: re-did Water Ball's damage calculation [Codemaster]
-10/30
-	* Added new guild skills to skill_db from sara-chan. [Valaris]
-	* db/skill_cast_db, map/skill.c, map/pc.c: Corrected a few CHASEWALK things; Thanks to Celest [Codemaster]
-	* char_sql/char.c: removed the double free()ing of gm_account [Codemaster]
-	* Added check for c value in int_guild.c before dividing to calculate average level. [Valaris]
-	* Commented unfinished dev npcs and added devnpc to map_athena. [Aria]
-	* Removed item requirement of Aqua Benedicta (10/26 patch) [Aria]
-	* Fixed some compiling error for Map-server [Shinigami]
-	* Removed Rogue's backstab pushback effect (kRO style again) [Aria]
-	* Changed requirement of Fire Pillar to fit kRO style; lv1-5 = no gem, but 6-10 = 1 gem. [Aria]
-	* Added Mugendai's oA GUI support for map-server (previously not added) [davidsiaw]
-	* Included Mugendai's oA GUI in the GUI folder [davidsiaw]
-
-10/29
-	* another exploit fix for mult in script [MouseJstr]
-	* Corrected mode for peco, condor mobs.  Added custom mobs Easter Egg and Easter Bunny for easter egg event script.
-	 Corrected mysteltain card location, penomena card typo.[kobra_k88]
-10/28
-	* Cloak Speed fixed [Aria]
-	* Throw stone damage fixed [Aria]
-	* Added new packets from Sara to packet database. [spira]
-	* Fixed and changed command lists to reflect on new packet changes. [spira]
-		- @jumpto, @recall, and @where
-		- Removed old @ignore* functions because they are no longer needed.
-	* Replaced old whisper ignoring code with better and more efficient code. [spira]
-	* Added packet_db.txt support, removed old packet functions. [spira]
-	* fixed forger-zeny exploit [MouseJstr]
-
-	  Doing script math that returns a number greater then (1<<31) will now
-	  return a (1<<31).  This prevents you from finding a npc that
-	  asks for a quantity then mults the cost by that quantity to get
-	  what you need to pay.
-
-10/27
-	* Updated CSS styles for readme a bit [Aria]
-	* branched athena at version 340 to begin work on the packet_db 
-	  stuff from jA.  To retrieve it, do a svn co http://dev.deltaanime.net:8080/svn/eathena/packetdb
-	  later, once we are happy with it.. and feel it is stable, we will remerge it back into the main tree via the appropriate svn commands
-	  as a FYI, the command I used to create this branch was:
-	  svn copy http://dev.deltaanime.net:8080/svn/eathena/athena http://dev.deltaanime.net:8080/svn/eathena/packetdb -m "branch for packetdb work"
-	* Fixed Aldebaran (gatekeeper conditions bugs and wrong Key ID). Fixed some typos in other cities [Lupus]
-
-10/26
-	* Added more quotes -_- [Aria]
-	* Modified a few things related to guild skills. I hope it doesn't interfere with anyone else's work, and isn't seen as bad. [Sara-chan]
-		-Support for new guild skills, though they don't work yet. Added guild_skill_get_inf and guild_skill_get_max entries for them based on early info.
-		-Changed guild_skillup functions based on japanese code, but for a good reason.
-		  It allows for guild skill trees, sort of. I made Kafra Contract and Guardian Research require Guild Approval, for instance.
-		  I think the first four new guild skill requirements are correct, at the least.
-		I hope everything works alright, it's my first contribution to eA in quite some time and I'm rather rusty at programming of late.
-	* Fixed compile errors in showmsg.c. [Sara-chan]
-	* Fixed Mouse's devnpc only saying his quotes once per server reset [Aria]
-	* Added log_athena.conf & the logs.sql file [Codemaster]
-	* Added log configurations to inter_athena.conf [Codemaster]
-
-10/25
-	* Fixed a compiling error in Login-server [Shinigami]
-	* Added alot of Azndragon's spiffy logs & then added a few things of my own (Silly Dragon, structs are for kids!) [Codemaster]
-	* Corrected a small bug (forgot to change a few variables!) in my different GM option. [Codemaster]
-	* Fixed items and mobs in DB. Added new items. [Lupus]
-	* Fixed some NPC bugs (check NPC=changelog.txt) [Lupus]
-	* Fixed getting MAX PET ID (SQL only bug) [Lupus]
-	* Fix char/char.c which was crashing after double freeing logs
-	  [MouseJstr]
-	* Improved basic server rebooters [MC Cameri]
-	* Commited common/showmsg.c/.h, previously missing x_X [MC Cameri]
-	* Added a basic server rebooter program, just use 'runserver.bat' to start up the server. [Shinigami]
-
-10/24	
-	* Added files common/showmsg.c/.h which contain the function _ShowMessage(char *string, int flag) [MC Cameri]
-	  -Check showmsg.h to see how to use it.
-	  -This function is made to replace printf in all the cases, so it MUST be used instead of print from now on.
-	  -Begin your own journey of replacing/removing old printfs, and using the new function.
-	  -This function was previously called ShowMessage() in oA, it is now merged, some changes have been done:
-		1.Outputting messages to a file is now disabled(commented out).
-		2.MSG_SQL is now commented out.
-		3.If the server is out of memory, it will not use abort().
-		4.Returns 0 if successful, 1 otherwise.
-	  -Example: ShowInfo("hello\n"); will print this to the screen: [Info]: hello
-	  -Always add \n at the end. Unless someone edits the function to add the \n whether it exists or not.
-	  -Just add #include "showmsg.h" wherever you need it.
-	* Edited ALL makefile's to include showmsg.o -> _ShowMessage(). [MC Cameri]
-	* Updated readme/gmcommands.html with new @uptime command [MC Cameri]
-	* Somebody had added some additional noskill checks that prevented
-	  vending from happening in prontera [MouseJstr]
-	* Added bypass with gm_allskill of npc_selfdestruct2. [Valaris]
-	* Corrected some minor bugs in some Quests [Shinigami]
-	* Added new maps (from lateast kRO patch)
-	  Touched WOE (u can't surrender the castle during the WOE), misc fix of the bank [Lupus]
-10/23	
-	* Added the option to read GM accounts from a different table than login. Default set to login table. [Codemaster]
-	* Finished Aria and MC Cameri "Dev edition" NPCs. [Aria]
-	* Corrected extra stat points given to high classes. [Valaris]
-	* Added high classes getting the extra 40 stat points on stat reset. [Valaris]
-	* performance tweaks on socket.c to reduce lag [MouseJstr]
-
-	  do a "OPT="-g -DNSOCKET" to compile with the changes
-	  enabled.. and tell me if you notice a change in your
-	  performance/lag
-
-	* Added @uptime to atcommand.c [MC Cameri]
-	* Added the stuff for my npc to Dev/quotes.txt [MC Cameri]
-
-10/22	
-	* Replaced some checkcart and checkoption(x) with checkcart(0) in the guild folder [Aria]
-	* Waiting for various devs to tell me their coords, map, biography, quotes,
-	  moving coords, etc. In the meantime, I replaced them with (x,y),(lols),
-	  (sprite),(somewhere), and if they didn't give me any info, I didn't 
-	  add them yet =P. [Aria]
-	* Added Davidsiaw, Shinigami, Lord, Codemaster, MouseJstr, MC Cameri, and Darkchild
-	  to "Dev edition" NPCs [Aria]
-	* Revised "Dev edition" NPC layout a bit, should go smoother now. Should be final
-	  layout unless something goes wrong =O. [Aria]
-	* Fixed the eol markers on some checked in files [Mousejstr]
-	* Fix two crashes caused by calling isGM on mobs [MouseJstr]
-	* Added folder "mc_cameri" in npc/other which contains my bank npc. [MC Cameri]
-	* Changed "Dev edition" NPC layout so that they move by themselves by timers. [Aria]
-	* Changed "Dev edition" NPCs to walk during quotes, and added biography. [Aria]
-	* Fixed quest/all_quest.txt not showing the correct description of the binoculars. [Aria]
-	* Fixed quest/all_quest.txt not going to stop pass and not displaying requirements. [Aria]
-	* Fixed removing friends from the list [davidsiaw]
-	* Added PCLoginEvent NPC (When a character logs on, NPC runs as if he/she clicked the NPC) [davidsiaw]
-	  The NPC sample is located in npc/sample/PCLoginEvent.txt (you only need one of these NPCs)
-
-10/21
-	* Fixed clothes_dyer.txt: Disabled Assassing/Rogues Dye. Also fixed wrong labels [Lupus]
-	* Fixed hair_dyer.txt: fixed missing menu label [Lupus]
-	* new_hats.txt 1.4 fixed amount of Fish Tail (300 -> 30), Zeny bugs in Ear of Angel,
-	  Ear of Demon,Big Golden Bell, Mistress Crown,
-	  Crown of The Ancient Queen, Indian Headband, Orc Hero Helm [Lupus]
-	* Fixed name of a flower in Prontera quest (Dreamy->Illusion) according to our DB [Lupus]
-	* Fixed item names in the temp Crusader Job Quest according to our DB [Lupus]
-
-10/20
-	* map/mob.c: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster]
-	* map/map.h: Changed Vending Struct: amount and value to unsigned variables (so they CAN'T be 0 or less) [Codemaster]
-	* map/mob.h: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster]
-	* Aligned the list of commands at the beginning of atcommand.c,
-	  with tabs instead of spaces. [MC Cameri]
-	* Fixed AtCommand_SetBattleFlag, it was previously being called by "@send"
-	  instead of "@setbattleflag". [MC Cameri]
-	* Finished basic layout, finished Aria starting to create Shinigami [Aria]
-	* Started to create "Dev edition" npcs [Aria]
-	* Fixed a compile error in src/char/char.c [MouseJstr]
-	* Fixed a bug in @trade where the distance was not ignored [MouseJstr]
-	* Fixed a potential inf loop in pc.c when multi_level_up is set to no. [MouseJstr]
-	* implemented Friends List support for TXT version [davidsiaw]
-	* added queries in main.sql for Friends List. mySQL support for friends list pending [davidsiaw]
-10/19
-	* switched login_sql/login.c to use binary when retrieving
-	  by account name [MouseJstr]
-	* skill.c & skill.h: added skill_type_cloaking [Codemaster]
-	* storage.c & storage.h: added storage_storageopen2() [Codemaster]
-10/18
-	* Changed readme layout for 1.0 scheme. [Aria]
-	* added check for console variable in login_sql [MouseJstr]
-	* Fully translated the untranslated items in the database.sql for SQL. [Nana]
-	* Dev/TODO, asigned myself to some items. [MC Cameri]
-	* char/char.c: changed the online system to omniAthena's [Codemaster]
-	* char/char.c: added log_char and log_inter [Codemaster]
-	* char/char.c: added Mugendai's GUI Support [Codemaster]
-	* char/int_guild.c: added log_inter and db_path [Codemaster]
-	* char/inter.c: added log_inter [Codemaster]
-	* char/char.c: added db_path [Codemaster]
-	* char/inter.h: added log_inter [Codemaster]
-	* char_sql/char.c: added log_char and log_inter [Codemaster]
-	* char_sql/char.c: added Mugendai's GUI Support [Codemaster]
-	* char_sql/int_guild.c: added log_inter and db_path [Codemaster]
-	* char_sql/inter.c: added log_inter [Codemaster]
-	* char_sql/char.c: added db_path [Codemaster]
-	* char_sql/inter.h: added log_inter [Codemaster]
-	* conf-tmpl/char_athena.conf: Added log_char & db_path [Codemaster]
-	* conf-tmpl/inter_athena.conf: Added log_inter [Codemaster]
-
-10/18
-	* clif.c,clif.h,map.h,npc.c,npc.h,script.c: Added NPC Walking. [Valaris]
-	  -npcspeed #; To change npc's walking speed.
-	  -npcwalkto x,y; Move an npc to a position (keep it less than area size, or sprite will glitch and disappear).
-	  -npcstop; Stops an npc's movement. 
-
-10/17
-        * Made the IP autodetection code work under a pure win32
-          executable
-        * Fixed the win32 build and made a src\map\Makefile.win32 to
-          make it easier to do win32 builds of the map server
-
-            src\common\utils.c src\common\utils.h src\common\grfio.c
-            src\common\nullpo.h src\common\timer.c src\common\db.c
-            src\common\socket.c src\common\core.c src\common\mmo.h
-            src\common\socket.h src\map\script.c src\map\intif.c
-            src\map\npc.c src\map\clif.c src\map\map.c src\map\clif.h
-            src\map\chrif.c src\map\Makefile.win32
-
-	* skill.c: Fixed noicewall flag. [Valaris]
-	* battle.c: Battle calc weapon attack now checks to see if pc_breakweapon successfully broke the weapon then recalculates damage. [Valaris]
-	* pc.c: Removed broken weapon and equip status, just unequips items again when broken. [Valaris]
-	        Removed useless code from pc_breakweapon and pc_breakarmor. [Valaris]
-	* Added template for server control from the console [Wizputer]
-	* conf-tmpl/login_athena.conf: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster]
-	* login/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster]
-	* login_sql/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster]
-	* Usable GM commands from server console admin:<gm command>:<map of "GM"> <x> <y> [Wizputer]
-	* Added server:shutdown to shutdown server and help [Wizputer]
-	* Added user discretion for console commands in conf files [Wizputer]
-10/16
-	* Fixed Umbala Language Quest, where a certain NPC would freeze you due to an unfinished script [Shinigami]
-	* Fixed bug in new_hats.txt where free items are given out [Shinigami]
-	* Correct Morroc warp npc overlaying Kafra npc. [Aria]
-	* Corrected npc typos. [Aria]
-	* Skip over npc_selfdestruction2 on allskillup (thanks to celest) [Valaris]
-	* Fixed some typos in some of the NPCs [Shinigami]
-        * tweaked the auto-configure stuff to deal better with
-          machines that have no detectable IP addresses.. is this
-          possible?  [MouseJstr]
-                src\char_sql\char.c src\char\char.c src\map\map.c
-	* Made it compile under gcc 2.95 [MouseJstr]
-	* made the char and map servers auto-configure their own IP's
-	  whenever possible [MouseJstr]
-
-	  If you do not specify the server IP address, it now determines it
-	  on its own.  This means that to get a server running that is
-	  accessable from the internet you should only need to specify the
-	  location of the data.grf files.  This eliminates one more point
-	  of misconfiguration.
-
-	  It does not correctly auto-configure for when you are behind a 
-	  router or a firewall since there is no way of determining the 
-	  external IP address.  On the other hand, we should be able to 
-	  eliminate the lan_conf file since we know our IP addresses as well 
+Date	Added
+
+02/18
+        * Fixed a bug with statpoint.txt reading and giving too much stat points,
+          thanks to Benz / eAthenaC [celest]
+        * Fixed client errors when pecopeco Lord Knights/Paladins log in with a weapon
+          equipped [celest]
+        * Added bAddRace2 -- check item_bonus.txt [celest]
+        * Added mob_race2_db.txt -- contains 'main races' of certain monsters [celest]
+        * Updated description for backup_txt in char_athena.conf a bit [celest]
+        * Set read_map_from_cache to 2 (enable compression), and map_cache_file back to
+          saving in /db instead of /save, as suggested by Poki#3 [celest]
+        * Updated description for auto_counter_type, and set plaer_auto_counter_type
+          to 0 by default, as suggested by Poki#3 [celest]
+        * Use the event names from script_athena.conf to check whenever a player event
+          trigger is being read/set [celest]
+        * Removed an unused save/bank.txt [celest]
+	* Added some new cards effects. (check DB\changelog.txt) [Lupus]
+
+02/17
+	* Now all mobs have 10 drops slots. the last one is used for Cards Drops [Lupus]
+	  Don't forget to update your SQL files (Drop Log: logs.sql and db_tables.sql
+	  if u were using SQL Mobs DB. Update it from TXT! )
+	* Fixed Branch Log TXT filename [Lupus]
+	* Made all logs work with compiled TXT Server, too (removed old #ifndef) [Lupus]
+	* Added 4 columns into mob_db.txt (check DB\changelog.txt) [Lupus]
+	* Fixed some mobs drops (Whisper, etc) and some MVP mobs (bonuses were shifted...) [Lupus]
+        * Readded Chemical Protection -- i forgot to check for it when changing some
+          jA stuff earlier, sorry ^^; [celest]
+        * Removed some old eA code that was causing Frost Nova to do an extra hit
+          [celest]
+        * Corrected Vulcan Arrow's hits in skill_db -- the bug appeared when the
+          correct numbers hardcoded were removed [celest]
+        * Readded zlib and zconf .h files to under /lib for compiling in Windows,
+          thanks to Ser [celest]
+        * Fixed some compile errors in Windows, thanks to Ser [celest]
+        * Changed remove_control_characters back to supporting korean chars [celest]
+        * Moved some other code around [celest]
+        * Added Shinomori's changes to Dissonance -- don't increment the timer again
+          if the target has died [celest]
+        * Changed some nullpo checks back to normal null checks -- in some situations
+          it would be normal to get a NULL [celest]
+        * Changed some nullpo checks to print some debug information [celest]
+        * Added some sd checks before calling pc_blockskill [celest]
+        * Added Dino9021's fix for SQL char's friend list updating [celest]
+        * Fixed a crash if the player invited to join a guild is not online, thanks to
+          Alex14 [celest]
+        * Find the guild invitation sender first before clearing its ID [celest]
+
+        * Added 2 new script commands to support 2/15's cards patch... most of the
+          effects in kRO should be available now ^^ [celest]
+
+          - isequipped(...): Accepts a list of item ID's and checks whether all of
+                             the items/cards have been equipped.
+          - isequippedcnt(...): Same as above, except it returns how many of the items
+                                are being equipped
+
+          Example: if(isequipped(4002,4004,4006)) bonus bStr,1;
+
+02/16
+	* Char SQL: Fixed the Whisper chat on splittet mapservers (i think now all features work!) [Sirius]
+
+        * Added 3 more of the new card effects -- check item_bonus.txt [celest]
+
+        * Added 'bonus4' to support the new card effects that might need up to 4
+          parameters [celest]
+        * Set 'killerrid' and do PCKillEvent before calling PCDieEvent, thanks to
+          mrmagoo for pointing it out [celest]
+
+        * Added some new script event related options to script config [celest]
+
+          - [die/kill/login/logout]_event_name: Name of script to activate when an
+                     event has occured
+          - event_requires_trigger: whether or not a 'set [EventName],1;' has to be
+                     defined first for the event to be activated
+
+        * Added 8 of the new card effects on the 2/15's patch (still untested and
+          not yet added to the item_db)
+          - Refer to doc/item_bonus.txt for description
+
+        * Minor rewrites on self and enemy weapon/armor breaking during battle [celest]
+        * Added missing code for 'bBreakWeaponRate' and 'bBreakArmorRate' effects
+          [celest]
+        * Added missing code for 'bAddStealRate' effect [celest]
+        * Removed redundant 'infinite_autospell' in map_session_data [celest]
+        * Fixed Treasure Box spawn bug in all castles. [Lupus]
+        * Fixed wrong PresentLOG (it wasn't showing PRESENT BOX type ID) [Lupus]
+	* Expanded Monsters Drops Slots from 8 to 10. Everywhere in the sources. [Lupus]
+	  But in TXT / SQL monsters DB reading functions, I added a temp plug
+	  to make eA work fine with existing DBs. It reads only 8 drops and fills
+	  9th and 10th drops with Zero.
+	  On expanding MOB_DB.TXT we'll remove that plug.
+	  We are adding new cards and some monsters
+	  have no free slots for them. Current state is tested and works fine.
+
+02/15
+        * Allow Potion Pitcher to be able to cast on yourself -- i've almost forgot
+          about this, thanks to Filougarou and Poki#3 for the fix ^^; [celest]
+        * Added Wallex's changes for weapon skills to read list_num from the skill_db
+          when calculating damage [celest]
+	* Login / Login SQL: Fixed the EXE-Version check (now it works finally :) [Sirius]
+	* Char SQL: Fixed the '0x2b05' reply to the mapserver (now multi - mapservers works again!)
+        * Rewrote skill blocking system that was allowing people to bypass blocking
+          time simply by casting a different skill [celest]
+        * Edited out some inconsistencies with skillnotok [celest]
+        * Corrected Investigate's damage calculation, thanks to matthias [celest]
+        * Generate the remaining entries of the stat point DB if the number of
+          entries in db/statuspoints.txt is less than MAX_LEVEL, or statuspoints.txt
+          was not found [celest]
+        * Try to spawn the player at a default map ("prontera.gat") when logging in if
+          the save point map was not found [celest]
+
+02/13
+        * added an @autoloot switch that Upa-kun has forgotten [Shinomori]
+        * changed pet_skillattack_timer and corrected the poison spore attack
+        * tighter check's on "unknown skill" error; but added prints to trace it
+        * Added Wallex's changes to only evoke script_rid2sd if agitcheck(1) is used
+          [celest]
+        * Merged jA's equipment breaking system into the current one, and corrected
+          items with unbreakable effects in the item_db [celest]
+          - "bonus bUnbreakable,[chance];" changed to
+            "bonus bUnbreakable[Weapon/Armor/Helm/Shield],0;"
+
+02/12
+        * Merged Dexity's pc_statpointdb into pc_readdb, changed statp's string
+          array to short (less memory), and fixed the db not giving status points if
+          character level is above 255 [celest]
+        * fixing and optimizing sharp shooting
+          have implemented two different versions, just have a look and 
+          decide which to use, description is in the code [Shinomori]
+        * Changed default map cache path from db/map.info to save/mapinfo.txt [celest]
+        * Removed old code for Sharp Shooting (still a little buggy) [celest]
+        * Merged Shinomori's code into map_foreachinpath [celest]
+
+02/11
+        * mob.c fixed doubling entries in DROPS LOG, optimized [Lupus]
+        * item_noequip.txt now you can disable named consumable items
+	  during GvG / PvP, too by Maya, optimized and checked [Lupus]
+	NOTE: Get rid of old cards on your server!!! IDs: 4149-4332
+	  before using of this item_db.txt (some cards have changed their IDs)
+	  and it could cause ALIEN cards in your players equipment 8))
+		i.g. a weapon compounding CARDS inserted in armor, etc...
+        * item_db.txt Massive update: [Lupus]
+	  - Added all new missing items (up to st.Valentine's Day Event)
+	  - Added new cards 4149-4332, sorted them and set their sripts.
+	  - Fixed some names, typos, weigths and prices
+	* Commented out old custom cards from Old_Card_Album.txt till we brush them up [Lupus]
+	* Removed old custom cards from MOBs drops [Lupus]
+	  thanks to Landarma(new items templates) Poki#3(removing cards from drops)
+        * Tidied up battle_check_target abit [celest]
+        * Updated traps to affect allies as well in GvG [celest]
+        * Check if login server is online before setting character to online (in SQL),
+          thanks to Alex14 [celest]
+        * Synchronise storage as well when saving character to cut down on item
+          rollbacks or duping, by Yor / Frea [celest]
+        * Added fix for super novices' Guardian Angel system crashing when base_exp = 0
+          thanks to Alex14 [celest]
+        * not realy fixing the "unknown skill" error 
+          but returning skill_castend_damage_id when called with skillid < 0
+          still need to search a reason why it is called with -1 [Shinomori]
+        * EXPERIMENTAL: Reduced memory used for the skill_tree DB by 30+mb [celest]
+        * Added script commands isday and isnight - checks whether its night or 
+          daytime. Example: if(isnight()) ... [celest]
+        * Skill Updates [celest]
+          - Sharp Shooting: Dropped jA's and kA's code and wrote a new
+            map_foreachinpath function in map.c -- about 14 times faster, but still
+            uncomplete
+          - Ankle Snare: Added matthias' suggestion to let agility reduce more trap
+            time, but no less than 3 seconds.
+          - Magnum Break: simplified code a bit, and changed to non-targetting /
+            automatically damages an area around the caster
+          - Tiger Fist: enable it to be used by its own besides as a part of
+            the combo skills
+          - Devotion: Fixed maximum level difference not reading its setting from
+            battle_athena.conf, thanks to leinsirk
+          - Soul Burn: Added some safety checks
+
+02/10
+	* Login/Login SQL: fixed the client version check function [Sirius]
+
+02/09
+	* Added conf-tmpl/readme.txt, explaining the import folder [1066: Ajarn]
+	* SQL Char: Rewrote the char_create function (now it's faster/optimized) [Sirius]
+	* SQL Char: Fixed the reply if a charname is invalid on create (now it replys denied..) [Sirius]
+	* SQL Char: Added a Character limit per Account (can be set in the config) [Sirius]
+	* SQL Char: Optimized some SQL-Querys [Sirius]
+
+02/06
+	* NULL entries for guild data fixed [Credit to Sirius] [1060: Ajarn]
+	* Login server uses  login_db_userid and login_db_user_pass for 
+	  queries now [Credit to Sirius] [1059: Ajarn]
+	* Login server can now check clientversion in clientinfo
+	  [Credit to Sirius] [1059: Ajarn]
+	* Fixed txt build compile problems[1057: MouseJstr]
+	* Corrected end-of-line issues in source code [1056: MouseJstr]
+	* Coded new command: @MOBINFO <monster name|monster N> [Lupus]
+	  the command has also 2 aliases: @monsterinfo, @mi
+	  It shows all Monster stats, Element, Race and stuff
+	  It shows all items with their drop chance
+	  It also shows MVP bonuses (MVP EXP, MVP Drops)	
+
+02/05
+	* increased the max_files allowed in a grf [1054: MouseJstr]
+	* Changed the way char deletion works for SQL [1051: Ajarn]
+	  - If the email the client fails check then check if the
+	    email is blank and the DB email is a@a.com (default)
+	    If so, assume it was created with _M/_F, and delete it
+	* SQL Login accepts _M/_F now [Credit to Sirius] [1049: Ajarn]
+	* Map server now actually reads bind_ip [1048: Ajarn]
+	  Side note: login reads bind_ip, but doesn't use login_ip now.
+	* Made eA compile under AMD64 64-bit native [1047: MouseJstr]
+        * Changed interface binding to use a bind_ip instead of using
+          the login_ip, char_ip, or map_ip.  This lets you still be
+          able to set your WAN IP seperate from what interface you
+          wish to bind to.  Also, the default is back to binding to
+          all interfaces on the machine.  [1045: MouseJstr]
+        * optimizing OnTouch event name generation [Shinomori]
+        * fixing Celests Sharp Shooting [Shinomori]
+        * Updated Sharp Shooting AoE code, thanks to Neodis / k-Athena [celest]
+          - Update: Adapt jA's path_search algorithm and removed the need of struct
+            'dev' in map_session_data
+          - Update: Increase range to 14
+        * Tidied up explicit typecasts in status_get_max_hp, thanks to Ilpalazzo-sama
+          [celest]
+        * Non-MVP / miniboss summoned monsters should give exp, my mistake ^^; [celest]
+          Note:- minibosses are considered a 'Boss' as well, not just MVP's
+        * Fixed a typo that was preventing packet version 5 clients (628sak) from
+          logging in (it was supposed to only block those with 4 or below) [celest]
+
+02/04
+        * Fixed more compile signed/unsigned errors [SVN 1040: MouseJstr]
+	* TXT convertors now read the import command in inter_athena.conf
+	  [SVN 1038: Ajarn]
+        * Fixed some compile errors [SVN 1037: MouseJstr]
+	* Added common/buffer.(c/h) [SVN 1033: Ajarn]
+	* Login server can now set it's ip address in the config [SVN 1033: Ajarn]
+	* Servers now bind to a single ip address, thus allowing multiple servers to
+	  a single port [SVN 1033: Ajarn]
+        * Added experimental code to generate a stack dump when it segfaults, thanks
+          to Ser [celest]
+          - does not work with Cygwin, as it does not have glibc
+          - to enable, edit the Makefile and remove the # on the line:
+
+                # OPT += -DDUMPSTACK -rdynamic
+
+          - What it does: everytime eA crashes it'll generate a file "stackdump_
+            <number>.txt" in your save folder with a backtrace, which you can
+            examine and send to a dev to be fixed.
+
+        * Some more tidying up in status_get_ functions [celest]
+
+02/03
+        * When loading shop scripts automatically check if the prices can be exploited
+          with OC/DC [celest]
+        * If the buying price provided in item_db.txt is above 2x higher than selling
+          price for an item no need to reset and redetermine the buying price [celest]
+        * Fixed a mistake that was causing Ruwach to only work in PvP and PvM [celest]
+        * Added DracoRPG's code for Joint Beat effects, thanks! [celest]
+
+02/02
+	* Added checks to prevent some crashes in skill.c
+	  [Full credit to shinomori] [SVN 1022: Ajarn]
+        * Removed nullpo check in skillnotok() -- otherwise it will display fail 
+          messages for monster skills [celest]
+        * Added crash check for Ice Wall [celest]
+        * Added some optimisations by Ilpalazzo-sama [celest]
+          - reduce mob_data->size variable to 1 bytes
+          - change from if-else to switch statements in buildin_strmobinfo
+
+01/31
+        * Fixed a typo in Pressure causing it to deduct sp from the caster, and remove
+          its sp_rate requirement [celest]
+        * Updated skill_range_leniency code when casting a ground targetting spell      
+          ( as in Revision 968) [celest]
+        * Added Karma and Manner to const.txt
+          -- To change a player's alignment to more Good/Evil in scripting for example,
+             use:
+                 set Karma, Karma + <number here>;
+
+             In older exe's (11-08 or older) you can actually check your karma in the
+             character alignment screen (alt-A)
+             The rest is up to your scripting creativity ^^
+
+        * Delete players' ID from id_db when kicking everyone from the map-server due
+          to char disconnection -- Fixes an odd crash with lazy mob AI [celest]
+	* Added at(@) command @autoloot, which turns autoloot on or off for the
+	  player who uses it [Upa-Kun]
+	  
+01/29
+	* Fixed Storage Bug with Named Stackable items. Thanks to Nimion [Lupus]
+		e.g. Arrows, Iron, Elemental stones, etc...
+        * Added a crash check to Safety Wall, thanks to LebrEf[TaVu] / Freya for
+          pointing it out [celest]
+        * Added some optimisations in clif_parse_MapMove, by Ilpalazzo-sama [celest]
+
+01/28
+        * Fixed a typo that was causing /in to always report failure even when the
+          name was removed from the ignore list [celest]
+        * Link "wisexin", "wisexlist" and "wisall" to the PM ignore functions, and
+         "friendslistadd" and "friendslistremove" to the friends list functions
+          when parsing the packet DB [celest]
+        * added clif_parse_PMIgnoreList (packet 0xd3) from jA [celest]
+        * Added DUMP_ALL_PACKETS and moved dump packets code in clif_parse a bit to
+          support it [celest]
+        * Added base code for Party Item Sharing -- still needs some work in client-
+          server support [celest]
+	* new GC link http://amber.stormbirds.org/~joshs/gc6.4.tar.gz
+	  This fixes some issues... works better
+        * Added macros skill_chk and skill_get to check for out of bounds errors when
+          retrieving info from the skill_db [celest]
+
+01/27
+        * Added memory leak fixes with temporary script variables and pets-related
+          actions, by End_of_exam / jA 1109 [celest]
+        * Kick all characters when the char server disconnects from the map
+          server [celest]
+        * Added @changelook command for spriters to test view ID's [celest]
+        * Added a check to Pneuma to prevent crashing, thanks to LebrEf[TaVu]/Freya for
+          pointing it out [celest] [celest]
+        * Tweaked garbage collection code after feedback from users
+        [SVN 1002: MouseJstr]
+	* Fixed TRADE exploits (it cures proxy hack / vending+trade hack) thanks to Freya [Lupus]
+
+01/26
+        * Added bug fix for a memory leak caused when a character logs out,
+          by End_of_exam / jA 1108 [celest]
+        * Fixed a bug in gettick cache when compiling in Windows, thanks to Shinomori
+          (jA 1094) [celest]
+        * Added updates from jA 1092 [celest]
+          - Changed "read_map_from_bitmap" to "read_map_from_cache",
+            "map_bitmap_path" to "map_cache_file" in map_athena
+          - Fixed item effects not showing when only one was used
+          - Fixed a bug in Safety Wall
+          - Allow only either Storm Gust or Lord of Vermillion to cause damage if
+            stacked together
+          - Added path_search_long, map_find_skill_unit_oncell
+
+        * Added status_get_sc_def for calculating resistance against status
+          abnormalities [celest]
+        * Added status.c and status.h of jA 1091 update and moved some functions into
+          the new source files:
+          -- skill_status_change_  ->  status_change_
+          -- battle_get_  ->  status_get_
+          -- pc_calc_  ->  status_calc_
+          -- pc_getrefinebonus and pc_percentrefinery  ->  status_getrefinebonus and
+             status_percentrefinery
+
+        * Updated auto_counter_type's description in battle_athena, thanks to 
+          akusarujin for pointing it out [celest]
+        * Removed some unnecessary skill level checks in battle.c [celest]
+        * Removed my changes to /stable/Makefile which has libGC enabled by default
+          that i've accidentally commited, sorry ^^; [celest]
+        * Removed an unnecessary "cloneskill_lv" from map_session_data [celest]
+	* Removed WATER.TXT (this file wasn't used at all. There's no such mapflag as WATER even). [Lupus]
+	* Added Water Height of New Yuno Fileds 9 and 11.
+	  Now Water Ball works there as should. Wizards could levelup on sleepers, too. [Lupus]
+        * libGC isn't ready to be the default quite yet... [MouseJstr]
+        
+          Enough people have asked so... Once you grab a copy of the
+          libGC library from  (http://amber.stormbirds.org/~joshs/gc6.3.tar),
+          you start up a bash shell from inside cygwin and untar
+          the gc6.3.tar.  This will produce a gc6.3 directory.  Then
+          cd into that directory and type ./configure.  Once that is
+          done you type "make" and then "make install".  This will
+          spray the various includes and libraries all over your
+          cygwin install (most in /usr/local).  
+
+          Now, edit Makefile and change the CC line to use the
+
+             CC = gcc -pipe -DGCOLLECT
+
+          entry.  Also change the GCLIB to 
+
+             GCLIB = -L/usr/local/lib -lgc
+
+          Remember to comment out the ones no longer used.  Do a clean
+          build and good luck.  Obviously,  this has not been tested
+          by that many people so you really are on the cutting edge
+          but if you have good results, send me a note
+          (joshs@stormbirds.org) so that we can see if it really is
+          ready for prime time.
+
+          What should you see?  Well, the map-server should not
+          grow/consume extra memory anymore.  More so, it should use
+          dramatically less memory then it did before using the
+          garbage collector.
+
+          The downside is that it will consume a little more CPU...
+
+          The question is, how much?  how laggy?   what effect on lots
+          of players?  I've heard stories saying it makes the server
+          unplayable and others told me that they saw no
+          player-visible effects at all.
+
+
+01/25
+        * Fixed TXT compile problems with libGC [celest]
+        * Added "Clients older than 2004-09-06aSakray" option to packet_ver_flag in
+          battle_athena, just in case server owners still prefer the older clients.
+          With so many changes to Sakray over the past months its much better upgrading
+          to the newer clients (November or higher recommended) available ;P [celest]
+        * Merged Full Strip into jA's tidier stripping skills code -- also fixes
+          a typo that was causing Full Strip to do the reverse effect instead,
+          and the skill not updating the target's status after successfully unequipping
+          items [celest]
+        * Tidy up the 4 chemical protection skills into one code block [celest]
+        * Corrected Slim Pitcher's code -- sorry, i missed a few things ^^; [celest]
+
+01/24
+        * Fixed a typo in Provoke that was causing crashes [celest]
+        * Fixed another compile warning in src/char/char.c
+          [SVN 985] [MouseJstr]
+        * Fixed a account wipe bug in login/login.c (Thanks Wallex)
+          [SVN 984] [MouseJstr]
+        * Fixed a crash in char_sql/char.c where people were selecting
+          chars before requesting connections [SVN 983] [MouseJstr]
+        * some G++ compile tweaks and got through several files in the
+        map server - [SVN 976]   [MouseJstr]
+
+          Why are we doing a C++ conversion?  We have a lot of duplicate
+          code and would like to make the "classes" in the server share
+          code.. For example, a pet should be able to share code from
+          the player or from a mob.  Similerly, introducing a new type
+          of entity in the game should be as simple as creating a
+          sub-class instead of having to crawl through the entire source
+          tree searching for every class check and introducing handler
+          code in for your new type.
+
+          Finally, while a garbage collector is "cool", it would still
+          be nice to have enough object knowledge on how to clean up
+          data that it is not absolutely required.  It is faster for
+          us to clean up our own messes then introduce a whole system
+          for cleaning up after ourselves.
+
+          Is there a C++ performance penalty?  Not if the code is
+          written correctly.   For example
+                  1) No templates - code bloat and destroys cpu cache
+                     coheriancy
+                  2) No C++ exceptions - slows down entering and
+                     exiting functions
+                  3) No operator overloading - makes it hard to
+                     understand what is going on.
+                  4) No C++ STL libraries - Templates, huge, bloated,
+                     unportable
+                  5) No method inlining - code bloat and reduces cache
+                     coheriancy.  Let the optimizer do it...
+
+01/23
+	* char-server (SQL & TXT), login-server (SQL & TXT), and txt-coonvertors
+	  (char and login) all compile on g++ now [svn 975] [Ajarn]
+	* Fixed the sizeof errors in g++ [SVN 972] [Ajarn]
+	* Reverted back some of the char* changes [SVN 972] [Ajarn]
+	* Changed parse_script to now return char* [SVN 969] [Ajarn] 
+	* Converted run_script and run_script_main from unsigned char* to char*
+	  [SVN 969] [Ajarn]
+	* Forgot a couple small changes [SVN 35] [Ajarn]
+	* Changed map_data.gat and map_data_other_server.gat from unsigned char*
+	  to char* (this might be needed, because of unicode or something, please
+	  correct me if I'm wrong) [SVN 34] [Ajarn]
+	* Converted decode_zip, encode_zip, remove_control_chars, mapif_sendall*,
+	  and e_mail_check to use char* instead of unsigned char* (again, please test)
+	  [SVN 34] [Ajarn]
+        * Modified skill unit group checking in skill_unit_onplace that might have
+          been causing crashes [celest]
+        * Updated packet 0x143 length's for version 14 (2004-11-01Sakexe) and version
+          16 (2005-01-10Sakexe), thanks to jathena and ice2big [celest]
+        * Fixed login-server compile error with the "new" -> "new_" changes [celest]
+
+01/22
+	* Fixed an error that was in my last commit (optimising g++ build) [SVN 29]
+	  [Ajarn]
+	* Made strlib functions char*, instead of unsigned char*. Strings are meant
+	  to be char. (Shouldn't break anything, but might, please test this for me)
+	  [SVN 26] [Ajarn]
+	* Added cast for TXT version [SVN 25] [Ajarn]
+	* Added cast from allocation calls, from void* to intended type [SVN 24] [Ajarn]
+	* Changed bool -> bool_. Still need to make convertions between
+	  char* and unsigned char* valid, and some other convertions too.
+	  Also, sizeof is being used wierd in map.c, at least g++
+	  complains [SVN 22] [Ajarn]
+	* Changed the rest of the class variable names to class_ and all the new
+	  variable names to new_, for futher g++ support [SVN 21] [Ajarn]
+        * Update both caster and target's SP after using Soul Change -- thanks to Aalye
+          / Freya [celest]
+        * Force a monster to switch attack target when being casted Provoke [celest]
+        * Corrected description for @enablenpc -- "@npcon" -> "@enablenpc" [celest]
+        * Since job normalising is still buggy require all 1st class skills to check
+          for Basic Skill level when calculating the skill tree [celest]
+
+01/21
+        * Updated packet DB configurations : enable_packet_db, packet_db_ver,
+          -- check the .txt for description [celest]
+
+          Note: For people having connection problems try setting 'enable_packet_db'
+          to 'no'... and use the latest client (01-10Sakexe)
+
+        * Fixed a small typo in 12-06's packets -- 21b => 21d [celest]
+        * Updated packet_db.txt to only contain the latest version, like jAthena,
+          since there's not much point to re-read packets eA already supports 
+          (although if you remove all the //'s it can still read multiple versions)
+          [celest]
+        * Added clif_config in clif.c - for keeping packet/client connections related
+          stuff [celest]
+        * Send 'Game Exe not latest version' to a client if it hasn't been authentified
+          yet, but is sending a non-connection-related packet to prevent crashing
+          -- assume the client is using an unknown exe [celest]
+
+01/20
+	* Fixed compile time problems with the non-GC case [MouseJstr]
+	* Introduced aMallocA and aCallocA
+
+	  These two functions allocate "atomic" memory which means 
+	  "memory that does not contain references to other memory".
+
+	  This lets the garbage collector ignore these objects when searching
+	  memory for references to other objects dramatically increasing
+	  performance of the GC.  
+
+	  When in doubt, use aMalloc and aCalloc.  It is better to add
+	  a tiny bit of work to the GC then do cause a crash due to memory
+	  being cleaned up when it shouldn't.
+	  [MouseJstr]
+	* Modified all calls to aMalloc and aCalloc that reference
+	  atomic memory to use aMallocA and aCallocA
+	  [MouseJstr]
+	* Modified the socket buffer allocator to use "atomic" memory
+	  for the fifo data buffers [MouseJstr]
+01/19
+	* added support for the Hans-J. Boehm libC garbage collector
+	  (A copy is in http://amber.stormbirds.org/~joshs/gc6.3.tar).  
+
+	  It is ABSOLUTELY critical for people to use
+	  aFree/aMalloc/aCalloc/aStrdup for this to work.  If somebody
+	  has just used free or malloc, this will crash when used with
+	  the garbage collector.  
+
+	  A amusing environmental variable to set is GC_PRINT_STATS (to 1)
+	  so that you see real time statistics of leaked data being
+	  recovered.  
+
+	  grab a copy of the gc6.3.tar.. build it .. install it.. 
+	  modify the Makefile to have the 
+
+		CC = gcc -pipe -DGCOLLECT
+		GCLIB = -lgc
+
+	  lines... and make the sql servers (the txt server doesn't
+	  build using this right now due to stupid Makefile issues)
+
+	  [MouseJstr]
+	* SVN 3 on http://svn.stormbirds.org/svn/eathena will be what
+	  I diff against when I merge back into delta.. if we ever merge
+	  back into delta   [MouseJstr]
+        * Removed 12-06 Sakexe detection, since it doesn't seem to work, and
+          might be conflicting with 10-25 clients [celest]
+        * Update the Soul Burn target's SP when it has been successfully reduced to 0,
+          thanks to Aalye / Freya [celest]
+        * Moved SC_PRESERVE and SC_BATTLEORDERS's id so they'll display a status icon
+          when cast, thanks XiaoLin of cAthena [celest]
+        * Added missing code for Preserve -- i totally forgot to add it ^^; [celest]
+
+01/18
+        * Added some skill bug fixes, thanks to Aalye / Freya [celest]
+          - stop player attacking if the target goes into hiding
+          - fixed Sword Reject not working against swords, only daggers
+          - additional check in case Marionette Control doesn't end properly even
+            when one of the partners has logged off
+        * Added stun, bleeding and SP loss effect for Pressure, thanks to DracoRpg
+          [celest]
+        * TEST: Fixed more compile warnings in MSVC [celest]
+        * TEST: Fixed some compile errors in MS Visual C++, thanks to Ser [celest]
+
+01/17
+        * Some rewrites in skill_delayfix [celest]
+          - If the delay is < 0, add the weapon aspd delay to it
+          - If the skill is not weapon type, and has 0 delay, add 300ms as default
+        * Added min_skill_delay_limit as the minimum allowed delay for any skills
+          [celest]
+        * Some tidying up in battle_get_ functions [celest]
+        * Set exp table and job bonus table to 0 before reading - might solve some
+          memory bugs [celest]
+        * Updated skill range leniency code - If possible try and move towards the
+          skill target so that when casting it no longer falls out of range [celest]
+
+01/15
+        * Added effects to enemies for Gospel [celest]
+        * Added mobs spawn to all Yuno fields (according to 4th Jan patch) [Lupus]
+
+01/14
+        * Added party supporting effects for Gospel [celest]
+
+01/13
+        * Added and testing support for 2004-12-06Sakexe [celest]
+        * Removed emblem changing requiring Glory of Guild limited to TXT only [celest]
+        * Corrected a typo preventing Plagiarism to work, thanks to orn [celest]
+        * Fixed Berzebub card and other 'reduce cast delays' equipment not working
+          [celest]
+        * Updated packet_db.txt loading to support reading into multiple packet
+          versions [celest]
+        * Removed packet_db_ver defining in packet_db.txt -- it'll determine itself
+          based on MAX_PACKET_VER [celest]
+        * Integrated packet size and function DB's into 1 packet_db [celest]
+        * Added MAX_PACKET_VER -- maximum versions supported by eA, including the
+          packet_db -- and changed packet size and function DB's to use it [celest]
+        * When sending 'Game exe not latest version' packet don't close the session 
+          immediately so it will still be delivered [celest]
+        * Added map-server display if an unidentified client was rejected --
+          also fixes the 'empty string sent to _showmessage' [celest]
+	* Added a bug - Celest, LOOK AT THIS BUG ASAP. [Codemaster]
+        * Tided up/fixed some mobs [Lupus]
+
+01/12
+        * Implemented Vending Log [Lupus]
+	  TODO: use log option to log only important deals (much money, rare items, etc)
+
+01/11
+        * Added Shinomori's changes to npc event timers (I never realised it, thanks
+          ^^; ) [celest]
+        * Updated clif.c to be able to identify client versions based on the packet DB
+          [celest]
+        * Correct packet_db_ver to the maximum version allowed if it was set too high 
+          or too low in packet_db.txt [celest]
+        * Added support for 2005-01-10Sakexe [celest]
+        * Updated packet functions for 2004-11-08 and 2004-12-06 (Note: eA *can*
+          support 12-06, but still doesn't recognise it... so unless we find a way,
+          it is *not* supported yet) [celest]
+        * Updated packet_db, thanks to Sara-chan [celest]
+        * REMOVED support for clients before packet version 10 (2004-08-25 and 
+          earlier) - the client will receive a 'Game Exe not latest version' message
+          [celest]
+        * Added a check to prevent crashing when trying to log in with
+          2005-01-10aSakexe in servers that don't support it [celest]          
+	* Added a fix to @sound where if you forgot the .wav exention, i'd attempt to play the file without it (it adds the .wav) [Codemaster] [SVN 949]
+	* Added @disguiseall / @undisguiseall [Codemaster] [SVN 949]
+	* Added misc. clif.c fixes (jAthena added alot of close(fd)'s, so i added them, too) [Codemaster] [SVN 949]
+	* Added bug reports - Celest, you might want to check one of those out [Codemaster] [SVN 949]
+        * Fixed a bug in clif.c which didn't allow to enther the map-server.
+	  It worked under win32, but didn't under Linux. [Lupus]
+
+01/10
+        * Completed adding packet DB reading... still needs (a lot) more work in
+          clif.c [celest]
+        * Added Shinomori's suggestions for npc timers, thanks again ^^ [celest]
+        * Removed checking for script event timers' length, and added Shinomori's
+          changes [celest]
+        * Start adding packet DB reading [celest]
+        * Added 'max_eventtimer_length' (default is 32) to script_athena.conf. [celest]
+          Some event timers with names longer than 24 could cause the server to close
+          itself, change this if you need support for even longer names
+        * Removed PCLoginEvent requiring 'PCLoginEvent' for the player to be set to 1
+          first to be activated. [celest]
+        * Added Shinomori and orn's fix for the skill tree to only check the first
+          required skill in the DB and skipping the rest [celest]
+        * Modified 'wedding' script command to work with "OnTimer" scripts even without
+          doing 'attachnpctimer' (The 'player not attached' error will still display,
+          but the effect will appear *over the NPC* instead of the player...
+          at least it won't fail ^^) [celest]
+        * Added 'attachnpctimer' script command for attaching the player to the current
+          npc's timer in "OnTimerxxxx" scripts, thanks to Wallex for the idea. [celest]
+          Syntax:
+                 attachnpctimer;
+                 attachnpctimer "<Player Name">;
+
+          Check /npc/sample/npc_test_npctimer2.txt for example.
+        * Added 'detachnpctimer' script command for detaching players from the npc's
+          timer. [celest] Syntax:
+                 detachnpctimer;
+                 detachnpctimer "<NPC Name">;
+
+	* Added 'OnInterIfInitOnce' for WoE scripts & modified the WoE scripts as well [Ajarn & Codemaster] [Thanks to FREYA] [SVN 943]
+	* Added the @sound command and the NPC command of soundeffectall
+	 - works just like soundeffect, but plays for everyone in the area [Codemaster] [SVN 942]
+	* Don't allow Pets to attack Guardians outside of WoE [Codemaster] [SVN 940]
+	* Require 15% of HP or more for WE_MALE skill [Codemaster] [SVN 940]
+	* Require 15% of SP or more for WE_FEMALE skill [Codemaster] [SVN 940]
+
+01/07
+        * Upon changing to high novice 100 stat points should be given, not 88 [celest]
+        * Give high novices First Aid and Trick Dead upon job changing [celest]
+        * Remove some unnecessary checks in battle.c [celest]
+        * Added some checks to prevent novices still allowed to attack when using
+          Trick Dead [celest]
+        * Added 'summon' script command. Syntax:
+
+          	summon <monster name>,<monster id>[,<event>];
+
+          Example: 'summon "Poring", 1002, "OnPoringKilled"; 'will summon (note:
+                   not *spawn*) 1 poring that'll help its master for 1 minute,
+                   and activate the "OnPoringKilled" event when killed.
+                   'summon "--ja--",-1;' will summon a random monster.
+
+        * Added Wallex's fix for the wedding script functions [celest]
+        * Added the below-mentioned alive packet to SQL's char and login [celest]
+        * Enabled login server 'anti-freeze' by default as a temporary solution
+          to char-login disconnection [celest]
+        * The TXT char server was rejecting login's "i'm alive" packet and disconnecting
+          it... fixed [celest]
+        * Stall_time wasn't being read in login_athena at all (not by the login server,
+          because the code didn't read it, nor by TXT map server, since its in the SQL
+          inter_athena.conf reading)... so moved it to inter_athena.conf, and
+          change sql_config_read in map.c to inter_config_read [celest]
+        * Some tidying up of battle_get_def and _def2 [celest]
+        * Added 'bDelayrate' and changed Phen card, Marduk Card and Berzebub Card's
+          effects to use this instead of bCastrate (which was reducing casting time,
+          not delay time) [celest]
+        * Some tidying up of skill_castfix and skill_delayfix [celest]
+        * Added Filougarou's fix for Bowling Bash causing it to only display damage, 
+          but doesn't do any - thanks! [celest]
+        * Set delay_dependon_dex in battle_athena to 'no' by default [celest]
+
+          Note: Just to clarify things, on official servers dex is not supposed to 
+                reduce skill delays, only Poem of Bragi and Berzebub card does!
+
+        * Fixed typo in skill_delayfix - reduce delays only if delaynodex was *not* set,
+          sorry ^^; [celest]
+
+01/06
+	* Fixed various memory corruptions causing crashes (SVN 925) [MouseJstr]
+	* Fixed typo in src/map/map.c causing compile 
+	  errors (SVN 924) [MouseJstr]
+	* Removed the alive_timer mechanism entirly replaced with
+	  a stall detection mechanism that will disconnect a player
+	  who has not sent any data for a configurable 
+	  (conf/login_athena.conf:stall_time) amount of time.  The default
+	  is currently 60 seconds.
+
+	  The root cause of the disconnect error is that some NAT based
+	  routers are not dropping the TCP connection when the aliased
+	  machine goes offline abnormally.   This means that we are seeing
+	  a stalled but perfectly valid TCP connection.
+
+	  (SVN 924) [MouseJstr]
+01/05
+	* Fixed some typos in map_versionscreen() [MC Cameri]
+	* Removed loop freeing in map-server's do_final(), it was causing seg faults [MC Cameri]
+	* Finished do_storage_final() in map-server's do_final(), it was there but doing nothing [MC Cameri]
+	* Fixed Celest's typo making all vended items cost 0 zeny [Codemaster] [SVN 919]
+        * If a vending item was priced at 0 it'll be auto changed to 1million [celest]
+        * Fixed TXT logging - log_athena.conf reading was kind of messed up [celest]
+        * Added a simplified version of Qamera's OnConnect: OnDisconnect: OnDeath: 
+          NPC events mod, (All credits go to him.) except adapted based on eA's current
+          PCLoginEvent. (by davidsiaw) [celest]
+          - Currently only 4 events have been added: PCDieEvent, PCKillEvent, 
+            PCLogoutEvent and PCLoginEvent
+          - For notes and usage example check /npc/sample/PCLoginEvent.txt (by
+            davidsiaw)
+          - To enable them for a player in a script, do
+            "set <name of event>, <0 or 1>;"
+            (yes it's saved in a permanent character variable and auto read every time)
+          - Simply put, if any of them is set to 1 the appropiate event will activate
+          p.s - Scripters who are already using PcLoginEvent, you'll need to add a
+                "set PCLoginEvent, 1;" now, sorry for the trouble.
+
+        * Optimised PCLoginEvent activation a bit [celest]
+        * Set 'droprate0item''s default to 'yes' so that items with 0 rate will never
+          drop [celest]
+        * Look at item type other than item ID as well to check whether it is a card
+          in card-related script commands - better support for custom items [celest]
+        * Reset all skill variables if the skill fails so certain skills can't be
+          abused (such as Warp, thanks to Alex14 for pointing it out) [celest]
+        * Added /mapflag/noreturn.txt for disabling butterfly wings (not fly wings)
+          [celest]
+        * Fixed skill_require_db reading somehow getting corrupted if weapons usable
+          for the skill is more than 20, thus causing the skills to fail everytime 
+          [celest]
+        * Fixed @killmonster crashing the server with summoned monsters, thanks to 
+          Alex14 [celest]
+        * Added double_connection_system to battle_athena (not completed yet) [celest]
+
+01/04
+	* Fixed GM Command Logging (Not sure why TXT logging still isn't working properly :( ) [Codemaster] [SVN 907]
+	* Fixed one of Lupus' additions to the item_db [Codemaster] [SVN 907]
+        * Fixed Seismic Weapon Skill (it 100% didn't break target's weapon at 4 level of the skill) [Lupus]
+
+01/02
+        * Re-fixed map-server crashing if an empty line is in skill_castnodex.txt,
+          thanks to Alex14 for pointing it out (SVN 899) [celest]
+        * Modified breaking rates calculating - meltdown's chances is separated from
+          self breaking chances (SVN 900)  [celest]
+        * Reduced MAX_SKILL_LEVEL to 10 to save a bit of memory and speed [celest]
+        * Tidied up parts in skill_castfix a bit (SVN 895) [celest]
+        * Fixed map-server crashing if an empty line was added in any of the skill-xx
+          db files  (SVN 895) [celest]
+        * Updated skill_castnodex reading - An *optional* 3rd value can be added to set
+          whether a skill's delay time can be affected by dex  (SVN 895) [celest]
+          Example: 46,1,1 - double strafe's delay is not affected by dex
+                   46,1,0:0:0:0:1 - only level 5 double strafe is not affected by dex
+	* More atempts at memory leak fixes [Codemaster] [SVN 890]
+        * Updated weapon breaking rates, thanks to DracoRPG  (SVN 891) [celest]
+        * Optimized enchanting skills success rates calculation, thanks to Wallex
+          (you were right! ^^; )  (SVN 891) [celest]
+        * Modified Spiral Pierce and Breaker to type ranged (SVN 891) [celest]
+
+01/01/05
+	* Attempted to fix a memory leak [Codemaster] - tell me if it works XD (NPC/Mob memory leak in npc_parse_mob(...)) [SVN 886]
+	* Added a char config that allows GMs that have a certain level or above to 
+	  bypass the server's user limit [Codemaster]
+	* Changed some create arrow outputs for new kRO 12/21/04 patch [Aria]
+	* Fixed some respawn delays of MVP/Miniboss monsters. Redo Umbala/Niflheim fields, added missing mobs, corrected
+	  monsters quantity. In Niflheim fixed wrong Lord of Death monster ID. [Lupus]
+12/30
+        * Added ispartneron, getpartnerid, and warppartner script
+          commands to properly support jawaii NPC's (SVN 880) [MouseJstr]
+        * Moved supernovice guardian angel messages to msg_athena.conf [celest]
+
+12/29
+	* Fix account register wipe issue (SVN 868) [MouseJstr]
+	* Double storage/lag exploit fixed (SVN 867) [MouseJstr]
+	* Another -1 alive_timer fix (SVN 866) [MouseJstr]
+	* Added @dmstart and @dmtick for debugging malloc tests [MouseJstr]
+	* Fix some more compile errors on different platforms [MouseJstr]
+	* Fixing a crash if you change the name of a pet you don't have (SVN 863) [MouseJstr]
+	* Eliminated src/common/malloc.c when not needed [MouseJstr]
+	* Some code cleanup in prep for new debugging malloc (SVN 861) [MouseJstr]
+        * Updated Soul Breaker's damage calculation [celest]
+        * Updated Meteor Assault's cast delay to be not affected by dex [celest]
+        * Changed int_guild.c so it will calculate average guild level only if > 0
+          members are found - prevent divide by zero crashes (why would an empty guild
+          be requested to update its' member info in the first place?) [celest]
+        * Added Shinomori's fixes for string copying in script.c [celest]
+	* Removed @giveitem since #item it's the one that does this and added some of it's support to #item [MC Cameri]
+	  -#item <item_name> <item_count> <charname|all|everyone>
+	* Uncommented out import in charcommand_athena.conf, there is
+          need to have it commented (all the others ones are
+          uncommented) [Ajarn]
+
+12/28
+        * When restarting the char-server,  reset the online status
+          of all characters and guild-members (SVN 849) [MouseJstr]
+	* Fix double timer_delete caused by pc_alive_timer (SVN 848)
+	  [MouseJstr]
+	* Fixed typo in npcs_athena.conf (mc_cameri verses mc_Cameri),
+	  thanks Mellow972 for pointing that out (SVN 845) [MouseJstr]
+        * Reduced weapon breaking chance for Overthrust, thanks Draco - i almost
+          forgot to add this update [celest]
+	* added checks into the skill code to prevent proxy's/bots
+	  from crashing the server by using skillid's that
+	  are WAY out of range (SVN 841) [MouseJstr]
+	* Fixed clif.c errors that prevent old clients from being used. [nsstrunks]
+	* Fixed @jobchange to not default to upper (SVN 837) [MouseJstr]
+	* Fixed a compile error in @mobsearch (SVN 836) [MouseJstr]
+12/27
+        * Updated 1206's packet fuctions in clif.c [celest]
+        * Updated the new guild skills - cannot be reused within 5 minutes of 
+          activating it [celest]
+        * Added @mobsearch, @cleanmap and @giveitem from jA [celest]
+	* Fixed the guild issues (SVN 832) [MouseJstr]
+        * Updated description for player_check_cloak_type [celest]
+        * Increased skill range limitations in pc_no_footset [celest]
+        * Added exp_calc_type - to alternate between 3 different versions for exp
+          calculating [celest]
+	* Reinitialized variable 'c' in map_readmap, it's supposed to have a start value. Ex. '-'. [MC Cameri]
+	* Commented out dump_timer_heap() again... [MC Cameri]
+	* Added include of string.h in malloc.c, was causing compile errors/warnings [MC Cameri]
+	* Modified the map progress bar to reduce updates (SVN 829) [MouseJstr]
+        * Updated map cache system from jA 1087 - change read_map_from_bitmap to 2 to
+          enable zlib compression [celest]
+	* don't delete alive_timers of -1  (SVN 823) [MouseJstr]
+	* switched malloc,calloc,realloc to aMalloc, aCalloc, aRealloc
+	  so support the use of a garbage collector (SVN 821) [MouseJstr]
+	* Removed some printf's from map-sql [MC Cameri]
+	* Uncommented MSG_SQL, for _ShowMessage(), usage: ShowSQL() [MC Cameri]
+	* Removed fixed bugs in dev/bugs.txt [MC Cameri]
+        * Now I remember what I was smoking.. (SVN 819) [MouseJstr]
+	* Fixed a bug in the guild_castle persistance code
+	  in char_sql.  What was I smoking?  (SVN: 816) [MouseJstr]
+        * Corrected a bad error in itemdb_read_itemslottable [celest]
+        * Corrected wrong logging of text in int_guild.c, thanks to Alex14 [celest]
+        * Summoned monsters will not give exp and items [celest]
+        * Added the 6 new Yuno fields to maps_athena.conf [celest]
+        * Added some Freya's optimisations in clif_parse [celest]
+        * Added clif_update_mobhp - monsters' hp viewing now updates properly [celest]
+        * Set alive_timer to -1 when quitting, not 0, or the map server might assume
+          its still active [celest]
+	* Changed the *_override_grffile to no by default, because many were having issues with it [Ajarn]
+
+12/26
+	* Fixed ANOTHER pet crash (double free) (SVN: 804) [MouseJstr]
+        * Added a proper #define for MAX_VENDING (SVN: 802) [MouseJstr]
+	* Fixed crash associated with vending more then 12 items
+	  which walked on memory.. corrupting the pet data 	
+	  structure (SVN: 801) [MouseJstr]
+	* Fixed a crash that resulted when disconnecting (SVN 800)
+	  the new client when the old client is still connected [MouseJstr]
+	* Fixed some gcc 2.95 compile errors [MouseJstr]
+	* Fixed some array bounds errors (SVN 799) [MouseJstr]
+	* @mapexit (and do_final) now persist all data to the
+	  char server before exiting to eliminate storage/inventory
+	  inconsistancies.. [MouseJstr]  (SVN 793)
+	* Some cleanup of spiritball memory management [MouseJstr] 
+	* Dramatic performance work for exp updates to sql.  Previously, [MouseJstr]
+	  when u killed a mob (in party share), it would cause the char_server to 
+
+	  	1) Delete all guilds for all members of your party
+	  	2) Re-create all guilds for all members of your party with the new exp
+	     		values.
+
+          Now it just generates 2 sql statements per party member,  
+
+		1) update the guild exp, 
+		2) update the guild_member exp.
+
+
+      		src/common/socket.c src/common/socket.h src/char_sql/char.c 
+		src/char_sql/int_guild.c src/map/chrif.h src/map/pc.c 
+		src/map/map.c src/map/chrif.c
+
+        * Disabled import charcommand_conf.txt by default [celest]
+        * Added Bitmap File system from jA 1086 - automatically generates a cache
+          from maps in the GRF to speed up loading. You can enable/disable it with
+          read_map_from_bitmap in map_athena.conf. Note: AFM maps will override this
+          cache [celest]
+        * Added --run_once flag for the map server for testing purposes - closes itself
+          when everything is done loading [celest]
+        * Added some code for Moonlit Petals and Basilica [celest]
+
+12/24
+        * Added suggested fix when client disconnected [celest]
+          - send "disconnected due to time gap" and close session when timed out
+          - send "server still recognises last login" message and close existing
+            session when client reconnects
+	* Upped windwalk to lv 10 in skill_tree [MouseJstr]
+	* Fixed a scripting crash (SVN: 781) [MouseJstr]
+	* removed @changesex and @charchangesex until we can
+	  fix it properly [MouseJstr]
+	* Fixed item-dup bug in storage and cart [MouseJstr]
+	* @skilltree was looking outside of the particular class
+	  of the char to see if they could do a skill [MouseJstr]
+	* Fixed a calc_skill_tree bug where too many skills were
+	  visible [MouseJstr]
+	* Added Dev/GDB_reports.txt, take a look in it devs [Ajarn]
+        * Corrected description for player_skill_nofootset and monster_skill_nofootset
+          in battle_athena.conf [celest]
+        * Added a special NPC Logging command 'logmes'. It works as mes"Hello world!"; 
+	  It is useful for such NPC as BANKS, CASINO, etc. To keep track of won money, etc.
+	  Check kafra_bank.txt 1.1 for example.
+		Note:	mes = otput into client's NPC window
+			debugmes = output into map-server window
+			logmes = output into lognpc log DB.
+
+12/23
+	* Fixed some bugs in the clif.c changes (SVN 766 to SVN 767) [MouseJstr]
+	* Added ayo monsters to @disguise
+	* Began updated clif.c to work with 1108 and 1206, tested and works [nsstrunks]
+        * Fixed skills still being available after a job change [MouseJstr]
+        * Changed pc_alive_timer to use map_id2sd - should be more accurate [celest]
+        * Added jA 1084's fix to mob.c - check whether the player is still alive
+          when calculating exp [celest]
+        * Added clif_changed_dir, clif_adopt_process [celest]
+        * updated Backstab to show the target's new direction [celest]
+        * Corrected the file types of several files in the SVN tree to
+          fix the newline issues [MouseJstr]
+	* Updated mapflags (added missing payon_in03,ayo_in01,ayo_in02, que_god01, que_god02) [Lupus]
+        * Updated Sacrifice : it's now self-activating, and lasts for 5 attacks [celest]
+        * Fixed compile errors in party.c [celest]
+        * Moved SC_EDP back to 114 [celest]
+        * Added some of Shinomori's fixes [celest]
+        * Added optimisation in intif_parse_WisMessage from Freya [celest]
+
+12/22
+	* Eliminated skill tree mapping since we have entries
+	  for all the classes in the skill_tree.txt files  [MouseJstr]
+        * Added finding_ore_rate to battle_athena.conf, thanks to orn [celest]
+	* Changed how party exp is passed out to eliminate players
+	  current in a chat window or those who havn't moved or attacked
+	  in 2 minutes [MouseJstr]
+	* Fixed a bug in resnametable from local directories,
+	  by fixing a bug in grfio_read causing memory corruptions [MouseJstr]
+        * Rearranged how guild messages, gm messages, and party messages
+          are moved back and forth between the inter server and the
+          map server.. eliminating unneeded round trips to eliminate
+          lag on a loaded char-server.  [MouseJstr]
+
+            src\char_sql\int_party.c src\char_sql\int_guild.c
+            src\char_sql\inter.c src\map\atcommand.c src\map\guild.c
+            src\map\intif.c src\map\party.c src\char\int_guild.c
+            src\char\inter.c src\char\int_party.c 
+
+	* Reverted npc.c back to before jA 1081. This fixes warp portals missing and other npc bugs [Ajarn]
+	* Added conditional SHOW_DEBUG_MSG for displaying ShowDebug()'s output, it was missing before [MC Cameri]
+	* Added #zeny, removed @charzeny [MC Cameri]
+        * Fixed reading itemslottable.txt causing cards to become unuseable [celest]
+        * Added error message if file renaming in lock_fclose fails [celest]
+        * Fixed frost diver not working ... my bad =p [celest]
+        * Corrected typo in clif_hpmeter - md -> sd [celest]
+        * Check if the player has been authentified by the char server before
+          clearing any timers in map_quit [celest]
+        * Added eventtimercount and timerskill_count - check these before clearing
+          or deleting timers [celest]
+        * Added sc_count check in skill_stop_dancing [celest]
+        * Translated the japanese part in battle_athena.conf [celest]
+        * Added ignore the new skill delays when chaining monk combos [celest]
+
+12/21
+	* Since conf/maps_list.txt was removed, added conf/maps_athena.conf [Ajarn]
+	* Fixed a few NPCs that were giving curly errors. It seems to be caused by a bug that the NPCs' last line isn't read or something [Codemaster]
+	* Fixed a tiny compile warning in npc.c [Codemaster]
+	* Allowed the NPCs without proper curly brackets to still load, but give an error still [Codemaster]
+	* Added variable 'current_file' which tells the filename of the script while loading npcs [MC Cameri]
+	  -the variable its set in do_init_npc() or something like that, so you can only access it
+	   after the use of do_init_npc().
+	* Fixed the display of a warning saying that a right curly brace was missing [MC Cameri]
+	* Removed @charwarp and @rura+ and added #warp, #rura, #rura+ [MC Cameri]
+	* Removed conf/npcs_list.txt, and placed it in npc/npcs_athena.conf [MC Cameri]
+        * Moved some code in pc_break_equip that was causing compile errors [celest]
+	* guild skills vanished due to incorrect placement of a 
+	  check for quest skills in the calc_skilltree code [MouseJstr]
+	* Fixed skill LK_HEADCRUSH, LK_JOINTBEAT to work on both on 
+	  and off peco's for lord knights (fixed typo in
+	  skill_tree.txt) [MouseJstr]
+	* removed LK_SPIRALPIERCE from lord knights not on peco's[MouseJstr]
+	* Moved the code from map_quit to pc_makesavestatus that
+	  "adjusts" the skill tree before persisting to the character
+	  server [MouseJstr]
+	* made pc_makesavestatus() properly persist skills that are 
+          unavailable but not forgotten (example, spiral pierce).  You can now
+	  get spiral pierce,  get off your peco, log out, log in, and
+	  get back on your peco and still have not lost the skill
+	  points you invested.  This also solves the problems of when
+	  the skill tree gets changed, players loosing the points. [MouseJstr]
+	* Made pc_resetskill() properly reset skills that are
+          currently not visible due to skilltree changes [MouseJstr]
+        * Finished updating most of the map-server to 1082... i'll leave the more
+          technical ones for the other devs ^^; [celest]
+        * Added other new battle_athena options from jA 1082 ... descriptions not
+          translated yet [celest]
+        * Removed my own additions for skill delays using aspd and added jA's code
+          (-removed-) [celest]
+        * Adapted skill_range_leniency to jA's code - should be more stable [celest]
+        * Fixed drop rates only limited to multiples of 100's - thanks to jathena
+          for pointing it out [celest]
+        * Added missing code for castle_defense_rate [celest]
+        * Removed pc_undead_nofreeze - no code for it [celest]
+        * Updated unrefineable items table - thanks to jathena [celest]
+        * Added 3 new script commands: [celest]
+          - skilleffect : shows a skill effect on the player
+          - doskill/skilluseid (originally by Qamera) : casts a skill on the player
+          - skillusepos : casts a skill on a position
+        * Added SC_SpeedUp0 [celest]
+        * Merged itemdb_read for SQL and TXT [celest]
+        * Moved itemdb_read_itemslottable in itemdb.c for better readability [celest]
+        * Removed itemdb_read_cardillustnametable limited to TXT only [celest]
+        * Added reading itemslotcounttable.txt from the GRF to auto set number of slots 
+          per item [celest]
+        * Added a display message when reading itemslottable from the GRF [celest]
+        * Added options in battle_athena.conf to enable/disable reading the GRF for
+          indoorrswtable.txt, leveluseskillspamount.txt, num2cardillustnametable.txt, 
+          itemslottable.txt & itemslotcounttable.txt [celest]
+	* Removed conf/npcs_list.txt, and placed it in npc/npcs_athena.conf
+
+12/20
+	* Fixed npc_parse_mob with large/tiny monsters causing
+	  memory corruption [MouseJstr]
+	* Fixed a crash in char.c with new chars [MouseJstr]
+	* Updated npcs_list.txt [Ajarn]
+	* If last_pos.x or .y == 0, set to start point [MouseJstr]
+	* Fixed map loading. If a map was not found, it would remove the next map in the list [Ajarn]
+	* Moddified some *_athena.conf's (my typos and some inncorect default values) [Ajarn]
+	* Added Valaris' double connection bug fix (imalive watchdog) [Valaris]
+	* Fixed map-server exiting when it came across a bad NPC file [Codemaster]
+	* Updated Valaris' large/tiny monsters - of course, he told us what he did wrong and how to fix it :) [Codemaster & Valaris]
+	* Updated makefiles to new strlib locations [Codemaster]
+	* Moved strlib.h and strlib.c into the common directory [Codemaster]
+	* Updated a bit of jA 1081 - it's not completly updated yet!!! [Codemaster]
+	* Fixed some gcc 2.95 problems [MouseJstr]
+	* Speedups in socket code [MouseJstr]
+	* made samesex weddings work and give out correct ring [MouseJstr]
+	* CFixed wedding NPC halting after server reboot/crash (shadowlady put in comments but didn't add to code) [Aria]
+        * Added reading leveluseskillspamount.txt from the GRF to auto set sp used for each skill [celest]
+        * Added reading indoorrswtable.txt from the GRF to auto set 'indoor' mapflags
+          [celest]
+        * Added check in grfio.c to prevent crashing if a file wasn't found [celest]
+        * Rolling GUILDCACHE and FASTCHAR into main branches/stable
+          tree [MouseJstr]
+	* Changed max_paramter to an unsigned int so that you can have over 255 as your max stat [Codemaster]
+        * Experimental: Reverting a change on deleting any skill units when we're 
+          logging off - might reduce the 'delete_timer' errors [celest]
+        * Added check whether an item is allowed to be dropped, for example wedding
+          rings [celest]
+        * Updated Acid Terror - should never miss [celest]
+        * updated Sword Reject - should display reflected damage properly now [celest]
+        * Updated Double Strafe - should only work with bows [celest]
+        * Replaced checking whether items can be refined or not with a new function [celest]
+        * Added Gengar's fix for npctalk outputting to chat [celest]
+        * Allowed some values in script_config to be customised in script_athena.conf [celest]
+
+12/19
+	* Added -DFASTCHAR to char_sql for testing performance work
+	  before I merge it into the main running code [MouseJstr]
+	* Added ShowDebug(), Debug(), DisplayDebug(), printDebug(), CL_DEBUG, MSG_DEBUG to _ShowMessage() [MC Cameri]
+	* Replaced many \033[x;xm with their corresponding CL_xx constants [MC Cameri]
+	* Separated NPCs and Maps from map_athena.conf into npcs_list.txt and maps_list.conf [MC Cameri]
+	* Modified all the *_athena.conf's to have the import command enabled by default [Ajarn]
+	* Added charcommand_conf.txt and log_conf.txt in conf-tmpl/import [Ajarn]
+	* Fixed import command for log_athena.conf file [Ajarn]
+	* Updated charcommand.conf [nsstrunks]
+
+12/18
+	* Added some of my info to Dev/quotes.txt, not done yet... [Ajarn]
+	* Added some ideas to Dev/Ideas_Suggestions.txt [Ajarn]
+	* Fixed import command in inter_athena.conf file [Ajarn]
+	* Fixed a few command compiling problems for TXT [Codemaster]
+	* Modified the main.sql to add the friend0 column; also added the upgrade_1.0.0.sql file [Codemaster]
+	* Introduced StringBuf into utils for use in building larger queries [MouseJstr]
+	* tested GUILD_CACHE (reducing guild related sql traffic to 30%) in 
+	  prep for unleasing it on the sql using public [MouseJstr]
+	* Fixed some SQL queries crashing char server [davidsiaw]
+	* Added several PID GM commands, thanks to Dino9021 [nsstrunks]
+	* Storage was merging items incorrectly [Mousejstr]
+	* eliminated a uninitialized var when using afm maps [MouseJstr]
+	* Added concept of dirty storage to reduce saves/load
+	  to the char server (do a clean build!) [MouseJstr]
+	* Eliminated storage_storageopen2 as unused [MouseJstr]
+	* Switched to account2storage2() whenever possible
+	  to eliminate the possibility of saving empty storage
+	  back to the character server (storage wipes) [MouseJstr]
+	* Made it save storage as soon as you close the storage
+	  window to reduce possibility of loss/abuse [MouseJstr]
+
+12/17
+	* Added #item [MC Cameri]
+	* Added #storagelist, removed @charstoragelist [MC Cameri]
+	* db.c: Fixed probs with OnInit, OnTime, and etc NPC probs
+	  Just reverted it back. [Lupus]
+	* Fixed warning message in db.c line 445 [MC Cameri]
+	* Added #effect, removed @chareffect [MC Cameri]
+        * Reverted a change in map.c causing problems, sorry >.< [celest]
+        * Updated Sphere Mine - it'll now move in the opposite direction if
+          being hit by its master [celest]
+        * Updated Wind Walk [celest]
+	* Fixed skill #301 causing crashes [MouseJstr]
+	* Fixed documentation error on gm_skills_unconditionl [MouseJstr]
+	* added @grind test command.. only for testing [MouseJstr]
+	* Added clearweather to the atcommand configuration file. [nsstrunks]
+
+12/16
+        * Added a fix for AFM loading, thanks to Pete [celest]
+        * Updated maximum levels for supernovice to 99 [celest]
+        * Updated supernovice jobexp table - should be same from 50 onwards [celest]
+        * Corrected maximum job level checking in @joblvup and @charjob [celest]
+        * Added the new spell scrolls, thanks to Landarma [celest]
+        * Corrected a few skills, thanks to orn [celest]
+        * Corrected Extremity Fist to not require Explosion Spirits when being used
+          right after using Combo Finish or Dilemma [celest]
+        * Added instant cast weapon skills rely on attack speed as cast delays, not
+          on dex [celest]
+        * Fixed mob_ghostring_fix not working [celest]
+        * Changed default value for mob_ghostring_fix to 'yes' [celest]
+	* Added #itemlist, removed @charitemlist [MC Cameri]
+	* Changed @job and #job so that when it's used it unequips all the items, to prevent sprite errors [MC Cameri]
+	* Fixed a misuse of mysql_config (thanks Daegalus for
+	  creating a reproducable environment for me)   [MouseJstr]
+	* Fixed compile time errors for gcc 2.95 [MouseJstr]
+        * Updated Forging and Potion making formulas by DracoRPG [celest]
+        * Changes to the guild skills
+          - Dropped using sc_data and use flag values instead
+          - Changed moving guild skill units to once every 'move request' only instead
+            of every movement - should reduce server load abit
+          - Corrected crash when checking its skill requirements
+        * Initialise 'canregen' when logging into map - forgot to add this earlier,
+          sorry ^^; [celest]
+
+12/15
+	* Fixed more compile errors gcc 2.95 [MouseJstr]
+        * Removed log files from svn... they will be created when
+          needed [MouseJstr]
+        * Removed unused var in src/map/map.c:107 [MouseJstr]
+        * fix compile error in text converters [MouseJstr]
+        * Skill Updates [celest]
+          - Corrected traps to last longer in GvG
+          - Some minor changes to Hiding, Cloaking and Chasewalk to prevent it from
+            not working if sc_data is null
+          - Corrected an error in Cannibalize
+          - Updated Marionette Control to check its range from the partner
+          - Updated Berserk to disable hp and sp regen for 5 minutes after the skill
+        * Changed the weather gm commands to be able to toggle on and off. For example,
+          use @snow once to turn it on, reuse it again to turn it off. [celest]
+        * Added Jawaii and Ayothaya to @go list [celest]
+        * Changed the default values for ranged, magic and misc damage rate in
+          battle_athena to 60, 50 and 60 [celest]
+        * Removed redundant 'berserkdamagetick' from map_session_data [celest]
+        * Added changes to map.h according to Shinomori [celest]
+
+12/14
+	* Changed "Map-server can't connect to char-server" message to reduce output spamming and set it to
+	  display only once [MC Cameri]
+	* Added a busy animation for npc loading [MC Cameri]
+	* Replaced the way map loading was displayed into a progress-like way [MC Cameri]
+	* Fixed some typos in _ShowMessage() [MC Cameri]
+	* Replaced lots of more printf's in map-server with _ShowMessage() [MC Cameri]
+	* Added constants for console colors in showmsg.h [MC Cameri]
+	* src/char_sql/int_guild.c:56 - t_mes2 was not big enough causing
+	  stack overrun's, corruptions, and crashes [MouseJstr]
+	* common/mmo.h: changed base_level and job_level to unsigned int to increase max levels [Codemaster]
+	* char/char.c: added a NULL check for the file in parse_friend_txt [Codemaster]
+	* map/atcommand.c/.h: added @clearweather (thanks to Dexity) [Codemaster]
+	* map/charcommand.c/.h: added #spiritball [Codemaster]
+	* map/mob.c: fixed a compiler warning (ln was an int and was supposed to be an unsigned long int) [Codemaster]
+        * Added nullpo_retb to nullpo.c - does a break; if null [celest]
+        * Replaced some parts in skill.c with nullpo checks [celest]
+        * Corrected some typos - penaly -> penalty [celest]
+        * Skill Updates [celest]
+          - Most of 12/14's Sakray patch
+	* The SKILL_MAX_DB (yes, a different #define from the one below)
+	  was not large enough for current skills causing memory 
+	  corruptions and crashes [MouseJstr]
+	* Fixed how socket handles EAGIN errors (retry instead of
+	  disconnecting) [MouseJstr]
+
+12/13
+        * Skill Updates [celest]
+          - Added the new 'Throw Tomahawk' skill (Requires Sakexe1129 or newer) 
+          - Added some new monster skills - but still not complete.
+          - Adjusted Palm Strike, Tiger Fist and Chain Crush based on 12/14's patch
+        * Removed redundant 'sg_count' for map_session_data and mob_data [celest]
+        * Save both persons' data after trading in case a crash causes them to
+          rollback -  fix by Freya [celest]
+        * Removed 'type' paramater from pc_unequipitem to use 'flag' instead[celest]
+        * Moved unequip checking code from clif.c to pc.c [celest]
+	* Replaced many printf's in map-server with _ShowMessage(). [MC Cameri]
+	* Skill timers for skills with id's higher then 450 were
+	  corrupting memory [MouseJstr]
+	* Increased max skills to 650 from 450 fixing MANY crashes [MouseJstr]
+	* Creating Guild events were reading beyond supplied guild names ,
+	  causing crashes [MouseJstr]
+	* trades were derefing -2 into the inventory table sometimes [MouseJstr]
+	* Not having a arrow in your inventory but having a bow
+	  could cause it to set sd->status.inventory[-1].equip=32768
+	  resulting in a memory corruption [MouseJstr]
+	* local broadcasts of messages larger then 64 bytes were
+	  corrupting the stack, causing crashes [MouseJstr]
+	* mob eventnames were reading beyond source point, risking
+	  going over page boundries, causing crashes [MouseJstr]
+	* Internal MAIL system: moved all strings to msg_athena.conf [Lupus]
+
+12/12
+        * Made guild skills to check for skill levels first when casting [celest]
+
+12/11
+        * Modified arrow checking in skill.c [celest]
+        * Corrected Cart Revolution damage calculation [celest]
+
+12/10
+        * Fixed players unable to move in AFM maps [celest]
+        * Added error message if a player's last map couldn't be found [celest]
+        * Moved AFM map check to map_mapname2mapid [celest]
+        * Added USE_AFM and USE_AF2 to be used later [celest]
+        * Modified sc_data check in pc_damage [celest]
+
+12/9
+	* Moved a map_freeblock_unlock() around to eliminate a 
+	  crash [MouseJstr]
+	* Fixed how players are cleaned up when they disconnected
+	  during authentication [MouseJstr]
+	* Adjusted some messages in @marry [MouseJstr]
+        * Skill Updates [celest]
+          - Fixed Auto Spell not working
+          - Fixed skill level check causing Baphomet card not to work at all (possibly
+            other problems too)
+          - Added some new monster skills based on jA mod 1077
+        * Changed @job to accept text job names - For example: @job wizard, @job high
+          priestess, @job super baby [celest]
+        * Added sc_data check for pc_damage [celest]
+
+12/8
+	* Fixed @rings [MouseJstr]
+        * Added @marry, @divorce, and @rings [MouseJstr]
+        * fixed @revive [MouseJstr]
+        * Added option to turn off login server logging [celest]
+        * Moved char server starting logging to after we've read the configuration
+          file first [celest]
+        * Fixed crash with supernovices with 100% base exp [celest]
+	* Updated the readme a little. [Mass Zero]
+
+12/7
+	* Added GUILDCACHE #define to int_guild.c for testing performance
+	  effects [MouseJstr]
+        * Skill Updates [celest]
+          - Arrow Shower, Double Strafing, Charge Arrow, Throw Arrow, Sharp Shooting,
+            Arrow Vulcan, and Musical Strike now take arrows when used
+          - Level 6-10 Stone Curse will not consume a red gem now when it fails
+          - Players should be able to use items when they're stoned but not yet
+            completely petrified
+          - Corrected Triple Blow to work with bows (they actually do ^^)
+        * Added 'guildgetexp' script command [celest]
+        * Added bLongAtkRate item effect [celest]
+        * Implemented Confusion (50%) - still need more info on how monsters act
+          when they're confused [celest]
+        * Added 'Guardian Angel' code for supernovices [celest]
+
+12/6
+	* Fixed file props for new npcs [MouseJstr]
+	* Fixed weddings.txt as per Fress_Boy [MouseJstr]
+	* Added a case_sensitive to login [MouseJstr]
+	* Fixed follow crashing server when gm dies [MouseJstr]
+	* Fixed global message not working on txt [Wizputer]
+	* fixed a server crash in mobinsite [MouseJstr]
+	* fixed a server crash in party sharing exp [MouseJstr]
+	* fixed a server crash in BS_FINDINGORE [MouseJstr]
+        * Updated Chase Walk [celest]
+        * Added 'checkoption1' and 'checkoption2' script functions - Refer to
+          /npc/sample/npc_testchkoption.txt for similiar examples [celest]
+        * Updated maximum level for Guild Skills [celest]
+
+12/5
+	* Fixed another crash sending updates to disconnected 
+	  clients [MouseJstr]
+	* Fixed the range_check again to stop it from crashing 
+	  servers [MouseJstr]
+	* removed stubbed out unfinished atcommands as per Cameri [MouseJstr]
+	* Fixed nullpo's for gcc 2.95 [MouseJstr]
+	* Fixed bug in which login-txt was crashing in do_final() due to some free's [MC Cameri]
+	* Added nullpo's to all atcommand's functions, phew... [MC Cameri]
+	  Note: I point out that MouseJstr has added some @commands that start with char which
+	  havent been finished, they are just there but don't do anything.
+	* Removed mapbug.txt and corresponding function in map.c (realized it's pointless) [MC Cameri]
+        * Added allow_atcommand_when_mute - Change this to set whether muted players
+          can use gm commands [celest]
+        * Temporarily leaving the changing guild emblems requiring Glory of Guild 
+          feature only for TXT until the SQL char-server supports guild skills fully[celest]
+        * Modified battle_range again to check if src's type is a player first [celest]
+        * Corrected typo in battle_range [celest]
+	* Fixed a crash where party chats can be sent to a 
+	  partially disconnected player [MouseJstr]
+
+12/4
+	* Fixed a crash in clif_send when player disconnects but player
+	  object is not fully removed from map [MouseJstr]
+	* Fixed a crash associated with NPC_BARRIER [MouseJstr]
+	* Renamed flush_fifos_at_exit to flush_fifos [MouseJstr]
+	* call check_connect_char_server() on char_server disconnect [MouseJstr]
+	* stale skill groups were crashing server [MouseJstr]
+	* Fixed crash in SC_LULLABY [MouseJstr]
+12/3
+	* hacked the frozen mob issue [MouseJstr]
+	* Fixed a battle_range crash [MouseJstr]
+        * Updated Stone Curse, Soul Drain, Auto Berserk [celest]
+        * Added a fix for MVP exp being multiplied twice by Gengar
+        * Modified battle_range to check for sd first [celest]
+
+12/2
+	* Fixed double login feature, resets online users when map connects to char [Wizputer]
+	* Changed all LOGS inserts to INSERT DELAYED (MySQL has this feature and cache unimportant queries, then 
+	  executes them at once together = 10x faster) [Lupus]
+        * Skill Updates [celest]
+          - Modified Weapon Refine - should only +1 every time.
+          - Updated Berserk, Chase Walk, Slim Pitcher
+          - Added skill_range_leniency : In some cases when moving to cast a skill the 
+            exe will a send a UseSkill packet before the server has moved us to the 
+            correct position, causing it to fail. Leaving this at 1 should be enough.
+          - Fixed a bug that was causing monsters not to move towards the target
+        * Added check for clif.c in case the server didn't realise we've died [celest]
+        * Added a fix for @npcmove by JohnC and Fredzilla
+        * Added motd_type : Set this to 1 if your clients have langtype problems and 
+          can't display the motd properly[celest]
+        * Edited atcommand.c to fix compile warnings [celest]
+
+12/1
+	- Make it build against gcc 2.95 [MouseJstr]
+	- Changed #define MAX_PET_DB to 300, it's easier for people adding new pets like this. [Nas]
+        * Skill Updates [celest]
+          - Updated Poison React
+          - Added Soul Change, Soul Burn
+          - Added a somewhat crude timer for Venom splasher
+          - Added a fix for Guild Skills causing crashes by Sara, thanks!
+
+11/30
+        * Fixed client crash when disguised characters die [celest]
+        * Skill Updates [celest]
+          - Fixed and finished Guild Skills (~90%)
+          - Fixed Meltdown and Overthrust used together breaking your own weapon
+          - Updated Weapon Repair :- uses different materials depending on repaired item
+            (Iron Ore/Iron/Steel/Rough Oridecon)
+          - Fixed sp recovery problem, thanks to OutSider for pointing it out
+          - Updated Tiger Knuckle Fist stun time
+          - Added cooldown time for Emergency Recall
+          - Fixed typo in skill.c, thanks to Toster
+
+11/29
+	* Fixed crash in src/char_sql/char.c when setting chars offline [MouseJstr]
+	* Added mapbug.txt which is displayed in map-server, displays
+	  the last bug or w/e fixed for the map-server [MC Cameri]
+	  -You may change it whenever you want
+	  -It will only show if mapbug.txt exists
+	  -This file must not be included in releases
+	* Made some changes in map_versionscreen() to make it easier to
+	  read/change in the source [MC Cameri]
+	* Fixed a typo in _ShowMessage() removing the message caption. [MC Cameri]
+	* Fixed typo in map_helpscreen() showing -h instead of --?. [MC Cameri]
+        * Added more sc_data checks in skill.c and pc.c [celest]
+        * Updated Quagmire, Enchant Deadly Poison, Fog Wall [celest]
+
+11/28
+	* Fixed a crash in login_sql/login.c [MouseJstr]
+	* made common/socket.c more crash resistant [MouseJstr]
+	* Added flush_fifos to socket.c so that we can make sure everything
+	  has been sent before we shut the process down [MouseJstr]
+	* Modified src/char_sql/char.c to flush fifos on exit [MouseJstr]
+	* Fixed a crash in src/map/map.c shutdown where it would
+	  use the char_fd session after it was alrady cleaned up [MouseJstr]
+	* removed conf-templ/atcommand_athena.conf.orig [MouseJstr]
+	* removed a USE from sql-files/main.sql that should not be there [MouseJstr]
+	* Changed MSG_INFO color to bright white, since bright blue want so bright... [MC Cameri]
+	* Made Map Removed: %d string be displayed only if there were maps removed. [MC Cameri]
+	* Fixed online system for char not sending players left "online" to login when restarting [Wizputer]
+	* Fixed damage formula of Cart revolution: 150% +1% per 80ea [Lupus]
+	* Removed 2x Chance of Equipment Breaking during CRITICAL attacks [Lupus]
+	* Fix some file props [MouseJstr]
+	* Added map_versionscreen(), displayed when --version flag is passed on command-line. [MC Cameri]
+	* Finished map_helpscreen(), displayed when --help flag passed on command-line. [MC Cameri]
+	* Changed Guilds Extention Skill to +6 people per level. [Lupus]
+	  (tested it for 2 weeks! or a big server)
+	* Added a fix for gettimeofday() for WIN32 [Codemaster]
+        * skill Updates:
+          - Updated Slow Poison, modified checks for skill_unit_onplace abit. [celest]
+          - Updated Finger Offensive, thanks to orn  [celest]
+        * Updated packet_ver_flag's default value, thanks to iscandium  [celest]
+        * Added warning if motd.txt was not found  [celest]
+          (Turn on error_log in battle_athena.conf to enable it)
+
+11/27
+	* Fixed a few map crashes when char-server crashes [Wizputer]
+	* Added fix of 0x2aff and 0x2af8 flooding [Wizputer - thanks Toster] 
+	* Fixed Map crash when person uses global message hacks [Wizputer]
+	* Fixed online system, online column works and prevent double login at the login server [Wizputer]
+	* Fixed some compile time errors associated with showmsg [MouseJstr]
+	* Added get_svn_revision() in core.c [MC Cameri]
+	  -Only if you have the file .svn\entries, it will show the revision # at runtime.
+
+11/26   
+	* Fixed Abrakadabra (2 minor bugs of consumed items - they were ignored if placed in 0 pos) [Lupus]
+        * Finished Full Strip, Weapon Refine, Slim Pitcher and Full Protection. [celest]
+        * Added skill_nocast_db.txt. Use it to set which skills cannot be used in
+          which conditions [celest]
+
+11/25
+	* Added @skilltree to help GM's answer skill tree questions [MouseJstr]
+	* Update Spider Web; I believe you cannot use it on yourself now. [Codemaster]
+        * Added Ore Discovery, and base code for Slim Pitcher and Preservation [celest]
+
+11/24
+	* @charreset #reset [MC Cameri]
+	* @charstatsall is now #statsall [MC Cameri]
+	* @charsave is now #save [MC Cameri]
+	* Updated most of jA's 1067; battle.c and skill.c might need more updates! [Codemaster]
+	* Fixed char-txt crashing when closing, Codemaster free()'s. [MC Cameri]
+        * Skill Updates: [celest]
+          - Updated guild skills (60%)
+          - updated Weapon Repair and Aura Blade by DracoRPG
+          - modified Weapon Repair to use Identify's packet, should show a list of
+            repairable items now
+
+11/23
+	* Fixed script loading small/large monsters. [Valaris]
+	* @charoption is now #option [MC Cameri]
+	* @charpetfriendly is now #petfriendly [MC Cameri]
+	* @charstats is now #stats [MC Cameri]
+        * Skill Updates: [celest]
+          - Added some code for the new guild skills (50%) and Moonlit Petals (5%)
+          - Notes to other devs: Guild skills with id's 10000-10014 will be stored in
+            skill_db[500-514]
+          - Corrected Hilt Binding
+          - Corrected Assassin Cross' dual wield
+          - Changed player_cloak_check_type to yes by default and edited description
+            since it's already fully implemented.
+          - Added a bit more restrictions to Call Partner and Emergency Recall and
+            updated mapflag for sec_pri.gat
+          - Added pc_calcspeed and updated Cloaking so it won't need to recalculate
+            the player's entire status everytime there is movement.
+
+11/22
+	* (TXT)Stripped some code off read_gm_accounts() and made with it addGM() [MC Cameri]
+	  -Usage: addGM(account_id,level);
+	* (TXT)Changed GM_accounts.txt to meet new standards. [MC Cameri]
+	* (TXT)Enabled the use of id ranges in GM_accounts.txt [MC Cameri]
+	* Added a few free()'s so that I am sure it freed the allocated memory (char & login) [Codemaster]
+	* Changed monsters_ignore_gm option to a level value. [Valaris]
+	  (accounts greater than or equal to this setting won't be attacked by aggressives.)
+	* Fixed mapflag #s and constants for setmapflag and remove mapflag. [Valaris]
+        * Added skill names for kRO 11/23's new skills [celest]
+          - Preserve, Full Strip, Weapon Refine, Slim Pitcher, Full Chemical Protection,
+            (Throw) Tomahawk
+	* timer.c static int timer_heap_max=0; //fix by Shinomori from eA forums
+	  ititialize static var!!!
+	* Added the old effect list # into effect_list.txt of spira's. [shadow]
+	* Added new flag (#3) to clif_specialeffect [MC Cameri]
+	* @doom,@die,@doommap now display the Dark Cross effect on you. [MC Cameri]
+11/21
+	* Display IP when wdata is expanded [Wizputer]
+	* Added bClassChange,%; Has random chance to turn monster into another monster. [Valaris]
+	* Re-Fixed Trade/Vending exploit [Lupus]
+	* Fixed @whozeny. [Valaris]
+	* Added rest of mapflags to const.txt. [Valaris]
+	* Closed AFM files after reading, this fixed the improper char-server session #. [Valaris]
+        * Skill updates: [Celest]
+          - Updated Basilica, Sharp Shooting, Berserk, Meditatio (Thanks to DracoRPG!)
+          - Fixed a typo with Blade Stop that was causing crashes, sorry. ^^;
+          - Reverted changes to Cloaking, ours is already more updated! ^_^
+          - Added temporary code for guild skills to stop crashing
+	* @alive, @raisemap, @raise, @revive now display the resurrection skill animation [MC Cameri]
+	* @charpetrename(AtCommand) is now #petrename(CharCommand) [MC Cameri]
+	* @charjob/(AtCommand) is now #jobchange(CharCommand) [MC Cameri]
+	* Removed japanese interserver packets, should fix various problems (jumpto, where, charposreq). [Valaris]
+	* Added Yor's trade exploit bug fix. Added 2 skills bugs in the bugs.txt [Lupus]
+	* Added charcommand.c/.h for the following reasons: [MC Cameri]
+	  - Less congestion in atcommand.c
+	  - Port commands that start with @char to #, example:
+		~ @charoption will now be #option
+
+11/20
+	* Added str_lower() function to atcommand.c (from OA). [MC Cameri]
+	* Simplified @charchangesex to @charchangesex [player], your sex is changed to the opposite one [MC Cameri]
+	* Added @refresh, which is like a @jumpto <<yourself>>. [MC Cameri]
+	* Added @petid <pet name> to find pet names, useful when you dont know which pets have eggs. [MC Cameri]
+	* Added an effect_list in docs/ for descriptions, free to add onto that later. [spira]
+          - Attempt to find new skill effects.
+	* Added "nogo" mapflag to prevent the use of @go on a specified map. [Valaris]
+	* Fixed small/big monster spawning crashing (mixed up the merge). [Valaris]
+	* Fixed crash with upgrading TXT and having more than 256 accounts. [Valaris]
+	* TXT upgrades will convert broken flag to attribute column. [Valaris]
+	* Prevent use of emotion packet to display red mute emote. [Valaris]
+	* Initialized "day" variable in npc.c. [Valaris]
+	* Added @whozeny. Shows list of top 50 online players and their zeny sorted from highest to lowest. [Valaris]
+	* Added @happyhappyjoyjoy. Makes all players on server do a random emote. [Valaris]
+	* Removed -funroll-loops from compile, thanks to kashy for pointing out the problems caused by this. (Do not re-add!) [Valaris]
+	* Added check for max vending_max_value when reading config [kobra_k88]
+	* Skill updates [celest]
+          - Napalm vulcan, Enchant Deadly Poison, Slow Poison (based on jAthena 1066)
+          - Create Deadly Poison, thanks to DracoRPG!
+          - Added effect for Meteor Assault
+        * Added night_darkness_level to battle_athena.conf. [celest]
+          Use this to set 'how dark' it'll become during night time. Use 0 for default,
+          or between 1-10. (Yeah, i know lots of people hated the original night! xP)
+          Warning: It may cause errors with old exe's!
+
+11/19
+	* Re-added check for empty bottle when using aqua benedicta. [Valaris]
+        * Fixed skills not showing after using @allskill [celest]
+
+11/18
+        * Added a line to @unmute, added @mute. [celest]
+          Usage: @mute <time in minutes> <character name>
+        * Added save_flag for skill_status_change_start [celest]
+        * Fixed muting not being saved when you quit/change characters/log off [celest]
+        * *Hopefully* fixed the skill tree problem where you have to use 49 skill 
+          points first before 2nd job skills will show... please report any bugs found
+          with it, thank you. [celest]
+	* Added flag to pc_unequipitem (thanks to DracoRPG for suggestion) [celest]
+	* Skill updates [celest]
+	  - Updated Cloaking (thanks to orn), Endure
+          - Pneuma (thanks to DracoRPG)
+          - Changed sc_ id for Basilica
+          - Cancel Basilica (100%) when caster moves or uses another skill
+          - Updated Poison React (90%), Endure
+          - Added SC_BLOCKSKILL, SC_SLOWDOWN
+	* Modified pc_attack to fix monster npc's not working in certain exes, thanks
+	  to leinsirk10 [celest]
+	* Moved mapflags organized by type to main mapflag folder and removed "type" folder.
+	  Removed mapflags organized by location.[kobra_k88]
+
+11/17
+	* Added stub-handler for packet 0x3090 into char_sql [MouseJstr]
+	* Fixed a crash in the afm reading/closing code [MouseJstr]
+	* Added skill_steal_type to battle_athena.conf for the new (but unconfirmed) 
+	  stealing formula [celest]
+	* Skill updates: [celest]
+	  - Removed annoying skill fail messages from rogue's Snatcher
+	  - Add sc_data check for firewall and fogwall
+	  - Fixed Berserk (99% hopefully? ^_^)
+
+11/16
+	* Fix for compiling against gcc 2.95 [MouseJstr]
+	* Added day of week events (OnSat2000) into scripting engine [MouseJstr]
+	* Temporarily Disabled GM Command Logs; Weren't working Properly >_<! [Codemaster]
+	* Fixed a typo in ../db/Changelog.txt [Nana]
+	* Added -funroll-loops argument to makefile to further increase performance [Shinigami]
+	* Fixed 2 bugs in DELITEM script command. [Lupus]
+	  - added deleting priority: If you have some items with the same ID and want to delete some of them, then
+	    at first it'll delete common items then, if necessary, delete the rest items but upgraded/named/with cards. [Lupus]
+	* Added checks for Perfect hiding [celest]
+	* Modified level 0 skill check to allow auto blitz beat and steal. [celest]
+	* Added constant BaseJob. [celest] Usage: For example, instead of
+	     If (Class==12) || (Class==4012) || (Class==4035)
+	  you can use
+	     If (BaseJob==12) or If (BaseJob==Job_Assassin)
+	* Added 'indoors' mapflag : When in-doors players will not be affected by Night [celest]
+	* Skill updates [celest]
+	  - Assumptio is now disabled in GvG maps.
+	  - Changed cloaking checks a bit.
+	  - Tidied up some parts of skill.c abit. ;P
+	* Added pk_min_level option in battle_athena.conf. Change this to define the
+	  minimum level players can attack others when pk_mode is on. [celest]
+
+11/15
+	* Added a Database Changelog.txt File, use it for any changes inside the db folder. [shadowlady]
+	* Added GM Command Logs & Added TXT Logs + TXT Log Options [Codemaster]
+	* Added spawning of monsters at specific level by adding ,# after the spawn name. [Valaris]
+	  mobs_level_up option should be on when using this.
+	  (Example: {ama_dun01.gat,0,0,0,0	monster	Shinobi,99	1401,1,0,0,0} to spawn a level 99 shinobi.)
+	* Added addtoskill script command for (levels can stack on top of existing levels). [Valaris]
+	  Use same usage as skill script command.
+	* Added -ffast-math argument to makefile to increase performance, thanks to kashy. [Valaris]
+	* Added small and big mob sprite spawning. [Valaris]
+	  -Added @monstersmall and @monsterbig commands.
+	  -For using in scripts, use id +2000 for small and id +4000 for big.
+	   (Example: 3002 for small poring and 5002 for big poring)
+	* Added mobs_level_up option. [Valaris]
+	  -Everytime a monster kills a play their level will increase and show levelup animation.
+	  -Their 6 main stats and speed will increase as they level.
+	  -They will recover 10% of the max hp of the player it kills.
+	  -Player will gain extra exp based on how much stronger a monster is than normal.
+	  -Skill estimation will show monsters current level (instead of reading from db).
+	  -Will display level 99 aura if and when a monster hits level 99.
+	  -They will not go higher than level 99.
+	* Fixed maximum skill levels not following skill tree [celest]
+	* Updated HP/SP for baby classes [celest]
+	* Corrected pc_calc_base_job [celest]
+	* Skill updates [celest]
+	 - Marionette Control (70%), Berserk (thanks to DracoRPG)
+	* Modified pc_jobchange code to work with new pc_calc_base_job [celest]
+	* Corrected skill_tree_get_max, sorry >.< [celest]
+
+11/14
+	* Made the Advance jobchangers to kRO standars with the following;
+	 - Checks if you are level 99/50 and 2nd class OR above.
+	 - Checks if you have an Cart of Falcon equiped.
+	 - Checks if you have any Quest Skills, stores a variable on you and gives them back
+	   when you change to 1st advance class.
+	 - Added minimum joblevel to change to an 2nd or 2-2 advance class to job 45 after kro. [Nana]
+	* Fixed loading of AFMs when no resnametable is found. [Valaris]
+	* mob_db.txt: Fixed Golden Thief Bug MVP MOB mode (it wasn't moving/attacking) [Lupus]
+	* Added AFM (Advanced Fusion Map) support, thanks to alexkreuz and fusion. [Valaris]
+	  Use the afm_dir option in grf-files.txt (currently needs a resnametable.txt). 
+	* Initialized password variable in login.c. [Valaris]
+	* Added zeny_from_mobs option. [Valaris]
+	* Corrected the file type attribute on most of the files in three which fixes the
+	  newline issues between linux and dos [MouseJstr]
+              svn propset -R svn:eol-style native .
+        * Skill changes [celest]
+          - Corrected steal formula, updated BladeStop, Headcrush.
+
+11/13
+	* Fixed map-server loading, doesn't require data\resnametable.txt anymore [Wizputer]
+	* Updated & Optimized TXT Login from FREYA. (need to do SQL now) [Codemaster]
+	* Removed compile warnings in intif.c. [Valaris]
+	* Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri]
+	* Updated some skills, credits to orn and midas. [celest]
+	  - Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire,
+	    Spider Web, Reject Sword, assassin's Dodge, Demonbane, Divine Protection.
+	  - Firewall, Quagmire, Fog Wall (100%), Marionette Control (30%), Sandman, 
+	    Claymore Trap
+	  - Adjusted some mob skills for mod support.
+	* Fixed weight increase when riding. [celest]
+
+11/12
+	* added folder: /save-tmpl, removed folder /save
+	* battle_athena.conf: Updated Packet Version Flags.
+	* !!!Fixed Mobs Attacking!!!: Thanks for MagicalTux and Yor, I fixed the mobs attacking by using one of their files. [Codemaster]
+	* Warps Update : Added ayothaya warps in ./npc/warps/ and in map_athena.conf [Nana]
+11/11
+	* Skill Updates : (Need to revise skill_cast_db.txt for new updates)
+		( Sharp Shooting, Sword Reject, Chain Crush Combo, Tiger Knuckle Fist,
+		Head Crush, Arrow Vulcan, HP COnversion) Thanks to DracoRPG. 
+		Fixed Devotion use requeriments. Thanks to Orn.	[shadow]
+11/11
+	* Corrected minor typo in item_db, and removed/commented out dupe items.[kobra_k88]
+
+11/10
+
+	* Updated Sprout (Item #7193), Thin Trunk (Item #7186),
+		Huge Leaf (Item #7198), and Rante Whip (Items #1956, #1957)
+		- thanks to cheng - [Codemaster]
+	* Updated Parasite (Mob #1500) Drops - thanks to cheng [Codemaster]
+	* Updated Soft Grass Leaf (Item #7194) - thanks to cheng [Codemaster]
+	* Added, Fixed & Updated ALOT of skills:	[Codemaster]
+		- Fire Pillar, Backstab, Grimtooth, Poison React, Falcon Assalt,
+		Skin Tempering, Hilt Binding, Frost Nova, TEMPORARY fix for Create Deadly Poison,
+		Enchant Deadly Poison, Endure, Sacrifice, Spider Web, Memorize,
+		Hyper Spirit Sphere, Palm Strike, Sword Reject, Pressure, Magic Crasher,
+		Amplify Magic Power, Napalm Vulcan, True Sight, Wind Walk, Aura Blade,
+		Concentration, Cart Boost, Magic Power
+		- Thanks goes to Celest, Midas, and DracoRPG!
+	* Fixed spira's mistake in using the packet_len_table; no biggie ^_^ [Codemaster]
+	* char/char.c & char_sql/char.c: Fixed start_armor and start_weapon - thanks to AppleGirl [Codemaster]
+	* Added packetver 6 flag to makefile. [Valaris]
+
+11/09
+	* mob_db.txt: Fixed Drake dropping the wrong card - thanks to roslen [Codemaster]
+	* chat.c: Fixed multiple joins in a single chat - thanks to Alex14 and CHaNGeTe. [Codemaster]
+	* clif.c: Fixed sitting. [spira]
+	* -  Fixed item 657 Job ID , 11/09 patch updates to item_db, Correct stats for item 5097
+	  - Added Unbreakable funcions to item_db armors/shields/garments/footgear [shadow]
+	* Defined SO_REUSEPORT to allow the servers to re-use ports if server crashes [Wizputer]
+
+11/08
+	* Added new script command: getMapXY(MapName$,MaxX,MapY,type,[CharName$]) by Lorky [Lupus]
+	  Get position for char/npc/pet/mob objects.
+	* Attempted to fix the mob bug (still haven't :( ). Still updated mob.c/clif.c/chrif.c according to jA 1057. [Codemaster]
+	* Fixed item_cardalbum.txt: Removed extra column which mad all albums empty [Lupus]
+11/07
+	- Fixed a few npcs will start implementing new ones soon, have alot on paper, need to type them up. [Nasedo]
+	* clif.c: Added a few things from jAthena 1057 [Codemaster]
+	* Corrected some typos in item_db. Items 1143 and 1719 need to be re-checked.[kobra_k88]
+	* Fixed compiling error in Map Server in which @repairall was using old broken system [Shinigami]
+
+11/06
+	- Added missing items in item_db.txt and reorganised it.[Nasedo]
+	- Fixed wrong coords for payon guild flags (it has the old map coords), fixed some weapon effects in item_db,
+	 updated the mob_db (90%+ done), added EP 5-9 mobs to mob_branch.txt and EP 6 cards to item_cardalbum.txt[shadowlady]
+	* atcommand.c/.h,chrif.c/.h, added @changesex. [MC Cameri]
+	* mob.c & clif.c: Added & Modified a few parts dealing with monsters and guilds [Codemaster]
+	* mob.c: Re-did a few parts according to jA's 1057 version. [Codemaster]
+11/05
+	* Fixed and redo optional Umbalian quests:
+	- Wise Man Fabius' Umbalian Language Quest (you can learn Umbalian language in
+	  alternative way)
+	- On speaking with Umbalian Chief about meaning of masks you activate Turban Thief Quest
+	  (For Sphinx Mask)
+	* Fixed several bugs in Niflheim Piano Keys Quest (wrong variable name, missing CLOSE buttons)
+	  Zeny/Item Exploit in Niflhein Sairin NPC quest (should add similiar checks in every
+	  easy quests with expensive prizes to avoid exploits) [Lupus]
+	* Revised and fixed all comodo,yuno,amatsu,gonryun,umbala mobs and drops. Also fixed mvp and woe mobs too [Shadowlady]
+	* Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still. [Valaris]
+	* Fixed committed typo in map_athena.conf, remove aria's dev npc (was giving errors preventing server startup). [Valaris]
+
+11/04
+	* Added sara-chan's packet db with support for 11-1 [Valaris]
+	* [alot of files >_<]: Changed connecting a bit, from oA source; it connected easier/better in my opinion so... [Codemaster]
+	* map/skill.c: Added a few checks for level 0 skills being used. [Codemaster]
+
+11/03
+	* Removed broken column, using attribute column for broken equip now. [Valaris]
+
+11/02
+	* Fixed compile time errors for gcc 2.95  [MouseJstr]
+	* Changed Blacksmith skill "Hammer Fall" to only be used with maces or Hammers [Aria]
+11/01
+	* Set Comodo Kafra to warp to Umbala (11/2/04 patch) [Aria]
+10/31
+	* Fixed Devnpcs giving off errors -_- [Aria]
+	* Fixed showmsg.c compile warnings thanks to LittleWolf. [Valaris]
+	* map/skill.c: removed a second declaration of sc_def_vit in skill_castend_nodamage_id; thanks to spira [Codemaster]
+	* map/battle.c: re-did Water Ball's damage calculation [Codemaster]
+10/30
+	* Added new guild skills to skill_db from sara-chan. [Valaris]
+	* db/skill_cast_db, map/skill.c, map/pc.c: Corrected a few CHASEWALK things; Thanks to Celest [Codemaster]
+	* char_sql/char.c: removed the double free()ing of gm_account [Codemaster]
+	* Added check for c value in int_guild.c before dividing to calculate average level. [Valaris]
+	* Commented unfinished dev npcs and added devnpc to map_athena. [Aria]
+	* Removed item requirement of Aqua Benedicta (10/26 patch) [Aria]
+	* Fixed some compiling error for Map-server [Shinigami]
+	* Removed Rogue's backstab pushback effect (kRO style again) [Aria]
+	* Changed requirement of Fire Pillar to fit kRO style; lv1-5 = no gem, but 6-10 = 1 gem. [Aria]
+	* Added Mugendai's oA GUI support for map-server (previously not added) [davidsiaw]
+	* Included Mugendai's oA GUI in the GUI folder [davidsiaw]
+
+10/29
+	* another exploit fix for mult in script [MouseJstr]
+	* Corrected mode for peco, condor mobs.  Added custom mobs Easter Egg and Easter Bunny for easter egg event script.
+	 Corrected mysteltain card location, penomena card typo.[kobra_k88]
+10/28
+	* Cloak Speed fixed [Aria]
+	* Throw stone damage fixed [Aria]
+	* Added new packets from Sara to packet database. [spira]
+	* Fixed and changed command lists to reflect on new packet changes. [spira]
+		- @jumpto, @recall, and @where
+		- Removed old @ignore* functions because they are no longer needed.
+	* Replaced old whisper ignoring code with better and more efficient code. [spira]
+	* Added packet_db.txt support, removed old packet functions. [spira]
+	* fixed forger-zeny exploit [MouseJstr]
+
+	  Doing script math that returns a number greater then (1<<31) will now
+	  return a (1<<31).  This prevents you from finding a npc that
+	  asks for a quantity then mults the cost by that quantity to get
+	  what you need to pay.
+
+10/27
+	* Updated CSS styles for readme a bit [Aria]
+	* branched athena at version 340 to begin work on the packet_db 
+	  stuff from jA.  To retrieve it, do a svn co http://dev.deltaanime.net:8080/svn/eathena/packetdb
+	  later, once we are happy with it.. and feel it is stable, we will remerge it back into the main tree via the appropriate svn commands
+	  as a FYI, the command I used to create this branch was:
+	  svn copy http://dev.deltaanime.net:8080/svn/eathena/athena http://dev.deltaanime.net:8080/svn/eathena/packetdb -m "branch for packetdb work"
+	* Fixed Aldebaran (gatekeeper conditions bugs and wrong Key ID). Fixed some typos in other cities [Lupus]
+
+10/26
+	* Added more quotes -_- [Aria]
+	* Modified a few things related to guild skills. I hope it doesn't interfere with anyone else's work, and isn't seen as bad. [Sara-chan]
+		-Support for new guild skills, though they don't work yet. Added guild_skill_get_inf and guild_skill_get_max entries for them based on early info.
+		-Changed guild_skillup functions based on japanese code, but for a good reason.
+		  It allows for guild skill trees, sort of. I made Kafra Contract and Guardian Research require Guild Approval, for instance.
+		  I think the first four new guild skill requirements are correct, at the least.
+		I hope everything works alright, it's my first contribution to eA in quite some time and I'm rather rusty at programming of late.
+	* Fixed compile errors in showmsg.c. [Sara-chan]
+	* Fixed Mouse's devnpc only saying his quotes once per server reset [Aria]
+	* Added log_athena.conf & the logs.sql file [Codemaster]
+	* Added log configurations to inter_athena.conf [Codemaster]
+
+10/25
+	* Fixed a compiling error in Login-server [Shinigami]
+	* Added alot of Azndragon's spiffy logs & then added a few things of my own (Silly Dragon, structs are for kids!) [Codemaster]
+	* Corrected a small bug (forgot to change a few variables!) in my different GM option. [Codemaster]
+	* Fixed items and mobs in DB. Added new items. [Lupus]
+	* Fixed some NPC bugs (check NPC=changelog.txt) [Lupus]
+	* Fixed getting MAX PET ID (SQL only bug) [Lupus]
+	* Fix char/char.c which was crashing after double freeing logs
+	  [MouseJstr]
+	* Improved basic server rebooters [MC Cameri]
+	* Commited common/showmsg.c/.h, previously missing x_X [MC Cameri]
+	* Added a basic server rebooter program, just use 'runserver.bat' to start up the server. [Shinigami]
+
+10/24	
+	* Added files common/showmsg.c/.h which contain the function _ShowMessage(char *string, int flag) [MC Cameri]
+	  -Check showmsg.h to see how to use it.
+	  -This function is made to replace printf in all the cases, so it MUST be used instead of print from now on.
+	  -Begin your own journey of replacing/removing old printfs, and using the new function.
+	  -This function was previously called ShowMessage() in oA, it is now merged, some changes have been done:
+		1.Outputting messages to a file is now disabled(commented out).
+		2.MSG_SQL is now commented out.
+		3.If the server is out of memory, it will not use abort().
+		4.Returns 0 if successful, 1 otherwise.
+	  -Example: ShowInfo("hello\n"); will print this to the screen: [Info]: hello
+	  -Always add \n at the end. Unless someone edits the function to add the \n whether it exists or not.
+	  -Just add #include "showmsg.h" wherever you need it.
+	* Edited ALL makefile's to include showmsg.o -> _ShowMessage(). [MC Cameri]
+	* Updated readme/gmcommands.html with new @uptime command [MC Cameri]
+	* Somebody had added some additional noskill checks that prevented
+	  vending from happening in prontera [MouseJstr]
+	* Added bypass with gm_allskill of npc_selfdestruct2. [Valaris]
+	* Corrected some minor bugs in some Quests [Shinigami]
+	* Added new maps (from lateast kRO patch)
+	  Touched WOE (u can't surrender the castle during the WOE), misc fix of the bank [Lupus]
+10/23	
+	* Added the option to read GM accounts from a different table than login. Default set to login table. [Codemaster]
+	* Finished Aria and MC Cameri "Dev edition" NPCs. [Aria]
+	* Corrected extra stat points given to high classes. [Valaris]
+	* Added high classes getting the extra 40 stat points on stat reset. [Valaris]
+	* performance tweaks on socket.c to reduce lag [MouseJstr]
+
+	  do a "OPT="-g -DNSOCKET" to compile with the changes
+	  enabled.. and tell me if you notice a change in your
+	  performance/lag
+
+	* Added @uptime to atcommand.c [MC Cameri]
+	* Added the stuff for my npc to Dev/quotes.txt [MC Cameri]
+
+10/22	
+	* Replaced some checkcart and checkoption(x) with checkcart(0) in the guild folder [Aria]
+	* Waiting for various devs to tell me their coords, map, biography, quotes,
+	  moving coords, etc. In the meantime, I replaced them with (x,y),(lols),
+	  (sprite),(somewhere), and if they didn't give me any info, I didn't 
+	  add them yet =P. [Aria]
+	* Added Davidsiaw, Shinigami, Lord, Codemaster, MouseJstr, MC Cameri, and Darkchild
+	  to "Dev edition" NPCs [Aria]
+	* Revised "Dev edition" NPC layout a bit, should go smoother now. Should be final
+	  layout unless something goes wrong =O. [Aria]
+	* Fixed the eol markers on some checked in files [Mousejstr]
+	* Fix two crashes caused by calling isGM on mobs [MouseJstr]
+	* Added folder "mc_cameri" in npc/other which contains my bank npc. [MC Cameri]
+	* Changed "Dev edition" NPC layout so that they move by themselves by timers. [Aria]
+	* Changed "Dev edition" NPCs to walk during quotes, and added biography. [Aria]
+	* Fixed quest/all_quest.txt not showing the correct description of the binoculars. [Aria]
+	* Fixed quest/all_quest.txt not going to stop pass and not displaying requirements. [Aria]
+	* Fixed removing friends from the list [davidsiaw]
+	* Added PCLoginEvent NPC (When a character logs on, NPC runs as if he/she clicked the NPC) [davidsiaw]
+	  The NPC sample is located in npc/sample/PCLoginEvent.txt (you only need one of these NPCs)
+
+10/21
+	* Fixed clothes_dyer.txt: Disabled Assassing/Rogues Dye. Also fixed wrong labels [Lupus]
+	* Fixed hair_dyer.txt: fixed missing menu label [Lupus]
+	* new_hats.txt 1.4 fixed amount of Fish Tail (300 -> 30), Zeny bugs in Ear of Angel,
+	  Ear of Demon,Big Golden Bell, Mistress Crown,
+	  Crown of The Ancient Queen, Indian Headband, Orc Hero Helm [Lupus]
+	* Fixed name of a flower in Prontera quest (Dreamy->Illusion) according to our DB [Lupus]
+	* Fixed item names in the temp Crusader Job Quest according to our DB [Lupus]
+
+10/20
+	* map/mob.c: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster]
+	* map/map.h: Changed Vending Struct: amount and value to unsigned variables (so they CAN'T be 0 or less) [Codemaster]
+	* map/mob.h: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster]
+	* Aligned the list of commands at the beginning of atcommand.c,
+	  with tabs instead of spaces. [MC Cameri]
+	* Fixed AtCommand_SetBattleFlag, it was previously being called by "@send"
+	  instead of "@setbattleflag". [MC Cameri]
+	* Finished basic layout, finished Aria starting to create Shinigami [Aria]
+	* Started to create "Dev edition" npcs [Aria]
+	* Fixed a compile error in src/char/char.c [MouseJstr]
+	* Fixed a bug in @trade where the distance was not ignored [MouseJstr]
+	* Fixed a potential inf loop in pc.c when multi_level_up is set to no. [MouseJstr]
+	* implemented Friends List support for TXT version [davidsiaw]
+	* added queries in main.sql for Friends List. mySQL support for friends list pending [davidsiaw]
+10/19
+	* switched login_sql/login.c to use binary when retrieving
+	  by account name [MouseJstr]
+	* skill.c & skill.h: added skill_type_cloaking [Codemaster]
+	* storage.c & storage.h: added storage_storageopen2() [Codemaster]
+10/18
+	* Changed readme layout for 1.0 scheme. [Aria]
+	* added check for console variable in login_sql [MouseJstr]
+	* Fully translated the untranslated items in the database.sql for SQL. [Nana]
+	* Dev/TODO, asigned myself to some items. [MC Cameri]
+	* char/char.c: changed the online system to omniAthena's [Codemaster]
+	* char/char.c: added log_char and log_inter [Codemaster]
+	* char/char.c: added Mugendai's GUI Support [Codemaster]
+	* char/int_guild.c: added log_inter and db_path [Codemaster]
+	* char/inter.c: added log_inter [Codemaster]
+	* char/char.c: added db_path [Codemaster]
+	* char/inter.h: added log_inter [Codemaster]
+	* char_sql/char.c: added log_char and log_inter [Codemaster]
+	* char_sql/char.c: added Mugendai's GUI Support [Codemaster]
+	* char_sql/int_guild.c: added log_inter and db_path [Codemaster]
+	* char_sql/inter.c: added log_inter [Codemaster]
+	* char_sql/char.c: added db_path [Codemaster]
+	* char_sql/inter.h: added log_inter [Codemaster]
+	* conf-tmpl/char_athena.conf: Added log_char & db_path [Codemaster]
+	* conf-tmpl/inter_athena.conf: Added log_inter [Codemaster]
+
+10/18
+	* clif.c,clif.h,map.h,npc.c,npc.h,script.c: Added NPC Walking. [Valaris]
+	  -npcspeed #; To change npc's walking speed.
+	  -npcwalkto x,y; Move an npc to a position (keep it less than area size, or sprite will glitch and disappear).
+	  -npcstop; Stops an npc's movement. 
+
+10/17
+        * Made the IP autodetection code work under a pure win32
+          executable
+        * Fixed the win32 build and made a src\map\Makefile.win32 to
+          make it easier to do win32 builds of the map server
+
+            src\common\utils.c src\common\utils.h src\common\grfio.c
+            src\common\nullpo.h src\common\timer.c src\common\db.c
+            src\common\socket.c src\common\core.c src\common\mmo.h
+            src\common\socket.h src\map\script.c src\map\intif.c
+            src\map\npc.c src\map\clif.c src\map\map.c src\map\clif.h
+            src\map\chrif.c src\map\Makefile.win32
+
+	* skill.c: Fixed noicewall flag. [Valaris]
+	* battle.c: Battle calc weapon attack now checks to see if pc_breakweapon successfully broke the weapon then recalculates damage. [Valaris]
+	* pc.c: Removed broken weapon and equip status, just unequips items again when broken. [Valaris]
+	        Removed useless code from pc_breakweapon and pc_breakarmor. [Valaris]
+	* Added template for server control from the console [Wizputer]
+	* conf-tmpl/login_athena.conf: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster]
+	* login/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster]
+	* login_sql/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster]
+	* Usable GM commands from server console admin:<gm command>:<map of "GM"> <x> <y> [Wizputer]
+	* Added server:shutdown to shutdown server and help [Wizputer]
+	* Added user discretion for console commands in conf files [Wizputer]
+10/16
+	* Fixed Umbala Language Quest, where a certain NPC would freeze you due to an unfinished script [Shinigami]
+	* Fixed bug in new_hats.txt where free items are given out [Shinigami]
+	* Correct Morroc warp npc overlaying Kafra npc. [Aria]
+	* Corrected npc typos. [Aria]
+	* Skip over npc_selfdestruction2 on allskillup (thanks to celest) [Valaris]
+	* Fixed some typos in some of the NPCs [Shinigami]
+        * tweaked the auto-configure stuff to deal better with
+          machines that have no detectable IP addresses.. is this
+          possible?  [MouseJstr]
+                src\char_sql\char.c src\char\char.c src\map\map.c
+	* Made it compile under gcc 2.95 [MouseJstr]
+	* made the char and map servers auto-configure their own IP's
+	  whenever possible [MouseJstr]
+
+	  If you do not specify the server IP address, it now determines it
+	  on its own.  This means that to get a server running that is
+	  accessable from the internet you should only need to specify the
+	  location of the data.grf files.  This eliminates one more point
+	  of misconfiguration.
+
+	  It does not correctly auto-configure for when you are behind a 
+	  router or a firewall since there is no way of determining the 
+	  external IP address.  On the other hand, we should be able to 
+	  eliminate the lan_conf file since we know our IP addresses as well 
 	  as our netmask.

+ 32 - 32
conf-tmpl/readme.txt

@@ -1,33 +1,33 @@
-What is the import folder for?
-
-Most people don't know the real use of the import folder. After you do, you will wonder 
-what you ever did without it.
-
-The main thing it does, is provide a way for you to change your config settings without
-having to update the files every time you update your server. You store your changes, and 
-the rest are updated with eA (usually though SVN).
-
-How does this work?
-
-Well, you place only the settings you have changed in the import files. I'll use 
-battle_athena.conf and battle_conf.txt for my example. Everytime you update you conf 
-folder, using the normal method, you have to go and edit the configs again. So, you have to
-redo your rates, redo your ip addresses, you have to redo it all. Well, not with the import
-system.
-
-Say you want to change your base experience rate from the default (100)to 7x (700). Well 
-then you would place this in your import/battle_conf.txt:
-
-// Rate at which exp. is given. (Note 2)
-base_exp_rate: 700
-
-You don't need the comment (duh, it's a commnet), but I usually leave them for clarity 
-sake.
-
-So, now this new setting take place over the setting in battle_athena.conf. You just keep 
-this file everytime you update, and your setting will always be there. Neat, isn't it?
-
-So, yeah, that's what the import folder is for. I hope to see a lot more people use it, to 
-make my life as a managed server runer better.
-
+What is the import folder for?
+
+Most people don't know the real use of the import folder. After you do, you will wonder 
+what you ever did without it.
+
+The main thing it does, is provide a way for you to change your config settings without
+having to update the files every time you update your server. You store your changes, and 
+the rest are updated with eA (usually though SVN).
+
+How does this work?
+
+Well, you place only the settings you have changed in the import files. I'll use 
+battle_athena.conf and battle_conf.txt for my example. Everytime you update you conf 
+folder, using the normal method, you have to go and edit the configs again. So, you have to
+redo your rates, redo your ip addresses, you have to redo it all. Well, not with the import
+system.
+
+Say you want to change your base experience rate from the default (100)to 7x (700). Well 
+then you would place this in your import/battle_conf.txt:
+
+// Rate at which exp. is given. (Note 2)
+base_exp_rate: 700
+
+You don't need the comment (duh, it's a commnet), but I usually leave them for clarity 
+sake.
+
+So, now this new setting take place over the setting in battle_athena.conf. You just keep 
+this file everytime you update, and your setting will always be there. Neat, isn't it?
+
+So, yeah, that's what the import folder is for. I hope to see a lot more people use it, to 
+make my life as a managed server runer better.
+
 Semi-guide by Ajarn

+ 5 - 5
db/mob_race2_db.txt

@@ -1,6 +1,6 @@
-// RACE,Mob ID1,Mob ID2,Mob ID3,...,Mob ID9
-1,1122,1123,1124,1125,1126,1245,1258,1280,1308	// Goblins
-2,1133,1134,1135,1136,1137,1226,1282,1455	// Kobolds
-3,1023,1152,1153,1177,1189,1213,1273		// Orcs
-4,1040,1278,1366,1497				// Golems
+// RACE,Mob ID1,Mob ID2,Mob ID3,...,Mob ID9
+1,1122,1123,1124,1125,1126,1245,1258,1280,1308	// Goblins
+2,1133,1134,1135,1136,1137,1226,1282,1455	// Kobolds
+3,1023,1152,1153,1177,1189,1213,1273		// Orcs
+4,1040,1278,1366,1497				// Golems
 5,1285,1286,1287				// Guardians

+ 279 - 279
src/lib/zconf_win32.h

@@ -1,279 +1,279 @@
-/* zconf.h -- configuration of the zlib compression library
- * Copyright (C) 1995-1998 Jean-loup Gailly.
- * For conditions of distribution and use, see copyright notice in zlib.h 
- */
-
-/* @(#) $Id$ */
-
-#ifndef _ZCONF_H
-#define _ZCONF_H
-
-/*
- * If you *really* need a unique prefix for all types and library functions,
- * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
- */
-#ifdef Z_PREFIX
-#  define deflateInit_	z_deflateInit_
-#  define deflate	z_deflate
-#  define deflateEnd	z_deflateEnd
-#  define inflateInit_ 	z_inflateInit_
-#  define inflate	z_inflate
-#  define inflateEnd	z_inflateEnd
-#  define deflateInit2_	z_deflateInit2_
-#  define deflateSetDictionary z_deflateSetDictionary
-#  define deflateCopy	z_deflateCopy
-#  define deflateReset	z_deflateReset
-#  define deflateParams	z_deflateParams
-#  define inflateInit2_	z_inflateInit2_
-#  define inflateSetDictionary z_inflateSetDictionary
-#  define inflateSync	z_inflateSync
-#  define inflateSyncPoint z_inflateSyncPoint
-#  define inflateReset	z_inflateReset
-#  define compress	z_compress
-#  define compress2	z_compress2
-#  define uncompress	z_uncompress
-#  define adler32	z_adler32
-#  define crc32		z_crc32
-#  define get_crc_table z_get_crc_table
-
-#  define Byte		z_Byte
-#  define uInt		z_uInt
-#  define uLong		z_uLong
-#  define Bytef	        z_Bytef
-#  define charf		z_charf
-#  define intf		z_intf
-#  define uIntf		z_uIntf
-#  define uLongf	z_uLongf
-#  define voidpf	z_voidpf
-#  define voidp		z_voidp
-#endif
-
-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-#  define WIN32
-#endif
-#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
-#  ifndef __32BIT__
-#    define __32BIT__
-#  endif
-#endif
-#if defined(__MSDOS__) && !defined(MSDOS)
-#  define MSDOS
-#endif
-
-/*
- * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
- * than 64k bytes at a time (needed on systems with 16-bit int).
- */
-#if defined(MSDOS) && !defined(__32BIT__)
-#  define MAXSEG_64K
-#endif
-#ifdef MSDOS
-#  define UNALIGNED_OK
-#endif
-
-#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32))  && !defined(STDC)
-#  define STDC
-#endif
-#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)
-#  ifndef STDC
-#    define STDC
-#  endif
-#endif
-
-#ifndef STDC
-#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
-#    define const
-#  endif
-#endif
-
-/* Some Mac compilers merge all .h files incorrectly: */
-#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
-#  define NO_DUMMY_DECL
-#endif
-
-/* Old Borland C incorrectly complains about missing returns: */
-#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
-#  define NEED_DUMMY_RETURN
-#endif
-
-
-/* Maximum value for memLevel in deflateInit2 */
-#ifndef MAX_MEM_LEVEL
-#  ifdef MAXSEG_64K
-#    define MAX_MEM_LEVEL 8
-#  else
-#    define MAX_MEM_LEVEL 9
-#  endif
-#endif
-
-/* Maximum value for windowBits in deflateInit2 and inflateInit2.
- * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
- * created by gzip. (Files created by minigzip can still be extracted by
- * gzip.)
- */
-#ifndef MAX_WBITS
-#  define MAX_WBITS   15 /* 32K LZ77 window */
-#endif
-
-/* The memory requirements for deflate are (in bytes):
-            (1 << (windowBits+2)) +  (1 << (memLevel+9))
- that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
- plus a few kilobytes for small objects. For example, if you want to reduce
- the default memory requirements from 256K to 128K, compile with
-     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
- Of course this will generally degrade compression (there's no free lunch).
-
-   The memory requirements for inflate are (in bytes) 1 << windowBits
- that is, 32K for windowBits=15 (default value) plus a few kilobytes
- for small objects.
-*/
-
-                        /* Type declarations */
-
-#ifndef OF /* function prototypes */
-#  ifdef STDC
-#    define OF(args)  args
-#  else
-#    define OF(args)  ()
-#  endif
-#endif
-
-/* The following definitions for FAR are needed only for MSDOS mixed
- * model programming (small or medium model with some far allocations).
- * This was tested only with MSC; for other MSDOS compilers you may have
- * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
- * just define FAR to be empty.
- */
-#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
-   /* MSC small or medium model */
-#  define SMALL_MEDIUM
-#  ifdef _MSC_VER
-#    define FAR _far
-#  else
-#    define FAR far
-#  endif
-#endif
-#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
-#  ifndef __32BIT__
-#    define SMALL_MEDIUM
-#    define FAR _far
-#  endif
-#endif
-
-/* Compile with -DZLIB_DLL for Windows DLL support */
-#if defined(ZLIB_DLL)
-#  if defined(_WINDOWS) || defined(WINDOWS)
-#    ifdef FAR
-#      undef FAR
-#    endif
-#    include <windows.h>
-#    define ZEXPORT  WINAPI
-#    ifdef WIN32
-#      define ZEXPORTVA  WINAPIV
-#    else
-#      define ZEXPORTVA  FAR _cdecl _export
-#    endif
-#  endif
-#  if defined (__BORLANDC__)
-#    if (__BORLANDC__ >= 0x0500) && defined (WIN32)
-#      include <windows.h>
-#      define ZEXPORT __declspec(dllexport) WINAPI
-#      define ZEXPORTRVA __declspec(dllexport) WINAPIV
-#    else
-#      if defined (_Windows) && defined (__DLL__)
-#        define ZEXPORT _export
-#        define ZEXPORTVA _export
-#      endif
-#    endif
-#  endif
-#endif
-
-#if defined (__BEOS__)
-#  if defined (ZLIB_DLL)
-#    define ZEXTERN extern __declspec(dllexport)
-#  else
-#    define ZEXTERN extern __declspec(dllimport)
-#  endif
-#endif
-
-#ifndef ZEXPORT
-#  define ZEXPORT
-#endif
-#ifndef ZEXPORTVA
-#  define ZEXPORTVA
-#endif
-#ifndef ZEXTERN
-#  define ZEXTERN extern
-#endif
-
-#ifndef FAR
-#   define FAR
-#endif
-
-#if !defined(MACOS) && !defined(TARGET_OS_MAC)
-typedef unsigned char  Byte;  /* 8 bits */
-#endif
-typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
-
-#ifdef SMALL_MEDIUM
-   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
-#  define Bytef Byte FAR
-#else
-   typedef Byte  FAR Bytef;
-#endif
-typedef char  FAR charf;
-typedef int   FAR intf;
-typedef uInt  FAR uIntf;
-typedef uLong FAR uLongf;
-
-#ifdef STDC
-   typedef void FAR *voidpf;
-   typedef void     *voidp;
-#else
-   typedef Byte FAR *voidpf;
-   typedef Byte     *voidp;
-#endif
-
-#ifdef HAVE_UNISTD_H
-#  include <sys/types.h> /* for off_t */
-#  include <unistd.h>    /* for SEEK_* and off_t */
-#  define z_off_t  off_t
-#endif
-#ifndef SEEK_SET
-#  define SEEK_SET        0       /* Seek from beginning of file.  */
-#  define SEEK_CUR        1       /* Seek from current position.  */
-#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
-#endif
-#ifndef z_off_t
-#  define  z_off_t long
-#endif
-
-/* MVS linker does not support external names larger than 8 bytes */
-#if defined(__MVS__)
-#   pragma map(deflateInit_,"DEIN")
-#   pragma map(deflateInit2_,"DEIN2")
-#   pragma map(deflateEnd,"DEEND")
-#   pragma map(inflateInit_,"ININ")
-#   pragma map(inflateInit2_,"ININ2")
-#   pragma map(inflateEnd,"INEND")
-#   pragma map(inflateSync,"INSY")
-#   pragma map(inflateSetDictionary,"INSEDI")
-#   pragma map(inflate_blocks,"INBL")
-#   pragma map(inflate_blocks_new,"INBLNE")
-#   pragma map(inflate_blocks_free,"INBLFR")
-#   pragma map(inflate_blocks_reset,"INBLRE")
-#   pragma map(inflate_codes_free,"INCOFR")
-#   pragma map(inflate_codes,"INCO")
-#   pragma map(inflate_fast,"INFA")
-#   pragma map(inflate_flush,"INFLU")
-#   pragma map(inflate_mask,"INMA")
-#   pragma map(inflate_set_dictionary,"INSEDI2")
-#   pragma map(inflate_copyright,"INCOPY")
-#   pragma map(inflate_trees_bits,"INTRBI")
-#   pragma map(inflate_trees_dynamic,"INTRDY")
-#   pragma map(inflate_trees_fixed,"INTRFI")
-#   pragma map(inflate_trees_free,"INTRFR")
-#endif
-
-#endif /* _ZCONF_H */
+/* zconf.h -- configuration of the zlib compression library
+ * Copyright (C) 1995-1998 Jean-loup Gailly.
+ * For conditions of distribution and use, see copyright notice in zlib.h 
+ */
+
+/* @(#) $Id$ */
+
+#ifndef _ZCONF_H
+#define _ZCONF_H
+
+/*
+ * If you *really* need a unique prefix for all types and library functions,
+ * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
+ */
+#ifdef Z_PREFIX
+#  define deflateInit_	z_deflateInit_
+#  define deflate	z_deflate
+#  define deflateEnd	z_deflateEnd
+#  define inflateInit_ 	z_inflateInit_
+#  define inflate	z_inflate
+#  define inflateEnd	z_inflateEnd
+#  define deflateInit2_	z_deflateInit2_
+#  define deflateSetDictionary z_deflateSetDictionary
+#  define deflateCopy	z_deflateCopy
+#  define deflateReset	z_deflateReset
+#  define deflateParams	z_deflateParams
+#  define inflateInit2_	z_inflateInit2_
+#  define inflateSetDictionary z_inflateSetDictionary
+#  define inflateSync	z_inflateSync
+#  define inflateSyncPoint z_inflateSyncPoint
+#  define inflateReset	z_inflateReset
+#  define compress	z_compress
+#  define compress2	z_compress2
+#  define uncompress	z_uncompress
+#  define adler32	z_adler32
+#  define crc32		z_crc32
+#  define get_crc_table z_get_crc_table
+
+#  define Byte		z_Byte
+#  define uInt		z_uInt
+#  define uLong		z_uLong
+#  define Bytef	        z_Bytef
+#  define charf		z_charf
+#  define intf		z_intf
+#  define uIntf		z_uIntf
+#  define uLongf	z_uLongf
+#  define voidpf	z_voidpf
+#  define voidp		z_voidp
+#endif
+
+#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
+#  define WIN32
+#endif
+#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
+#  ifndef __32BIT__
+#    define __32BIT__
+#  endif
+#endif
+#if defined(__MSDOS__) && !defined(MSDOS)
+#  define MSDOS
+#endif
+
+/*
+ * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
+ * than 64k bytes at a time (needed on systems with 16-bit int).
+ */
+#if defined(MSDOS) && !defined(__32BIT__)
+#  define MAXSEG_64K
+#endif
+#ifdef MSDOS
+#  define UNALIGNED_OK
+#endif
+
+#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32))  && !defined(STDC)
+#  define STDC
+#endif
+#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)
+#  ifndef STDC
+#    define STDC
+#  endif
+#endif
+
+#ifndef STDC
+#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
+#    define const
+#  endif
+#endif
+
+/* Some Mac compilers merge all .h files incorrectly: */
+#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
+#  define NO_DUMMY_DECL
+#endif
+
+/* Old Borland C incorrectly complains about missing returns: */
+#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
+#  define NEED_DUMMY_RETURN
+#endif
+
+
+/* Maximum value for memLevel in deflateInit2 */
+#ifndef MAX_MEM_LEVEL
+#  ifdef MAXSEG_64K
+#    define MAX_MEM_LEVEL 8
+#  else
+#    define MAX_MEM_LEVEL 9
+#  endif
+#endif
+
+/* Maximum value for windowBits in deflateInit2 and inflateInit2.
+ * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
+ * created by gzip. (Files created by minigzip can still be extracted by
+ * gzip.)
+ */
+#ifndef MAX_WBITS
+#  define MAX_WBITS   15 /* 32K LZ77 window */
+#endif
+
+/* The memory requirements for deflate are (in bytes):
+            (1 << (windowBits+2)) +  (1 << (memLevel+9))
+ that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
+ plus a few kilobytes for small objects. For example, if you want to reduce
+ the default memory requirements from 256K to 128K, compile with
+     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
+ Of course this will generally degrade compression (there's no free lunch).
+
+   The memory requirements for inflate are (in bytes) 1 << windowBits
+ that is, 32K for windowBits=15 (default value) plus a few kilobytes
+ for small objects.
+*/
+
+                        /* Type declarations */
+
+#ifndef OF /* function prototypes */
+#  ifdef STDC
+#    define OF(args)  args
+#  else
+#    define OF(args)  ()
+#  endif
+#endif
+
+/* The following definitions for FAR are needed only for MSDOS mixed
+ * model programming (small or medium model with some far allocations).
+ * This was tested only with MSC; for other MSDOS compilers you may have
+ * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
+ * just define FAR to be empty.
+ */
+#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
+   /* MSC small or medium model */
+#  define SMALL_MEDIUM
+#  ifdef _MSC_VER
+#    define FAR _far
+#  else
+#    define FAR far
+#  endif
+#endif
+#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
+#  ifndef __32BIT__
+#    define SMALL_MEDIUM
+#    define FAR _far
+#  endif
+#endif
+
+/* Compile with -DZLIB_DLL for Windows DLL support */
+#if defined(ZLIB_DLL)
+#  if defined(_WINDOWS) || defined(WINDOWS)
+#    ifdef FAR
+#      undef FAR
+#    endif
+#    include <windows.h>
+#    define ZEXPORT  WINAPI
+#    ifdef WIN32
+#      define ZEXPORTVA  WINAPIV
+#    else
+#      define ZEXPORTVA  FAR _cdecl _export
+#    endif
+#  endif
+#  if defined (__BORLANDC__)
+#    if (__BORLANDC__ >= 0x0500) && defined (WIN32)
+#      include <windows.h>
+#      define ZEXPORT __declspec(dllexport) WINAPI
+#      define ZEXPORTRVA __declspec(dllexport) WINAPIV
+#    else
+#      if defined (_Windows) && defined (__DLL__)
+#        define ZEXPORT _export
+#        define ZEXPORTVA _export
+#      endif
+#    endif
+#  endif
+#endif
+
+#if defined (__BEOS__)
+#  if defined (ZLIB_DLL)
+#    define ZEXTERN extern __declspec(dllexport)
+#  else
+#    define ZEXTERN extern __declspec(dllimport)
+#  endif
+#endif
+
+#ifndef ZEXPORT
+#  define ZEXPORT
+#endif
+#ifndef ZEXPORTVA
+#  define ZEXPORTVA
+#endif
+#ifndef ZEXTERN
+#  define ZEXTERN extern
+#endif
+
+#ifndef FAR
+#   define FAR
+#endif
+
+#if !defined(MACOS) && !defined(TARGET_OS_MAC)
+typedef unsigned char  Byte;  /* 8 bits */
+#endif
+typedef unsigned int   uInt;  /* 16 bits or more */
+typedef unsigned long  uLong; /* 32 bits or more */
+
+#ifdef SMALL_MEDIUM
+   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
+#  define Bytef Byte FAR
+#else
+   typedef Byte  FAR Bytef;
+#endif
+typedef char  FAR charf;
+typedef int   FAR intf;
+typedef uInt  FAR uIntf;
+typedef uLong FAR uLongf;
+
+#ifdef STDC
+   typedef void FAR *voidpf;
+   typedef void     *voidp;
+#else
+   typedef Byte FAR *voidpf;
+   typedef Byte     *voidp;
+#endif
+
+#ifdef HAVE_UNISTD_H
+#  include <sys/types.h> /* for off_t */
+#  include <unistd.h>    /* for SEEK_* and off_t */
+#  define z_off_t  off_t
+#endif
+#ifndef SEEK_SET
+#  define SEEK_SET        0       /* Seek from beginning of file.  */
+#  define SEEK_CUR        1       /* Seek from current position.  */
+#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
+#endif
+#ifndef z_off_t
+#  define  z_off_t long
+#endif
+
+/* MVS linker does not support external names larger than 8 bytes */
+#if defined(__MVS__)
+#   pragma map(deflateInit_,"DEIN")
+#   pragma map(deflateInit2_,"DEIN2")
+#   pragma map(deflateEnd,"DEEND")
+#   pragma map(inflateInit_,"ININ")
+#   pragma map(inflateInit2_,"ININ2")
+#   pragma map(inflateEnd,"INEND")
+#   pragma map(inflateSync,"INSY")
+#   pragma map(inflateSetDictionary,"INSEDI")
+#   pragma map(inflate_blocks,"INBL")
+#   pragma map(inflate_blocks_new,"INBLNE")
+#   pragma map(inflate_blocks_free,"INBLFR")
+#   pragma map(inflate_blocks_reset,"INBLRE")
+#   pragma map(inflate_codes_free,"INCOFR")
+#   pragma map(inflate_codes,"INCO")
+#   pragma map(inflate_fast,"INFA")
+#   pragma map(inflate_flush,"INFLU")
+#   pragma map(inflate_mask,"INMA")
+#   pragma map(inflate_set_dictionary,"INSEDI2")
+#   pragma map(inflate_copyright,"INCOPY")
+#   pragma map(inflate_trees_bits,"INTRBI")
+#   pragma map(inflate_trees_dynamic,"INTRDY")
+#   pragma map(inflate_trees_fixed,"INTRFI")
+#   pragma map(inflate_trees_free,"INTRFR")
+#endif
+
+#endif /* _ZCONF_H */

+ 893 - 893
src/lib/zlib_win32.h

@@ -1,893 +1,893 @@
-/* zlib.h -- interface of the 'zlib' general purpose compression library
-  version 1.1.3, July 9th, 1998
-
-  Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  Jean-loup Gailly        Mark Adler
-  jloup@gzip.org          madler@alumni.caltech.edu
-
-
-  The data format used by the zlib library is described by RFCs (Request for
-  Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
-  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
-*/
-
-#ifndef _ZLIB_H
-#define _ZLIB_H
-
-#include "zconf_win32.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define ZLIB_VERSION "1.1.3"
-
-/* 
-     The 'zlib' compression library provides in-memory compression and
-  decompression functions, including integrity checks of the uncompressed
-  data.  This version of the library supports only one compression method
-  (deflation) but other algorithms will be added later and will have the same
-  stream interface.
-
-     Compression can be done in a single step if the buffers are large
-  enough (for example if an input file is mmap'ed), or can be done by
-  repeated calls of the compression function.  In the latter case, the
-  application must provide more input and/or consume the output
-  (providing more output space) before each call.
-
-     The library also supports reading and writing files in gzip (.gz) format
-  with an interface similar to that of stdio.
-
-     The library does not install any signal handler. The decoder checks
-  the consistency of the compressed data, so the library should never
-  crash even in case of corrupted input.
-*/
-
-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
-typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
-
-struct internal_state;
-
-typedef struct z_stream_s {
-    Bytef    *next_in;  /* next input byte */
-    uInt     avail_in;  /* number of bytes available at next_in */
-    uLong    total_in;  /* total nb of input bytes read so far */
-
-    Bytef    *next_out; /* next output byte should be put there */
-    uInt     avail_out; /* remaining free space at next_out */
-    uLong    total_out; /* total nb of bytes output so far */
-
-    char     *msg;      /* last error message, NULL if no error */
-    struct internal_state FAR *state; /* not visible by applications */
-
-    alloc_func zalloc;  /* used to allocate the internal state */
-    free_func  zfree;   /* used to free the internal state */
-    voidpf     opaque;  /* private data object passed to zalloc and zfree */
-
-    int     data_type;  /* best guess about the data type: ascii or binary */
-    uLong   adler;      /* adler32 value of the uncompressed data */
-    uLong   reserved;   /* reserved for future use */
-} z_stream;
-
-typedef z_stream FAR *z_streamp;
-
-/*
-   The application must update next_in and avail_in when avail_in has
-   dropped to zero. It must update next_out and avail_out when avail_out
-   has dropped to zero. The application must initialize zalloc, zfree and
-   opaque before calling the init function. All other fields are set by the
-   compression library and must not be updated by the application.
-
-   The opaque value provided by the application will be passed as the first
-   parameter for calls of zalloc and zfree. This can be useful for custom
-   memory management. The compression library attaches no meaning to the
-   opaque value.
-
-   zalloc must return Z_NULL if there is not enough memory for the object.
-   If zlib is used in a multi-threaded application, zalloc and zfree must be
-   thread safe.
-
-   On 16-bit systems, the functions zalloc and zfree must be able to allocate
-   exactly 65536 bytes, but will not be required to allocate more than this
-   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
-   pointers returned by zalloc for objects of exactly 65536 bytes *must*
-   have their offset normalized to zero. The default allocation function
-   provided by this library ensures this (see zutil.c). To reduce memory
-   requirements and avoid any allocation of 64K objects, at the expense of
-   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
-
-   The fields total_in and total_out can be used for statistics or
-   progress reports. After compression, total_in holds the total size of
-   the uncompressed data and may be saved for use in the decompressor
-   (particularly if the decompressor wants to decompress everything in
-   a single step).
-*/
-
-                        /* constants */
-
-#define Z_NO_FLUSH      0
-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
-#define Z_SYNC_FLUSH    2
-#define Z_FULL_FLUSH    3
-#define Z_FINISH        4
-/* Allowed flush values; see deflate() below for details */
-
-#define Z_OK            0
-#define Z_STREAM_END    1
-#define Z_NEED_DICT     2
-#define Z_ERRNO        (-1)
-#define Z_STREAM_ERROR (-2)
-#define Z_DATA_ERROR   (-3)
-#define Z_MEM_ERROR    (-4)
-#define Z_BUF_ERROR    (-5)
-#define Z_VERSION_ERROR (-6)
-/* Return codes for the compression/decompression functions. Negative
- * values are errors, positive values are used for special but normal events.
- */
-
-#define Z_NO_COMPRESSION         0
-#define Z_BEST_SPEED             1
-#define Z_BEST_COMPRESSION       9
-#define Z_DEFAULT_COMPRESSION  (-1)
-/* compression levels */
-
-#define Z_FILTERED            1
-#define Z_HUFFMAN_ONLY        2
-#define Z_DEFAULT_STRATEGY    0
-/* compression strategy; see deflateInit2() below for details */
-
-#define Z_BINARY   0
-#define Z_ASCII    1
-#define Z_UNKNOWN  2
-/* Possible values of the data_type field */
-
-#define Z_DEFLATED   8
-/* The deflate compression method (the only one supported in this version) */
-
-#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
-
-#define zlib_version zlibVersion()
-/* for compatibility with versions < 1.0.2 */
-
-                        /* basic functions */
-
-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
-   If the first character differs, the library code actually used is
-   not compatible with the zlib.h header file used by the application.
-   This check is automatically made by deflateInit and inflateInit.
- */
-
-/* 
-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
-
-     Initializes the internal stream state for compression. The fields
-   zalloc, zfree and opaque must be initialized before by the caller.
-   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
-   use default allocation functions.
-
-     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
-   1 gives best speed, 9 gives best compression, 0 gives no compression at
-   all (the input data is simply copied a block at a time).
-   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
-   compression (currently equivalent to level 6).
-
-     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
-   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
-   with the version assumed by the caller (ZLIB_VERSION).
-   msg is set to null if there is no error message.  deflateInit does not
-   perform any compression: this will be done by deflate().
-*/
-
-
-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
-/*
-    deflate compresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may introduce some
-  output latency (reading input without producing any output) except when
-  forced to flush.
-
-    The detailed semantics are as follows. deflate performs one or both of the
-  following actions:
-
-  - Compress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in and avail_in are updated and
-    processing will resume at this point for the next call of deflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly. This action is forced if the parameter flush is non zero.
-    Forcing flush frequently degrades the compression ratio, so this parameter
-    should be set only when necessary (in interactive applications).
-    Some output may be provided even if flush is not set.
-
-  Before the call of deflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating avail_in or avail_out accordingly; avail_out
-  should never be zero before the call. The application can consume the
-  compressed output when it wants, for example when the output buffer is full
-  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
-  and with zero avail_out, it must be called again after making room in the
-  output buffer because there might be more output pending.
-
-    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
-  flushed to the output buffer and the output is aligned on a byte boundary, so
-  that the decompressor can get all input data available so far. (In particular
-  avail_in is zero after the call if enough output space has been provided
-  before the call.)  Flushing may degrade compression for some compression
-  algorithms and so it should be used only when necessary.
-
-    If flush is set to Z_FULL_FLUSH, all output is flushed as with
-  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
-  restart from this point if previous compressed data has been damaged or if
-  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
-  the compression.
-
-    If deflate returns with avail_out == 0, this function must be called again
-  with the same value of the flush parameter and more output space (updated
-  avail_out), until the flush is complete (deflate returns with non-zero
-  avail_out).
-
-    If the parameter flush is set to Z_FINISH, pending input is processed,
-  pending output is flushed and deflate returns with Z_STREAM_END if there
-  was enough output space; if deflate returns with Z_OK, this function must be
-  called again with Z_FINISH and more output space (updated avail_out) but no
-  more input data, until it returns with Z_STREAM_END or an error. After
-  deflate has returned Z_STREAM_END, the only possible operations on the
-  stream are deflateReset or deflateEnd.
-  
-    Z_FINISH can be used immediately after deflateInit if all the compression
-  is to be done in a single step. In this case, avail_out must be at least
-  0.1% larger than avail_in plus 12 bytes.  If deflate does not return
-  Z_STREAM_END, then it must be called again as described above.
-
-    deflate() sets strm->adler to the adler32 checksum of all input read
-  so far (that is, total_in bytes).
-
-    deflate() may update data_type if it can make a good guess about
-  the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
-  binary. This field is only for information purposes and does not affect
-  the compression algorithm in any manner.
-
-    deflate() returns Z_OK if some progress has been made (more input
-  processed or more output produced), Z_STREAM_END if all input has been
-  consumed and all output has been produced (only when flush is set to
-  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
-  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
-  (for example avail_in or avail_out was zero).
-*/
-
-
-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
-
-     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
-   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
-   prematurely (some input or output was discarded). In the error case,
-   msg may be set but then points to a static string (which must not be
-   deallocated).
-*/
-
-
-/* 
-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
-
-     Initializes the internal stream state for decompression. The fields
-   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
-   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
-   value depends on the compression method), inflateInit determines the
-   compression method from the zlib header and allocates all data structures
-   accordingly; otherwise the allocation will be deferred to the first call of
-   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
-   use default allocation functions.
-
-     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
-   version assumed by the caller.  msg is set to null if there is no error
-   message. inflateInit does not perform any decompression apart from reading
-   the zlib header if present: this will be done by inflate().  (So next_in and
-   avail_in may be modified, but next_out and avail_out are unchanged.)
-*/
-
-
-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
-/*
-    inflate decompresses as much data as possible, and stops when the input
-  buffer becomes empty or the output buffer becomes full. It may some
-  introduce some output latency (reading input without producing any output)
-  except when forced to flush.
-
-  The detailed semantics are as follows. inflate performs one or both of the
-  following actions:
-
-  - Decompress more input starting at next_in and update next_in and avail_in
-    accordingly. If not all input can be processed (because there is not
-    enough room in the output buffer), next_in is updated and processing
-    will resume at this point for the next call of inflate().
-
-  - Provide more output starting at next_out and update next_out and avail_out
-    accordingly.  inflate() provides as much output as possible, until there
-    is no more input data or no more space in the output buffer (see below
-    about the flush parameter).
-
-  Before the call of inflate(), the application should ensure that at least
-  one of the actions is possible, by providing more input and/or consuming
-  more output, and updating the next_* and avail_* values accordingly.
-  The application can consume the uncompressed output when it wants, for
-  example when the output buffer is full (avail_out == 0), or after each
-  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
-  must be called again after making room in the output buffer because there
-  might be more output pending.
-
-    If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
-  output as possible to the output buffer. The flushing behavior of inflate is
-  not specified for values of the flush parameter other than Z_SYNC_FLUSH
-  and Z_FINISH, but the current implementation actually flushes as much output
-  as possible anyway.
-
-    inflate() should normally be called until it returns Z_STREAM_END or an
-  error. However if all decompression is to be performed in a single step
-  (a single call of inflate), the parameter flush should be set to
-  Z_FINISH. In this case all pending input is processed and all pending
-  output is flushed; avail_out must be large enough to hold all the
-  uncompressed data. (The size of the uncompressed data may have been saved
-  by the compressor for this purpose.) The next operation on this stream must
-  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
-  is never required, but can be used to inform inflate that a faster routine
-  may be used for the single inflate() call.
-
-     If a preset dictionary is needed at this point (see inflateSetDictionary
-  below), inflate sets strm-adler to the adler32 checksum of the
-  dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise 
-  it sets strm->adler to the adler32 checksum of all output produced
-  so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
-  an error code as described below. At the end of the stream, inflate()
-  checks that its computed adler32 checksum is equal to that saved by the
-  compressor and returns Z_STREAM_END only if the checksum is correct.
-
-    inflate() returns Z_OK if some progress has been made (more input processed
-  or more output produced), Z_STREAM_END if the end of the compressed data has
-  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
-  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
-  corrupted (input stream not conforming to the zlib format or incorrect
-  adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
-  (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
-  enough memory, Z_BUF_ERROR if no progress is possible or if there was not
-  enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
-  case, the application may then call inflateSync to look for a good
-  compression block.
-*/
-
-
-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
-/*
-     All dynamically allocated data structures for this stream are freed.
-   This function discards any unprocessed input and does not flush any
-   pending output.
-
-     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
-   was inconsistent. In the error case, msg may be set but then points to a
-   static string (which must not be deallocated).
-*/
-
-                        /* Advanced functions */
-
-/*
-    The following functions are needed only in some special applications.
-*/
-
-/*   
-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
-                                     int  level,
-                                     int  method,
-                                     int  windowBits,
-                                     int  memLevel,
-                                     int  strategy));
-
-     This is another version of deflateInit with more compression options. The
-   fields next_in, zalloc, zfree and opaque must be initialized before by
-   the caller.
-
-     The method parameter is the compression method. It must be Z_DEFLATED in
-   this version of the library.
-
-     The windowBits parameter is the base two logarithm of the window size
-   (the size of the history buffer).  It should be in the range 8..15 for this
-   version of the library. Larger values of this parameter result in better
-   compression at the expense of memory usage. The default value is 15 if
-   deflateInit is used instead.
-
-     The memLevel parameter specifies how much memory should be allocated
-   for the internal compression state. memLevel=1 uses minimum memory but
-   is slow and reduces compression ratio; memLevel=9 uses maximum memory
-   for optimal speed. The default value is 8. See zconf.h for total memory
-   usage as a function of windowBits and memLevel.
-
-     The strategy parameter is used to tune the compression algorithm. Use the
-   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
-   filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
-   string match).  Filtered data consists mostly of small values with a
-   somewhat random distribution. In this case, the compression algorithm is
-   tuned to compress them better. The effect of Z_FILTERED is to force more
-   Huffman coding and less string matching; it is somewhat intermediate
-   between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
-   the compression ratio but not the correctness of the compressed output even
-   if it is not set appropriately.
-
-      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
-   method). msg is set to null if there is no error message.  deflateInit2 does
-   not perform any compression: this will be done by deflate().
-*/
-                            
-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the compression dictionary from the given byte sequence
-   without producing any compressed output. This function must be called
-   immediately after deflateInit, deflateInit2 or deflateReset, before any
-   call of deflate. The compressor and decompressor must use exactly the same
-   dictionary (see inflateSetDictionary).
-
-     The dictionary should consist of strings (byte sequences) that are likely
-   to be encountered later in the data to be compressed, with the most commonly
-   used strings preferably put towards the end of the dictionary. Using a
-   dictionary is most useful when the data to be compressed is short and can be
-   predicted with good accuracy; the data can then be compressed better than
-   with the default empty dictionary.
-
-     Depending on the size of the compression data structures selected by
-   deflateInit or deflateInit2, a part of the dictionary may in effect be
-   discarded, for example if the dictionary is larger than the window size in
-   deflate or deflate2. Thus the strings most likely to be useful should be
-   put at the end of the dictionary, not at the front.
-
-     Upon return of this function, strm->adler is set to the Adler32 value
-   of the dictionary; the decompressor may later use this value to determine
-   which dictionary has been used by the compressor. (The Adler32 value
-   applies to the whole dictionary even if only a subset of the dictionary is
-   actually used by the compressor.)
-
-     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
-   inconsistent (for example if deflate has already been called for this stream
-   or if the compression method is bsort). deflateSetDictionary does not
-   perform any compression: this will be done by deflate().
-*/
-
-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
-                                    z_streamp source));
-/*
-     Sets the destination stream as a complete copy of the source stream.
-
-     This function can be useful when several compression strategies will be
-   tried, for example when there are several ways of pre-processing the input
-   data with a filter. The streams that will be discarded should then be freed
-   by calling deflateEnd.  Note that deflateCopy duplicates the internal
-   compression state which can be quite large, so this strategy is slow and
-   can consume lots of memory.
-
-     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
-   (such as zalloc being NULL). msg is left unchanged in both source and
-   destination.
-*/
-
-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to deflateEnd followed by deflateInit,
-   but does not free and reallocate all the internal compression state.
-   The stream will keep the same compression level and any other attributes
-   that may have been set by deflateInit2.
-
-      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
-				      int level,
-				      int strategy));
-/*
-     Dynamically update the compression level and compression strategy.  The
-   interpretation of level and strategy is as in deflateInit2.  This can be
-   used to switch between compression and straight copy of the input data, or
-   to switch to a different kind of input data requiring a different
-   strategy. If the compression level is changed, the input available so far
-   is compressed with the old level (and may be flushed); the new level will
-   take effect only at the next call of deflate().
-
-     Before the call of deflateParams, the stream state must be set as for
-   a call of deflate(), since the currently available input may have to
-   be compressed and flushed. In particular, strm->avail_out must be non-zero.
-
-     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
-   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
-   if strm->avail_out was zero.
-*/
-
-/*   
-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
-                                     int  windowBits));
-
-     This is another version of inflateInit with an extra parameter. The
-   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
-   before by the caller.
-
-     The windowBits parameter is the base two logarithm of the maximum window
-   size (the size of the history buffer).  It should be in the range 8..15 for
-   this version of the library. The default value is 15 if inflateInit is used
-   instead. If a compressed stream with a larger window size is given as
-   input, inflate() will return with the error code Z_DATA_ERROR instead of
-   trying to allocate a larger window.
-
-      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
-   memLevel). msg is set to null if there is no error message.  inflateInit2
-   does not perform any decompression apart from reading the zlib header if
-   present: this will be done by inflate(). (So next_in and avail_in may be
-   modified, but next_out and avail_out are unchanged.)
-*/
-
-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
-                                             const Bytef *dictionary,
-                                             uInt  dictLength));
-/*
-     Initializes the decompression dictionary from the given uncompressed byte
-   sequence. This function must be called immediately after a call of inflate
-   if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
-   can be determined from the Adler32 value returned by this call of
-   inflate. The compressor and decompressor must use exactly the same
-   dictionary (see deflateSetDictionary).
-
-     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
-   parameter is invalid (such as NULL dictionary) or the stream state is
-   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
-   expected one (incorrect Adler32 value). inflateSetDictionary does not
-   perform any decompression: this will be done by subsequent calls of
-   inflate().
-*/
-
-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
-/* 
-    Skips invalid compressed data until a full flush point (see above the
-  description of deflate with Z_FULL_FLUSH) can be found, or until all
-  available input is skipped. No output is provided.
-
-    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
-  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
-  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
-  case, the application may save the current current value of total_in which
-  indicates where valid compressed data was found. In the error case, the
-  application may repeatedly call inflateSync, providing more input each time,
-  until success or end of the input data.
-*/
-
-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
-/*
-     This function is equivalent to inflateEnd followed by inflateInit,
-   but does not free and reallocate all the internal decompression state.
-   The stream will keep attributes that may have been set by inflateInit2.
-
-      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
-   stream state was inconsistent (such as zalloc or state being NULL).
-*/
-
-
-                        /* utility functions */
-
-/*
-     The following utility functions are implemented on top of the
-   basic stream-oriented functions. To simplify the interface, some
-   default options are assumed (compression level and memory usage,
-   standard memory allocation functions). The source code of these
-   utility functions can easily be modified if you need special options.
-*/
-
-ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
-                                 const Bytef *source, uLong sourceLen));
-/*
-     Compresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be at least 0.1% larger than
-   sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
-   compressed buffer.
-     This function can be used to compress a whole file at once if the
-   input file is mmap'ed.
-     compress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer.
-*/
-
-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
-                                  const Bytef *source, uLong sourceLen,
-                                  int level));
-/*
-     Compresses the source buffer into the destination buffer. The level
-   parameter has the same meaning as in deflateInit.  sourceLen is the byte
-   length of the source buffer. Upon entry, destLen is the total size of the
-   destination buffer, which must be at least 0.1% larger than sourceLen plus
-   12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
-
-     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
-   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
-   Z_STREAM_ERROR if the level parameter is invalid.
-*/
-
-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
-                                   const Bytef *source, uLong sourceLen));
-/*
-     Decompresses the source buffer into the destination buffer.  sourceLen is
-   the byte length of the source buffer. Upon entry, destLen is the total
-   size of the destination buffer, which must be large enough to hold the
-   entire uncompressed data. (The size of the uncompressed data must have
-   been saved previously by the compressor and transmitted to the decompressor
-   by some mechanism outside the scope of this compression library.)
-   Upon exit, destLen is the actual size of the compressed buffer.
-     This function can be used to decompress a whole file at once if the
-   input file is mmap'ed.
-
-     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
-   enough memory, Z_BUF_ERROR if there was not enough room in the output
-   buffer, or Z_DATA_ERROR if the input data was corrupted.
-*/
-
-
-typedef voidp gzFile;
-
-ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
-/*
-     Opens a gzip (.gz) file for reading or writing. The mode parameter
-   is as in fopen ("rb" or "wb") but can also include a compression level
-   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
-   Huffman only compression as in "wb1h". (See the description
-   of deflateInit2 for more information about the strategy parameter.)
-
-     gzopen can be used to read a file which is not in gzip format; in this
-   case gzread will directly read from the file without decompression.
-
-     gzopen returns NULL if the file could not be opened or if there was
-   insufficient memory to allocate the (de)compression state; errno
-   can be checked to distinguish the two cases (if errno is zero, the
-   zlib error is Z_MEM_ERROR).  */
-
-ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
-/*
-     gzdopen() associates a gzFile with the file descriptor fd.  File
-   descriptors are obtained from calls like open, dup, creat, pipe or
-   fileno (in the file has been previously opened with fopen).
-   The mode parameter is as in gzopen.
-     The next call of gzclose on the returned gzFile will also close the
-   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
-   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
-     gzdopen returns NULL if there was insufficient memory to allocate
-   the (de)compression state.
-*/
-
-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
-/*
-     Dynamically update the compression level or strategy. See the description
-   of deflateInit2 for the meaning of these parameters.
-     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
-   opened for writing.
-*/
-
-ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
-/*
-     Reads the given number of uncompressed bytes from the compressed file.
-   If the input file was not in gzip format, gzread copies the given number
-   of bytes into the buffer.
-     gzread returns the number of uncompressed bytes actually read (0 for
-   end of file, -1 for error). */
-
-ZEXTERN int ZEXPORT    gzwrite OF((gzFile file, 
-				   const voidp buf, unsigned len));
-/*
-     Writes the given number of uncompressed bytes into the compressed file.
-   gzwrite returns the number of uncompressed bytes actually written
-   (0 in case of error).
-*/
-
-ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
-/*
-     Converts, formats, and writes the args to the compressed file under
-   control of the format string, as in fprintf. gzprintf returns the number of
-   uncompressed bytes actually written (0 in case of error).
-*/
-
-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
-/*
-      Writes the given null-terminated string to the compressed file, excluding
-   the terminating null character.
-      gzputs returns the number of characters written, or -1 in case of error.
-*/
-
-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
-/*
-      Reads bytes from the compressed file until len-1 characters are read, or
-   a newline character is read and transferred to buf, or an end-of-file
-   condition is encountered.  The string is then terminated with a null
-   character.
-      gzgets returns buf, or Z_NULL in case of error.
-*/
-
-ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
-/*
-      Writes c, converted to an unsigned char, into the compressed file.
-   gzputc returns the value that was written, or -1 in case of error.
-*/
-
-ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
-/*
-      Reads one byte from the compressed file. gzgetc returns this byte
-   or -1 in case of end of file or error.
-*/
-
-ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
-/*
-     Flushes all pending output into the compressed file. The parameter
-   flush is as in the deflate() function. The return value is the zlib
-   error number (see function gzerror below). gzflush returns Z_OK if
-   the flush parameter is Z_FINISH and all output could be flushed.
-     gzflush should be called only when strictly necessary because it can
-   degrade compression.
-*/
-
-ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
-				      z_off_t offset, int whence));
-/* 
-      Sets the starting position for the next gzread or gzwrite on the
-   given compressed file. The offset represents a number of bytes in the
-   uncompressed data stream. The whence parameter is defined as in lseek(2);
-   the value SEEK_END is not supported.
-     If the file is opened for reading, this function is emulated but can be
-   extremely slow. If the file is opened for writing, only forward seeks are
-   supported; gzseek then compresses a sequence of zeroes up to the new
-   starting position.
-
-      gzseek returns the resulting offset location as measured in bytes from
-   the beginning of the uncompressed stream, or -1 in case of error, in
-   particular if the file is opened for writing and the new starting position
-   would be before the current position.
-*/
-
-ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
-/*
-     Rewinds the given file. This function is supported only for reading.
-
-   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
-*/
-
-ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
-/*
-     Returns the starting position for the next gzread or gzwrite on the
-   given compressed file. This position represents a number of bytes in the
-   uncompressed data stream.
-
-   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
-*/
-
-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
-/*
-     Returns 1 when EOF has previously been detected reading the given
-   input stream, otherwise zero.
-*/
-
-ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
-/*
-     Flushes all pending output if necessary, closes the compressed file
-   and deallocates all the (de)compression state. The return value is the zlib
-   error number (see function gzerror below).
-*/
-
-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
-/*
-     Returns the error message for the last error which occurred on the
-   given compressed file. errnum is set to zlib error number. If an
-   error occurred in the file system and not in the compression library,
-   errnum is set to Z_ERRNO and the application may consult errno
-   to get the exact error code.
-*/
-
-                        /* checksum functions */
-
-/*
-     These functions are not related to compression but are exported
-   anyway because they might be useful in applications using the
-   compression library.
-*/
-
-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
-
-/*
-     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
-   return the updated checksum. If buf is NULL, this function returns
-   the required initial value for the checksum.
-   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
-   much faster. Usage example:
-
-     uLong adler = adler32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       adler = adler32(adler, buffer, length);
-     }
-     if (adler != original_adler) error();
-*/
-
-ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
-/*
-     Update a running crc with the bytes buf[0..len-1] and return the updated
-   crc. If buf is NULL, this function returns the required initial value
-   for the crc. Pre- and post-conditioning (one's complement) is performed
-   within this function so it shouldn't be done by the application.
-   Usage example:
-
-     uLong crc = crc32(0L, Z_NULL, 0);
-
-     while (read_buffer(buffer, length) != EOF) {
-       crc = crc32(crc, buffer, length);
-     }
-     if (crc != original_crc) error();
-*/
-
-
-                        /* various hacks, don't look :) */
-
-/* deflateInit and inflateInit are macros to allow checking the zlib version
- * and the compiler's view of z_stream:
- */
-ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
-                                     const char *version, int stream_size));
-ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
-                                      int windowBits, int memLevel,
-                                      int strategy, const char *version,
-                                      int stream_size));
-ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
-                                      const char *version, int stream_size));
-#define deflateInit(strm, level) \
-        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit(strm) \
-        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
-#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
-        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
-                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
-#define inflateInit2(strm, windowBits) \
-        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-
-
-#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
-    struct internal_state {int dummy;}; /* hack for buggy compilers */
-#endif
-
-ZEXTERN const char   * ZEXPORT zError           OF((int err));
-ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
-ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ZLIB_H */
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+  version 1.1.3, July 9th, 1998
+
+  Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+
+  The data format used by the zlib library is described by RFCs (Request for
+  Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
+  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
+*/
+
+#ifndef _ZLIB_H
+#define _ZLIB_H
+
+#include "zconf_win32.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define ZLIB_VERSION "1.1.3"
+
+/* 
+     The 'zlib' compression library provides in-memory compression and
+  decompression functions, including integrity checks of the uncompressed
+  data.  This version of the library supports only one compression method
+  (deflation) but other algorithms will be added later and will have the same
+  stream interface.
+
+     Compression can be done in a single step if the buffers are large
+  enough (for example if an input file is mmap'ed), or can be done by
+  repeated calls of the compression function.  In the latter case, the
+  application must provide more input and/or consume the output
+  (providing more output space) before each call.
+
+     The library also supports reading and writing files in gzip (.gz) format
+  with an interface similar to that of stdio.
+
+     The library does not install any signal handler. The decoder checks
+  the consistency of the compressed data, so the library should never
+  crash even in case of corrupted input.
+*/
+
+typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
+
+struct internal_state;
+
+typedef struct z_stream_s {
+    Bytef    *next_in;  /* next input byte */
+    uInt     avail_in;  /* number of bytes available at next_in */
+    uLong    total_in;  /* total nb of input bytes read so far */
+
+    Bytef    *next_out; /* next output byte should be put there */
+    uInt     avail_out; /* remaining free space at next_out */
+    uLong    total_out; /* total nb of bytes output so far */
+
+    char     *msg;      /* last error message, NULL if no error */
+    struct internal_state FAR *state; /* not visible by applications */
+
+    alloc_func zalloc;  /* used to allocate the internal state */
+    free_func  zfree;   /* used to free the internal state */
+    voidpf     opaque;  /* private data object passed to zalloc and zfree */
+
+    int     data_type;  /* best guess about the data type: ascii or binary */
+    uLong   adler;      /* adler32 value of the uncompressed data */
+    uLong   reserved;   /* reserved for future use */
+} z_stream;
+
+typedef z_stream FAR *z_streamp;
+
+/*
+   The application must update next_in and avail_in when avail_in has
+   dropped to zero. It must update next_out and avail_out when avail_out
+   has dropped to zero. The application must initialize zalloc, zfree and
+   opaque before calling the init function. All other fields are set by the
+   compression library and must not be updated by the application.
+
+   The opaque value provided by the application will be passed as the first
+   parameter for calls of zalloc and zfree. This can be useful for custom
+   memory management. The compression library attaches no meaning to the
+   opaque value.
+
+   zalloc must return Z_NULL if there is not enough memory for the object.
+   If zlib is used in a multi-threaded application, zalloc and zfree must be
+   thread safe.
+
+   On 16-bit systems, the functions zalloc and zfree must be able to allocate
+   exactly 65536 bytes, but will not be required to allocate more than this
+   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
+   pointers returned by zalloc for objects of exactly 65536 bytes *must*
+   have their offset normalized to zero. The default allocation function
+   provided by this library ensures this (see zutil.c). To reduce memory
+   requirements and avoid any allocation of 64K objects, at the expense of
+   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
+
+   The fields total_in and total_out can be used for statistics or
+   progress reports. After compression, total_in holds the total size of
+   the uncompressed data and may be saved for use in the decompressor
+   (particularly if the decompressor wants to decompress everything in
+   a single step).
+*/
+
+                        /* constants */
+
+#define Z_NO_FLUSH      0
+#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
+#define Z_SYNC_FLUSH    2
+#define Z_FULL_FLUSH    3
+#define Z_FINISH        4
+/* Allowed flush values; see deflate() below for details */
+
+#define Z_OK            0
+#define Z_STREAM_END    1
+#define Z_NEED_DICT     2
+#define Z_ERRNO        (-1)
+#define Z_STREAM_ERROR (-2)
+#define Z_DATA_ERROR   (-3)
+#define Z_MEM_ERROR    (-4)
+#define Z_BUF_ERROR    (-5)
+#define Z_VERSION_ERROR (-6)
+/* Return codes for the compression/decompression functions. Negative
+ * values are errors, positive values are used for special but normal events.
+ */
+
+#define Z_NO_COMPRESSION         0
+#define Z_BEST_SPEED             1
+#define Z_BEST_COMPRESSION       9
+#define Z_DEFAULT_COMPRESSION  (-1)
+/* compression levels */
+
+#define Z_FILTERED            1
+#define Z_HUFFMAN_ONLY        2
+#define Z_DEFAULT_STRATEGY    0
+/* compression strategy; see deflateInit2() below for details */
+
+#define Z_BINARY   0
+#define Z_ASCII    1
+#define Z_UNKNOWN  2
+/* Possible values of the data_type field */
+
+#define Z_DEFLATED   8
+/* The deflate compression method (the only one supported in this version) */
+
+#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
+
+#define zlib_version zlibVersion()
+/* for compatibility with versions < 1.0.2 */
+
+                        /* basic functions */
+
+ZEXTERN const char * ZEXPORT zlibVersion OF((void));
+/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
+   If the first character differs, the library code actually used is
+   not compatible with the zlib.h header file used by the application.
+   This check is automatically made by deflateInit and inflateInit.
+ */
+
+/* 
+ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+
+     Initializes the internal stream state for compression. The fields
+   zalloc, zfree and opaque must be initialized before by the caller.
+   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
+   use default allocation functions.
+
+     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
+   1 gives best speed, 9 gives best compression, 0 gives no compression at
+   all (the input data is simply copied a block at a time).
+   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
+   compression (currently equivalent to level 6).
+
+     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
+   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
+   with the version assumed by the caller (ZLIB_VERSION).
+   msg is set to null if there is no error message.  deflateInit does not
+   perform any compression: this will be done by deflate().
+*/
+
+
+ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
+/*
+    deflate compresses as much data as possible, and stops when the input
+  buffer becomes empty or the output buffer becomes full. It may introduce some
+  output latency (reading input without producing any output) except when
+  forced to flush.
+
+    The detailed semantics are as follows. deflate performs one or both of the
+  following actions:
+
+  - Compress more input starting at next_in and update next_in and avail_in
+    accordingly. If not all input can be processed (because there is not
+    enough room in the output buffer), next_in and avail_in are updated and
+    processing will resume at this point for the next call of deflate().
+
+  - Provide more output starting at next_out and update next_out and avail_out
+    accordingly. This action is forced if the parameter flush is non zero.
+    Forcing flush frequently degrades the compression ratio, so this parameter
+    should be set only when necessary (in interactive applications).
+    Some output may be provided even if flush is not set.
+
+  Before the call of deflate(), the application should ensure that at least
+  one of the actions is possible, by providing more input and/or consuming
+  more output, and updating avail_in or avail_out accordingly; avail_out
+  should never be zero before the call. The application can consume the
+  compressed output when it wants, for example when the output buffer is full
+  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
+  and with zero avail_out, it must be called again after making room in the
+  output buffer because there might be more output pending.
+
+    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+  flushed to the output buffer and the output is aligned on a byte boundary, so
+  that the decompressor can get all input data available so far. (In particular
+  avail_in is zero after the call if enough output space has been provided
+  before the call.)  Flushing may degrade compression for some compression
+  algorithms and so it should be used only when necessary.
+
+    If flush is set to Z_FULL_FLUSH, all output is flushed as with
+  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
+  restart from this point if previous compressed data has been damaged or if
+  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
+  the compression.
+
+    If deflate returns with avail_out == 0, this function must be called again
+  with the same value of the flush parameter and more output space (updated
+  avail_out), until the flush is complete (deflate returns with non-zero
+  avail_out).
+
+    If the parameter flush is set to Z_FINISH, pending input is processed,
+  pending output is flushed and deflate returns with Z_STREAM_END if there
+  was enough output space; if deflate returns with Z_OK, this function must be
+  called again with Z_FINISH and more output space (updated avail_out) but no
+  more input data, until it returns with Z_STREAM_END or an error. After
+  deflate has returned Z_STREAM_END, the only possible operations on the
+  stream are deflateReset or deflateEnd.
+  
+    Z_FINISH can be used immediately after deflateInit if all the compression
+  is to be done in a single step. In this case, avail_out must be at least
+  0.1% larger than avail_in plus 12 bytes.  If deflate does not return
+  Z_STREAM_END, then it must be called again as described above.
+
+    deflate() sets strm->adler to the adler32 checksum of all input read
+  so far (that is, total_in bytes).
+
+    deflate() may update data_type if it can make a good guess about
+  the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
+  binary. This field is only for information purposes and does not affect
+  the compression algorithm in any manner.
+
+    deflate() returns Z_OK if some progress has been made (more input
+  processed or more output produced), Z_STREAM_END if all input has been
+  consumed and all output has been produced (only when flush is set to
+  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
+  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
+  (for example avail_in or avail_out was zero).
+*/
+
+
+ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
+/*
+     All dynamically allocated data structures for this stream are freed.
+   This function discards any unprocessed input and does not flush any
+   pending output.
+
+     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
+   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
+   prematurely (some input or output was discarded). In the error case,
+   msg may be set but then points to a static string (which must not be
+   deallocated).
+*/
+
+
+/* 
+ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+
+     Initializes the internal stream state for decompression. The fields
+   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
+   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
+   value depends on the compression method), inflateInit determines the
+   compression method from the zlib header and allocates all data structures
+   accordingly; otherwise the allocation will be deferred to the first call of
+   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
+   use default allocation functions.
+
+     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+   version assumed by the caller.  msg is set to null if there is no error
+   message. inflateInit does not perform any decompression apart from reading
+   the zlib header if present: this will be done by inflate().  (So next_in and
+   avail_in may be modified, but next_out and avail_out are unchanged.)
+*/
+
+
+ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
+/*
+    inflate decompresses as much data as possible, and stops when the input
+  buffer becomes empty or the output buffer becomes full. It may some
+  introduce some output latency (reading input without producing any output)
+  except when forced to flush.
+
+  The detailed semantics are as follows. inflate performs one or both of the
+  following actions:
+
+  - Decompress more input starting at next_in and update next_in and avail_in
+    accordingly. If not all input can be processed (because there is not
+    enough room in the output buffer), next_in is updated and processing
+    will resume at this point for the next call of inflate().
+
+  - Provide more output starting at next_out and update next_out and avail_out
+    accordingly.  inflate() provides as much output as possible, until there
+    is no more input data or no more space in the output buffer (see below
+    about the flush parameter).
+
+  Before the call of inflate(), the application should ensure that at least
+  one of the actions is possible, by providing more input and/or consuming
+  more output, and updating the next_* and avail_* values accordingly.
+  The application can consume the uncompressed output when it wants, for
+  example when the output buffer is full (avail_out == 0), or after each
+  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
+  must be called again after making room in the output buffer because there
+  might be more output pending.
+
+    If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
+  output as possible to the output buffer. The flushing behavior of inflate is
+  not specified for values of the flush parameter other than Z_SYNC_FLUSH
+  and Z_FINISH, but the current implementation actually flushes as much output
+  as possible anyway.
+
+    inflate() should normally be called until it returns Z_STREAM_END or an
+  error. However if all decompression is to be performed in a single step
+  (a single call of inflate), the parameter flush should be set to
+  Z_FINISH. In this case all pending input is processed and all pending
+  output is flushed; avail_out must be large enough to hold all the
+  uncompressed data. (The size of the uncompressed data may have been saved
+  by the compressor for this purpose.) The next operation on this stream must
+  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
+  is never required, but can be used to inform inflate that a faster routine
+  may be used for the single inflate() call.
+
+     If a preset dictionary is needed at this point (see inflateSetDictionary
+  below), inflate sets strm-adler to the adler32 checksum of the
+  dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise 
+  it sets strm->adler to the adler32 checksum of all output produced
+  so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
+  an error code as described below. At the end of the stream, inflate()
+  checks that its computed adler32 checksum is equal to that saved by the
+  compressor and returns Z_STREAM_END only if the checksum is correct.
+
+    inflate() returns Z_OK if some progress has been made (more input processed
+  or more output produced), Z_STREAM_END if the end of the compressed data has
+  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
+  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
+  corrupted (input stream not conforming to the zlib format or incorrect
+  adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
+  (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
+  enough memory, Z_BUF_ERROR if no progress is possible or if there was not
+  enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
+  case, the application may then call inflateSync to look for a good
+  compression block.
+*/
+
+
+ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
+/*
+     All dynamically allocated data structures for this stream are freed.
+   This function discards any unprocessed input and does not flush any
+   pending output.
+
+     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
+   was inconsistent. In the error case, msg may be set but then points to a
+   static string (which must not be deallocated).
+*/
+
+                        /* Advanced functions */
+
+/*
+    The following functions are needed only in some special applications.
+*/
+
+/*   
+ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+                                     int  level,
+                                     int  method,
+                                     int  windowBits,
+                                     int  memLevel,
+                                     int  strategy));
+
+     This is another version of deflateInit with more compression options. The
+   fields next_in, zalloc, zfree and opaque must be initialized before by
+   the caller.
+
+     The method parameter is the compression method. It must be Z_DEFLATED in
+   this version of the library.
+
+     The windowBits parameter is the base two logarithm of the window size
+   (the size of the history buffer).  It should be in the range 8..15 for this
+   version of the library. Larger values of this parameter result in better
+   compression at the expense of memory usage. The default value is 15 if
+   deflateInit is used instead.
+
+     The memLevel parameter specifies how much memory should be allocated
+   for the internal compression state. memLevel=1 uses minimum memory but
+   is slow and reduces compression ratio; memLevel=9 uses maximum memory
+   for optimal speed. The default value is 8. See zconf.h for total memory
+   usage as a function of windowBits and memLevel.
+
+     The strategy parameter is used to tune the compression algorithm. Use the
+   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
+   filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
+   string match).  Filtered data consists mostly of small values with a
+   somewhat random distribution. In this case, the compression algorithm is
+   tuned to compress them better. The effect of Z_FILTERED is to force more
+   Huffman coding and less string matching; it is somewhat intermediate
+   between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
+   the compression ratio but not the correctness of the compressed output even
+   if it is not set appropriately.
+
+      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
+   method). msg is set to null if there is no error message.  deflateInit2 does
+   not perform any compression: this will be done by deflate().
+*/
+                            
+ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
+                                             const Bytef *dictionary,
+                                             uInt  dictLength));
+/*
+     Initializes the compression dictionary from the given byte sequence
+   without producing any compressed output. This function must be called
+   immediately after deflateInit, deflateInit2 or deflateReset, before any
+   call of deflate. The compressor and decompressor must use exactly the same
+   dictionary (see inflateSetDictionary).
+
+     The dictionary should consist of strings (byte sequences) that are likely
+   to be encountered later in the data to be compressed, with the most commonly
+   used strings preferably put towards the end of the dictionary. Using a
+   dictionary is most useful when the data to be compressed is short and can be
+   predicted with good accuracy; the data can then be compressed better than
+   with the default empty dictionary.
+
+     Depending on the size of the compression data structures selected by
+   deflateInit or deflateInit2, a part of the dictionary may in effect be
+   discarded, for example if the dictionary is larger than the window size in
+   deflate or deflate2. Thus the strings most likely to be useful should be
+   put at the end of the dictionary, not at the front.
+
+     Upon return of this function, strm->adler is set to the Adler32 value
+   of the dictionary; the decompressor may later use this value to determine
+   which dictionary has been used by the compressor. (The Adler32 value
+   applies to the whole dictionary even if only a subset of the dictionary is
+   actually used by the compressor.)
+
+     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
+   parameter is invalid (such as NULL dictionary) or the stream state is
+   inconsistent (for example if deflate has already been called for this stream
+   or if the compression method is bsort). deflateSetDictionary does not
+   perform any compression: this will be done by deflate().
+*/
+
+ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
+                                    z_streamp source));
+/*
+     Sets the destination stream as a complete copy of the source stream.
+
+     This function can be useful when several compression strategies will be
+   tried, for example when there are several ways of pre-processing the input
+   data with a filter. The streams that will be discarded should then be freed
+   by calling deflateEnd.  Note that deflateCopy duplicates the internal
+   compression state which can be quite large, so this strategy is slow and
+   can consume lots of memory.
+
+     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+   (such as zalloc being NULL). msg is left unchanged in both source and
+   destination.
+*/
+
+ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
+/*
+     This function is equivalent to deflateEnd followed by deflateInit,
+   but does not free and reallocate all the internal compression state.
+   The stream will keep the same compression level and any other attributes
+   that may have been set by deflateInit2.
+
+      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being NULL).
+*/
+
+ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
+				      int level,
+				      int strategy));
+/*
+     Dynamically update the compression level and compression strategy.  The
+   interpretation of level and strategy is as in deflateInit2.  This can be
+   used to switch between compression and straight copy of the input data, or
+   to switch to a different kind of input data requiring a different
+   strategy. If the compression level is changed, the input available so far
+   is compressed with the old level (and may be flushed); the new level will
+   take effect only at the next call of deflate().
+
+     Before the call of deflateParams, the stream state must be set as for
+   a call of deflate(), since the currently available input may have to
+   be compressed and flushed. In particular, strm->avail_out must be non-zero.
+
+     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
+   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
+   if strm->avail_out was zero.
+*/
+
+/*   
+ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+                                     int  windowBits));
+
+     This is another version of inflateInit with an extra parameter. The
+   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
+   before by the caller.
+
+     The windowBits parameter is the base two logarithm of the maximum window
+   size (the size of the history buffer).  It should be in the range 8..15 for
+   this version of the library. The default value is 15 if inflateInit is used
+   instead. If a compressed stream with a larger window size is given as
+   input, inflate() will return with the error code Z_DATA_ERROR instead of
+   trying to allocate a larger window.
+
+      inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
+   memLevel). msg is set to null if there is no error message.  inflateInit2
+   does not perform any decompression apart from reading the zlib header if
+   present: this will be done by inflate(). (So next_in and avail_in may be
+   modified, but next_out and avail_out are unchanged.)
+*/
+
+ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
+                                             const Bytef *dictionary,
+                                             uInt  dictLength));
+/*
+     Initializes the decompression dictionary from the given uncompressed byte
+   sequence. This function must be called immediately after a call of inflate
+   if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
+   can be determined from the Adler32 value returned by this call of
+   inflate. The compressor and decompressor must use exactly the same
+   dictionary (see deflateSetDictionary).
+
+     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
+   parameter is invalid (such as NULL dictionary) or the stream state is
+   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
+   expected one (incorrect Adler32 value). inflateSetDictionary does not
+   perform any decompression: this will be done by subsequent calls of
+   inflate().
+*/
+
+ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
+/* 
+    Skips invalid compressed data until a full flush point (see above the
+  description of deflate with Z_FULL_FLUSH) can be found, or until all
+  available input is skipped. No output is provided.
+
+    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
+  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
+  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
+  case, the application may save the current current value of total_in which
+  indicates where valid compressed data was found. In the error case, the
+  application may repeatedly call inflateSync, providing more input each time,
+  until success or end of the input data.
+*/
+
+ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
+/*
+     This function is equivalent to inflateEnd followed by inflateInit,
+   but does not free and reallocate all the internal decompression state.
+   The stream will keep attributes that may have been set by inflateInit2.
+
+      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+   stream state was inconsistent (such as zalloc or state being NULL).
+*/
+
+
+                        /* utility functions */
+
+/*
+     The following utility functions are implemented on top of the
+   basic stream-oriented functions. To simplify the interface, some
+   default options are assumed (compression level and memory usage,
+   standard memory allocation functions). The source code of these
+   utility functions can easily be modified if you need special options.
+*/
+
+ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
+                                 const Bytef *source, uLong sourceLen));
+/*
+     Compresses the source buffer into the destination buffer.  sourceLen is
+   the byte length of the source buffer. Upon entry, destLen is the total
+   size of the destination buffer, which must be at least 0.1% larger than
+   sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
+   compressed buffer.
+     This function can be used to compress a whole file at once if the
+   input file is mmap'ed.
+     compress returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_BUF_ERROR if there was not enough room in the output
+   buffer.
+*/
+
+ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
+                                  const Bytef *source, uLong sourceLen,
+                                  int level));
+/*
+     Compresses the source buffer into the destination buffer. The level
+   parameter has the same meaning as in deflateInit.  sourceLen is the byte
+   length of the source buffer. Upon entry, destLen is the total size of the
+   destination buffer, which must be at least 0.1% larger than sourceLen plus
+   12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
+
+     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
+   Z_STREAM_ERROR if the level parameter is invalid.
+*/
+
+ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
+                                   const Bytef *source, uLong sourceLen));
+/*
+     Decompresses the source buffer into the destination buffer.  sourceLen is
+   the byte length of the source buffer. Upon entry, destLen is the total
+   size of the destination buffer, which must be large enough to hold the
+   entire uncompressed data. (The size of the uncompressed data must have
+   been saved previously by the compressor and transmitted to the decompressor
+   by some mechanism outside the scope of this compression library.)
+   Upon exit, destLen is the actual size of the compressed buffer.
+     This function can be used to decompress a whole file at once if the
+   input file is mmap'ed.
+
+     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
+   enough memory, Z_BUF_ERROR if there was not enough room in the output
+   buffer, or Z_DATA_ERROR if the input data was corrupted.
+*/
+
+
+typedef voidp gzFile;
+
+ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
+/*
+     Opens a gzip (.gz) file for reading or writing. The mode parameter
+   is as in fopen ("rb" or "wb") but can also include a compression level
+   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
+   Huffman only compression as in "wb1h". (See the description
+   of deflateInit2 for more information about the strategy parameter.)
+
+     gzopen can be used to read a file which is not in gzip format; in this
+   case gzread will directly read from the file without decompression.
+
+     gzopen returns NULL if the file could not be opened or if there was
+   insufficient memory to allocate the (de)compression state; errno
+   can be checked to distinguish the two cases (if errno is zero, the
+   zlib error is Z_MEM_ERROR).  */
+
+ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
+/*
+     gzdopen() associates a gzFile with the file descriptor fd.  File
+   descriptors are obtained from calls like open, dup, creat, pipe or
+   fileno (in the file has been previously opened with fopen).
+   The mode parameter is as in gzopen.
+     The next call of gzclose on the returned gzFile will also close the
+   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
+   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
+     gzdopen returns NULL if there was insufficient memory to allocate
+   the (de)compression state.
+*/
+
+ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+/*
+     Dynamically update the compression level or strategy. See the description
+   of deflateInit2 for the meaning of these parameters.
+     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
+   opened for writing.
+*/
+
+ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
+/*
+     Reads the given number of uncompressed bytes from the compressed file.
+   If the input file was not in gzip format, gzread copies the given number
+   of bytes into the buffer.
+     gzread returns the number of uncompressed bytes actually read (0 for
+   end of file, -1 for error). */
+
+ZEXTERN int ZEXPORT    gzwrite OF((gzFile file, 
+				   const voidp buf, unsigned len));
+/*
+     Writes the given number of uncompressed bytes into the compressed file.
+   gzwrite returns the number of uncompressed bytes actually written
+   (0 in case of error).
+*/
+
+ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
+/*
+     Converts, formats, and writes the args to the compressed file under
+   control of the format string, as in fprintf. gzprintf returns the number of
+   uncompressed bytes actually written (0 in case of error).
+*/
+
+ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+/*
+      Writes the given null-terminated string to the compressed file, excluding
+   the terminating null character.
+      gzputs returns the number of characters written, or -1 in case of error.
+*/
+
+ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+/*
+      Reads bytes from the compressed file until len-1 characters are read, or
+   a newline character is read and transferred to buf, or an end-of-file
+   condition is encountered.  The string is then terminated with a null
+   character.
+      gzgets returns buf, or Z_NULL in case of error.
+*/
+
+ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
+/*
+      Writes c, converted to an unsigned char, into the compressed file.
+   gzputc returns the value that was written, or -1 in case of error.
+*/
+
+ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
+/*
+      Reads one byte from the compressed file. gzgetc returns this byte
+   or -1 in case of end of file or error.
+*/
+
+ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
+/*
+     Flushes all pending output into the compressed file. The parameter
+   flush is as in the deflate() function. The return value is the zlib
+   error number (see function gzerror below). gzflush returns Z_OK if
+   the flush parameter is Z_FINISH and all output could be flushed.
+     gzflush should be called only when strictly necessary because it can
+   degrade compression.
+*/
+
+ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
+				      z_off_t offset, int whence));
+/* 
+      Sets the starting position for the next gzread or gzwrite on the
+   given compressed file. The offset represents a number of bytes in the
+   uncompressed data stream. The whence parameter is defined as in lseek(2);
+   the value SEEK_END is not supported.
+     If the file is opened for reading, this function is emulated but can be
+   extremely slow. If the file is opened for writing, only forward seeks are
+   supported; gzseek then compresses a sequence of zeroes up to the new
+   starting position.
+
+      gzseek returns the resulting offset location as measured in bytes from
+   the beginning of the uncompressed stream, or -1 in case of error, in
+   particular if the file is opened for writing and the new starting position
+   would be before the current position.
+*/
+
+ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
+/*
+     Rewinds the given file. This function is supported only for reading.
+
+   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+*/
+
+ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
+/*
+     Returns the starting position for the next gzread or gzwrite on the
+   given compressed file. This position represents a number of bytes in the
+   uncompressed data stream.
+
+   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+*/
+
+ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+/*
+     Returns 1 when EOF has previously been detected reading the given
+   input stream, otherwise zero.
+*/
+
+ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
+/*
+     Flushes all pending output if necessary, closes the compressed file
+   and deallocates all the (de)compression state. The return value is the zlib
+   error number (see function gzerror below).
+*/
+
+ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+/*
+     Returns the error message for the last error which occurred on the
+   given compressed file. errnum is set to zlib error number. If an
+   error occurred in the file system and not in the compression library,
+   errnum is set to Z_ERRNO and the application may consult errno
+   to get the exact error code.
+*/
+
+                        /* checksum functions */
+
+/*
+     These functions are not related to compression but are exported
+   anyway because they might be useful in applications using the
+   compression library.
+*/
+
+ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+
+/*
+     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+   return the updated checksum. If buf is NULL, this function returns
+   the required initial value for the checksum.
+   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+   much faster. Usage example:
+
+     uLong adler = adler32(0L, Z_NULL, 0);
+
+     while (read_buffer(buffer, length) != EOF) {
+       adler = adler32(adler, buffer, length);
+     }
+     if (adler != original_adler) error();
+*/
+
+ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
+/*
+     Update a running crc with the bytes buf[0..len-1] and return the updated
+   crc. If buf is NULL, this function returns the required initial value
+   for the crc. Pre- and post-conditioning (one's complement) is performed
+   within this function so it shouldn't be done by the application.
+   Usage example:
+
+     uLong crc = crc32(0L, Z_NULL, 0);
+
+     while (read_buffer(buffer, length) != EOF) {
+       crc = crc32(crc, buffer, length);
+     }
+     if (crc != original_crc) error();
+*/
+
+
+                        /* various hacks, don't look :) */
+
+/* deflateInit and inflateInit are macros to allow checking the zlib version
+ * and the compiler's view of z_stream:
+ */
+ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
+                                     const char *version, int stream_size));
+ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
+                                     const char *version, int stream_size));
+ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
+                                      int windowBits, int memLevel,
+                                      int strategy, const char *version,
+                                      int stream_size));
+ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
+                                      const char *version, int stream_size));
+#define deflateInit(strm, level) \
+        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
+#define inflateInit(strm) \
+        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
+#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
+        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
+                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
+#define inflateInit2(strm, windowBits) \
+        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
+
+
+#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
+    struct internal_state {int dummy;}; /* hack for buggy compilers */
+#endif
+
+ZEXTERN const char   * ZEXPORT zError           OF((int err));
+ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
+ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ZLIB_H */