From 67ccaac795f50e3727a995d6e33861287fc7365d Mon Sep 17 00:00:00 2001 From: csnv Date: Mon, 15 Sep 2014 11:58:41 +0200 Subject: Revamped song fix --- src/map/skill.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/map/skill.c b/src/map/skill.c index 269663d91..aa87d9f4d 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11470,9 +11470,7 @@ int skill_unit_onplace(struct skill_unit *src, struct block_list *bl, int64 tick if (!sce) sc_start4(ss,bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit); break; - case UNT_APPLEIDUN: // Apple of idun gets it from skill_unit_onplace_timer - if (!battle_config.song_timer_reset) - break; + case UNT_APPLEIDUN: case UNT_WHISTLE: case UNT_ASSASSINCROSS: case UNT_POEMBRAGI: @@ -11491,7 +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; @@ -11868,22 +11867,16 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 if( md && md->class_ == MOBID_EMPERIUM ) break; #endif - if( sg->src_id == bl->id && !(tsc && tsc->data[SC_SOULLINK] && tsc->data[SC_SOULLINK]->val2 == SL_BARDDANCER) ) - break; // affects self only when soullinked + if( sg->src_id == bl->id && !(tsc && tsc->data[SC_SOULLINK] && tsc->data[SC_SOULLINK]->val2 == SL_BARDDANCER) + || (!(battle_config.song_timer_reset) && tsc && tsc->data[type] && tsc->data[type]->val4 == 1)) + break; heal = skill->calc_heal(ss,bl,sg->skill_id, sg->skill_lv, true); if( tsc->data[SC_AKAITSUKI] && heal ) 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 - sc_start4(ss,bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->interval + 100); - - break; } - + break; case UNT_TATAMIGAESHI: case UNT_DEMONSTRATION: skill->attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); -- cgit v1.2.3-70-g09d2