From 2195ff6430fb403f134ad42d995af5729e945c63 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 19 Jul 2006 15:24:40 +0000 Subject: - When enabling/disabling hiding/unhiding an npc, if the npc is a warp, it will use clearchar and spawn packets instead of changeoption. Thanks to Toms for the fix. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7746 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/npc.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'src/map/npc.c') diff --git a/src/map/npc.c b/src/map/npc.c index 5a76ef11b..6de42ce27 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -122,19 +122,24 @@ int npc_enable(const char *name,int flag) if (nd==NULL) return 0; - if (flag&1) { // —LŒø‰» + if (flag&1) nd->sc.option&=~OPTION_INVISIBLE; - clif_changeoption(&nd->bl); - }else if (flag&2){ + else if (flag&2) nd->sc.option&=~OPTION_HIDE; - clif_changeoption(&nd->bl); - }else if (flag&4){ + else if (flag&4) nd->sc.option|= OPTION_HIDE; - clif_changeoption(&nd->bl); - }else{ //Can't change the view_data to invisible class because the view_data for all npcs is shared! [Skotlex] + else //Can't change the view_data to invisible class because the view_data for all npcs is shared! [Skotlex] nd->sc.option|= OPTION_INVISIBLE; + + if (nd->class_ == WARP_CLASS) + { //Client won't display option changes for warp portals [Toms] + if (nd->sc.option&(OPTION_HIDE|OPTION_INVISIBLE)) + clif_clearchar(&nd->bl, 0); + else + clif_spawn(&nd->bl); + } else clif_changeoption(&nd->bl); - } + if(flag&3 && (nd->u.scr.xs > 0 || nd->u.scr.ys >0)) map_foreachinarea( npc_enable_sub,nd->bl.m,nd->bl.x-nd->u.scr.xs,nd->bl.y-nd->u.scr.ys,nd->bl.x+nd->u.scr.xs,nd->bl.y+nd->u.scr.ys,BL_PC,nd); -- cgit v1.2.3-60-g2f50