ソースを参照

- Corrected Brandish Spear to work on levels above 10.
- Updated Two-HandQuicken, One-HandQuicken to give 30 +2*lv% aspd-rate for skill levels above 10 (meant for boss casted skills)
- Fixed Spear-Quicken messing with the calc_flag


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

skotlex 19 年 前
コミット
683b150179
3 ファイル変更25 行追加15 行削除
  1. 4 0
      Changelog-Trunk.txt
  2. 2 3
      src/map/skill.c
  3. 19 12
      src/map/status.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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/06/02
+	* Corrected Brandish Spear to work on levels above 10. [Skotlex]
+	* Updated Two-HandQuicken, One-HandQuicken to give 30 +2*lv% aspd-rate for
+	  skill levels above 10 (meant for boss casted skills) [Skotlex]
+	* Fixed Spear-Quicken messing with the calc_flag [Skotlex]
 	* Fixed Freeze/Stone/Benedictio not changing your elemental LEVEL to 1.
 	  [Skotlex]
 	* [Fixed]

+ 2 - 3
src/map/skill.c

@@ -3912,15 +3912,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 
 	case KN_BRANDISHSPEAR:	/*ブランディッシュスピア*/
 		{
-			int c,n=4,ar;
+			int c,n=4;
 			int dir = map_calc_dir(src,bl->x,bl->y);
 			struct square tc;
 			int x=bl->x,y=bl->y;
-			ar=skilllv/3;
 			skill_brandishspear_first(&tc,dir,x,y);
 			skill_brandishspear_dir(&tc,dir,4);
 			/* 範?④ */
-			if(skilllv == 10){
+			if(skilllv > 9){
 				for(c=1;c<4;c++){
 					map_foreachincell(skill_area_sub,
 						bl->m,tc.val1[c],tc.val2[c],BL_CHAR,

+ 19 - 12
src/map/status.c

@@ -3185,14 +3185,18 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
 		int max = 0;
 		if(sc->data[SC_STAR_COMFORT].timer!=-1)
 			max = sc->data[SC_STAR_COMFORT].val2;
-		if((sc->data[SC_TWOHANDQUICKEN].timer!=-1 ||
-			sc->data[SC_ONEHAND].timer!=-1
-			) && max < 30)
-			max = 30;
-		
+
 		if(sc->data[SC_MADNESSCANCEL].timer!=-1 && max < 20)
 			max = 20;
-		
+	
+		if(sc->data[SC_TWOHANDQUICKEN].timer!=-1 &&
+			max < sc->data[SC_TWOHANDQUICKEN].val2)
+			max = sc->data[SC_TWOHANDQUICKEN].val2;
+
+		if(sc->data[SC_ONEHAND].timer!=-1 &&
+			max < sc->data[SC_ONEHAND].val2)
+			max = sc->data[SC_ONEHAND].val2;
+
 		if(sc->data[SC_ADRENALINE2].timer!=-1 &&
 			max < sc->data[SC_ADRENALINE2].val2)
 			max = sc->data[SC_ADRENALINE2].val2;
@@ -3951,7 +3955,7 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 	struct map_session_data *sd = NULL;
 	struct status_change* sc;
 	struct status_data *status;
-	int opt_flag , calc_flag = 0, undead_flag;
+	int opt_flag , calc_flag, undead_flag;
 
 	nullpo_retr(0, bl);
 	sc=status_get_sc(bl);
@@ -4423,12 +4427,15 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 				}
 			} else val2 = 0;
 			break;
-
-		case SC_SPEARQUICKEN:		/* ƒXƒsƒAƒNƒCƒbƒPƒ“ */
-			calc_flag = 1;
+		case SC_ONEHAND:
+		case SC_TWOHANDQUICKEN:
+			val2 = 30;
+			if (val1 > 10) //For boss casted skills [Skotlex]
+				val2 += 2*(val1-10);
+			break;
+		case SC_SPEARQUICKEN:
 			val2 = 20+val1;
 			break;
-
 		case SC_MOONLIT:
 			val2 = bl->id;
 			skill_setmapcell(bl,CG_MOONLIT, val1, CELL_SETMOONLIT);
@@ -5265,7 +5272,7 @@ int status_change_end( struct block_list* bl , int type,int tid )
 	struct map_session_data *sd;
 	struct status_change *sc;
 	struct status_data *status;
-	int opt_flag=0, calc_flag = 0;
+	int opt_flag=0, calc_flag;
 
 	nullpo_retr(0, bl);