summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgreenboxal2 <greenboxal2@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-04-21 08:46:26 +0000
committergreenboxal2 <greenboxal2@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-04-21 08:46:26 +0000
commit5a735a416f33f355babfc150bcedcc220e684255 (patch)
tree0d2df8e8eba046bf84465fbdc4a89bc552a02cdc
parent4f68a6ef917b92df214a12dcef09cffdfa1e80ff (diff)
downloadhercules-5a735a416f33f355babfc150bcedcc220e684255.tar.gz
hercules-5a735a416f33f355babfc150bcedcc220e684255.tar.bz2
hercules-5a735a416f33f355babfc150bcedcc220e684255.tar.xz
hercules-5a735a416f33f355babfc150bcedcc220e684255.zip
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
-rw-r--r--src/map/npc.c2
-rw-r--r--src/map/status.c1
-rw-r--r--src/map/unit.c4
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] ) {