diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/status.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/map/status.c b/src/map/status.c index f3b0f46c5..7a563acd2 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -954,6 +954,23 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int default: return 0; } } + + if (sc->data[SC_DANCING].timer != -1 && flag!=2) + { + if(sc->data[SC_LONGING].timer != -1) + { //Allow everything except dancing/re-dancing. [Skotlex] + if (skill_num == BD_ENCORE || + skill_get_inf2(skill_num)&(INF2_SONG_DANCE|INF2_ENSEMBLE_SKILL) + ) + return 0; + } else + if (skill_num != BD_ADAPTATION && skill_num != CG_LONGINGFREEDOM + && skill_num != BA_MUSICALSTRIKE && skill_num != DC_THROWARROW) + return 0; + if (sc->data[SC_DANCING].val1 == CG_HERMODE && skill_num == BD_ADAPTATION) + return 0; //Can't amp out of Wand of Hermode :/ [Skotlex] + } + if (skill_num && //Do not block item-casted skills. (src->type != BL_PC || ((TBL_PC*)src)->skillitem != skill_num) ) { //Skills blocked through status changes... @@ -975,21 +992,6 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int ) return 0; - if (flag!=2 && sc->data[SC_DANCING].timer != -1) - { - if(sc->data[SC_LONGING].timer != -1) - { //Allow everything except dancing/re-dancing. [Skotlex] - if (skill_num == BD_ENCORE || - skill_get_inf2(skill_num)&(INF2_SONG_DANCE|INF2_ENSEMBLE_SKILL) - ) - return 0; - } else - if (skill_num != BD_ADAPTATION && skill_num != CG_LONGINGFREEDOM - && skill_num != BA_MUSICALSTRIKE && skill_num != DC_THROWARROW) - return 0; - if (sc->data[SC_DANCING].val1 == CG_HERMODE && skill_num == BD_ADAPTATION) - return 0; //Can't amp out of Wand of Hermode :/ [Skotlex] - } } } |