فهرست منبع

Skill updates.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@178 54d463be-8e91-2dee-dedb-b68131a5f0ec
celest 20 سال پیش
والد
کامیت
d07ec7cb5a
6فایلهای تغییر یافته به همراه34 افزوده شده و 11 حذف شده
  1. 2 0
      Changelog.txt
  2. 1 1
      db/skill_cast_db.txt
  3. 6 4
      src/map/battle.c
  4. 1 1
      src/map/pc.c
  5. 20 1
      src/map/skill.c
  6. 4 4
      src/map/skill.h

+ 2 - 0
Changelog.txt

@@ -7,6 +7,8 @@ Date	Added
 	* Corrected the file type attribute on most of the files in three which fixes the
 	  newline issues between linux and dos [MouseJstr]
               svn propset -R svn:eol-style native .
+        * Skill changes [celest]
+          - Corrected steal formula, updated BladeStop, Headcrush.
 
 11/13
 	* Fixed map-server loading, doesn't require data\resnametable.txt anymore [Wizputer]

+ 1 - 1
db/skill_cast_db.txt

@@ -257,7 +257,7 @@
 395,0,0,20000:25000:30000:35000:40000,0	//CG_MOONLIT#月明りの泉に落ちる花びら#
 396,0,0,300000,0	//CG_MARIONETTE#マリオネットコントロール#
 397,300:500:700:900:1000,1200:1400:1600:1800:2000,0,0	//LK_SPIRALPIERCE#スパイラルピアース#
-398,0,500,0,30000	//LK_HEADCRUSH#ヘッドクラッシュ#
+398,0,500,0,90000	//LK_HEADCRUSH#ヘッドクラッシュ#
 399,0,800:800:800:800:800:1000:1000:1000:1000:1000,0,30000	//LK_JOINTBEAT#ジョイントビート#
 400,1700,1000,0,0,0	//HW_NAPALMVULCAN#ナパームバルカン#
 401,2000,0,600000,0	//CH_SOULCOLLECT#狂気功#

+ 6 - 4
src/map/battle.c

@@ -4619,10 +4619,12 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target,
 			}         
 		}
 		if(t_sc_data && t_sc_data[SC_BLADESTOP_WAIT].timer != -1){
-			int lv = t_sc_data[SC_BLADESTOP_WAIT].val1;
-			skill_status_change_end(target,SC_BLADESTOP_WAIT,-1);
-			skill_status_change_start(src,SC_BLADESTOP,lv,1,(int)src,(int)target,skill_get_time2(MO_BLADESTOP,lv),0);
-			skill_status_change_start(target,SC_BLADESTOP,lv,2,(int)target,(int)src,skill_get_time2(MO_BLADESTOP,lv),0);
+			if (!(src->type = BL_MOB && mob_db[((struct mob_data *)src)->class].mode&0x32)) {
+				int lv = t_sc_data[SC_BLADESTOP_WAIT].val1;
+				skill_status_change_end(target,SC_BLADESTOP_WAIT,-1);
+				skill_status_change_start(src,SC_BLADESTOP,lv,1,(int)src,(int)target,skill_get_time2(MO_BLADESTOP,lv),0);
+				skill_status_change_start(target,SC_BLADESTOP,lv,2,(int)target,(int)src,skill_get_time2(MO_BLADESTOP,lv),0);
+			}
 		}
 		if(t_sc_data && t_sc_data[SC_SPLASHER].timer!=-1)	//殴ったので対象のベナムスプラッシャー状態を解除
 			skill_status_change_end(target,SC_SPLASHER,-1);

+ 1 - 1
src/map/pc.c

@@ -3279,7 +3279,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl)
 		if(!md->state.steal_flag && mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode&0x20) && md->sc_data[SC_STONE].timer == -1 && md->sc_data[SC_FREEZE].timer == -1 &&
 			(!(md->class>1324 && md->class<1364))) // prevent stealing from treasure boxes [Valaris]
 		{
-			skill = sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL) + 10;
+			skill = sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL)*3 + 10;
 
 			if(0 < skill)
 			{

+ 20 - 1
src/map/skill.c

@@ -8224,7 +8224,7 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data)
 		else
 			sc_data[type].timer=add_timer(1000+tick,skill_status_change_timer, bl->id, data );
 		break;
-		case SC_TENSIONRELAX:	/* テンションリラックス */
+	case SC_TENSIONRELAX:	/* テンションリラックス */
 		if(sd){		/* SPがあって、HPが?タンでなければ?? */
 			if( sd->status.sp > 12 && sd->status.max_hp > sd->status.hp ){
 /*				if(sc_data[type].val2 % (sc_data[type].val1+3) ==0 ){
@@ -8240,6 +8240,25 @@ int skill_status_change_timer(int tid, unsigned int tick, int id, int data)
 				skill_status_change_end(&sd->bl,SC_TENSIONRELAX,-1);
 		}
 		break;
+	case SC_HEADCRUSH:	// temporary damage [celest]
+//	case SC_BLEEDING:
+	case SC_POISON2:
+		if((--sc_data[type].val3) > 0) {
+			int hp = battle_get_max_hp(bl);
+			if(bl->type == BL_PC) {
+				hp = 3 + hp*3/200;
+				pc_heal((struct map_session_data *)bl,-hp,0);
+			}
+			else if(bl->type == BL_MOB) {
+				struct mob_data *md;
+				if((md=((struct mob_data *)bl)) == NULL)
+					break;
+				hp = 3 + hp/200;
+				md->hp -= hp;
+			}
+			sc_data[type].timer=add_timer(1000+tick,skill_status_change_timer, bl->id, data );
+		}
+		break;
 
 	/* 時間切れ無し?? */
 	case SC_AETERNA:

+ 4 - 4
src/map/skill.h

@@ -331,9 +331,10 @@ enum {	// struct map_session_data 
 	SC_MINDBREAKER		=191,
 	SC_SPELLBREAKER		=192,
 
-	SC_EDP				= 114,	// [Celest]
-	SC_MARIONETTE2      = 122,
-	SC_BLEEDING         = 124,
+	SC_EDP				= 114, // [Celest]
+	SC_MARIONETTE2      = 122, // marionette target
+	SC_BLEEDING         = 124, // temporarily same id as headcrush
+	SC_POISON2			= 193, // for EDP
 
 // -- testing various SC effects
 //	SC_AURABLADE			=81,
@@ -854,4 +855,3 @@ enum {
 };
 
 #endif
-