From 9e8047ab29838858727f44b8460ebce359dafbb1 Mon Sep 17 00:00:00 2001 From: csnv Date: Wed, 24 Dec 2014 00:52:55 +0100 Subject: Songs aegis behavior updated. Bonus correction - Fixed bug 8412 http://hercules.ws/board/tracker/issue-8412-songs/ Now songs auto-refreshes every 3 seconds. - Musical Lesson bonus rounded down for BA_ASSASSINCROSS. --- db/pre-re/skill_unit_db.txt | 14 +++++++------- db/re/skill_unit_db.txt | 14 +++++++------- src/map/skill.c | 23 +++++++++++++++++++---- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/db/pre-re/skill_unit_db.txt b/db/pre-re/skill_unit_db.txt index 196a79d5b..b37ab23f5 100644 --- a/db/pre-re/skill_unit_db.txt +++ b/db/pre-re/skill_unit_db.txt @@ -67,15 +67,15 @@ 312,0xa4, , 4, 0, -1,party, 0x240 //BD_INTOABYSS 313,0xa5, , 4, 0, -1,party, 0x200 //BD_SIEGFRIED 317,0xa6, , 3, 0,3000,enemy, 0x400 //BA_DISSONANCE -319,0xa7, , 3, 0, -1,all, 0x440 //BA_WHISTLE -320,0xa8, , 3, 0, -1,all, 0x440 //BA_ASSASSINCROSS -321,0xa9, , 3, 0, -1,all, 0x440 //BA_POEMBRAGI +319,0xa7, , 3, 0,3000,all, 0xC40 //BA_WHISTLE +320,0xa8, , 3, 0,3000,all, 0xC40 //BA_ASSASSINCROSS +321,0xa9, , 3, 0,3000,all, 0xC40 //BA_POEMBRAGI 322,0xaa, , 3, 0,6000,all, 0xC40 //BA_APPLEIDUN 325,0xab, , 3, 0,3000,enemy, 0x100 //DC_UGLYDANCE -327,0xac, , 3, 0, -1,all, 0x140 //DC_HUMMING -328,0xad, , 3, 0, -1,enemy, 0x100 //DC_DONTFORGETME -329,0xae, , 3, 0, -1,all, 0x140 //DC_FORTUNEKISS -330,0xaf, , 3, 0, -1,all, 0x140 //DC_SERVICEFORYOU +327,0xac, , 3, 0,3000,all, 0x940 //DC_HUMMING +328,0xad, , 3, 0,3000,enemy, 0x900 //DC_DONTFORGETME +329,0xae, , 3, 0,3000,all, 0x940 //DC_FORTUNEKISS +330,0xaf, , 3, 0,3000,all, 0x940 //DC_SERVICEFORYOU 336,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARTNER 339,0x86, , -1, 0, 300,enemy, 0x000 //NPC_DARKGRANDCROSS 362,0xb4, , 0, 2, 300,all, 0x000 //HP_BASILICA diff --git a/db/re/skill_unit_db.txt b/db/re/skill_unit_db.txt index f0f359bcc..1d0395bfc 100644 --- a/db/re/skill_unit_db.txt +++ b/db/re/skill_unit_db.txt @@ -67,15 +67,15 @@ 312,0xa4, , 4, 0, -1,party, 0x240 //BD_INTOABYSS 313,0xa5, , 4, 0, -1,party, 0x200 //BD_SIEGFRIED 317,0xa6, , 3, 0,3000,enemy, 0x400 //BA_DISSONANCE -319,0xa7, , 3, 0, -1,all, 0x440 //BA_WHISTLE -320,0xa8, , 3, 0, -1,all, 0x440 //BA_ASSASSINCROSS -321,0xa9, , 3, 0, -1,all, 0x440 //BA_POEMBRAGI +319,0xa7, , 3, 0,3000,all, 0xC40 //BA_WHISTLE +320,0xa8, , 3, 0,3000,all, 0xC40 //BA_ASSASSINCROSS +321,0xa9, , 3, 0,3000,all, 0xC40 //BA_POEMBRAGI 322,0xaa, , 3, 0,6000,all, 0xC40 //BA_APPLEIDUN 325,0xab, , 3, 0,3000,enemy, 0x100 //DC_UGLYDANCE -327,0xac, , 3, 0, -1,all, 0x140 //DC_HUMMING -328,0xad, , 3, 0, -1,enemy, 0x100 //DC_DONTFORGETME -329,0xae, , 3, 0, -1,all, 0x140 //DC_FORTUNEKISS -330,0xaf, , 3, 0, -1,all, 0x140 //DC_SERVICEFORYOU +327,0xac, , 3, 0,3000,all, 0x940 //DC_HUMMING +328,0xad, , 3, 0,3000,enemy, 0x900 //DC_DONTFORGETME +329,0xae, , 3, 0,3000,all, 0x940 //DC_FORTUNEKISS +330,0xaf, , 3, 0,3000,all, 0x940 //DC_SERVICEFORYOU 336,0xb2, , 0,-1, -1,noone, 0x000 //WE_CALLPARTNER 339,0x86, , -1, 0, 300,enemy, 0x000 //NPC_DARKGRANDCROSS 362,0xb4, , 0, 2, 300,all, 0x000 //HP_BASILICA diff --git a/src/map/skill.c b/src/map/skill.c index 763af64b7..6e4d4f024 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11055,7 +11055,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 @@ -11896,18 +11896,31 @@ 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); } + 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) ) + break; + + sc_start4(ss, bl, type, 100, sg->skill_lv, sg->val1, sg->val2, 0, sg->limit); break; case UNT_TATAMIGAESHI: case UNT_DEMONSTRATION: @@ -12427,7 +12440,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. -- cgit v1.2.3-60-g2f50 From 42e9d0b55557a73b60dd3832ba6d75b3b28ff13a Mon Sep 17 00:00:00 2001 From: csnv Date: Fri, 26 Dec 2014 19:41:36 +0100 Subject: Fixes song affecting caster without link --- src/map/skill.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/map/skill.c b/src/map/skill.c index 6e4d4f024..c2022b0a6 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -11908,7 +11908,11 @@ 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) + 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: @@ -11917,9 +11921,11 @@ int skill_unit_onplace_timer(struct skill_unit *src, struct block_list *bl, int6 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) ) + || (!(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: -- cgit v1.2.3-60-g2f50