Explorar o código

- Some more cleaning up of the splash skill code. Now the passed hit value for the splash targetted mobs is 9 instead of 5, this allows multi-hitting splash skills to display the number of hits correctly.
- Also merged Blitz Beat to the rest of the splash code.


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

skotlex %!s(int64=19) %!d(string=hai) anos
pai
achega
30bf9a2b13
Modificáronse 2 ficheiros con 8 adicións e 28 borrados
  1. 3 0
      Changelog-Trunk.txt
  2. 5 28
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ 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.
 
 2006/08/21
+	* Some more cleaning up of the splash skill code. Now the passed hit value
+	  for the splash targetted mobs is 9 instead of 5, this allows multi-hitting
+	  splash skills to display the number of hits correctly. [Skotlex]
 	* Fixed call homunc bug when the homunc was vapo and the master has change
 	  of map [Toms]
 	* Fixed SQL-Guild Creation, guild name was escaped 2 times [Toms]

+ 5 - 28
src/map/skill.c

@@ -2879,6 +2879,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 	case AS_SPLASHER:
 	case AS_GRIMTOOTH:
 	case SM_MAGNUM:
+	case HT_BLITZBEAT:
 	case MC_CARTREVOLUTION:	
 	case NPC_SPLASHATTACK:
 	case AC_SHOWER:	
@@ -2895,7 +2896,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 		{	//Invoked from map_foreachinarea, skill_area_temp[0] holds number of targets to divide damage by.
 			if (skill_area_temp[1] != bl->id)
 				skill_attack(skill_get_type(skillid), src, src, bl,
-					skillid, skilllv, tick, skill_area_temp[0]|0x1500);
+					skillid, skilllv, tick, skill_area_temp[0]|0x1900);
 			else if (skillid == KN_BRANDISHSPEAR)
 				skill_attack(skill_get_type(skillid), src, src, bl,
 					skillid, skilllv, tick, skill_area_temp[0]);
@@ -2905,7 +2906,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 			clif_skill_nodamage(src,bl,skillid,skilllv,1);
 		skill_area_temp[0] = 0;
 		skill_area_temp[1] = bl->id;
-		if (skill_get_nk(skillid)&NK_SPLASHSPLIT)
+		//0xF000 -> Forced splash damage for Auto Blitz-Beat
+		if (flag&0xF000 || skill_get_nk(skillid)&NK_SPLASHSPLIT)
 			map_foreachinrange(skill_area_sub, bl, 
 				skill_get_splash(skillid, skilllv), BL_CHAR,
 				src, skillid, skilllv, tick, BCT_ENEMY, skill_area_sub_count);
@@ -2919,7 +2921,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 
 		//Splasher Should do 100% damage on targetted character.
 		skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv,
-			tick, skillid == AS_SPLASHER?0:skill_area_temp[0]);
+			tick, (skillid == AS_SPLASHER?0:skill_area_temp[0])|(flag&0xF000));
 
 		if (skillid == SM_MAGNUM) {
 			//Initiate 10% of your damage becomes fire element.
@@ -2928,31 +2930,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 		}
 		break;
 
-	//Done apart because you can't mix the flag with BCT_ENEMY for auto-blitz.
-	case HT_BLITZBEAT:
-		if (flag&1) {
-			if (skill_area_temp[1] != bl->id)
-				skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv,
-					tick, skill_area_temp[0]|(flag&0xFF00));
-		} else {
-			skill_area_temp[0] = 0;
-			skill_area_temp[1] = bl->id;
-			if (flag&0xF000)
-				map_foreachinrange(skill_area_sub, bl, 
-						skill_get_splash(skillid, skilllv), BL_CHAR,
-						src, skillid, skilllv, tick, BCT_ENEMY, skill_area_sub_count);
-			else
-				skill_area_temp[0] = 1;
-			map_foreachinrange(skill_area_sub, bl,
-				skill_get_splash(skillid, skilllv), BL_CHAR,
-				src, skillid, skilllv, tick, BCT_ENEMY|1|flag,
-				skill_castend_damage_id);
-
-			skill_attack(skill_get_type(skillid), src, src, bl, skillid, skilllv,
-				tick, skill_area_temp[0]|(flag&0xFF00));
-		}
-		break;
-
 	case KN_BOWLINGBASH:
 		if(flag&1){
 			if(bl->id==skill_area_temp[1])