From c3751d658e10cf134017816454e173c4632644ff Mon Sep 17 00:00:00 2001 From: csnv Date: Fri, 12 Sep 2014 21:03:03 +0200 Subject: Fixed songs, working with setting song_timer_reset: 0 --- src/map/skill.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/map/skill.c b/src/map/skill.c index 9046ff975..f3bcb85bf 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11458,16 +11458,15 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick return 0; if (!sc) return 0; - if (battle_config.song_timer_reset) { // Aegis like behaviour goes on skill_unit_onplace_timer - if (!sce) - sc_start4(ss,bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit); - else if (sce->val4 == 1) { - //Readjust timers since the effect will not last long. - sce->val4 = 0; - timer->delete(sce->timer, status->change_timer); - sce->timer = timer->add(tick+sg->limit, status->change_timer, bl->id, type); - } + if (!sce && !(!battle_config.song_timer_reset && sg->unit_id == UNT_APPLEIDUN)) // Apple of idun gets it from skill_unit_onplace_timer + sc_start4(ss,bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit); + else if (battle_config.song_timer_reset && sce->val4 == 1) { + //Readjust timers since the effect will not last long. + sce->val4 = 0; + timer->delete(sce->timer, status->change_timer); + sce->timer = timer->add(tick+sg->limit, status->change_timer, bl->id, type); } + break; case UNT_FOGWALL: @@ -11850,10 +11849,10 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 heal = ~heal + 1; clif->skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1); status->heal(bl, heal, 0, 0); - + if (!(battle_config.song_timer_reset) // songs don't reset prior timers - && !(sg->src_id == bl->id && !(tsc && tsc->data[SC_SOULLINK] && tsc->data[SC_SOULLINK]->val2 == SL_BARDDANCER)) // Don't affect itself - && (!(tsc->data[type]) || (tsc->data[type] && tsc->data[type]->val4 != 1))) // Check for 20 seconds song effect + && !(sg->src_id == bl->id && !(tsc && tsc->data[SC_SOULLINK] && tsc->data[SC_SOULLINK]->val2 == SL_BARDDANCER)) // Don't affect itself + && (!(tsc->data[type]) || (tsc->data[type] && tsc->data[type]->val4 != 1))) // Check for 20 seconds song effect sc_start4(ss,bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->interval + 100); break; -- cgit v1.2.3-60-g2f50