瀏覽代碼

* Fixed a potential crash in pc_walk in Win32 builds
* Added bAddEffWhenHitShort and changed bAddEffWhenHit back to all physical damage

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1373 54d463be-8e91-2dee-dedb-b68131a5f0ec

celest 20 年之前
父節點
當前提交
0ff3b351da
共有 8 個文件被更改,包括 354 次插入333 次删除
  1. 6 308
      Changelog-SVN.txt
  2. 310 0
      Changelog.txt
  3. 1 0
      db/const.txt
  4. 4 2
      doc/item_bonus.txt
  5. 2 1
      src/map/map.h
  6. 11 5
      src/map/pc.c
  7. 19 17
      src/map/skill.c
  8. 1 0
      src/map/status.c

+ 6 - 308
Changelog-SVN.txt

@@ -1,6 +1,12 @@
 
 Date	Added
 
+04/01
+	* Updated ShowMessage functions to use vprintf [celest]
+	* Fixed a potential crash in pc_walk in Win32 builds [celest]
+	* Added bAddEffWhenHitShort and changed bAddEffWhenHit back to all physical
+	  damage [celest]
+
 03/31
         * Fixed memory corruption during shutdown via the script_buf
           [SVN 1370: MouseJstr]
@@ -377,311 +383,3 @@ Date	Added
         * SQL: Fixed temporary ban. Now banned players can enter the server when the ban time is over. [Lupus]
 	  It wasn't working because STATE hasn't been cleared properly.
 	  Also fixed wrong client messages (ban reasons: Banned by GM / Temp ban till DATE).
-03/01
-        * Effects from dancer/bard skills will stay for 20 seconds after leaving the
-          skill area [celest]
-        * Fixed /resetstate /resetskill being unuseable at all [celest]
-        * Fixed /mm /mapmove being useable by all players [celest]
-        * Fixed some compile errors in mob_once_spawn [celest]
-        * Corrected a typo in Chemical Protection skills, thanks to holyfork [celest]
-
-02/28
-        * Fixed SQL Castle saving bugs [Lupus]
-        * Corrected Tiger Fist, Chain Crush, and Palm Push Strike damage, thanks to
-          Eskadron [celest]
-        * Updated Endure to be usable in GvG, but only gives the mdef bonus [celest]
-        * Some rewrites on the passive guild skills effects [celest]
-
-02/27
-	* Fixed some bugs in Monk Job Quest. Now it's fully passable. [Lupus]
-02/26
-        * Added jA's dummy socket to prevent fd crashes [celest]
-        * Added some jA script commands: [Lupus] (first steps to add ELSE, FOR, WHILE, etc)
-	  - getusersname (works like @WHO ATCommand, outputs by 10 names in the Pop-up window)
-	  - dispbottom (print message in the common chat window)
-	  - recovery (restore MaxHP/SP and revives all players on the server)
-	  - getpetinfo (returns pet's name, type, class, hunger, intimacy)
-	  - globalmes (works like Announce, but outputs in the common chat window)
-	  - jump_zero (reserved - for future compatibility)
-	  - select (reserved - for future compatibility)
-	  - getmapmobs (# mobs on a named map, use "this" for current map)  
-	  check script.c for their paremeters (in English)
-02/25
-        * Fixed npc_dequeue, testing on remove of RoVeRT's npc timer system [Shinomori]
-02/24
-
-        * Re-added missing cart dupe-proof code. From Freya [Lupus]
-        * Some rewrites on Basilica [celest]
-        * Fixed another bad typo in skill list_num reading, thanks to orn [celest]
-	* Fixed Steal Item Rate. It has been multiplied twice on common_item_drop value for any kinds of items. [Lupus]
-	  e.g. If you set droprate of comman items to 500%, then even rare items could be stolen more easily. Thanks to Freya
-	* Items Droprate fix. Now it adjusts correctly, w/o overflows. Thanks to Freya [Lupus]
-	* mob DBbs EXP reading fix. w/o overflows. Thanks to Freya [Lupus]
-
-02/23
-        * Added bAddItemHealRate [celest]
-        * Fixed a crash if adding an offline player to a party, thanks to Alex14
-          [celest]
-        * Fixed a crash with Warp [celest]
-	* New Cards: Some fixes, revisions, additions [Lupus]
-        * Fixed char server crash when sending wisp with a "'" in the names [celest]
-        * Fixed Backstab not checking for and consuming arrows [celest]
-        * Fixed another bad typo causing @allskill to not add points into advanced job
-          skills [celest]
-        * Fixed a bad typo in status.c's StatusChangeTable [celest]
-        * Corrected Spiral Pierce's hits in the skill_db [celest]
-        * Moved /common/*.o into a obj folder when compiling [celest]
-        * Updated core and map server to jA 1094~1115 [celest]
-          - Added End_of_exam's Memory Manager for detecting memory problems.
-            To enable remove the // in malloc.c line 11
-               // #define USE_MEMMGR
-          - Added @npctalk and @pettalk
-          - Added support for jA's local zlib
-          - Fixed a bug with path search long
-          - Updated malloc.c to support Memwatch
-          - Added DB data loss detection
-          - Added db/skill_unit_db.txt
-          - Updated skill unit system
-          - Changed Waterball to the new timerskill system
-          ~ For more detailed logs check 'Readme-jap' (knowledge in japanese required,
-            obviously ^^;)
-          Please test if there's any skills that might have suddenly stopped working,
-          thanks ^^;
-
-02/22
-	* Revised New Cards, added missing effects, fixed bugs [Lupus]
-	  ~20 cards to check left 8) But on 22 Feb some new cards have been announced T__T'
-	* Cleaned up some compiler warnings [SVN 1158: MouseJstr]
-	* Added perl regular expression support.. look at src/map/npc_chat.c
-	  for all the dirt on the new features.  To build it, you have
-	  to enable the PCRE_SUPPORT #define and you also have to
-	  build/install the pcre library. [SVN 1157: MouseJstr]
-
-02/21
-	* Added actual item_db.sql into sql-files. [Lupus]
-	* Added actual mob_db.sql into sql-files. If you use SQL Mob DB then update it [Lupus]
-        * Updated Bleeding effect [celest]
-        * Removed some unused code for Graffiti [celest]
-
-02/20
-	* Char SQL: Rewrote/Fixed the castle save function, now the sql version saves castles! [Sirius]
-	* Fixed the /mm /mapmove command access bug [Sirius]
-        * Added skill requirements for the new guild skills [celest]
-        * Allow Emergency Recall to be cast in guild castles even if nowarp and
-          nowarpto mapflags are enabled [celest]
-        * Add 'minimum job level required' for skill_tree reading [celest]
-          - Berserk now requires job level 50
-        * Added Spring Trap to be able to trigger ankle snare traps that aren't
-          activated yet [celest]
-        * Added a fix in guild.c by Mellowz [celest]
-        * Some rewrites on the pet skill bonuses system -- also fixes pet bonuses
-          not effecting stats as they should [celest]
-        * Check whether a monster is still alive before starting a status change
-          -- also fixes the status_change_timer nullpo errors with grimtooth [celest]
-
-02/19
-        * Added bSubSize, bHPGainValue, and bDamageWhenUnequip [celest]
-        * Updated bSPDrainValue/Rate to accept a 'type' [celest]
-        * Set baby class players' size to 0(small) [celest]
-        * Fixed item_db2.txt reading printing wrong number of entries read [celest]
-        * Fixed @allskill not giving the newer stalker, whitesmith and creator skills
-          [celest]
-
-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)	

+ 310 - 0
Changelog.txt

@@ -1,6 +1,316 @@
 Date	Added
 
 -------- Read Changelog-SVN.txt for the newer SVN entries--------
+
+03/01
+        * Effects from dancer/bard skills will stay for 20 seconds after leaving the
+          skill area [celest]
+        * Fixed /resetstate /resetskill being unuseable at all [celest]
+        * Fixed /mm /mapmove being useable by all players [celest]
+        * Fixed some compile errors in mob_once_spawn [celest]
+        * Corrected a typo in Chemical Protection skills, thanks to holyfork [celest]
+
+02/28
+        * Fixed SQL Castle saving bugs [Lupus]
+        * Corrected Tiger Fist, Chain Crush, and Palm Push Strike damage, thanks to
+          Eskadron [celest]
+        * Updated Endure to be usable in GvG, but only gives the mdef bonus [celest]
+        * Some rewrites on the passive guild skills effects [celest]
+
+02/27
+	* Fixed some bugs in Monk Job Quest. Now it's fully passable. [Lupus]
+02/26
+        * Added jA's dummy socket to prevent fd crashes [celest]
+        * Added some jA script commands: [Lupus] (first steps to add ELSE, FOR, WHILE, etc)
+	  - getusersname (works like @WHO ATCommand, outputs by 10 names in the Pop-up window)
+	  - dispbottom (print message in the common chat window)
+	  - recovery (restore MaxHP/SP and revives all players on the server)
+	  - getpetinfo (returns pet's name, type, class, hunger, intimacy)
+	  - globalmes (works like Announce, but outputs in the common chat window)
+	  - jump_zero (reserved - for future compatibility)
+	  - select (reserved - for future compatibility)
+	  - getmapmobs (# mobs on a named map, use "this" for current map)  
+	  check script.c for their paremeters (in English)
+02/25
+        * Fixed npc_dequeue, testing on remove of RoVeRT's npc timer system [Shinomori]
+02/24
+
+        * Re-added missing cart dupe-proof code. From Freya [Lupus]
+        * Some rewrites on Basilica [celest]
+        * Fixed another bad typo in skill list_num reading, thanks to orn [celest]
+	* Fixed Steal Item Rate. It has been multiplied twice on common_item_drop value for any kinds of items. [Lupus]
+	  e.g. If you set droprate of comman items to 500%, then even rare items could be stolen more easily. Thanks to Freya
+	* Items Droprate fix. Now it adjusts correctly, w/o overflows. Thanks to Freya [Lupus]
+	* mob DBbs EXP reading fix. w/o overflows. Thanks to Freya [Lupus]
+
+02/23
+        * Added bAddItemHealRate [celest]
+        * Fixed a crash if adding an offline player to a party, thanks to Alex14
+          [celest]
+        * Fixed a crash with Warp [celest]
+	* New Cards: Some fixes, revisions, additions [Lupus]
+        * Fixed char server crash when sending wisp with a "'" in the names [celest]
+        * Fixed Backstab not checking for and consuming arrows [celest]
+        * Fixed another bad typo causing @allskill to not add points into advanced job
+          skills [celest]
+        * Fixed a bad typo in status.c's StatusChangeTable [celest]
+        * Corrected Spiral Pierce's hits in the skill_db [celest]
+        * Moved /common/*.o into a obj folder when compiling [celest]
+        * Updated core and map server to jA 1094~1115 [celest]
+          - Added End_of_exam's Memory Manager for detecting memory problems.
+            To enable remove the // in malloc.c line 11
+               // #define USE_MEMMGR
+          - Added @npctalk and @pettalk
+          - Added support for jA's local zlib
+          - Fixed a bug with path search long
+          - Updated malloc.c to support Memwatch
+          - Added DB data loss detection
+          - Added db/skill_unit_db.txt
+          - Updated skill unit system
+          - Changed Waterball to the new timerskill system
+          ~ For more detailed logs check 'Readme-jap' (knowledge in japanese required,
+            obviously ^^;)
+          Please test if there's any skills that might have suddenly stopped working,
+          thanks ^^;
+
+02/22
+	* Revised New Cards, added missing effects, fixed bugs [Lupus]
+	  ~20 cards to check left 8) But on 22 Feb some new cards have been announced T__T'
+	* Cleaned up some compiler warnings [SVN 1158: MouseJstr]
+	* Added perl regular expression support.. look at src/map/npc_chat.c
+	  for all the dirt on the new features.  To build it, you have
+	  to enable the PCRE_SUPPORT #define and you also have to
+	  build/install the pcre library. [SVN 1157: MouseJstr]
+
+02/21
+	* Added actual item_db.sql into sql-files. [Lupus]
+	* Added actual mob_db.sql into sql-files. If you use SQL Mob DB then update it [Lupus]
+        * Updated Bleeding effect [celest]
+        * Removed some unused code for Graffiti [celest]
+
+02/20
+	* Char SQL: Rewrote/Fixed the castle save function, now the sql version saves castles! [Sirius]
+	* Fixed the /mm /mapmove command access bug [Sirius]
+        * Added skill requirements for the new guild skills [celest]
+        * Allow Emergency Recall to be cast in guild castles even if nowarp and
+          nowarpto mapflags are enabled [celest]
+        * Add 'minimum job level required' for skill_tree reading [celest]
+          - Berserk now requires job level 50
+        * Added Spring Trap to be able to trigger ankle snare traps that aren't
+          activated yet [celest]
+        * Added a fix in guild.c by Mellowz [celest]
+        * Some rewrites on the pet skill bonuses system -- also fixes pet bonuses
+          not effecting stats as they should [celest]
+        * Check whether a monster is still alive before starting a status change
+          -- also fixes the status_change_timer nullpo errors with grimtooth [celest]
+
+02/19
+        * Added bSubSize, bHPGainValue, and bDamageWhenUnequip [celest]
+        * Updated bSPDrainValue/Rate to accept a 'type' [celest]
+        * Set baby class players' size to 0(small) [celest]
+        * Fixed item_db2.txt reading printing wrong number of entries read [celest]
+        * Fixed @allskill not giving the newer stalker, whitesmith and creator skills
+          [celest]
+
+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]

+ 1 - 0
db/const.txt

@@ -254,6 +254,7 @@ bLoseSPWhenUnequip	2029
 bExpAddRace	2030
 bSPGainRace	2031
 bSPSubRace2	2032
+bAddEffWhenHitShort	2033
 
 
 Eff_Stone	0

+ 4 - 2
doc/item_bonus.txt

@@ -121,7 +121,7 @@ bonus2 bMagicSubRace,n,x;		Magical damage x% reduction from n race
 						0,Intangibility 1,Immortality 2,Animal 3,Plant 4,Insect 5,Fish and shellfish 6,Demon 7,Human 8,Angel 9,Dragon family 10:Boss monster 11:Other than boss monster (normal monster)
 bonus2 bAddEle,n,x;			In n attribute the damage addition of x%
 						0,Nothing 1,Water 2,Earth 3,Fire 4,Wind 5,Poison 6,Saint 7,Darkness 8,Sense 9,Immortality
-bonus2 bMagicAddEle,n,x			In n attribute the damage addition of x% (only magical attack) 
+bonus2 bMagicAddEle,n,x 			In n attribute the damage addition of x% (only magical attack) 
 						0,Nothing 1,Water 2,Earth 3,Fire 4,Wind 5,Poison 6,Saint 7,Darkness 8,Sense 9,Immortality
 bonus2 bSubEle,n,x;			Damage x% reduction from n attribute
 						0,Nothing 1,Water 2,Earth 3,Fire 4,Wind 5,Poison 6,Saint 7,Darkness 8,Sense 9,Immortality
@@ -160,6 +160,8 @@ bonus bDamageWhenUnequip,n;		Lose n HP when the item is unequipped
 bonus2 bCriticalAddRace,n,x;		Increase critical + n vs. enemies of type x
 bonus2 bHPLossRate,n,x;			Lose n amount of hp every x amount of time
 bonus2 bAddEffWhenHit,n,x;		n% chance to cause x state to the enemy when
+                                        being hit by physical damage
+bonus2 bAddEffWhenHitShort,n,x;		n% chance to cause x state to the enemy when
                                         being hit by physical close range damage
 bonus2 bSkillAtk,n,x;			Increase damage of skill n by x%
 bonus2 bAddDamageByClass,n,x;		When being hit by monster of class n increase
@@ -176,7 +178,7 @@ bonus3 bAutoSpellWhenHit,x,y,n;		n% chance to cast skill x of level y when
 bonus3 bSPDrainRate,n,x,y;		When attacking there is a n% chance to either
                                         gain SP equivalent to x% of damage dealt, OR
                                         drain the amount of sp from the enemy.
-                                       y:0=gain sp  1:drain enemy sp
+                                        y:0=gain sp  1:drain enemy sp
 bonus3 bSPDrainValue,n,x,y;		When attacking there is a n% chance to either
                                         gain x SP, OR drain the amount of sp from the
                                         enemy. y:0=gain sp  1:drain enemy sp

+ 2 - 1
src/map/map.h

@@ -286,6 +286,7 @@ struct map_session_data {
 	int critaddrace[12];
 	short no_regen;
 	int addeff3[10];
+	short addeff3_type[10];
 	short autospell2_id,autospell2_lv,autospell2_rate,autospell2_type;
 	int skillatk[2];
 	unsigned short unstripable_equip;
@@ -659,7 +660,7 @@ enum {
 	SP_SKILL_ATK, SP_UNSTRIPABLE, SP_ADD_DAMAGE_BY_CLASS, // 2018-2020
 	SP_SP_GAIN_VALUE, SP_IGNORE_DEF_MOB, SP_HP_LOSS_RATE, SP_ADDRACE2, SP_HP_GAIN_VALUE, // 2021-2025
 	SP_SUBSIZE, SP_DAMAGE_WHEN_UNEQUIP, SP_ADD_ITEM_HEAL_RATE, SP_LOSESP_WHEN_UNEQUIP, SP_EXP_ADDRACE,	// 2026-2030
-	SP_SP_GAIN_RACE, SP_SUBRACE2,
+	SP_SP_GAIN_RACE, SP_SUBRACE2, SP_ADDEFF_WHENHIT_SHORT	// 2031-2033
 };
 
 enum {

+ 11 - 5
src/map/pc.c

@@ -1829,8 +1829,16 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 			sd->critaddrace[type2]+=val;
 		break;
 	case SP_ADDEFF_WHENHIT:
-		if(sd->state.lr_flag != 2)
+		if(sd->state.lr_flag != 2) {
+			sd->addeff3[type2]+=val;
+			sd->addeff3_type[type2]=1;
+		}
+		break;
+	case SP_ADDEFF_WHENHIT_SHORT:
+		if(sd->state.lr_flag != 2) {
 			sd->addeff3[type2]+=val;
+			sd->addeff3_type[type2]=0;
+		}
 		break;
 	case SP_SKILL_ATK:
 		if(sd->state.lr_flag != 2) {
@@ -3198,10 +3206,8 @@ static int pc_walk(int tid,unsigned int tick,int id,int data)
 	int moveblock;
 	int x,y,dx,dy;
 
-	sd = map_id2sd(id);
-#ifndef _WIN32
-	nullpo_retr_f(0, sd, "id=%d", id);
-#endif
+	if ((sd = map_id2sd(id)) == NULL)
+		return 0;
 
 	if(sd->walktimer != tid){
 		if(battle_config.error_log)

+ 19 - 17
src/map/skill.c

@@ -1020,10 +1020,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	}
 
 	if((sd||dstsd) && skillid != MC_CARTREVOLUTION && attack_type&BF_WEAPON){	/* カ?ドによる追加?果 */
-		int i;
+		int i, type;
 		int sc_def_card=100;
 
 		for(i=SC_STONE;i<=SC_BLIND;i++){
+			type=i-SC_STONE;
 			//?象に?態異常
 			switch (i) {
 				case SC_STONE:
@@ -1046,17 +1047,17 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 
 			if (sd) {
 				if(!sd->state.arrow_atk) {
-					if(rand()%10000 < (sd->addeff[i-SC_STONE])*sc_def_card/100 ){
+					if(rand()%10000 < (sd->addeff[type])*sc_def_card/100 ){
 						if(battle_config.battle_log)
-							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",sd->bl.id,i,sd->addeff[i-SC_STONE]);
-						status_change_start(bl,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[i-SC_STONE],7),0);
+							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",sd->bl.id,i,sd->addeff[type]);
+						status_change_start(bl,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[type],7),0);
 					}
 				}
 				else {
-					if(rand()%10000 < (sd->addeff[i-SC_STONE]+sd->arrow_addeff[i-SC_STONE])*sc_def_card/100 ){
+					if(rand()%10000 < (sd->addeff[type]+sd->arrow_addeff[type])*sc_def_card/100 ){
 						if(battle_config.battle_log)
-							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",sd->bl.id,i,sd->addeff[i-SC_STONE]);
-						status_change_start(bl,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[i-SC_STONE],7),0);
+							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",sd->bl.id,i,sd->addeff[type]);
+						status_change_start(bl,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[type],7),0);
 					}
 				}
 			}
@@ -1082,25 +1083,26 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 
 			if (sd) {
 				if(!sd->state.arrow_atk) {
-					if(rand()%10000 < (sd->addeff2[i-SC_STONE])*sc_def_card/100 ){
+					if(rand()%10000 < (sd->addeff2[type])*sc_def_card/100 ){
 						if(battle_config.battle_log)
-							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",src->id,i,sd->addeff2[i-SC_STONE]);
-						status_change_start(src,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[i-SC_STONE],7),0);
+							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",src->id,i,sd->addeff2[type]);
+						status_change_start(src,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[type],7),0);
 					}
 				}
 				else {
-					if(rand()%10000 < (sd->addeff2[i-SC_STONE]+sd->arrow_addeff2[i-SC_STONE])*sc_def_card/100 ){
+					if(rand()%10000 < (sd->addeff2[type]+sd->arrow_addeff2[type])*sc_def_card/100 ){
 						if(battle_config.battle_log)
-							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",src->id,i,sd->addeff2[i-SC_STONE]);
-						status_change_start(src,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[i-SC_STONE],7),0);
+							printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",src->id,i,sd->addeff2[type]);
+						status_change_start(src,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[type],7),0);
 					}
 				}
 			}
-			if (dstsd && ((sd && !sd->state.arrow_atk) || (status_get_range(src)<=2)) &&
-				rand()%10000 < dstsd->addeff3[i-SC_STONE]*sc_def_card/100){
+			if (dstsd && rand()%10000 < dstsd->addeff3[type]*sc_def_card/100){
+				if (dstsd->addeff3_type[type] != 1 && ((sd && !sd->state.arrow_atk) || (status_get_range(src)<=2)))
+					continue;
 				if(battle_config.battle_log)
-					printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",src->id,i,dstsd->addeff3[i-SC_STONE]);
-				status_change_start(src,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[i-SC_STONE],7),0);
+					printf("PC %d skill_addeff: cardによる異常?動 %d %d\n",src->id,i,dstsd->addeff3[type]);
+				status_change_start(src,i,7,0,0,0,(i==SC_CONFUSION)? 10000+7000:skill_get_time2(sc2[type],7),0);
 			}
 		}
 	}

+ 1 - 0
src/map/status.c

@@ -498,6 +498,7 @@ int status_calc_pc(struct map_session_data* sd,int first)
 	sd->autospell2_id = sd->autospell2_lv = sd->autospell2_rate = 0;
 	memset(sd->critaddrace,0,sizeof(sd->critaddrace));
 	memset(sd->addeff3,0,sizeof(sd->addeff3));
+	memset(sd->addeff3_type,0,sizeof(sd->addeff3_type));
 	memset(sd->skillatk,0,sizeof(sd->skillatk));
 	sd->add_damage_class_count = sd->add_damage_class_count_ = sd->add_magic_damage_class_count = 0;
 	sd->add_def_class_count = sd->add_mdef_class_count = 0;