diff options
author | Haruna <haru@dotalux.com> | 2014-12-27 00:52:08 +0100 |
---|---|---|
committer | Haruna <haru@dotalux.com> | 2014-12-27 00:52:08 +0100 |
commit | 73e97a7ef8bd7b63e82f7817f17426db8bfc8949 (patch) | |
tree | 23e3dba6e1c705e98e9e6e71a8af24fa44d1c707 /src/map | |
parent | c564291bf3f2666f709beeecad24de7d95fdf558 (diff) | |
parent | 42e9d0b55557a73b60dd3832ba6d75b3b28ff13a (diff) | |
download | hercules-73e97a7ef8bd7b63e82f7817f17426db8bfc8949.tar.gz hercules-73e97a7ef8bd7b63e82f7817f17426db8bfc8949.tar.bz2 hercules-73e97a7ef8bd7b63e82f7817f17426db8bfc8949.tar.xz hercules-73e97a7ef8bd7b63e82f7817f17426db8bfc8949.zip |
Merge pull request #421 from csnv/songredo
Songs aegis behavior updated. Bonus correction
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/skill.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index ebcb31680..6bfecf46f 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11067,7 +11067,7 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_ break; case BA_ASSASSINCROSS: if(sd) - val1 = (pc->checkskill(sd,BA_MUSICALLESSON) + 1) / 2; + val1 = pc->checkskill(sd,BA_MUSICALLESSON) / 2; #ifdef RENEWAL // This formula was taken from a RE calculator // and the changes published on irowiki @@ -11908,19 +11908,38 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 int heal; #ifdef RENEWAL struct mob_data *md = BL_CAST(BL_MOB, bl); - if( md && md->class_ == MOBID_EMPERIUM ) + 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)) + 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) + sc_start4(ss, bl, type, 100, sg->skill_lv, sg->val1, sg->val2, 0, sg->limit); } break; + case UNT_POEMBRAGI: + case UNT_WHISTLE: + case UNT_ASSASSINCROSS: + case UNT_HUMMING: + case UNT_DONTFORGETME: + case UNT_FORTUNEKISS: + case UNT_SERVICEFORYOU: + if (battle_config.song_timer_reset + || (!(battle_config.song_timer_reset) && tsc && tsc->data[type] && tsc->data[type]->val4 == 1) + || (sg->src_id == bl->id && !(tsc && tsc->data[SC_SOULLINK] && tsc->data[SC_SOULLINK]->val2 == SL_BARDDANCER)) + ) + break; + + sc_start4(ss, bl, type, 100, sg->skill_lv, sg->val1, sg->val2, 0, sg->limit); + break; case UNT_TATAMIGAESHI: case UNT_DEMONSTRATION: skill->attack(BF_WEAPON,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0); @@ -12439,7 +12458,9 @@ int skill_unit_onleft(uint16 skill_id, struct block_list *bl, int64 tick) { case DC_DONTFORGETME: case DC_FORTUNEKISS: case DC_SERVICEFORYOU: - if ((battle_config.song_timer_reset && sce) || (!battle_config.song_timer_reset && sce && sce->val4 != 1)) { + if ((battle_config.song_timer_reset && sce) // athena style + || (!battle_config.song_timer_reset && sce && sce->val4 != 1) + ) { timer->delete(sce->timer, status->change_timer); //NOTE: It'd be nice if we could get the skill_lv for a more accurate extra time, but alas... //not possible on our current implementation. |