diff options
author | shennetsind <ind@henn.et> | 2014-03-16 12:58:19 -0300 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2014-03-16 12:58:19 -0300 |
commit | 8c6547a5c3ec4d6b1845b60d14b0aae5c827892c (patch) | |
tree | 082922b693692e061c3f0455d41e7323bd9c0828 /src/map/battle.c | |
parent | 4fe6f657e682b9c722b15346f31ec3fe0298b9d9 (diff) | |
parent | 48d29089a06bb207276ef53754e6a0d217cfcc77 (diff) | |
download | hercules-8c6547a5c3ec4d6b1845b60d14b0aae5c827892c.tar.gz hercules-8c6547a5c3ec4d6b1845b60d14b0aae5c827892c.tar.bz2 hercules-8c6547a5c3ec4d6b1845b60d14b0aae5c827892c.tar.xz hercules-8c6547a5c3ec4d6b1845b60d14b0aae5c827892c.zip |
Merge branch 'master' of https://github.com/HerculesWS/Hercules
Diffstat (limited to 'src/map/battle.c')
-rw-r--r-- | src/map/battle.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 24f39a35d..91db3202c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5317,20 +5317,21 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st sc = NULL; if( sc ) { - - if( sc->data[SC_CRESCENTELBOW] && !is_boss(src) && rnd()%100 < sc->data[SC_CRESCENTELBOW]->val2 ){ - //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] - int ratio = (status_get_hp(src) / 100) * sc->data[SC_CRESCENTELBOW]->val1 * status->get_lv(target) / 125; - if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK - rdamage = rdamage * ratio / 100 + (damage) * (10 + sc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; - skill->blown(target, src, skill->get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1), unit->getdir(src), 0); - clif->skill_damage(target, src, tick, status_get_amotion(src), 0, rdamage, - 1, SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1, 6); // This is how official does - clif->delay_damage(tick + delay, src, target,status_get_amotion(src)+1000,0, rdamage/10, 1, 0); - status->damage(src, target, status->damage(target, src, rdamage, 0, 0, 1)/10, 0, 0, 1); - status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER); - /* shouldn't this trigger skill->additional_effect? */ - return; // Just put here to minimize redundancy + if (wd->flag & BF_SHORT && !(skill->get_inf(skill_id) & (INF_GROUND_SKILL | INF_SELF_SKILL))) { + if( sc->data[SC_CRESCENTELBOW] && !is_boss(src) && rnd()%100 < sc->data[SC_CRESCENTELBOW]->val2 ){ + //ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}] + int ratio = (status_get_hp(src) / 100) * sc->data[SC_CRESCENTELBOW]->val1 * status->get_lv(target) / 125; + if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK + rdamage = rdamage * ratio / 100 + (damage) * (10 + sc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10; + skill->blown(target, src, skill->get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1), unit->getdir(src), 0); + clif->skill_damage(target, src, tick, status_get_amotion(src), 0, rdamage, + 1, SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1, 6); // This is how official does + clif->delay_damage(tick + delay, src, target,status_get_amotion(src)+1000,0, rdamage/10, 1, 0); + status->damage(src, target, status->damage(target, src, rdamage, 0, 0, 1)/10, 0, 0, 1); + status_change_end(target, SC_CRESCENTELBOW, INVALID_TIMER); + /* shouldn't this trigger skill->additional_effect? */ + return; // Just put here to minimize redundancy + } } if( wd->flag & BF_SHORT ) { |