Explorar o código

Slightly cleaned up some ancient Brandish Spear code:
* remove helper 'struct square' from common/mmo.h
* moved skill_castend_nodamage_id's case ML_BRANDISH to separate function

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

ultramage %!s(int64=14) %!d(string=hai) anos
pai
achega
e69f094b30
Modificáronse 3 ficheiros con 56 adicións e 58 borrados
  1. 0 6
      src/common/mmo.h
  2. 55 50
      src/map/skill.c
  3. 1 2
      src/map/skill.h

+ 0 - 6
src/common/mmo.h

@@ -519,12 +519,6 @@ struct guild_castle {
 	int temp_guardians_max;
 };
 
-// for Brandish Spear calculations
-struct square {
-	int val1[5];
-	int val2[5];
-};
-
 struct fame_list {
 	int id;
 	int fame;

+ 55 - 50
src/map/skill.c

@@ -3958,51 +3958,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 
 	case KN_BRANDISHSPEAR:
 	case ML_BRANDISH:
-		{
-			int c,n=4;
-			int dir = map_calc_dir(src,bl->x,bl->y);
-			struct square tc;
-			int x=bl->x,y=bl->y;
-			skill_brandishspear_first(&tc,dir,x,y);
-			skill_brandishspear_dir(&tc,dir,4);
-			skill_area_temp[1] = bl->id;
-
-			if(skilllv > 9){
-				for(c=1;c<4;c++){
-					map_foreachincell(skill_area_sub,
-						bl->m,tc.val1[c],tc.val2[c],BL_CHAR,
-						src,skillid,skilllv,tick, flag|BCT_ENEMY|n,
-						skill_castend_damage_id);
-				}
-			}
-			if(skilllv > 6){
-				skill_brandishspear_dir(&tc,dir,-1);
-				n--;
-			}else{
-				skill_brandishspear_dir(&tc,dir,-2);
-				n-=2;
-			}
-
-			if(skilllv > 3){
-				for(c=0;c<5;c++){
-					map_foreachincell(skill_area_sub,
-						bl->m,tc.val1[c],tc.val2[c],BL_CHAR,
-						src,skillid,skilllv,tick, flag|BCT_ENEMY|n,
-						skill_castend_damage_id);
-					if(skilllv > 6 && n==3 && c==4){
-						skill_brandishspear_dir(&tc,dir,-1);
-						n--;c=-1;
-					}
-				}
-			}
-			for(c=0;c<10;c++){
-				if(c==0||c==5) skill_brandishspear_dir(&tc,dir,-1);
-				map_foreachincell(skill_area_sub,
-					bl->m,tc.val1[c%5],tc.val2[c%5],BL_CHAR,
-					src,skillid,skilllv,tick, flag|BCT_ENEMY|1,
-					skill_castend_damage_id);
-			}
-		}
+		skill_brandishspear(src, bl, skillid, skilllv, tick, flag);
 		break;
 
 	case WZ_SIGHTRASHER:
@@ -9149,7 +9105,12 @@ int skill_delayfix (struct block_list *bl, int skill_id, int skill_lv)
 /*=========================================
  *
  *-----------------------------------------*/
-void skill_brandishspear_first (struct square *tc, int dir, int x, int y)
+struct square {
+	int val1[5];
+	int val2[5];
+};
+
+static void skill_brandishspear_first (struct square *tc, int dir, int x, int y)
 {
 	nullpo_retv(tc);
 
@@ -9252,10 +9213,7 @@ void skill_brandishspear_first (struct square *tc, int dir, int x, int y)
 
 }
 
-/*=========================================
- *
- *-----------------------------------------*/
-void skill_brandishspear_dir (struct square* tc, int dir, int are)
+static void skill_brandishspear_dir (struct square* tc, int dir, int are)
 {
 	int c;
 	nullpo_retv(tc);
@@ -9276,6 +9234,53 @@ void skill_brandishspear_dir (struct square* tc, int dir, int are)
 	}
 }
 
+void skill_brandishspear(struct block_list* src, struct block_list* bl, int skillid, int skilllv, unsigned int tick, int flag)
+{
+	int c,n=4;
+	int dir = map_calc_dir(src,bl->x,bl->y);
+	struct square tc;
+	int x=bl->x,y=bl->y;
+	skill_brandishspear_first(&tc,dir,x,y);
+	skill_brandishspear_dir(&tc,dir,4);
+	skill_area_temp[1] = bl->id;
+
+	if(skilllv > 9){
+		for(c=1;c<4;c++){
+			map_foreachincell(skill_area_sub,
+				bl->m,tc.val1[c],tc.val2[c],BL_CHAR,
+				src,skillid,skilllv,tick, flag|BCT_ENEMY|n,
+				skill_castend_damage_id);
+		}
+	}
+	if(skilllv > 6){
+		skill_brandishspear_dir(&tc,dir,-1);
+		n--;
+	}else{
+		skill_brandishspear_dir(&tc,dir,-2);
+		n-=2;
+	}
+
+	if(skilllv > 3){
+		for(c=0;c<5;c++){
+			map_foreachincell(skill_area_sub,
+				bl->m,tc.val1[c],tc.val2[c],BL_CHAR,
+				src,skillid,skilllv,tick, flag|BCT_ENEMY|n,
+				skill_castend_damage_id);
+			if(skilllv > 6 && n==3 && c==4){
+				skill_brandishspear_dir(&tc,dir,-1);
+				n--;c=-1;
+			}
+		}
+	}
+	for(c=0;c<10;c++){
+		if(c==0||c==5) skill_brandishspear_dir(&tc,dir,-1);
+		map_foreachincell(skill_area_sub,
+			bl->m,tc.val1[c%5],tc.val2[c%5],BL_CHAR,
+			src,skillid,skilllv,tick, flag|BCT_ENEMY|1,
+			skill_castend_damage_id);
+	}
+}
+
 /*==========================================
  * Weapon Repair [Celest/DracoRPG]
  *------------------------------------------*/

+ 1 - 2
src/map/skill.h

@@ -315,8 +315,7 @@ int skill_guildaura_sub (struct block_list *bl,va_list ap);
 int skill_castcancel(struct block_list *bl,int type);
 
 int skill_sit (struct map_session_data *sd, int type);
-void skill_brandishspear_first(struct square *tc,int dir,int x,int y);
-void skill_brandishspear_dir(struct square *tc,int dir,int are);
+void skill_brandishspear(struct block_list* src, struct block_list* bl, int skillid, int skilllv, unsigned int tick, int flag);
 void skill_repairweapon(struct map_session_data *sd, int idx);
 void skill_identify(struct map_session_data *sd,int idx);
 void skill_weaponrefine(struct map_session_data *sd,int idx); // [Celest]