From 5a735a416f33f355babfc150bcedcc220e684255 Mon Sep 17 00:00:00 2001 From: greenboxal2 Date: Sat, 21 Apr 2012 08:46:26 +0000 Subject: Fixed bugreport:5586 SC_CAMOUFLAGE can be removed by using RA_CAMOUFLAGE again, also portals won't warp players under this status. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15902 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/npc.c | 2 +- src/map/status.c | 1 + src/map/unit.c | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/map/npc.c b/src/map/npc.c index af0699294..661406c95 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -896,7 +896,7 @@ int npc_touch_areanpc(struct map_session_data* sd, int m, int x, int y) } switch(map[m].npc[i]->subtype) { case WARP: - if( pc_ishiding(sd) ) + if( pc_ishiding(sd) || (sd->sc.count && sd->sc.data[SC_CAMOUFLAGE]) ) break; // hidden chars cannot use warps pc_setpos(sd,map[m].npc[i]->u.warp.mapindex,map[m].npc[i]->u.warp.x,map[m].npc[i]->u.warp.y,CLR_OUTSIGHT); break; diff --git a/src/map/status.c b/src/map/status.c index a53a74e14..85dd32b0c 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -8708,6 +8708,7 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const case SC_CLOAKINGEXCEED: case SC__INVISIBILITY: sc->option &= ~OPTION_CLOAK; + case SC_CAMOUFLAGE: opt_flag|= 2; break; case SC_CHASEWALK: diff --git a/src/map/unit.c b/src/map/unit.c index bdabb0152..17ee9f481 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1290,7 +1290,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, short skill_num, sh } else if( sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&4) && skill_num != GC_CLOAKINGEXCEED ) { status_change_end(src,SC_CLOAKINGEXCEED, INVALID_TIMER); if (!src->prev) return 0; - } else + } else if( sc->data[SC_CAMOUFLAGE] && skill_num != RA_CAMOUFLAGE ) status_change_end(src,SC_CAMOUFLAGE,-1); if( sc->data[SC_CURSEDCIRCLE_ATKER] ) { @@ -1418,7 +1418,7 @@ int unit_skilluse_pos2( struct block_list *src, short skill_x, short skill_y, sh } else if (sc->data[SC_CLOAKINGEXCEED] && !(sc->data[SC_CLOAKINGEXCEED]->val4&4)) { status_change_end(src, SC_CLOAKINGEXCEED, INVALID_TIMER); if (!src->prev) return 0; - } else + } else if( sc->data[SC_CAMOUFLAGE] && skill_num != RA_CAMOUFLAGE ) status_change_end(src,SC_CAMOUFLAGE,-1); if( sc->data[SC_CURSEDCIRCLE_ATKER] ) { -- cgit v1.2.3-60-g2f50