瀏覽代碼

* Added Filougarou's fix for Bowling Bash causing it to only display damage
* Set delay_dependon_dex in battle_athena to 'no' by default
* Fixed typo in skill_delayfix

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

celest 20 年之前
父節點
當前提交
1dc0399d8f
共有 3 個文件被更改,包括 23 次插入18 次删除
  1. 11 0
      Changelog.txt
  2. 2 1
      conf-tmpl/battle_athena.conf
  3. 10 17
      src/map/skill.c

+ 11 - 0
Changelog.txt

@@ -1,4 +1,15 @@
 Date	Added
+01/07
+        * Added Filougarou's fix for Bowling Bash causing it to only display damage, 
+          but doesn't do any - thanks! [celest]
+        * Set delay_dependon_dex in battle_athena to 'no' by default [celest]
+
+          Note: Just to clarify things, on official servers dex is not supposed to 
+                reduce skill delays, only Poem of Bragi and Berzebub card does!
+
+        * Fixed typo in skill_delayfix - reduce delays only if delaynodex was *not* set,
+          sorry ^^; [celest]
+
 01/06
 	* Fixed various memory corruptions causing crashes (SVN 925) [MouseJstr]
 	* Fixed typo in src/map/map.c causing compile 

+ 2 - 1
conf-tmpl/battle_athena.conf

@@ -43,7 +43,8 @@ casting_rate: 100
 delay_rate: 100
 
 // Is the delay time is dependent on the caster's DEX? (Note 1)
-delay_dependon_dex: yes
+// Note: On Official servers Dex does NOT affect delay time
+delay_dependon_dex: no
 
 // At what dex does the cast time become zero (instacast)
 castrate_dex_scale: 150

+ 10 - 17
src/map/skill.c

@@ -1781,7 +1781,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
 
 	map_freeblock_lock();
 	/* ?際にダメ?ジ?理を行う */
-	if(skillid != KN_BOWLINGBASH || flag)
+	if(skillid || flag)
 		battle_damage(src,bl,damage,0);
 	if(skillid == RG_INTIMIDATE && damage > 0 && !(battle_get_mode(bl)&0x20) && !map[src->m].flag.gvg ) {
 		int s_lv = battle_get_lv(src),t_lv = battle_get_lv(bl);
@@ -1863,7 +1863,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
 		if(hp || sp) pc_heal(sd,hp,sp);
 	}
 
-	if((skillid != KN_BOWLINGBASH || flag) && rdamage > 0)
+	if((skillid || flag) && rdamage > 0)
 		battle_damage(bl,src,rdamage,0);
 
 	if(attack_type&BF_WEAPON && sc_data && sc_data[SC_AUTOCOUNTER].timer != -1 && sc_data[SC_AUTOCOUNTER].val4 > 0) {
@@ -7408,9 +7408,7 @@ int skill_castfix( struct block_list *bl, int time )
 		nullpo_retr(0, md=(struct mob_data*)bl);
 		skill = md->skillid;
 		lv = md->skilllv;
-	}
-
-	else { 
+	} else { 
 		nullpo_retr(0, sd=(struct map_session_data*)bl);
 		skill = sd->skillid;
 		lv = sd->skilllv;
@@ -7470,12 +7468,17 @@ int skill_delayfix( struct block_list *bl, int time )
 
 	sc_data = battle_get_sc_data(bl);
 
+	// instant cast attack skills depend on aspd as delay [celest]
+	if (time <= 0 && skill_db[skill].skill_type == BF_WEAPON)
+		time = battle_get_adelay (bl)/2;
+
 	if(sd) {
 		if(battle_config.delay_dependon_dex &&	/* dexの影響を計算する */
-			skill_get_delaynodex(skill, lv) > 0)
+			!skill_get_delaynodex(skill, lv))	// if skill casttime is allowed to be reduced by dex
 			time=time*(battle_config.castrate_dex_scale - battle_get_dex(bl))/battle_config.castrate_dex_scale;
-		time=time*battle_config.delay_rate/100;
 	}
+	
+	time=time*battle_config.delay_rate/100;
 
 	/* ブラギの詩 */
 	if(sc_data && sc_data[SC_POEMBRAGI].timer!=-1 )
@@ -7807,11 +7810,6 @@ int skill_use_id( struct map_session_data *sd, int target_id,
 	if( casttime<=0 )	/* 詠唱の無いものはキャンセルされない */
 		sd->state.skillcastcancel=0;
 
-	// instant cast attack skills depend on aspd as delay [celest]
-	if (delay <= 0 && skill_db[skill_num].skill_type == BF_WEAPON) {
-		delay = (battle_get_adelay (&sd->bl)/2) * battle_config.delay_rate / 100;
-	}
-
 	sd->skilltarget	= target_id;
 /*	sd->cast_target_bl	= bl; */
 	sd->skillx		= 0;
@@ -7953,11 +7951,6 @@ int skill_use_pos( struct map_session_data *sd,
 	if( casttime<=0 )	/* 詠唱の無いものはキャンセルされない */
 		sd->state.skillcastcancel=0;
 
-	// instant cast attack skills depend on aspd as delay [celest]
-	if (delay <= 0 && skill_db[skill_num].skill_type == BF_WEAPON) {
-		delay = (battle_get_adelay (&sd->bl)/2) * battle_config.delay_rate / 100;
-	}
-	
 	sd->skilltarget	= 0;
 /*	sd->cast_target_bl	= NULL; */
 	tick=gettick();