diff options
Diffstat (limited to 'src/map/battle.c')
-rw-r--r-- | src/map/battle.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 84bea03bc..9c28f0867 100644 --- a/src/map/battle.c +++ b/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) { |