Browse Source

- Modified map_foreachinrange so that you can also specify the max length of the path to use. The max_count field in the skill_db is used to specify this range for path-type skills (Sharpshooting, Kamaitachi and the NPC Breath skills.
- Implemented the 'new' NPC skills described here: http://ro.doddlercon.com/wiki/index.php?title=Monster_Skills . It is mostly complete, but the new status changes (slow cast, critical wounds, etc) don't have any visual effects yet (icon or opt changes? I don't know if they should have). Also I could not find the unit_id for Evil Land, so it looks just like Sanctuary for now. Apart from those, the only skills which I couldn't get to display properly are the Breath skills (with the exception of Fire Breath).
- skill_calc_heal now takes the target as argument to properly support Critical Wounds
- battle_calc_return_damage now takes a flag to know if the attack was direct or not, needed since Magic Mirror also reflects indirect attacks.
- cleaned up the 'description' field in skill.c, added skill_get_desc to it
- Removed 'splash' support from Lex Divina as it is no longer needed.
- Modified the way Sight/Sightblaster work so that the skill id is no longer guessed (needed to properly acquire the splash range for Wide Sight)
- Corrected gtb_sc_immunity setting not taking effect if your block value was the same (that is, if the config said 30%, then you would only get status change immunity at 31%, nor 30%)
- Uncommented the 'new' npc skills from mob_skill_db as they are implemented now.


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

skotlex 18 years ago
parent
commit
2d6cef47d6
15 changed files with 732 additions and 562 deletions
  1. 15 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 76 76
      db/mob_skill_db.txt
  4. 3 3
      db/skill_cast_db.txt
  5. 9 8
      db/skill_db.txt
  6. 1 1
      db/skill_unit_db.txt
  7. 30 5
      src/map/battle.c
  8. 1 1
      src/map/battle.h
  9. 16 7
      src/map/map.c
  10. 1 1
      src/map/map.h
  11. 7 0
      src/map/pc.c
  12. 483 454
      src/map/skill.c
  13. 31 1
      src/map/skill.h
  14. 53 5
      src/map/status.c
  15. 4 0
      src/map/status.h

+ 15 - 0
Changelog-Trunk.txt

@@ -4,6 +4,21 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2007/08/13
+	* Modified map_foreachinrange so that you can also specify the max length
+	  of the path to use. The max_count field in the skill_db is used to specify
+	  this range for path-type skills (Sharpshooting, Kamaitachi and the NPC
+	  Breath skills.
+	* Implemented the 'new' NPC skills described here:
+	  http://ro.doddlercon.com/wiki/index.php?title=Monster_Skills . It is mostly
+	  complete, but the new status changes (slow cast, critical wounds, etc)
+	  don't have any visual effects yet (icon or opt changes? I don't know if
+	  they should have). Also I could not find the unit_id for Evil Land, so it
+	  looks just like Sanctuary for now. Apart from those, the only skills which
+	  I couldn't get to display properly are the Breath skills (with the
+	  exception of Fire Breath).
+	* Corrected gtb_sc_immunity setting not taking effect if your block value was
+	  the same (that is, if the config said 30%, then you would only get status
+	  change immunity at 31%, nor 30%) [Skotlex]
 	* Fixed a small error in the script_commands documentation about getpartyleader. [Paradox924X]
 	* Corrected skill-based hp/sp regen, expect slight increase [ultramage]
 2007/08/10

+ 2 - 0
db/Changelog.txt

@@ -44,6 +44,8 @@
 	13107 Western_Outlaw		Need correct HIT and ASPD Rate
 ========================
 08/13
+	* Uncommented the 'new' npc skills from mob_skill_db as they are
+	  implemented now. [Skotlex]
 	* Fixed some typos thanks to Christian [Playtester]
 	- also reduced aftercast delay of NJ_ISSEN
 08/12

+ 76 - 76
db/mob_skill_db.txt

@@ -188,13 +188,13 @@
 1039,Baphomet@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1039,Baphomet@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1039,Baphomet@KN_BRANDISHSPEAR,attack,57,20,2000,500,5000,no,target,always,0,,,,,,29
-//1039,Baphomet@NPC_EARTHQUAKE,chase,653,5,10000,2000,30000,no,self,myhpltmaxrate,80,,,,,,6
-//1039,Baphomet@NPC_EARTHQUAKE,attack,653,5,10000,2000,30000,no,self,myhpltmaxrate,80,,,,,,6
+1039,Baphomet@NPC_EARTHQUAKE,chase,653,5,10000,2000,30000,no,self,myhpltmaxrate,80,,,,,,6
+1039,Baphomet@NPC_EARTHQUAKE,attack,653,5,10000,2000,30000,no,self,myhpltmaxrate,80,,,,,,6
 1039,Baphomet@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1039,Baphomet@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1039,Baphomet@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1039,Baphomet@NPC_HELLJUDGEMENT,chase,662,5,10000,800,10000,no,self,always,0,,,,,,6
-//1039,Baphomet@NPC_HELLJUDGEMENT,attack,662,5,10000,800,10000,no,self,always,0,,,,,,6
+1039,Baphomet@NPC_HELLJUDGEMENT,chase,662,5,10000,800,10000,no,self,always,0,,,,,,6
+1039,Baphomet@NPC_HELLJUDGEMENT,attack,662,5,10000,800,10000,no,self,always,0,,,,,,6
 1039,Baphomet@NPC_DARKBREATH,attack,202,5,2000,800,5000,no,target,always,0,,,,,,29
 1039,Baphomet@NPC_ARMORBRAKE,attack,344,10,2000,0,5000,no,target,always,0,,,,,,
 1039,Baphomet@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,
@@ -298,8 +298,8 @@
 1059,Mistress@NPC_AGIUP,attack,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1059,Mistress@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1059,Mistress@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1059,Mistress@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
-//1059,Mistress@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1059,Mistress@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1059,Mistress@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
 1059,Mistress@NPC_GUIDEDATTACK,attack,172,5,500,0,20000,no,target,always,0,,,,,,18
 1059,Mistress@NPC_GUIDEDATTACK,chase,172,5,500,0,20000,no,target,always,0,,,,,,18
 1059,Mistress@NPC_SILENCEATTACK,attack,178,5,2000,0,5000,no,target,always,0,,,,,,
@@ -332,16 +332,16 @@
 1065,Strouf@MG_LIGHTNINGBOLT,chase,20,3,500,1500,5000,yes,target,always,0,,,,,,
 1065,Strouf@NPC_EMOTION,idle,197,1,2000,0,5000,yes,self,always,0,32,,,,,
 1065,Strouf@NPC_WATERATTACK,attack,184,1,2000,0,5000,yes,target,always,0,,,,,,
-//1065,Strouf@SA_DISPELL,attack,289,5,0,0,30000,yes,target,always,0,,,,,,9
-//1065,Strouf@SA_DISPELL,chase,289,5,0,0,30000,yes,target,always,0,,,,,,9
+1065,Strouf@SA_DISPELL,attack,289,5,0,0,30000,yes,target,always,0,,,,,,9
+1065,Strouf@SA_DISPELL,chase,289,5,0,0,30000,yes,target,always,0,,,,,,9
 1065,Strouf@WZ_WATERBALL,attack,86,3,500,1500,5000,yes,target,always,0,,,,,,6
 1065,Strouf@MG_FROSTDIVER,angry,15,9,1000,1000,5000,yes,target,always,0,,,,,,
 1065,Strouf@MG_FROSTDIVER,follow,15,9,1000,1000,5000,yes,target,always,0,,,,,,
 1065,Strouf@MG_LIGHTNINGBOLT,angry,20,3,500,1500,5000,yes,target,always,0,,,,,,
 1065,Strouf@MG_LIGHTNINGBOLT,follow,20,3,500,1500,5000,yes,target,always,0,,,,,,
 1065,Strouf@NPC_WATERATTACK,angry,184,1,2000,0,5000,yes,target,always,0,,,,,,
-//1065,Strouf@SA_DISPELL,angry,289,5,0,0,30000,yes,target,always,0,,,,,,9
-//1065,Strouf@SA_DISPELL,follow,289,5,0,0,30000,yes,target,always,0,,,,,,9
+1065,Strouf@SA_DISPELL,angry,289,5,0,0,30000,yes,target,always,0,,,,,,9
+1065,Strouf@SA_DISPELL,follow,289,5,0,0,30000,yes,target,always,0,,,,,,9
 1065,Strouf@WZ_WATERBALL,angry,86,3,500,1500,5000,yes,target,always,0,,,,,,6
 1066,Vadon@NPC_STUNATTACK,attack,179,2,500,1500,5000,no,target,always,0,,,,,,6
 1066,Vadon@NPC_WATERATTACK,attack,184,1,2000,0,5000,yes,target,always,0,,,,,,
@@ -567,7 +567,7 @@
 1115,Eddga@MG_FIREBALL,chase,17,20,10000,0,0,yes,target,skillused,18,,,,,,
 1115,Eddga@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1115,Eddga@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1115,Eddga@NPC_BLEEDING,attack,660,5,2000,0,3000,yes,self,always,0,,,,,,32
+1115,Eddga@NPC_BLEEDING,attack,660,5,2000,0,3000,yes,self,always,0,,,,,,32
 1115,Eddga@AM_DEMONSTRATION,attack,229,5,2000,0,2000,yes,target,always,0,,,,,,6
 1115,Eddga@AM_DEMONSTRATION,chase,229,5,2000,0,2000,yes,target,always,0,,,,,,6
 1115,Eddga@NPC_SUMMONSLAVE,attack,196,8,10000,700,10000,no,self,slavele,3,1603,,,,,
@@ -710,8 +710,8 @@
 1142,Marine Sphere@NPC_SELFDESTRUCTION,any,173,1,10000,3000,0,no,self,afterskill,354,,,,,,
 1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,500,2000,5000,no,self,myhpltmaxrate,99,,,,,,
 1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,2000,5000,no,self,skillused,173,,,,,,
-//1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,0,0,yes,self,always,0,,,,,,
-//1142,Marine Sphere@NPC_SPEEDUP,any,332,1,10000,0,700,yes,self,always,0,,,,,,
+1142,Marine Sphere@NPC_SELFDESTRUCTION,idle,173,1,10000,0,0,yes,self,always,0,,,,,,
+1142,Marine Sphere@NPC_SPEEDUP,any,332,1,10000,0,700,yes,self,always,0,,,,,,
 1143,Marionette@HT_FREEZINGTRAP,idle,121,5,500,0,300000,yes,around2,always,0,,,,,,29
 1143,Marionette@MG_FIREWALL,chase,18,5,500,500,5000,yes,target,always,0,,,,,,2
 1143,Marionette@NPC_TELEKINESISATTACK,attack,191,5,500,0,5000,yes,target,always,0,,,,,,6
@@ -733,8 +733,8 @@
 1147,Maya@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1147,Maya@AL_TELEPORT,idle,26,1,500,0,5000,yes,self,always,0,,,,,,
 1147,Maya@AL_TELEPORT,walk,26,1,500,0,5000,yes,self,always,0,,,,,,
-//1147,Maya@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
-//1147,Maya@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1147,Maya@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1147,Maya@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
 1147,Maya@KN_BRANDISHSPEAR,attack,57,20,2000,500,5000,no,target,always,0,,,,,,
 1147,Maya@NPC_POWERUP,attack,349,5,10000,0,120000,yes,self,myhpltmaxrate,30,,,,,,6
 1147,Maya@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
@@ -768,8 +768,8 @@
 1150,Moonlight Flower@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1150,Moonlight Flower@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1150,Moonlight Flower@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
-//1150,Moonlight Flower@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
-//1150,Moonlight Flower@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1150,Moonlight Flower@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1150,Moonlight Flower@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
 1150,Moonlight Flower@ST_FULLSTRIP,attack,476,5,2000,0,5000,yes,target,always,0,,,,,,6
 1150,Moonlight Flower@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1150,Moonlight Flower@MC_MAMMONITE,attack,42,20,2000,0,5000,no,target,always,0,,,,,,8
@@ -842,8 +842,8 @@
 1159,Phreeoni@NPC_POWERUP,attack,349,5,10000,0,120000,yes,self,myhpltmaxrate,30,,,,,,6
 1159,Phreeoni@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1159,Phreeoni@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1159,Phreeoni@NPC_WIDESTONE,chase,666,5,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,
-//1159,Phreeoni@NPC_WIDESTONE,attack,666,5,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,
+1159,Phreeoni@NPC_WIDESTONE,chase,666,5,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,
+1159,Phreeoni@NPC_WIDESTONE,attack,666,5,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,
 1159,Phreeoni@NPC_HELMBRAKE,attack,345,10,2000,0,5000,no,target,skillused,18,,,,,,
 1159,Phreeoni@NPC_GUIDEDATTACK,chase,172,5,500,0,20000,no,target,always,0,,,,,,
 1159,Phreeoni@NPC_LICK,attack,206,5,2000,0,5000,yes,target,always,0,,,,,,3
@@ -930,8 +930,8 @@
 1190,Orc Lord@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1190,Orc Lord@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1190,Orc Lord@CR_SHIELDCHARGE,attack,250,5,2000,0,5000,no,target,always,0,,,,,,
-//1190,Orc Lord@NPC_EARTHQUAKE,chase,653,5,10000,1500,30000,no,self,myhpltmaxrate,80,,,,,,32
-//1190,Orc Lord@NPC_EARTHQUAKE,attack,653,5,10000,1500,30000,no,self,myhpltmaxrate,80,,,,,,32
+1190,Orc Lord@NPC_EARTHQUAKE,chase,653,5,10000,1500,30000,no,self,myhpltmaxrate,80,,,,,,32
+1190,Orc Lord@NPC_EARTHQUAKE,attack,653,5,10000,1500,30000,no,self,myhpltmaxrate,80,,,,,,32
 1190,Orc Lord@NPC_POWERUP,attack,349,5,10000,0,120000,yes,self,myhpltmaxrate,30,,,,,,6
 1190,Orc Lord@MG_COLDBOLT,chase,14,10,2000,0,5000,no,target,always,0,,,,,,
 1190,Orc Lord@MG_FIREBOLT,chase,19,10,2000,0,5000,no,target,always,0,,,,,,
@@ -1123,8 +1123,8 @@
 1251,Stormy Knight@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1251,Stormy Knight@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1251,Stormy Knight@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
-//1251,Stormy Knight@NPC_WIDEFREEZE,chase,664,5,10000,1000,10000,no,self,myhpltmaxrate,80,,,,,,32
-//1251,Stormy Knight@NPC_WIDEFREEZE,attack,664,5,10000,1000,10000,no,self,myhpltmaxrate,80,,,,,,32
+1251,Stormy Knight@NPC_WIDEFREEZE,chase,664,5,10000,1000,10000,no,self,myhpltmaxrate,80,,,,,,32
+1251,Stormy Knight@NPC_WIDEFREEZE,attack,664,5,10000,1000,10000,no,self,myhpltmaxrate,80,,,,,,32
 1251,Stormy Knight@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1251,Stormy Knight@NPC_WINDATTACK,chase,187,5,2000,0,5000,no,target,always,0,,,,,,
 1251,Stormy Knight@NPC_WINDATTACK,attack,187,5,2000,0,5000,no,target,always,0,,,,,,
@@ -1142,8 +1142,8 @@
 1252,Garm@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1252,Garm@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1252,Garm@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
-//1252,Garm@NPC_WIDEFREEZE,chase,664,5,10000,1000,20000,yes,self,always,,,,,,,36
-//1252,Garm@NPC_WIDEFREEZE,attack,664,5,10000,1000,20000,yes,self,always,,,,,,,36
+1252,Garm@NPC_WIDEFREEZE,chase,664,5,10000,1000,20000,yes,self,always,,,,,,,36
+1252,Garm@NPC_WIDEFREEZE,attack,664,5,10000,1000,20000,yes,self,always,,,,,,,36
 1252,Garm@NPC_WEAPONBRAKER,attack,343,10,500,0,30000,no,target,always,0,,,,,,6
 1252,Garm@NPC_AGIUP,attack,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1252,Garm@WZ_STORMGUST,chase,89,10,2000,0,5000,no,target,always,0,,,,,,
@@ -1257,8 +1257,8 @@
 1272,Dark Lord@MG_FIREWALL,chase,18,10,2000,500,5000,no,target,always,0,,,,,,
 1272,Dark Lord@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1272,Dark Lord@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1272,Dark Lord@NPC_HELLJUDGEMENT,chase,662,5,10000,800,10000,no,self,always,0,,,,,,36
-//1272,Dark Lord@NPC_HELLJUDGEMENT,attack,662,5,10000,800,10000,no,self,always,0,,,,,,36
+1272,Dark Lord@NPC_HELLJUDGEMENT,chase,662,5,10000,800,10000,no,self,always,0,,,,,,36
+1272,Dark Lord@NPC_HELLJUDGEMENT,attack,662,5,10000,800,10000,no,self,always,0,,,,,,36
 1272,Dark Lord@NPC_DARKBLESSING,attack,203,1,500,800,5000,no,target,always,0,,,,,,9
 1272,Dark Lord@NPC_HELMBRAKE,attack,345,10,2000,500,5000,no,target,always,0,,,,,,
 1272,Dark Lord@NPC_SUMMONSLAVE,attack,196,3,10000,700,10000,no,self,slavele,3,1605,,,,,
@@ -1600,9 +1600,9 @@
 1372,Goat@NPC_STUNATTACK,attack,179,3,500,1500,5000,no,target,always,0,,,,,,6
 1373,Lord of Death@AL_DECAGI,chase,30,10,2000,0,60000,no,target,always,0,,,,,,
 1373,Lord of Death@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
-//1373,Lord of the Dead@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
-//1373,Lord of the Dead@NPC_HELLJUDGEMENT,chase,662,10,10000,1000,10000,no,self,always,0,,,,,,36
-//1373,Lord of the Dead@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,36
+1373,Lord of the Dead@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
+1373,Lord of the Dead@NPC_HELLJUDGEMENT,chase,662,10,10000,1000,10000,no,self,always,0,,,,,,36
+1373,Lord of the Dead@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,36
 1373,Lord of Death@KN_BRANDISHSPEAR,attack,57,20,2000,500,5000,no,target,always,0,,,,,,
 1373,Lord of Death@NPC_DARKSTRIKE,chase,340,10,2000,0,5000,yes,target,always,0,,,,,,
 1373,Lord of Death@NPC_CHANGEUNDEAD,attack,348,1,2000,0,5000,no,target,always,0,,,,,,
@@ -1756,8 +1756,8 @@
 1389,Dracula@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1389,Dracula@AL_TELEPORT,idle,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
 1389,Dracula@AL_TELEPORT,walk,26,1,5000,0,5000,yes,self,rudeattacked,,,,,,,
-//1389,Dracula@NPC_HELLJUDGEMENT,chase,662,10,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,36
-//1389,Dracula@NPC_HELLJUDGEMENT,attack,662,10,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,36
+1389,Dracula@NPC_HELLJUDGEMENT,chase,662,10,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,36
+1389,Dracula@NPC_HELLJUDGEMENT,attack,662,10,10000,500,20000,no,self,myhpltmaxrate,80,,,,,,36
 1389,Dracula@AS_GRIMTOOTH,chase,137,5,2000,0,5000,yes,target,always,0,,,,,,
 1389,Dracula@NPC_AGIUP,attack,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1389,Dracula@NPC_BLOODDRAIN,attack,199,1,3000,0,0,yes,target,always,0,,,,,,
@@ -1965,10 +1965,10 @@
 1417,Zipper Bear@NPC_STUNATTACK,attack,179,2,500,1500,5000,no,target,always,0,,,,,,6
 1418,Evil Snake Lord@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1418,Evil Snake Lord@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
-//1418,Evil Snake Lord@NPC_DRAGONFEAR,chase,659,5,10000,0,30000,no,self,always,,,,,,,6
-//1418,Evil Snake Lord@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
-//1418,Evil Snake Lord@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
-//1418,Evil Snake Lord@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1418,Evil Snake Lord@NPC_DRAGONFEAR,chase,659,5,10000,0,30000,no,self,always,,,,,,,6
+1418,Evil Snake Lord@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1418,Evil Snake Lord@NPC_WIDESILENCE,chase,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1418,Evil Snake Lord@NPC_WIDESILENCE,attack,663,5,10000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
 1418,Evil Snake Lord@MG_FROSTDIVER,attack,15,10,2000,0,5000,yes,target,always,0,,,,,,
 1418,Evil Snake Lord@MG_FROSTDIVER,chase,15,10,2000,0,0,yes,target,always,0,,,,,,
 1418,Evil Snake Lord@NPC_SHIELDBRAKE,attack,346,10,2000,0,0,yes,target,always,0,,,,,,2
@@ -2443,8 +2443,8 @@
 1492,Incantation Samurai@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,6
 1492,Incantation Samurai@KN_TWOHANDQUICKEN,attack,60,20,10000,0,120000,yes,self,myhpltmaxrate,30,,,,,,6
 1492,Incantation Samurai@NPC_ARMORBRAKE,attack,344,10,2000,0,5000,no,target,always,0,,,,,,
-//1492,Incantation Samurai@NPC_HELLJUDGEMENT,chase,662,10,10000,1000,10000,no,self,always,0,,,,,,36
-//1492,Incantation Samurai@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,36
+1492,Incantation Samurai@NPC_HELLJUDGEMENT,chase,662,10,10000,1000,10000,no,self,always,0,,,,,,36
+1492,Incantation Samurai@NPC_HELLJUDGEMENT,attack,662,10,10000,1000,10000,no,self,always,0,,,,,,36
 1492,Incantation Samurai@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1492,Incantation Samurai@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1492,Incantation Samurai@ASC_BREAKER,idle,379,10,10000,500,5000,no,target,longrangeattacked,,,,,,,
@@ -2592,8 +2592,8 @@
 1518,Bacsojin@HP_ASSUMPTIO,idle,361,5,10000,500,100000,yes,self,always,0,,,,,,
 1518,Bacsojin@HP_ASSUMPTIO,chase,361,5,10000,500,100000,yes,self,always,0,,,,,,
 1518,Bacsojin@HP_ASSUMPTIO,attack,361,5,10000,500,100000,yes,self,always,0,,,,,,
-//1518,Bacsojin@NPC_WIDESLEEP,chase,668,5,10000,700,25000,yes,self,always,0,,,,,,
-//1518,Bacsojin@NPC_WIDESLEEP,attack,668,5,10000,700,25000,yes,self,myhpltmaxrate,80,,,,,,
+1518,Bacsojin@NPC_WIDESLEEP,chase,668,5,10000,700,25000,yes,self,always,0,,,,,,
+1518,Bacsojin@NPC_WIDESLEEP,attack,668,5,10000,700,25000,yes,self,myhpltmaxrate,80,,,,,,
 1518,Bacsojin@WZ_WATERBALL,chase,86,3,2000,1000,5000,yes,target,always,0,,,,,,
 1518,Bacsojin@WZ_WATERBALL,attack,86,5,1000,0,5000,yes,target,always,0,,,,,,
 1518,Bacsojin@NPC_STOP,attack,342,1,2000,500,15000,yes,target,always,0,,,,,,6
@@ -2727,8 +2727,8 @@
 1623,RSX 0806@NPC_POWERUP,attack,349,5,2000,0,60000,no,self,always,0,,,,,,6
 1623,RSX 0806@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1623,RSX 0806@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1623,RSX-0806@NPC_EARTHQUAKE,chase,653,5,10000,2000,30000,no,self,myhpltmaxrate,50,,,,,,32
-//1623,RSX-0806@NPC_EARTHQUAKE,attack,653,5,10000,2000,30000,no,self,myhpltmaxrate,50,,,,,,32
+1623,RSX-0806@NPC_EARTHQUAKE,chase,653,5,10000,2000,30000,no,self,myhpltmaxrate,50,,,,,,32
+1623,RSX-0806@NPC_EARTHQUAKE,attack,653,5,10000,2000,30000,no,self,myhpltmaxrate,50,,,,,,32
 1623,RSX 0806@NPC_SUMMONSLAVE,attack,196,5,10000,2000,10000,no,self,slavele,3,1624,1624,1621,1620,,
 1623,RSX 0806@NPC_SUMMONSLAVE,idle,196,5,10000,2000,10000,no,self,slavele,3,1624,1624,1621,1620,,
 1623,RSX 0806@NPC_SUMMONSLAVE,idle,196,5,10000,0,0,no,self,onspawn,0,1617,,,,,
@@ -3658,7 +3658,7 @@
 1708,Thanatos@NPC_CALLSLAVE,idle,352,1,10000,0,60000,yes,self,always,0,,,,,,
 1708,Thanatos@NPC_SUMMONSLAVE,attack,196,6,10000,700,30000,no,self,slavele,0,1711,1710,1709,1712,,
 1708,Thanatos@NPC_SUMMONSLAVE,idle,196,6,10000,700,30000,no,self,slavele,0,1711,1710,1709,1712,,
-//1708,Thanatos@NPC_EXPULSION,attack,674,1,1000,1000,10000,no,self,myhpltmaxrate,60,,,,,,
+1708,Thanatos@NPC_EXPULSION,attack,674,1,1000,1000,10000,no,self,myhpltmaxrate,60,,,,,,
 1708,Thanatos@KN_TWOHANDQUICKEN,attack,60,20,3000,0,300000,yes,self,myhpltmaxrate,30,,,,,,2
 1708,Thanatos@KN_BOWLINGBASH,attack,62,10,1000,0,10000,yes,target,always,0,,,,,,
 1708,Thanatos@SM_BASH,attack,5,10,1000,0,5000,yes,target,always,0,,,,,,
@@ -3771,10 +3771,10 @@
 1719,Detale@NPC_CALLSLAVE,attack,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1719,Detale@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1719,Detale@NPC_CALLSLAVE,chase,352,1,10000,0,30000,yes,self,always,0,,,,,,
-//1719,Detale@NPC_DRAGONFEAR,chase,659,5,10000,0,30000,no,self,always,,,,,,,6
-//1719,Detale@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
+1719,Detale@NPC_DRAGONFEAR,chase,659,5,10000,0,30000,no,self,always,,,,,,,6
+1719,Detale@NPC_DRAGONFEAR,attack,659,5,2000,1000,20000,no,self,myhpltmaxrate,80,,,,,,32
 1719,Detale@NPC_CRITICALSLASH,attack,170,1,500,500,5000,no,target,always,0,,,,,,
-//1719,Detales@NPC_FIREBREATH,attack,654,5,500,800,5000,no,self,always,,,,,,,32
+1719,Detales@NPC_FIREBREATH,attack,654,5,500,800,5000,no,self,always,,,,,,,32
 1719,Detale@NPC_DARKBREATH,attack,202,5,500,800,5000,no,target,always,0,,,,,,36
 1719,Detale@NPC_POWERUP,attack,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,36
 1719,Detale@NPC_BREAKARMOR,attack,344,10,2000,0,5000,no,target,always,0,,,,,,29
@@ -3834,8 +3834,8 @@
 1734,Kiel-D-01@HW_GANBANTEIN,attack,483,5,5000,0,5000,yes,target,always,0,,,,,,
 1734,Kiel-D-01@SM_MAGNUM,chase,7,20,1000,0,3000,yes,self,always,0,,,,,,
 1734,Kiel-D-01@SM_MAGNUM,attack,7,20,1000,0,3000,yes,self,always,0,,,,,,
-//1734,Kiel-D-01@NPC_WIDESILENCE,chase,663,5,10000,500,25000,no,self,myhpltmaxrate,80,,,,,,9
-//1734,Kiel-D-01@NPC_WIDESILENCE,attack,663,5,10000,500,25000,no,self,myhpltmaxrate,80,,,,,,9
+1734,Kiel-D-01@NPC_WIDESILENCE,chase,663,5,10000,500,25000,no,self,myhpltmaxrate,80,,,,,,9
+1734,Kiel-D-01@NPC_WIDESILENCE,attack,663,5,10000,500,25000,no,self,myhpltmaxrate,80,,,,,,9
 1734,Kiel-D-01@NPC_DARKBLESSING,attack,203,1,500,800,5000,no,target,always,0,,,,,,9
 1734,Kiel-D-01@MG_SAFETYWALL,attack,12,10,1000,0,5000,yes,self,always,0,,,,,,
 1734,Kiel-D-01@MG_SAFETYWALL,attack,12,10,4000,0,5000,yes,self,myhpltmaxrate,30,,,,,,
@@ -3920,7 +3920,7 @@
 1751,Valkyrie Randgris@NPC_POWERUP,chase,349,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,
 1751,Valkyrie Randgris@NPC_AGIUP,attack,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,
 1751,Valkyrie Randgris@NPC_AGIUP,chase,350,5,10000,0,30000,yes,self,myhpltmaxrate,30,,,,,,
-//1751,Valkyrie Randgris@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,32
+1751,Valkyrie Randgris@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,32
 1751,Valkyrie Randgris@HP_ASSUMPTIO,chase,361,5,10000,0,100000,yes,self,myhpltmaxrate,60,,,,,,
 1751,Valkyrie Randgris@HP_ASSUMPTIO,attack,361,5,10000,0,100000,yes,self,myhpltmaxrate,60,,,,,,
 1751,Valkyrie Randgris@HW_GANBANTEIN,attack,483,5,2000,0,5000,yes,target,always,0,,,,,,
@@ -3932,8 +3932,8 @@
 1751,Valkyrie Randgris@CR_HOLYCROSS,attack,253,10,2000,0,5000,yes,target,always,0,,,,,,
 1751,Valkyrie Randgris@KN_BRANDISHSPEAR,attack,57,20,1000,0,5000,yes,target,always,0,,,,,,
 1751,Valkyrie Randgris@MG_THUNDERSTORM,attack,21,15,1000,1500,5000,no,target,attackpcge,2,,,,,,
-//1751,Valkyrie Randgris@NPC_EARTHQUAKE,chase,653,5,10000,1000,25000,no,self,myhpltmaxrate,30,,,,,,
-//1751,Valkyrie Randgris@NPC_EARTHQUAKE,attack,653,5,10000,1000,25000,no,self,myhpltmaxrate,30,,,,,,
+1751,Valkyrie Randgris@NPC_EARTHQUAKE,chase,653,5,10000,1000,25000,no,self,myhpltmaxrate,30,,,,,,
+1751,Valkyrie Randgris@NPC_EARTHQUAKE,attack,653,5,10000,1000,25000,no,self,myhpltmaxrate,30,,,,,,
 1751,Valkyrie Randgris@WZ_VERMILION,attack,85,20,1000,1000,5000,no,target,always,0,,,,,,
 1751,Valkyrie Randgris@WZ_VERMILION,chase,85,20,2000,1000,5000,no,target,always,0,,,,,,
 1752,Skogul@TF_HIDING,idle,51,1,2000,0,180000,no,self,always,0,,,,,,9
@@ -4067,7 +4067,7 @@
 1768,Gloomundernight@KN_PIERCE,attack,56,10,1000,0,5000,no,target,always,0,,,,,,
 1768,Gloomundernight@NPC_POWERUP,attack,349,5,10000,700,25000,no,self,myhpltmaxrate,30,,,,,,
 1768,Gloomundernight@NPC_POWERUP,attack,349,5,2000,700,50000,no,self,always,0,,,,,,
-//1768,Gloom Under Night@NPC_FIREBREATH,chase,654,10,2000,500,10000,no,self,myhpltmaxrate,80,,,,,,
+1768,Gloom Under Night@NPC_FIREBREATH,chase,654,10,2000,500,10000,no,self,myhpltmaxrate,80,,,,,,
 1768,Gloomundernight@SM_MAGNUM,attack,7,20,10000,0,5000,yes,self,attackpcge,2,,,,,,
 1768,Gloomundernight@WZ_SIGHTRASHER,attack,81,20,2000,0,5000,yes,target,always,0,,,,,,
 1768,Gloomundernight@MG_FIREBALL,attack,17,20,1000,500,20000,no,target,always,0,,,,,,
@@ -4179,8 +4179,8 @@
 1779,Ktullanux@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,0,,,,,,
 1779,Ktullanux@NPC_SUMMONSLAVE,attack,196,4,10000,700,30000,no,self,slavele,3,1788,,,,,
 1779,Ktullanux@NPC_SUMMONSLAVE,idle,196,4,10000,700,30000,no,self,slavele,3,1788,,,,,
-//1779,Ktullanux@NPC_WIDEFREEZE,chase,664,5,10000,0,20000,yes,self,myhpltmaxrate,80,,,,,,32
-//1779,Ktullanux@NPC_WIDEFREEZE,attack,664,5,10000,0,20000,yes,self,myhpltmaxrate,80,,,,,,32
+1779,Ktullanux@NPC_WIDEFREEZE,chase,664,5,10000,0,20000,yes,self,myhpltmaxrate,80,,,,,,32
+1779,Ktullanux@NPC_WIDEFREEZE,attack,664,5,10000,0,20000,yes,self,myhpltmaxrate,80,,,,,,32
 1779,Ktullanux@SA_DISPELL,attack,289,5,10000,0,15000,yes,target,always,0,,,,,,
 1779,Ktullanux@SA_DISPELL,chase,289,5,10000,0,15000,yes,target,always,0,,,,,,
 1779,Ktullanux@NPC_ARMORBRAKE,attack,344,10,2000,0,5000,yes,target,always,0,,,,,,29
@@ -4228,8 +4228,8 @@
 1785,Atros@NPC_SUMMONSLAVE,idle,196,3,10000,700,30000,no,self,slavele,0,1791,,,,,
 1785,Atros@NPC_DEFENDER,idle,205,1,10000,0,5000,yes,self,longrangeattacked,,,,,,,
 1785,Atros@KN_TWOHANDQUICKEN,attack,60,20,2000,0,120000,yes,self,myhpltmaxrate,30,,,,,,36
-//1785,Atros@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,32
-//1785,Atros@NPC_BLEEDING,attack,660,5,1000,0,5000,yes,self,always,0,,,,,,32
+1785,Atros@NPC_PULSESTRIKE,attack,661,5,2000,0,30000,yes,self,always,0,,,,,,32
+1785,Atros@NPC_BLEEDING,attack,660,5,1000,0,5000,yes,self,always,0,,,,,,32
 1785,Atros@SM_BASH,attack,5,10,1000,0,5000,yes,target,always,0,,,,,,
 1785,Atros@NPC_DARKNESSATTACK,attack,190,3,500,800,5000,no,target,always,0,,,,,,
 1785,Atros@SM_MAGNUM,attack,7,20,10000,0,5000,yes,self,attackpcge,2,,,,,,
@@ -4353,7 +4353,7 @@
 1829,Sword Master@CR_SHIELDCHARGE,attack,250,5,1000,0,5000,yes,target,always,,,,,,,
 1829,Sword Master@NPC_STUNATTACK,attack,179,5,1500,0,5000,yes,target,always,,,,,,,
 1829,Sword Master@NPC_COMBOATTACK,attack,171,5,1500,0,5000,yes,target,always,,,,,,,
-//1829,Sword Master@NPC_WIDEBLEEDING,attack,665,4,10000,0,15000,yes,self,myhpltmaxrate,40,,,,,,
+1829,Sword Master@NPC_WIDEBLEEDING,attack,665,4,10000,0,15000,yes,self,myhpltmaxrate,40,,,,,,
 1830,Bow Master@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1830,Bow Master@AC_DOUBLE,idle,46,10,5000,0,5000,yes,target,always,,,,,,,
 1830,Bow Master@AC_SHOWER,idle,47,5,5000,0,5000,yes,target,always,,,,,,,
@@ -4364,20 +4364,20 @@
 1830,Bow Master@AC_CHARGEARROW,attack,148,1,2000,0,5000,yes,target,always,,,,,,,
 1830,Bow Master@NPC_STUNATTACK,attack,179,5,1500,0,5000,yes,target,always,,,,,,,
 1830,Bow Master@NPC_COMBOATTACK,attack,171,5,1500,0,5000,yes,target,always,,,,,,,
-//1830,Bow Master@NPC_BLEEDING,attack,660,5,1500,0,5000,yes,self,always,,,,,,,
-//1830,Bow Master@NPC_WIDEBLEEDING,attack,665,4,10000,0,15000,yes,self,myhpltmaxrate,40,,,,,,
+1830,Bow Master@NPC_BLEEDING,attack,660,5,1500,0,5000,yes,self,always,,,,,,,
+1830,Bow Master@NPC_WIDEBLEEDING,attack,665,4,10000,0,15000,yes,self,myhpltmaxrate,40,,,,,,
 1831,Salamander@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1831,Salamander@MG_FIREBALL,idle,17,5,10000,0,5000,yes,target,always,,,,,,,
 1831,Salamander@MG_FIREBALL,chase,17,5,10000,0,5000,yes,target,always,,,,,,,
 1831,Salamander@CR_REFLECTSHIELD,idle,252,3,1000,0,200000,no,self,always,,,,,,,
 1831,Salamander@CR_REFLECTSHIELD,attack,252,3,1000,0,200000,no,self,always,,,,,,,
 1831,Salamander@NPC_FIREATTACK,attack,186,5,2000,1000,200000,no,target,always,,,,,,,
-//1831,Salamander@NPC_BLEEDING,attack,660,3,500,500,10000,no,self,always,,,,,,,
+1831,Salamander@NPC_BLEEDING,attack,660,3,500,500,10000,no,self,always,,,,,,,
 1831,Salamander@AS_SONICBLOW,attack,136,10,1000,0,10000,yes,target,always,,,,,,,
 1831,Salamander@SM_MAGNUM,attack,7,7,1000,0,10000,yes,self,attackpcge,2,,,,,,
 1831,Salamander@KN_TWOHANDQUICKEN,attack,60,20,2000,0,300000,yes,self,myhpltmaxrate,40,,,,,,
 1831,Salamander@NPC_CRITICALSLASH,attack,170,1,2000,0,5000,yes,target,always,,,,,,,
-//1831,Salamander@NPC_WIDEBLEEDING,attack,665,2,10000,500,100000,no,self,myhpltmaxrate,20,,,,,,
+1831,Salamander@NPC_WIDEBLEEDING,attack,665,2,10000,500,100000,no,self,myhpltmaxrate,20,,,,,,
 1832,Ifrit@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1832,Ifrit@AL_PNEUMA,idle,25,1,10000,0,1000,yes,self,longrangeattacked,,,,,,,
 1832,Ifrit@AL_HEAL,idle,28,10,10000,0,5000,yes,self,myhpltmaxrate,50,,,,,,
@@ -4390,21 +4390,21 @@
 1832,Ifrit@NPC_CALLSLAVE,idle,352,1,10000,0,30000,yes,self,always,,,,,,,
 1832,Ifrit@ST_FULLSTRIP,attack,476,5,2000,0,5000,yes,target,always,,,,,,,
 1832,Ifrit@AS_SONICBLOW,attack,136,1,2000,0,5000,yes,target,always,,,,,,,
-//1832,Ifrit@NPC_FIREBREATH,chase,654,10,2000,500,5000,no,self,myhpltmaxrate,80,,,,,,
-//1832,Ifrit@NPC_FIREBREATH,attack,654,10,2000,500,5000,no,self,myhpltmaxrate,80,,,,,,
+1832,Ifrit@NPC_FIREBREATH,chase,654,10,2000,500,5000,no,self,myhpltmaxrate,80,,,,,,
+1832,Ifrit@NPC_FIREBREATH,attack,654,10,2000,500,5000,no,self,myhpltmaxrate,80,,,,,,
 1832,Ifrit@SA_LANDPROTECTOR,attack,288,3,5000,0,5000,yes,target,always,,,,,,,
 1832,Ifrit@WZ_METEOR,attack,83,11,2000,500,5000,no,target,myhpltmaxrate,90,,,,,,
 1832,Ifrit@KN_TWOHANDQUICKEN,attack,60,9,10000,0,100000,yes,self,myhpltmaxrate,30,,,,,,
-//1832,Ifrit@NPC_EARTHQUAKE,chase,653,5,10000,500,20000,no,self,myhpltmaxrate,40,,,,,,
-//1832,Ifrit@NPC_EARTHQUAKE,attack,653,5,10000,500,20000,no,self,myhpltmaxrate,40,,,,,,
-//1832,Ifrit@NPC_PULSESTRIKE,attack,661,5,10000,0,15000,yes,self,myhpltmaxrate,60,,,,,,
-//1832,Ifrit@NPC_DRAGONFEAR,attack,659,5,10000,0,10000,yes,self,always,,,,,,,
-//1832,Ifrit@NPC_DRAGONFEAR,chase,659,5,10000,0,10000,yes,self,always,,,,,,,
+1832,Ifrit@NPC_EARTHQUAKE,chase,653,5,10000,500,20000,no,self,myhpltmaxrate,40,,,,,,
+1832,Ifrit@NPC_EARTHQUAKE,attack,653,5,10000,500,20000,no,self,myhpltmaxrate,40,,,,,,
+1832,Ifrit@NPC_PULSESTRIKE,attack,661,5,10000,0,15000,yes,self,myhpltmaxrate,60,,,,,,
+1832,Ifrit@NPC_DRAGONFEAR,attack,659,5,10000,0,10000,yes,self,always,,,,,,,
+1832,Ifrit@NPC_DRAGONFEAR,chase,659,5,10000,0,10000,yes,self,always,,,,,,,
 1832,Ifrit@WZ_METEOR,idle,83,9,10000,0,5000,yes,target,always,,,,,,,
 1833,Kasa@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1833,Kasa@WZ_FIREPILLAR,idle,80,5,10000,500,30000,no,target,always,,,,,,,
-//1833,Kasa@NPC_FIREBREATH,chase,654,10,2000,1500,15000,no,self,always,,,,,,,
-//1833,Kasa@NPC_FIREBREATH,attack,654,10,2000,1500,15000,no,self,always,,,,,,,
+1833,Kasa@NPC_FIREBREATH,chase,654,10,2000,1500,15000,no,self,always,,,,,,,
+1833,Kasa@NPC_FIREBREATH,attack,654,10,2000,1500,15000,no,self,always,,,,,,,
 1833,Kasa@MG_FIREBALL,idle,17,20,10000,500,10000,no,target,always,,,,,,,
 1833,Kasa@MG_FIREBALL,chase,17,20,10000,500,10000,no,target,always,,,,,,,
 1833,Kasa@MG_FIREBALL,attack,17,20,5000,500,10000,no,target,always,,,,,,,
@@ -4418,16 +4418,16 @@
 1834,Salamander@MG_FIREBALL,chase,17,5,10000,0,5000,yes,target,always,,,,,,,
 1834,Salamander@CR_REFLECTSHIELD,attack,252,3,1000,0,200000,no,self,always,,,,,,,
 1834,Salamander@NPC_FIREATTACK,attack,186,5,2000,1000,200000,no,target,always,,,,,,,
-//1834,Salamander@NPC_BLEEDING,attack,660,3,500,500,10000,no,self,always,,,,,,,
+1834,Salamander@NPC_BLEEDING,attack,660,3,500,500,10000,no,self,always,,,,,,,
 1834,Salamander@AS_SONICBLOW,attack,136,10,1000,0,10000,yes,target,always,,,,,,,
 1834,Salamander@SM_MAGNUM,attack,7,7,1000,0,10000,yes,self,attackpcge,2,,,,,,
 1834,Salamander@KN_TWOHANDQUICKEN,attack,60,20,2000,0,300000,yes,self,myhpltmaxrate,40,,,,,,
 1834,Salamander@NPC_CRITICALSLASH,attack,170,1,2000,0,5000,yes,target,always,,,,,,,
-//1834,Salamander@NPC_WIDEBLEEDING,attack,665,2,10000,500,100000,no,self,myhpltmaxrate,20,,,,,,
+1834,Salamander@NPC_WIDEBLEEDING,attack,665,2,10000,500,100000,no,self,myhpltmaxrate,20,,,,,,
 1835,Kasa@AL_TELEPORT,idle,26,1,10000,0,0,yes,self,rudeattacked,,,,,,,
 1835,Kasa@WZ_FIREPILLAR,idle,80,5,10000,500,30000,no,target,always,,,,,,,
-//1835,Kasa@NPC_FIREBREATH,chase,654,10,2000,3000,200000,no,self,always,,,,,,,
-//1835,Kasa@NPC_FIREBREATH,attack,654,10,2000,3000,200000,no,self,always,,,,,,,
+1835,Kasa@NPC_FIREBREATH,chase,654,10,2000,3000,200000,no,self,always,,,,,,,
+1835,Kasa@NPC_FIREBREATH,attack,654,10,2000,3000,200000,no,self,always,,,,,,,
 1835,Kasa@MG_FIREBALL,idle,17,20,10000,500,10000,no,target,always,,,,,,,
 1835,Kasa@MG_FIREBALL,chase,17,20,10000,500,10000,no,target,always,,,,,,,
 1835,Kasa@MG_FIREBALL,attack,17,20,5000,500,10000,no,target,always,,,,,,,
@@ -4447,7 +4447,7 @@
 1837,Fire Imp@MG_FIREBALL,attack,17,20,3000,500,10000,no,target,always,,,,,,,
 1837,Fire Imp@MG_FIREBALL,chase,17,20,3000,500,10000,no,target,always,,,,,,,
 1837,Fire Imp@NPC_FIREATTACK,attack,186,5,1000,0,5000,yes,target,always,,,,,,,
-//1837,Fire Imp@NPC_PULSESTRIKE,attack,661,3,1000,1000,5000,no,self,always,,,,,,,
+1837,Fire Imp@NPC_PULSESTRIKE,attack,661,3,1000,1000,5000,no,self,always,,,,,,,
 1837,Fire Imp@MG_SIGHT,idle,10,1,500,0,5000,yes,self,always,,,,,,,
 1837,Fire Imp@WZ_SIGHTRASHER,attack,81,20,3000,0,10000,yes,self,always,,,,,,,
 1837,Fire Imp@RG_STRIPARMOR,attack,217,1,2000,0,5000,yes,target,always,,,,,,,29
@@ -4484,4 +4484,4 @@
 1840,Golden Savage@WZ_HEAVENDRIVE,attack,91,3,500,1500,5000,no,target,always,,,,,,,
 1840,Golden Savage@WZ_QUAGMIRE,attack,92,2,500,0,5000,yes,target,always,,,,,,,
 1840,Golden Savage@WZ_QUAGMIRE,chase,92,2,2000,0,5000,yes,target,always,,,,,,,
-//1840,Golden Savage@NPC_PULSESTRIKE,attack,661,1,500,0,10000,yes,self,always,,,,,,,32
+1840,Golden Savage@NPC_PULSESTRIKE,attack,661,1,500,0,10000,yes,self,always,,,,,,,32

+ 3 - 3
db/skill_cast_db.txt

@@ -678,7 +678,7 @@
 404,0,0,0,20000,10000
 //-- PF_SPIDERWEB
 405,0,0,0,30000,8000
-//-- ASC_METEORASSAULT (Upkeep2 times are duration of: blind(lv1), stun(lv2) or bleeding (lv3)
+//-- ASC_METEORASSAULT (Upkeep2 times are duration of: blind(lv1), stun(lv2) or bleeding (lv3))
 406,500,500,0,0,10000:5000:120000
 //-- ASC_CDP
 407,0,500,0,0,0
@@ -930,8 +930,8 @@
 655,0,0,0,0,30000
 //-- NPC_ACIDBREATH
 657,0,0,0,0,30000
-//-- NPC_DRAGONFEAR
-659,0,0,0,0,30000
+//-- NPC_DRAGONFEAR (Upkeep2 times are duration of: Stun(lv1), Curse(lv2), Silence(lv3) and Bleeding (lv4))
+659,0,0,0,0,5000:30000:30000:30000
 //-- NPC_BLEEDING
 660,0,0,0,0,30000
 //-- NPC_HELLJUDGEMENT

+ 9 - 8
db/skill_db.txt

@@ -36,7 +36,8 @@
 //    0x0800- usable only on guild-mates (and enemies if skill is offensive)
 //    0x1000- disable usage on enemies (for non-offensive skills).
 // 13 maxcount: max amount of skill instances to place on the ground when
-//    player_land_skill_limit/monster_land_skill_limit is enabled.
+//    player_land_skill_limit/monster_land_skill_limit is enabled. For skills
+//    that attack using a path, this is the path length to be used.
 // 14 attack type (none, weapon, magic, misc)
 // 15 Blowcount (amount of tiles skill knockbacks)
 1,0,0,0,0,0,0,9,0,no,0,0,0,none,0	//NV_BASIC#Basic Skill#
@@ -420,7 +421,7 @@
 379,9,6,1,-1,0x8,0,10,1,yes,0,0,0,weapon,0	//ASC_BREAKER#Soul Destroyer#
 380,0,6,4,0,0x1,0,10,1,no,0,0,0,weapon,0	//SN_SIGHT#Falcon Eyes#
 381,5,8,1,0,0x40,0,5,1,yes,0,0,0,misc,0	//SN_FALCONASSAULT#Falcon Assault#
-382,4,8,1,-1,0,3,5,1,yes,0,0,0,weapon,0	//SN_SHARPSHOOTING#Focused Arrow Strike#
+382,4,8,1,-1,0,3,5,1,yes,0,0,14,weapon,0	//SN_SHARPSHOOTING#Focused Arrow Strike#
 383,0,6,4,0,0x3,-1,10,1,yes,0,0,0,weapon,0	//SN_WINDWALK#Wind Walker#
 384,0,0,4,0,0x1,0,10,1,yes,0,0,0,weapon,0	//WS_MELTDOWN#Shattering Strike#
 //385,0,0,4,0,0x1,0,1,1,yes,0,0,0,none,0	//WS_CREATECOIN#Create Coins#
@@ -580,17 +581,17 @@
 539,0,6,4,1,0x2,3,5,1,yes,0,0,0,magic,0	//NJ_HYOUSYOURAKU#NJ_HYOUSYOURAKU#
 540,9,8,1,4,0,0,10,1:2:2:3:3:4:4:5:5:6,yes,0,0,0,magic,0	//NJ_HUUJIN#NJ_HUUJIN#
 541,9,6,4,4,0x2,2:2:3:3:4,5,1,yes,0,0,0,magic,0	//NJ_RAIGEKISAI#NJ_RAIGEKISAI#
-542,5:6:7:8:9,8,1,4,0,3,5,1,yes,0,0,0,magic,0	//NJ_KAMAITACHI#NJ_KAMAITACHI#
+542,5:6:7:8:9,8,1,4,0,3,5,1,yes,0,0,14,magic,0	//NJ_KAMAITACHI#NJ_KAMAITACHI#
 543,0,6,4,0,0x1,0,5,1,yes,0,0,0,none,0	//NJ_NEN#NJ_NEN#
 544,-5,6,1,0,0x40,0,10,1,no,0,0,0,weapon,0	//NJ_ISSEN#NJ_ISSEN#
 
 // new NPC skills (not yet implemented)
 653,0,8,4,0,0x6,5:7:9:11:13:5:7:9:11:13,10,3,no,0,0x2,0,magic,0	//NPC_EARTHQUAKE
-654,9,6,1,3,0,4,10,1,no,0,0x2,0,weapon,0	//NPC_FIREBREATH
-655,9,6,1,1,0,4,10,1,no,0,0x2,0,weapon,0	//NPC_ICEBREATH
-656,9,6,1,4,0,4,10,1,no,0,0x2,0,weapon,0	//NPC_THUNDERBREATH
-657,9,6,1,5,0,4,10,1,no,0,0x2,0,weapon,0	//NPC_ACIDBREATH
-658,9,6,1,7,0,4,10,1,no,0,0x2,0,weapon,0	//NPC_DARKNESSBREATH
+654,9,6,1,3,0,4,10,1,no,0,0x2,14,weapon,0	//NPC_FIREBREATH
+655,9,6,1,1,0,4,10,1,no,0,0x2,14,weapon,0	//NPC_ICEBREATH
+656,9,6,1,4,0,4,10,1,no,0,0x2,14,weapon,0	//NPC_THUNDERBREATH
+657,9,6,1,5,0,4,10,1,no,0,0x2,14,weapon,0	//NPC_ACIDBREATH
+658,9,6,1,7,0,4,10,1,no,0,0x2,14,weapon,0	//NPC_DARKNESSBREATH
 659,0,6,4,0,0x3,2:5:8:11:14,5,1,no,0,0x2,0,none,0	//NPC_DRAGONFEAR
 660,-9,6,1,-1,0,0,5,1,no,0,0x2,0,weapon,0	//NPC_BLEEDING
 661,0,6,4,0,0x2,7,5,1,no,0,0x2,0,weapon,7	//NPC_PULSESTRIKE

+ 1 - 1
db/skill_unit_db.txt

@@ -93,4 +93,4 @@
 527,0xbc,    , -1, 0,2000,enemy, 0x000	//NJ_TATAMIGAESHI
 535,0xbd,    , -1, 0, 200,enemy, 0x008	//NJ_KAENSIN
 538,0xbb,    ,  1:1:1:2:2:2:3:3:3:4,0,-1,all,0x000	//NJ_SUITON
-670,0x83,    ,  5, 1,1000,all,   0x008	//NPC_EVILLAND
+670,0x83,    , -1, 1,1000,all,   0x008	//NPC_EVILLAND

+ 30 - 5
src/map/battle.c

@@ -1131,6 +1131,7 @@ static struct Damage battle_calc_weapon_attack(
 			case NPC_DARKNESSATTACK:
 			case NPC_UNDEADATTACK:
 			case NPC_TELEKINESISATTACK:
+			case NPC_BLEEDING:
 				hitrate += hitrate * 20 / 100;
 				break;
 			case KN_PIERCE:
@@ -1382,6 +1383,12 @@ static struct Damage battle_calc_weapon_attack(
 				case NPC_UNDEADATTACK:
 				case NPC_TELEKINESISATTACK:
 				case NPC_BLOODDRAIN:
+				case NPC_ACIDBREATH:
+				case NPC_DARKNESSBREATH:
+				case NPC_FIREBREATH:
+				case NPC_ICEBREATH:
+				case NPC_THUNDERBREATH:
+				case NPC_HELLJUDGEMENT:
 					skillratio += 100*(skill_lv-1);
 					break;
 				case RG_BACKSTAP:
@@ -2184,7 +2191,7 @@ struct Damage battle_calc_magic_attack(
 		{	//Calc base damage according to skill
 			case AL_HEAL:
 			case PR_BENEDICTIO:
-				ad.damage = skill_calc_heal(src,skill_lv)/2;
+				ad.damage = skill_calc_heal(src, target, skill_lv)/2;
 				break;
 			case PR_ASPERSIO:
 				ad.damage = 40;
@@ -2192,6 +2199,9 @@ struct Damage battle_calc_magic_attack(
 			case PR_SANCTUARY:
 				ad.damage = (skill_lv>6)?388:skill_lv*50;
 				break;
+			case NPC_EVILLAND:
+				ad.damage = (skill_lv>6)?666:skill_lv*100;
+				break;
 			case ALL_RESURRECTION:
 			case PR_TURNUNDEAD:
 				//Undead check is on skill_castend_damageid code.
@@ -2211,6 +2221,12 @@ struct Damage battle_calc_magic_attack(
 				break;
 			default:
 			{
+				if (skill_num == NPC_EARTHQUAKE) {
+					if (sstatus->rhw.atk2 > sstatus->rhw.atk)
+						MATK_ADD(sstatus->rhw.atk + rand()%(1+sstatus->rhw.atk2-sstatus->rhw.atk))
+					else
+						MATK_ADD(sstatus->rhw.atk);
+				} else
 				if (sstatus->matk_max > sstatus->matk_min) {
 					MATK_ADD(sstatus->matk_min+rand()%(1+sstatus->matk_max-sstatus->matk_min));
 				} else {
@@ -2302,6 +2318,9 @@ struct Damage battle_calc_magic_attack(
 					case NPC_ENERGYDRAIN:
 						skillratio += 100*skill_lv;
 						break;
+					case NPC_EARTHQUAKE:
+						skillratio += 400 + 500*skill_lv;
+						break;
 				}
 
 				MATK_RATE(skillratio);
@@ -2661,7 +2680,8 @@ struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct bl
 	return d;
 }
 
-int battle_calc_return_damage(struct block_list* bl, int* damage, int flag)
+//Calculates returned damage. direct is true if the skill was a direct attack (that is, not from another source, like a land spell
+int battle_calc_return_damage(struct block_list* bl, int* damage, int direct, int flag)
 {
 	struct map_session_data* sd = NULL;
 	struct status_change* sc;
@@ -2669,8 +2689,10 @@ int battle_calc_return_damage(struct block_list* bl, int* damage, int flag)
 
 	BL_CAST(BL_PC, bl, sd);
 	sc = status_get_sc(bl);
+	if(sc && !sc->count)
+		sc = NULL;
 
-	if(flag&BF_WEAPON) {
+	if(flag&BF_WEAPON && direct) {
 		//Bounces back part of the damage.
 		if (flag & BF_SHORT) {
 			if (sd && sd->short_weapon_damage_return)
@@ -2694,7 +2716,10 @@ int battle_calc_return_damage(struct block_list* bl, int* damage, int flag)
 	// magic_damage_return by [AppleGirl] and [Valaris]
 	if(flag&BF_MAGIC)
 	{
-		if(sd && sd->magic_damage_return && rand()%100 < sd->magic_damage_return)
+		if(
+			(sd && sd->magic_damage_return && direct && rand()%100 < sd->magic_damage_return)
+			|| (sc && sc->data[SC_MAGICMIRROR].timer != -1 && rand()%100 < sc->data[SC_MAGICMIRROR].val2)
+			)
 		{	//Bounces back full damage, you take none.
 			rdamage = *damage;
 		 	*damage = 0;
@@ -2886,7 +2911,7 @@ int battle_weapon_attack(struct block_list* src, struct block_list* target, unsi
 
 	damage = wd.damage + wd.damage2;
 	if (damage > 0 && src != target) {
-		rdamage = battle_calc_return_damage(target, &damage, wd.flag);
+		rdamage = battle_calc_return_damage(target, &damage, 1, wd.flag);
 		if (rdamage > 0) {
 			rdelay = clif_damage(src, src, tick, wd.amotion, sstatus->dmotion, rdamage, 1, 4, 0);
 			//Use Reflect Shield to signal this kind of skill trigger. [Skotlex]

+ 1 - 1
src/map/battle.h

@@ -25,7 +25,7 @@ struct block_list;
 
 struct Damage battle_calc_attack(int attack_type,struct block_list *bl,struct block_list *target,int skill_num,int skill_lv,int flag);
 
-int battle_calc_return_damage(struct block_list *bl, int *damage, int flag);
+int battle_calc_return_damage(struct block_list *bl, int *damage, int direct, int flag);
 
 void battle_drain(struct map_session_data *sd, struct block_list *tbl, int rdamage, int ldamage, int race, int boss);
 

+ 16 - 7
src/map/map.c

@@ -1035,7 +1035,7 @@ int map_foreachincell(int (*func)(struct block_list*,va_list), int m, int x, int
 /*============================================================
 * For checking a path between two points (x0, y0) and (x1, y1)
 *------------------------------------------------------------*/
-int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y0,int x1,int y1,int range,int type,...)
+int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y0,int x1,int y1,int range,int length, int type,...)
 {
 	int returnCount =0;  //total sum of returned values of func() [Skotlex]
 //////////////////////////////////////////////////////////////
@@ -1077,7 +1077,7 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
 	struct block_list *bl;
 	int c, bx, by;
 	//method specific variables
-	int magnitude2; //The square of the magnitude
+	int magnitude2, len_limit; //The square of the magnitude
 	int k, xi, yi, xu, yu;
 	int mx0 = x0, mx1 = x1, my0 = y0, my1 = y1;
 	
@@ -1089,6 +1089,18 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
 		
 	va_start(ap,type);
 
+	len_limit = magnitude2 = MAGNITUDE2(x0,y0, x1,y1);
+	if (magnitude2 < 1) //Same begin and ending point, can't trace path.
+		return 0;
+
+	if (length)
+	{	//Adjust final position to fit in the given area.
+		//TODO: Find an alternate method which does not requires a square root calculation.
+		k = sqrt(magnitude2);
+		mx1 = x0 + (x1 - x0)*length/k;
+		my1 = y0 + (y1 - y0)*length/k;
+		len_limit = MAGNITUDE2(x0,y0, mx1,my1);
+	}
 	//Expand target area to cover range.
 	if (mx0 > mx1)
 	{
@@ -1127,9 +1139,6 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
 	if (my1 >= map[m].ys) my1 = map[m].ys-1;
 	
 	range*=range<<8; //Values are shifted later on for higher precision using int math.
-	magnitude2 = MAGNITUDE2(x0,y0, x1,y1);
-	if (magnitude2 < 1) //Same begin and ending point, can't trace path.
-		return 0;
 	
 	if (type & ~BL_MOB)
 		for (by = my0 / BLOCK_SIZE; by <= my1 / BLOCK_SIZE; by++) {
@@ -1143,7 +1152,7 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
 						yi = bl->y;
 					
 						k = (xi-x0)*(x1-x0) + (yi-y0)*(y1-y0);
-						if (k < 0 || k > magnitude2) //Since more skills use this, check for ending point as well.
+						if (k < 0 || k > len_limit) //Since more skills use this, check for ending point as well.
 							continue;
 					
 						//All these shifts are to increase the precision of the intersection point and distance considering how it's
@@ -1175,7 +1184,7 @@ int map_foreachinpath(int (*func)(struct block_list*,va_list),int m,int x0,int y
 						xi = bl->x;
 						yi = bl->y;
 						k = (xi-x0)*(x1-x0) + (yi-y0)*(y1-y0);
-						if (k < 0 || k > magnitude2)
+						if (k < 0 || k > len_limit)
 							continue;
 					
 						k = (k<<4)/magnitude2; //k will be between 1~16 instead of 0~1

+ 1 - 1
src/map/map.h

@@ -1304,7 +1304,7 @@ int map_foreachinshootrange(int (*func)(struct block_list*,va_list), struct bloc
 int map_foreachinarea(int (*func)(struct block_list*,va_list), int m, int x0, int y0, int x1, int y1, int type, ...);
 int map_foreachinmovearea(int (*func)(struct block_list*,va_list), struct block_list* center, int range, int dx, int dy, int type, ...);
 int map_foreachincell(int (*func)(struct block_list*,va_list), int m, int x, int y, int type, ...);
-int map_foreachinpath(int (*func)(struct block_list*,va_list), int m, int x0, int y0, int x1, int y1, int range, int type, ...);
+int map_foreachinpath(int (*func)(struct block_list*,va_list), int m, int x0, int y0, int x1, int y1, int range, int length, int type, ...);
 int map_foreachinmap(int (*func)(struct block_list*,va_list), int m, int type, ...);
 int map_countnearpc(int,int,int);
 //blockŠÖ˜A‚ɒljÁ

+ 7 - 0
src/map/pc.c

@@ -5403,6 +5403,13 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
 		if(bonus != 100)
 			sp = sp * bonus / 100;
 	}
+
+	if (sd->sc.count && sd->sc.data[SC_CRITICALWOUND].timer!=-1)
+	{
+		hp -= hp * sd->sc.data[SC_CRITICALWOUND].val2 / 100;
+		sp -= sp * sd->sc.data[SC_CRITICALWOUND].val2 / 100;
+	}
+
 	return status_heal(&sd->bl, hp, sp, 1);
 }
 

File diff suppressed because it is too large
+ 483 - 454
src/map/skill.c


+ 31 - 1
src/map/skill.h

@@ -185,6 +185,7 @@ int	skill_get_unit_flag( int id );
 int	skill_get_unit_target( int id );
 int	skill_tree_get_max( int id, int b_class );	// Celest
 const char*	skill_get_name( int id ); 	// [Skotlex]
+const char*	skill_get_desc( int id ); 	// [Skotlex]
 
 int skill_isammotype(TBL_PC *sd, int skill);
 int skill_castend_id( int tid, unsigned int tick, int id,int data );
@@ -242,7 +243,7 @@ void skill_identify(struct map_session_data *sd,int idx);
 void skill_weaponrefine(struct map_session_data *sd,int idx); // [Celest]
 int skill_autospell(struct map_session_data *md,int skillid);
 
-int skill_calc_heal(struct block_list *bl, int skill_lv);
+int skill_calc_heal(struct block_list *src, struct block_list *target, int skill_lv);
 
 int skill_check_cloaking(struct block_list *bl, struct status_change *sc);
 
@@ -853,6 +854,35 @@ enum _skill {
 	NJ_NEN,
 	NJ_ISSEN,
 
+	NPC_EARTHQUAKE = 653,
+	NPC_FIREBREATH,
+	NPC_ICEBREATH,
+	NPC_THUNDERBREATH,
+	NPC_ACIDBREATH,
+	NPC_DARKNESSBREATH,
+	NPC_DRAGONFEAR,
+	NPC_BLEEDING,
+	NPC_PULSESTRIKE,
+	NPC_HELLJUDGEMENT,
+	NPC_WIDESILENCE,
+	NPC_WIDEFREEZE,
+	NPC_WIDEBLEEDING,
+	NPC_WIDESTONE,
+	NPC_WIDECONFUSE,
+	NPC_WIDESLEEP,
+	NPC_WIDESIGHT,
+	NPC_EVILLAND,
+	NPC_MAGICMIRROR,
+	NPC_SLOWCAST,
+	NPC_CRITICALWOUND,
+	NPC_EXPULSION,
+	NPC_STONESKIN,
+	NPC_ANTIMAGIC,
+	NPC_WIDECURSE,
+	NPC_WIDESTUN,
+	NPC_VAMPIRE_GIFT,
+	NPC_WIDESOULDRAIN,
+
 	KN_CHARGEATK = 1001,
 	CR_SHRINK,
 	AS_SONICACCEL,

+ 53 - 5
src/map/status.c

@@ -369,6 +369,26 @@ void initChangeTables(void)
 	set_sc(NJ_NEN, SC_NEN, SI_NEN, SCB_STR|SCB_INT);
 	set_sc(NJ_UTSUSEMI, SC_UTSUSEMI, SI_UTSUSEMI,SCB_NONE);
 	set_sc(NJ_BUNSINJYUTSU, SC_BUNSINJYUTSU, SI_BUNSINJYUTSU, SCB_DYE);
+
+	add_sc(NPC_ICEBREATH, SC_FREEZE);
+	add_sc(NPC_ACIDBREATH, SC_POISON);
+	add_sc(NPC_HELLJUDGEMENT, SC_CURSE);
+	add_sc(NPC_WIDESILENCE, SC_SILENCE);
+	add_sc(NPC_WIDEFREEZE, SC_FREEZE);
+	add_sc(NPC_WIDEBLEEDING, SC_BLEEDING);
+	add_sc(NPC_WIDESTONE, SC_STONE);
+	add_sc(NPC_WIDECONFUSE, SC_CONFUSION);
+	add_sc(NPC_WIDESLEEP, SC_SLEEP);
+	add_sc(NPC_WIDESIGHT, SC_SIGHT);
+	add_sc(NPC_EVILLAND, SC_BLIND);
+	add_sc(NPC_MAGICMIRROR, SC_MAGICMIRROR);
+	add_sc(NPC_SLOWCAST, SC_SLOWCAST);
+	add_sc(NPC_CRITICALWOUND, SC_CRITICALWOUND);
+	set_sc(NPC_STONESKIN, SC_ARMORCHANGE, SI_BLANK, SCB_DEF|SCB_MDEF|SCB_DEF2|SCB_MDEF2);
+	add_sc(NPC_ANTIMAGIC, SC_ARMORCHANGE);
+	add_sc(NPC_WIDECURSE, SC_CURSE);
+	add_sc(NPC_WIDESTUN, SC_STUN);
+
 	set_sc(CR_SHRINK, SC_SHRINK, SI_SHRINK, SCB_NONE);
 	set_sc(RG_CLOSECONFINE, SC_CLOSECONFINE2, SI_CLOSECONFINE2, SCB_NONE);
 	set_sc(RG_CLOSECONFINE, SC_CLOSECONFINE, SI_CLOSECONFINE, SCB_FLEE);
@@ -3523,9 +3543,11 @@ static signed char status_calc_def(struct block_list *bl, struct status_change *
 		return 90;
 	if(sc->data[SC_STEELBODY].timer!=-1)
 		return 90;
+	if(sc->data[SC_ARMORCHANGE].timer!=-1)
+		def += def * sc->data[SC_ARMORCHANGE].val2/100;
 	if(sc->data[SC_DRUMBATTLE].timer!=-1)
 		def += sc->data[SC_DRUMBATTLE].val3;
-	if (sc->data[SC_DEFENCE].timer != -1)	//[orn]
+	if(sc->data[SC_DEFENCE].timer != -1)	//[orn]
 		def += sc->data[SC_DEFENCE].val2 ;
 	if(sc->data[SC_INCDEFRATE].timer!=-1)
 		def += def * sc->data[SC_INCDEFRATE].val1/100;
@@ -3558,6 +3580,8 @@ static signed short status_calc_def2(struct block_list *bl, struct status_change
 		return 0;
 	if(sc->data[SC_ETERNALCHAOS].timer!=-1)
 		return 0;
+	if(sc->data[SC_ARMORCHANGE].timer!=-1)
+		def2 += def2 * sc->data[SC_ARMORCHANGE].val2/100;
 	if(sc->data[SC_SUN_COMFORT].timer!=-1)
 		def2 += sc->data[SC_SUN_COMFORT].val2;
 	if(sc->data[SC_ANGELUS].timer!=-1)
@@ -3596,6 +3620,8 @@ static signed char status_calc_mdef(struct block_list *bl, struct status_change
 		return 90;
 	if(sc->data[SC_SKA].timer != -1) // [marquis007]
 		return 90;
+	if(sc->data[SC_ARMORCHANGE].timer!=-1)
+		mdef += mdef * sc->data[SC_ARMORCHANGE].val3/100;
 	if(sc->data[SC_STONE].timer!=-1 && sc->opt1 == OPT1_STONE)
 		mdef += 25*mdef/100;
 	if(sc->data[SC_FREEZE].timer!=-1)
@@ -3613,6 +3639,8 @@ static signed short status_calc_mdef2(struct block_list *bl, struct status_chang
 
 	if(sc->data[SC_BERSERK].timer!=-1)
 		return 0;
+	if(sc->data[SC_ARMORCHANGE].timer!=-1)
+		mdef2 += mdef2 * sc->data[SC_ARMORCHANGE].val3/100;
 	if(sc->data[SC_MINDBREAKER].timer!=-1)
 		mdef2 -= mdef2 * sc->data[SC_MINDBREAKER].val3/100;
 
@@ -4192,7 +4220,7 @@ int status_isimmune(struct block_list *bl)
 		return 100;
 
 	if (bl->type == BL_PC &&
-		((TBL_PC*)bl)->special_state.no_magic_damage > battle_config.gtb_sc_immunity)
+		((TBL_PC*)bl)->special_state.no_magic_damage >= battle_config.gtb_sc_immunity)
 		return ((TBL_PC*)bl)->special_state.no_magic_damage;
 	return 0;
 }
@@ -5227,6 +5255,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 		case SC_SIGHT:			/* サイト/ルアフ */
 		case SC_RUWACH:
 		case SC_SIGHTBLASTER:
+			val3 = skill_get_splash(val2, val1); //Val2 should bring the skill-id.
 			val2 = tick/250;
 			tick = 10;
 			break;
@@ -5751,6 +5780,26 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 			else if (val2 < 0)
 				val2 = rand()%ELE_MAX;
 			break;
+		case SC_CRITICALWOUND:
+			val2 = 10*val1; //Heal effectiveness decrease
+			break;
+		case SC_MAGICMIRROR:
+		case SC_SLOWCAST:
+			val2 = 20*val1; //Magic reflection/cast rate
+			break;
+
+		case SC_ARMORCHANGE:
+			if (val2 == NPC_ANTIMAGIC)
+			{	//Boost mdef
+				val2 =-20;
+				val3 = 20;
+			} else { //Boost def
+				val2 = 20;
+				val3 =-20;
+			}
+			val2*=val1; //20% per level
+			val3*=val1;
+			break;
 		case SC_ARMOR_ELEMENT:
 			//Place here SCs that have no SCB_* data, no skill associated, no ICON
 			//associated, and yet are not wrong/unknown. [Skotlex]
@@ -6614,9 +6663,8 @@ int status_change_timer(int tid, unsigned int tick, int id, int data)
 	case SC_RUWACH:
 	case SC_SIGHTBLASTER:
 		{
-			map_foreachinrange( status_change_timer_sub, bl, 
-				skill_get_splash(StatusSkillChangeTable[type], sc->data[type].val1),
-				BL_CHAR, bl,sc,type,tick);
+			map_foreachinrange( status_change_timer_sub, bl,
+				sc->data[type].val3, BL_CHAR, bl,sc,type,tick);
 
 			if( (--sc->data[type].val2)>0 ){
 				sc->data[type].timer=add_timer(	/* タイマ?再設定 */

+ 4 - 0
src/map/status.h

@@ -265,6 +265,10 @@ enum {
 	SC_JAILED,
 	SC_ENCHANTARMS,	//250
 	SC_MAGICALATTACK,
+	SC_ARMORCHANGE,
+	SC_CRITICALWOUND,
+	SC_MAGICMIRROR,
+	SC_SLOWCAST,
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
 };
 int SkillStatusChangeTable(int skill);

Some files were not shown because too many files changed in this diff