From fc47bdd30c4d195c34277636cbeab1b77d88c350 Mon Sep 17 00:00:00 2001 From: Inkfish Date: Sat, 24 Oct 2009 03:03:30 +0000 Subject: * 'OnTouch' script shouldn't trigger when you are invisible.(same as warps) * Fixed character doesn't stop walking when walking into OnTouch area of an NPC who doesn't have an OnTouch label. (bugreport:2700) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14095 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/npc.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/map/npc.c b/src/map/npc.c index 3380f2ace..9447478f2 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -776,6 +776,9 @@ int npc_touch_areanpc(struct map_session_data* sd, int m, int x, int y) if(sd->npc_id) return 1; + if (sd->sc.option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK)) + return 0; + for(i=0;isc.option&OPTION_INVISIBLE) { @@ -807,9 +810,6 @@ int npc_touch_areanpc(struct map_session_data* sd, int m, int x, int y) } switch(map[m].npc[i]->subtype) { case WARP: - // hidden chars cannot use warps -- is it the same for scripts too? - if (sd->sc.option&(OPTION_HIDE|OPTION_CLOAK|OPTION_CHASEWALK)) - break; pc_setpos(sd,map[m].npc[i]->u.warp.mapindex,map[m].npc[i]->u.warp.x,map[m].npc[i]->u.warp.y,0); break; case SCRIPT: @@ -824,10 +824,14 @@ int npc_touch_areanpc(struct map_session_data* sd, int m, int x, int y) if( npc_event(sd,name,0) > 0 ) {// failed to run OnTouch event, so just click the npc + struct unit_data *ud = unit_bl2ud(&sd->bl); + if( ud && ud->walkpath.path_pos < ud->walkpath.path_len ) + { // Since walktimer always == -1 at this time, we stop walking manually. [Inkfish] + clif_fixpos(&sd->bl); + ud->walkpath.path_pos = ud->walkpath.path_len; + } npc_click(sd,map[m].npc[i]); } - - pc_stop_walking(sd,1); //Make it stop walking! break; } } -- cgit v1.2.3-60-g2f50