diff options
author | csnv <ctt@csnv.es> | 2014-09-06 02:04:53 +0200 |
---|---|---|
committer | csnv <ctt@csnv.es> | 2014-09-06 02:07:15 +0200 |
commit | 41f28c0b9c6f1a285c0dba458e582209a1710fdb (patch) | |
tree | bd0c62910fd12d9396f55af4881d8336215d2ab3 /src/map/status.c | |
parent | 41e2a782a7c86140a2440b67258c428e09113195 (diff) | |
download | hercules-41f28c0b9c6f1a285c0dba458e582209a1710fdb.tar.gz hercules-41f28c0b9c6f1a285c0dba458e582209a1710fdb.tar.bz2 hercules-41f28c0b9c6f1a285c0dba458e582209a1710fdb.tar.xz hercules-41f28c0b9c6f1a285c0dba458e582209a1710fdb.zip |
Fixes CR_DEVOTION and MG_STONECURSE behaviour, hiding behaviour.
Fixed CR_DEVOTION to not be casted on other characters while the limit is already reached. Follow-up: e7be72538ea9c203bfd7a976d82e268e04303ca4
MG_STONECURSE now correctly displays effect when terminating SC_STONE. No longer works on hidden characters. Bug report http://hercules.ws/board/tracker/issue-7958-stone-curse/
Hiding no longer prevents skills from working if they were casted before hiding and are not intended to inflict damage (buff/de-buff skills). Tested on aegis.
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/src/map/status.c b/src/map/status.c index f20fc3fc1..f3e1baf3b 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1790,16 +1790,8 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin hide_flag = flag?OPTION_HIDE:(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK); //You cannot hide from ground skills. - if( skill->get_ele(skill_id,1) == ELE_EARTH ) //TODO: Need Skill Lv here :/ + if( skill->get_ele(skill_id,1) == ELE_EARTH && skill_id != MG_STONECURSE) hide_flag &= ~OPTION_HIDE; - else { - switch ( skill_id ) { - case MO_ABSORBSPIRITS: // it works when already casted and target suddenly hides. - case SA_DISPELL: - hide_flag &= ~OPTION_HIDE; - break; - } - } switch( target->type ) { case BL_PC: { @@ -1810,6 +1802,7 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, uin return 0; if( tsc ) { if (tsc->option&hide_flag && !is_boss && + !(flag&1 && skill->get_nk(skill_id)&NK_NO_DAMAGE) && // Buff/debuff skills that started casting before hiding still applies ((sd->special_state.perfect_hiding || !is_detect) || (tsc->data[SC_CLOAKINGEXCEED] && is_detect))) return 0; |