Kaynağa Gözat

Updated some skills.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@162 54d463be-8e91-2dee-dedb-b68131a5f0ec
celest 20 yıl önce
ebeveyn
işleme
e8e5233a8a
5 değiştirilmiş dosya ile 29 ekleme ve 10 silme
  1. 3 0
      Changelog.txt
  2. 1 1
      db/skill_db.txt
  3. 11 3
      src/map/battle.c
  4. 1 1
      src/map/pc.c
  5. 13 5
      src/map/skill.c

+ 3 - 0
Changelog.txt

@@ -3,6 +3,9 @@ Date	Added
 	* Updated & Optimized TXT Login from FREYA. (need to do SQL now) [Codemaster]
 	* Removed compile warnings in intif.c. [Valaris]
 	* Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri]
+        * Updated some skills, credits to orn and midas. [celest]
+          - Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire,
+            Spider Web, Reject Sword, and assassin's Dodge.
 
 11/12
 	* added folder: /save-tmpl, removed folder /save

+ 1 - 1
db/skill_db.txt

@@ -91,7 +91,7 @@
 89,8,6,2,1,1,10,1,yes,0,0,0,magic,2	//WZ_STORMGUST#ストームガスト#
 90,8,8,1,2,0,5,1:2:3:4:5,yes,0,0,0,magic,0	//WZ_EARTHSPIKE#アーススパイク#
 91,8,8,2,2,0,5,1:2:3:4:5,yes,0,0,0,magic,0	//WZ_HEAVENDRIVE#ヘヴンズドライブ#
-92,8,6,2,2,1,5,1,yes,0,0,0,magic,0	//WZ_QUAGMIRE#クァグマイア#
+92,8,6,2,2,1,5,1,yes,0,0,3,magic,0	//WZ_QUAGMIRE#クァグマイア#
 93,8,6,1,0,1,1,1,yes,0,0,0,magic,0	//WZ_ESTIMATION#モンスター情報#
 94,0,0,0,0,0,5,0,no,0,0,0,weapon,0	//BS_IRON#鉄製造#
 95,0,0,0,0,0,5,0,no,0,0,0,weapon,0	//BS_STEEL#鋼鉄製造#

+ 11 - 3
src/map/battle.c

@@ -1565,7 +1565,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
 		// リジェクトソード
 		if(sc_data[SC_REJECTSWORD].timer!=-1 && damage > 0 && flag&BF_WEAPON &&
 		  ((src->type==BL_PC && ((struct map_session_data *)src)->status.weapon == (1 || 2 || 3)) || src->type==BL_MOB )){
-			if(rand()%100 < (10+5*sc_data[SC_REJECTSWORD].val1)){ //反射確率は10+5*Lv
+			if(rand()%100 < (15*sc_data[SC_REJECTSWORD].val1)){ //反射確率は15*Lv
 				damage = damage*50/100;
 				battle_damage(bl,src,damage,0);
 				//ダメージを与えたのは良いんだが、ここからどうして表示するんだかわかんねぇ
@@ -1575,6 +1575,12 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
 					skill_status_change_end(bl, SC_REJECTSWORD, -1);
 			}
 		}
+		if(sc_data[SC_SPIDERWEB].timer!=-1 && damage > 0)	// [Celest]
+			if ((flag&BF_SKILL && skill_get_pl(skill_num)==3) ||
+				(!flag&BF_SKILL && battle_get_attack_element(src)==3)) {
+				damage<<=1;
+				skill_status_change_end(bl, SC_SPIDERWEB, -1);
+			}
 	}
 
 	if(class == 1288 || class == 1287 || class == 1286 || class == 1285) {
@@ -1644,7 +1650,8 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int
 
 	// デーモンベイン(+3 ~ +30) vs 不死 or 悪魔 (死人は含めない?)
 	if((skill = pc_checkskill(sd,AL_DEMONBANE)) > 0 && (battle_check_undead(race,battle_get_elem_type(target)) || race==6) )
-		damage += (skill * 3);
+		damage += (skill*(int)(3+(sd->status.base_level+1)*0.05));	// submitted by orn
+		//damage += (skill * 3);
 
 	// ビーストベイン(+4 ~ +40) vs 動物 or 昆虫
 	if((skill = pc_checkskill(sd,HT_BEASTBANE)) > 0 && (race==2 || race==4) )
@@ -2588,7 +2595,8 @@ static struct Damage battle_calc_mob_weapon_attack(
 				t_def = def2*8/10;
 				if(battle_check_undead(s_race,battle_get_elem_type(src)) || s_race==6)
 					if(tsd && (skill=pc_checkskill(tsd,AL_DP)) > 0 )
-						t_def += skill*3;
+						t_def += skill* (int) (3 + (tsd->status.base_level+1)*0.04);	// submitted by orn
+						//t_def += skill*3;
 
 				vitbonusmax = (t_vit/20)*(t_vit/20)-1;
 				if(battle_config.monster_defense_type) {

+ 1 - 1
src/map/pc.c

@@ -1677,7 +1677,7 @@ int pc_calcstatus(struct map_session_data* sd,int first)
 		if(sd->status.class==12||sd->status.class==17||sd->status.class==4013||sd->status.class==4018)
 			sd->flee += skill*4;
 		if(sd->status.class==12||sd->status.class==4013)
-			sd->speed -= sd->speed *(skill*.5)/100;
+			sd->speed -= sd->speed *(skill*1.5)/100;
 	}
 	if( (skill=pc_checkskill(sd,MO_DODGE))>0 )	// Œ©�Ø‚è
 		sd->flee += (skill*3)>>1;

+ 13 - 5
src/map/skill.c

@@ -1035,12 +1035,12 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s
 			skill_status_change_start(bl,SC_SLEEP,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0);
 		break;
 	case TF_SPRINKLESAND:	/* 砂まき */
-		if( rand()%100 < 15*sc_def_int/100 )
+		if( rand()%100 < 20*sc_def_int/100 )
 			skill_status_change_start(bl,SC_BLIND,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0);
 		break;
 
 	case TF_THROWSTONE:		/* 石投げ */
-		if( rand()%100 < 5*sc_def_vit/100 )
+		if( rand()%100 < 7*sc_def_vit/100 )
 			skill_status_change_start(bl,SC_STAN,skilllv,0,0,0,skill_get_time2(skillid,skilllv),0);
 		break;
 
@@ -2106,6 +2106,7 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s
 	if(skilllv <= 0) return 0;
 
 	struct map_session_data *sd=NULL;
+	struct status_change *sc_data = battle_get_sc_data(src);
 	int i;
 
 	nullpo_retr(1, src);
@@ -2359,6 +2360,8 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s
 				bl->m,x-ar,y-ar,x+ar,y+ar,0,
 				src,skillid,skilllv,tick, flag|BCT_ENEMY|1,
 				skill_castend_damage_id);
+			if (skillid == SM_MAGNUM)	// fire element for 10 seconds
+				skill_status_change_start(src,SC_FLAMELAUNCHER,0,0,0,0,10000,0);
 		}
 		break;
 
@@ -2624,6 +2627,10 @@ int skill_castend_damage_id( struct block_list* src, struct block_list *bl,int s
 		map_freeblock_unlock();
 		return 1;
 	}
+	if(sc_data) {
+		if (sc_data[SC_MAGICPOWER].timer != -1 && skillid != HW_MAGICPOWER)	//マジックパワ?の?果終了
+			skill_status_change_end(src,SC_MAGICPOWER,-1);
+	}
 	map_freeblock_unlock();
 
 	return 0;
@@ -6333,6 +6340,7 @@ int skill_check_condition(struct map_session_data *sd,int type)
 			}
 		}
 		break;
+	case WZ_QUAGMIRE:
 	case MG_FIREWALL:		/* ファイアーウォール */
 	case WZ_FIREPILLAR: // celest 
 		/* 数制限 */
@@ -6841,7 +6849,7 @@ int skill_use_id( struct map_session_data *sd, int target_id,
 
 	//メモライズ状態ならキャストタイムが1/3
 	if(sc_data && sc_data[SC_MEMORIZE].timer != -1 && casttime > 0){
-		casttime = casttime/3;
+		casttime = casttime/2;
 		if((--sc_data[SC_MEMORIZE].val2)<=0)
 			skill_status_change_end(&sd->bl, SC_MEMORIZE, -1);
 	}
@@ -6894,8 +6902,8 @@ int skill_use_id( struct map_session_data *sd, int target_id,
 	}
 
 	//マジックパワーの効果終了
-	if(sc_data && sc_data[SC_MAGICPOWER].timer != -1 && skill_num != HW_MAGICPOWER)
-		skill_status_change_end(&sd->bl,SC_MAGICPOWER,-1);
+	//if(sc_data && sc_data[SC_MAGICPOWER].timer != -1 && skill_num != HW_MAGICPOWER)
+	//	skill_status_change_end(&sd->bl,SC_MAGICPOWER,-1);	// moved
 
 	return 0;
 }