From f8d5302f9f7352d4379061ebc8ad38e55b4cf4b3 Mon Sep 17 00:00:00 2001 From: rud0lp20 Date: Sun, 27 May 2012 18:59:49 +0000 Subject: Fixed bugreport:5842 RK_DRAGONBREATH damage should now be reducible by defender and energy coat and be blocked by anti long ranged skills. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16157 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/battle.c | 9 ++++++++- src/map/skill.c | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 558e90a08..978b45792 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -413,6 +413,12 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag } } + if(sc->data[SC_ZEPHYR] && + flag&(BF_LONG|BF_SHORT)){ + d->dmg_lv = ATK_BLOCK; + return 0; + } + if( sc->data[SC_SAFETYWALL] && (flag&(BF_SHORT|BF_MAGIC))==BF_SHORT ) { struct skill_unit_group* group = skill_id2group(sc->data[SC_SAFETYWALL]->val3); @@ -594,7 +600,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damag (flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON)) damage -= 20*damage/100; - if(sc->data[SC_FOGWALL]) { + if(sc->data[SC_FOGWALL] && skill_num != RK_DRAGONBREATH) { if(flag&BF_SKILL) //25% reduction damage -= 25*damage/100; else if ((flag&(BF_LONG|BF_WEAPON)) == (BF_LONG|BF_WEAPON)) @@ -3923,6 +3929,7 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * md.damage = ((status_get_hp(src) / 50) + (status_get_max_sp(src) / 4)) * skill_lv; RE_LVL_MDMOD(); if (sd) md.damage = md.damage * (100 + 5 * (pc_checkskill(sd,RK_DRAGONTRAINING) - 1)) / 100; + md.flag |= BF_LONG|BF_WEAPON; break; /** * Ranger diff --git a/src/map/skill.c b/src/map/skill.c index d997f97b6..e25510a64 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11212,6 +11212,7 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_WATER_INSIGNIA: case UNT_WIND_INSIGNIA: case UNT_EARTH_INSIGNIA: + case UNT_ZEPHYR: sc_start(bl,type, 100, sg->skill_lv, sg->interval); break; -- cgit v1.2.3-70-g09d2