diff options
author | csnv <ctt@csnv.es> | 2014-09-15 22:22:17 +0200 |
---|---|---|
committer | csnv <ctt@csnv.es> | 2014-09-15 22:22:17 +0200 |
commit | 50e1f6c0781df16026cd64bdd87f206295c4a8aa (patch) | |
tree | fa5e68e0a8d6e190faa923a3a00affc04d17bf00 /src/map | |
parent | 67ccaac795f50e3727a995d6e33861287fc7365d (diff) | |
download | hercules-50e1f6c0781df16026cd64bdd87f206295c4a8aa.tar.gz hercules-50e1f6c0781df16026cd64bdd87f206295c4a8aa.tar.bz2 hercules-50e1f6c0781df16026cd64bdd87f206295c4a8aa.tar.xz hercules-50e1f6c0781df16026cd64bdd87f206295c4a8aa.zip |
Fixed song display, changed devotion conditions
- Fixed bug report http://hercules.ws/board/tracker/issue-8338-apple-of-iduns/?gopid=23558#entry23558
- Changes devotion check to work with reflect equipment of the target
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/battle.c | 7 | ||||
-rw-r--r-- | src/map/skill.c | 3 | ||||
-rw-r--r-- | src/map/status.c | 3 |
3 files changed, 7 insertions, 6 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 07a195503..fbc166874 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -5393,8 +5393,7 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st sc = NULL; if( sc ) { - if (sc->data[SC_DEVOTION] && !(wd->flag & BF_SKILL)) - return; // No reflect for basic attacks on devoted characters + 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 ){ @@ -5461,7 +5460,9 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st if( wd->dmg_lv >= ATK_BLOCK ) {/* yes block still applies, somehow gravity thinks it makes sense. */ if( sc ) { - if( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO ) { + if( sc->data[SC_REFLECTSHIELD] && skill_id != WS_CARTTERMINATION && skill_id != GS_DESPERADO + && !(!(wd->flag&BF_SKILL) && sc->data[SC_DEVOTION]) + ) { NORMALIZE_RDAMAGE(damage * sc->data[SC_REFLECTSHIELD]->val2 / 100); #ifndef RENEWAL diff --git a/src/map/skill.c b/src/map/skill.c index aa87d9f4d..97d4f3e9f 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11489,9 +11489,8 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick sce->val4 = 0; timer->delete(sce->timer, status->change_timer); sce->timer = timer->add(tick+sg->limit, status->change_timer, bl->id, type); - } else if (!battle_config.song_timer_reset) + } - break; case UNT_FOGWALL: diff --git a/src/map/status.c b/src/map/status.c index 4c136f870..4f7effa4a 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1790,7 +1790,8 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin //If targeting, cloak+hide protect you, otherwise only hiding does. hide_flag = flag?OPTION_HIDE:(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK); - //You cannot hide from ground skills. + // There is no NF for ground skills, but every earth type skill out there + // affects hidding except Stone Curse if( skill->get_ele(skill_id,1) == ELE_EARTH && skill_id != MG_STONECURSE) hide_flag &= ~OPTION_HIDE; |