summaryrefslogtreecommitdiff
path: root/src/map/battle.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/battle.c')
-rw-r--r--src/map/battle.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 96b61e8d6..c278a330a 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -378,7 +378,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
if(sc->data[SC_ADJUSTMENT].timer != -1 &&
(flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON))
- damage=damage*80/100;
+ damage -= 20*damage/100;
if(sc->data[SC_FOGWALL].timer != -1) {
if(flag&BF_SKILL) //25% reduction
@@ -885,6 +885,7 @@ static struct Damage battle_calc_weapon_attack(
wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG;
break;
case GS_DESPERADO:
+ case GS_DUST:
//This one is the opposite, it consumes ammo, but should count as short range.
wd.flag=(wd.flag&~BF_RANGEMASK)|BF_SHORT;
break;
@@ -917,11 +918,12 @@ static struct Damage battle_calc_weapon_attack(
wd.type = 0x08;
break;
+ case GS_GROUNDDRIFT:
+ wd.flag=(wd.flag&~BF_RANGEMASK)|BF_LONG;
case KN_SPEARSTAB:
case KN_BOWLINGBASH:
case MO_BALKYOUNG:
case TK_TURNKICK:
- case GS_GROUNDDRIFT:
wd.blewcount=0;
break;
@@ -1531,8 +1533,12 @@ static struct Damage battle_calc_weapon_attack(
skillratio += 10*status_get_lv(src)/3;
break;
case GS_BULLSEYE:
- skillratio += 400;
- flag.cardfix = 0;
+ if((tstatus->race == RC_BRUTE || tstatus->race == RC_DEMIHUMAN)
+ && !(tstatus->mode&MD_BOSS))
+ { //Only works well against brute/demihumans non bosses.
+ skillratio += 400;
+ flag.cardfix = 0;
+ }
break;
case GS_TRACKING:
skillratio += 100 *(skill_lv+1);
@@ -1590,9 +1596,6 @@ static struct Damage battle_calc_weapon_attack(
case MO_EXTREMITYFIST:
ATK_ADD(250 + 150*skill_lv);
break;
- case GS_GROUNDDRIFT:
- ATK_ADD(50*skill_lv);
- break;
case TK_DOWNKICK:
case TK_STORMKICK:
case TK_TURNKICK:
@@ -1832,6 +1835,8 @@ static struct Damage battle_calc_weapon_attack(
wd.damage=battle_attr_fix(src,target,wd.damage,s_ele,tstatus->def_ele, tstatus->ele_lv);
if(skill_num==MC_CARTREVOLUTION) //Cart Revolution applies the element fix once more with neutral element
wd.damage = battle_attr_fix(src,target,wd.damage,ELE_NEUTRAL,tstatus->def_ele, tstatus->ele_lv);
+ if(skill_num== GS_GROUNDDRIFT) //Additional 50*lv Neutral damage.
+ wd.damage+= battle_attr_fix(src,target,50*skill_lv,ELE_NEUTRAL,tstatus->def_ele, tstatus->ele_lv);
}
if (flag.lh && wd.damage2 > 0)
wd.damage2 = battle_attr_fix(src,target,wd.damage2,s_ele_,tstatus->def_ele, tstatus->ele_lv);