summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
authorMichieru <Michieru@users.noreply.github.com>2014-09-08 09:17:28 +0200
committerMichieru <Michieru@users.noreply.github.com>2014-09-08 09:17:28 +0200
commit3a79f91a7792425855b3cf0bd1fe66cbba506848 (patch)
tree21693d4eee2d1034864e6bb6acc7fb6b1f0bdc8a /src/map/status.c
parent1c71c00b96bfc6674a544e9f88e0ccc0dbe2aae4 (diff)
parent41f28c0b9c6f1a285c0dba458e582209a1710fdb (diff)
downloadhercules-3a79f91a7792425855b3cf0bd1fe66cbba506848.tar.gz
hercules-3a79f91a7792425855b3cf0bd1fe66cbba506848.tar.bz2
hercules-3a79f91a7792425855b3cf0bd1fe66cbba506848.tar.xz
hercules-3a79f91a7792425855b3cf0bd1fe66cbba506848.zip
Merge pull request #339 from csnv/skillchecks
Fixes CR_DEVOTION and MG_STONECURSE behaviour, hiding behaviour.
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 4b22251e6..1748b44cb 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;