summaryrefslogtreecommitdiff
path: root/src/map/skill.c
diff options
context:
space:
mode:
authorcsnv <ctt@csnv.es>2014-12-24 00:52:55 +0100
committercsnv <ctt@csnv.es>2014-12-24 00:52:55 +0100
commit9e8047ab29838858727f44b8460ebce359dafbb1 (patch)
tree8c8396c0bdd64300ebe8bd399a8f9cd5cfa165a7 /src/map/skill.c
parentc15b8c6274794b766847a6a9c1651caeaa1e25c5 (diff)
downloadhercules-9e8047ab29838858727f44b8460ebce359dafbb1.tar.gz
hercules-9e8047ab29838858727f44b8460ebce359dafbb1.tar.bz2
hercules-9e8047ab29838858727f44b8460ebce359dafbb1.tar.xz
hercules-9e8047ab29838858727f44b8460ebce359dafbb1.zip
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.
Diffstat (limited to 'src/map/skill.c')
-rw-r--r--src/map/skill.c23
1 files changed, 19 insertions, 4 deletions
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.