소스 검색

- Fixed Tarot Card of Fate using time instead of time2 which is the one that actually holds the effect duration.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5623 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 년 전
부모
커밋
0c244d241b
3개의 변경된 파일24개의 추가작업 그리고 22개의 파일을 삭제
  1. 2 0
      Changelog-Trunk.txt
  2. 15 15
      src/map/skill.c
  3. 7 7
      src/map/status.c

+ 2 - 0
Changelog-Trunk.txt

@@ -5,6 +5,8 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EV
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
 2006/03/15
+	* Fixed Tarot Card of Fate using time instead of time2 which is the one
+	  that actually holds the effect duration. [Skotlex]
 	* Fixed mob random walk interval being set to up to 6K seconds in some
 	  instances. [Skotlex]
 	* Added mapflag nodrop (prevents droping items to the ground). [Skotlex]

+ 15 - 15
src/map/skill.c

@@ -5338,7 +5338,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 					if (dstsd) pc_heal(dstsd,0,-dstsd->status.sp);
 					break;
 				case 1:	// matk halved
-					sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time(skillid,skilllv));
+					sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time2(skillid,skilllv));
 					break;
 				case 2:	// all buffs removed
 					status_change_clear_buffs(bl);
@@ -5352,7 +5352,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 					}
 					break;
 				case 4:	// atk halved
-					sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time(skillid,skilllv));
+					sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time2(skillid,skilllv));
 					break;
 				case 5:	// 2000HP heal, random teleported
 					battle_heal(src, src, 2000, 0, 0);
@@ -5368,23 +5368,23 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 				case 7:	// stop freeze or stoned
 					{
 						int sc[] = { SC_STOP, SC_FREEZE, SC_STONE };
-						sc_start(bl,sc[rand()%3],100,skilllv,skill_get_time(skillid,skilllv));
+						sc_start(bl,sc[rand()%3],100,skilllv,skill_get_time2(skillid,skilllv));
 					}
 					break;
 				case 8:	// curse coma and poison
-					sc_start(bl,SC_COMA,100,skilllv,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_CURSE,100,skilllv,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_POISON,100,skilllv,skill_get_time(skillid,skilllv));
+					sc_start(bl,SC_COMA,100,skilllv,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_CURSE,100,skilllv,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_POISON,100,skilllv,skill_get_time2(skillid,skilllv));
 					break;
 				case 9:	// chaos
-					sc_start(bl,SC_CONFUSION,100,skilllv,skill_get_time(skillid,skilllv));
+					sc_start(bl,SC_CONFUSION,100,skilllv,skill_get_time2(skillid,skilllv));
 					break;
 				case 10:	// 6666 damage, atk matk halved, cursed
 					battle_damage(src, bl, 6666, 0);
 					clif_damage(src,bl,tick,0,0,6666,0,0,0);
-					sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_CURSE,skilllv,100,skill_get_time(skillid,skilllv));
+					sc_start(bl,SC_INCATKRATE,100,-50,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_INCMATKRATE,100,-50,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_CURSE,skilllv,100,skill_get_time2(skillid,skilllv));
 					break;
 				case 11:	// 4444 damage
 					battle_damage(src, bl, 4444, 0);
@@ -5394,11 +5394,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 					sc_start(bl,SC_STUN,100,skilllv,5000);
 					break;
 				case 13:	// atk,matk,hit,flee,def reduced
-					sc_start(bl,SC_INCATKRATE,100,-20,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_INCMATKRATE,100,-20,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_INCHITRATE,100,-20,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_INCFLEERATE,100,-20,skill_get_time(skillid,skilllv));
-					sc_start(bl,SC_INCDEFRATE,100,-20,skill_get_time(skillid,skilllv));
+					sc_start(bl,SC_INCATKRATE,100,-20,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_INCMATKRATE,100,-20,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_INCHITRATE,100,-20,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_INCFLEERATE,100,-20,skill_get_time2(skillid,skilllv));
+					sc_start(bl,SC_INCDEFRATE,100,-20,skill_get_time2(skillid,skilllv));
 					break;
 				default:
 					break;			

+ 7 - 7
src/map/status.c

@@ -3542,6 +3542,13 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 			return 0;
 	}
 	
+	//SC duration reduction.
+	if(!(flag&(2|4)) && tick) {
+		tick = status_get_sc_tick(bl, type, tick);
+		if (tick <= 0)
+			return 0;
+	}
+
 	race=status_get_race(bl);
 	mode=status_get_mode(bl);
 	elem=status_get_elem_type(bl);
@@ -3792,13 +3799,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val
 		sc->data[type].timer = -1;
 	}
 
-	//SC duration reduction.
-	if(!(flag&(2|4)) && tick) {
-		tick = status_get_sc_tick(bl, type, tick);
-		if (tick < 0)
-			return 0;
-	}
-
 	switch(type){	/* 異常の種類ごとの?理 */
 		case SC_PROVOKE:			/* プロボック */
 			calc_flag = 1;