diff options
Diffstat (limited to 'src/map/skill.c')
-rw-r--r-- | src/map/skill.c | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/map/skill.c b/src/map/skill.c index dec212257..d3ddc5562 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -10465,26 +10465,25 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case UNT_EPICLESIS: if( bl->type == BL_PC && !battle_check_undead(tstatus->race, tstatus->def_ele) && tstatus->race != RC_DEMON ) { - int hp, sp; - switch( sg->skill_lv ) - { - case 1: case 2: hp = 3; sp = 2; break; - case 3: case 4: hp = 4; sp = 3; break; - case 5: default: hp = 5; sp = 4; break; + if( ++sg->val2 % 3 == 0 ) { + int hp, sp; + switch( sg->skill_lv ) + { + case 1: case 2: hp = 3; sp = 2; break; + case 3: case 4: hp = 4; sp = 3; break; + case 5: default: hp = 5; sp = 4; break; + } + hp = tstatus->max_hp * hp / 100; + sp = tstatus->max_sp * sp / 100; + status_heal(bl, hp, sp, 0); + if( tstatus->hp < tstatus->max_hp ) + clif_skill_nodamage(&src->bl, bl, AL_HEAL, hp, 1); + if( tstatus->sp < tstatus->max_sp ) + clif_skill_nodamage(&src->bl, bl, MG_SRECOVERY, sp, 1); + sc_start(bl, type, 100, sg->skill_lv, (sg->interval * 3) + 100); } - hp = tstatus->max_hp * hp / 100; - sp = tstatus->max_sp * sp / 100; - status_heal(bl, hp, sp, 0); - if( tstatus->hp < tstatus->max_hp ) - clif_skill_nodamage(&src->bl, bl, AL_HEAL, hp, 1); - if( tstatus->sp < tstatus->max_sp ) - clif_skill_nodamage(&src->bl, bl, MG_SRECOVERY, sp, 1); - sc_start(bl, type, 100, sg->skill_lv, sg->interval + 100); - sg->val2++; // Reveal hidden players every 5 seconds. - if( sg->val2 >= 5 ) - { - sg->val2 = 0; + if( sg->val2 % 5 == 0 ) { // TODO: check if other hidden status can be removed. status_change_end(bl,SC_HIDING,-1); status_change_end(bl,SC_CLOAKING,-1); |