diff options
-rw-r--r-- | Changelog-SVN.txt | 3944 | ||||
-rw-r--r-- | conf-tmpl/readme.txt | 64 | ||||
-rw-r--r-- | db/mob_race2_db.txt | 10 | ||||
-rw-r--r-- | src/lib/zconf_win32.h | 558 | ||||
-rw-r--r-- | src/lib/zlib_win32.h | 1786 |
5 files changed, 3181 insertions, 3181 deletions
diff --git a/Changelog-SVN.txt b/Changelog-SVN.txt index 0b71a6812..3b227cee5 100644 --- a/Changelog-SVN.txt +++ b/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.
\ No newline at end of file diff --git a/conf-tmpl/readme.txt b/conf-tmpl/readme.txt index 6b0ddd2ac..db8777680 100644 --- a/conf-tmpl/readme.txt +++ b/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
\ No newline at end of file diff --git a/db/mob_race2_db.txt b/db/mob_race2_db.txt index ebe563d52..c36945cb2 100644 --- a/db/mob_race2_db.txt +++ b/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
\ No newline at end of file diff --git a/src/lib/zconf_win32.h b/src/lib/zconf_win32.h index c5048fe91..6d450fc79 100644 --- a/src/lib/zconf_win32.h +++ b/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 */ diff --git a/src/lib/zlib_win32.h b/src/lib/zlib_win32.h index aa4b49250..3cd63c939 100644 --- a/src/lib/zlib_win32.h +++ b/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 */ |