瀏覽代碼

- Corrected ASC_BREAKER. Int-based damage is applied after attribute fixes and before card reductions. The skill now completely disregards left weapon.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7319 54d463be-8e91-2dee-dedb-b68131a5f0ec
skotlex 19 年之前
父節點
當前提交
4855ad8d5e
共有 4 個文件被更改,包括 17 次插入12 次删除
  1. 3 0
      Changelog-Trunk.txt
  2. 0 1
      src/login/login.c
  3. 12 7
      src/map/battle.c
  4. 2 4
      src/map/skill.c

+ 3 - 0
Changelog-Trunk.txt

@@ -4,6 +4,9 @@ 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/23
+	* Corrected ASC_BREAKER. Int-based damage is applied after attribute fixes
+	  and before card reductions. The skill now completely disregards left
+	  hand weapon. [Skotlex]
 	* Standarized PF_MEMORIZE to be 50% cast time on all skills (instead of
 	  -50% for targetted skills and -66% for ground skills >.>) [Skotlex]
 	* Cleared up the comment on what item_check does and how it works.

+ 0 - 1
src/login/login.c

@@ -3571,7 +3571,6 @@ int login_lan_config_read(const char *lancfgName) {
 // Reading general configuration file
 //-----------------------------------
 int login_config_read(const char *cfgName) {
-	struct hostent *h = NULL;
 	char line[1024], w1[1024], w2[1024];
 	FILE *fp;
 

+ 12 - 7
src/map/battle.c

@@ -929,7 +929,12 @@ static struct Damage battle_calc_weapon_attack(
 	}
 	if (sstatus->lhw && sstatus->lhw->atk)
 		flag.lh=1;
-	
+
+	if (skill_num == ASC_BREAKER)
+	{	//Soul Breaker disregards dual-wielding.
+		flag.rh = 1; flag.lh = 0;
+	}
+
 	//Check for critical
 	if(!flag.cri && sstatus->cri &&
 		(!skill_num || skill_num == KN_AUTOCOUNTER || skill_num == SN_SHARPSHOOTING || skill_num == NJ_KIRIKAGE))
@@ -1693,9 +1698,6 @@ static struct Damage battle_calc_weapon_attack(
 	if(skill_num==TF_POISON)
 		ATK_ADD(15*skill_lv);
 
-	if(skill_num==ASC_BREAKER) //Breaker's int-based damage.
-		ATK_ADD(rand()%500 + 500 + skill_lv * sstatus->int_ * 5);
-
 	if (skill_num || !(battle_config.attack_attr_none&src->type))
 	{	//Elemental attribute fix
 		if	(!(!sd && tsd && battle_config.mob_ghostring_fix && tstatus->def_ele==ELE_GHOST))
@@ -1718,6 +1720,10 @@ static struct Damage battle_calc_weapon_attack(
 		}
 	}
 
+	//Breaker's int-based damage (applies after attribute modifiers)
+	if(skill_num==ASC_BREAKER)
+		ATK_ADD(rand()%500 + 500 + skill_lv * sstatus->int_ * 5);
+
 	if ((!flag.rh || !wd.damage) && (!flag.lh || !wd.damage2))
 		flag.cardfix = 0;	//When the attack does no damage, avoid doing %bonuses
 
@@ -1873,7 +1879,7 @@ static struct Damage battle_calc_weapon_attack(
 			wd.damage2 = 0;
 			flag.rh=1;
 			flag.lh=0;
-		} else if(sd->status.weapon > MAX_WEAPON_TYPE && skill_num != ASC_BREAKER)
+		} else if(flag.rh && flag.lh)
 		{	//Dual-wield
 			if (wd.damage)
 			{
@@ -2087,7 +2093,7 @@ struct Damage battle_calc_magic_attack(
 			break;
 		case PR_SANCTUARY:
 			ad.blewcount|=0x10000;
-            ad.dmotion = 0; //No flinch animation.
+			ad.dmotion = 0; //No flinch animation.
 		case AL_HEAL:
 		case PR_BENEDICTIO:
 		case WZ_FIREPILLAR:
@@ -2720,7 +2726,6 @@ void battle_drain(TBL_PC *sd, TBL_PC* tsd, int rdamage, int ldamage, int race, i
 	}
 	if (!thp && !tsp) return;
 
-	//Split'em up as Hp/Sp could be drained/leeched.
 	status_heal(&sd->bl, thp, tsp, battle_config.show_hp_sp_drain?3:1);
 	
 	if (tsd) {

+ 2 - 4
src/map/skill.c

@@ -4155,7 +4155,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		break;
 
 	case TF_STEAL:			// スティール
-		if(sd && dstmd) {
+		if(sd) {
 			if(pc_steal_item(sd,bl))
 				clif_skill_nodamage(src,bl,skillid,skilllv,1);
 			else
@@ -4165,10 +4165,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 
 	case RG_STEALCOIN:		// スティールコイン
 		if(sd) {
-			if(pc_steal_coin(sd,bl)) {
+			if(pc_steal_coin(sd,bl))
 				clif_skill_nodamage(src,bl,skillid,skilllv,1);
-				mob_target(dstmd,src,skill_get_range2(src,skillid,skilllv));
-			}
 			else
 				clif_skill_fail(sd,skillid,0,0);
 		}