Fixed npc_enable_sub (#4717)
Fixed an issue introduced in 67a07fd4d6
Fixed #4716
Thanks to @SOSKaito
This commit is contained in:
@@ -220,7 +220,7 @@ int npc_enable_sub(struct block_list *bl, va_list ap)
|
||||
{
|
||||
TBL_PC *sd = (TBL_PC*)bl;
|
||||
|
||||
if (nd->sc.option&OPTION_INVISIBLE)
|
||||
if (nd->sc.option&(OPTION_INVISIBLE|OPTION_CLOAK))
|
||||
return 1;
|
||||
|
||||
switch (nd->subtype) {
|
||||
@@ -347,8 +347,21 @@ bool npc_enable_target(const char* name, uint32 char_id, int flag)
|
||||
map_foreachinmap(npc_cloaked_sub, nd->bl.m, BL_PC, nd->bl.id); // Because npc option has been updated we remove the npc id from sd->cloaked_npc
|
||||
}
|
||||
|
||||
if( flag&11 && (nd->u.scr.xs >= 0 || nd->u.scr.ys >= 0) )// check if player standing on a OnTouchArea
|
||||
map_foreachinallarea( 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 );
|
||||
if (flag&11) { // check if player standing on a OnTouchArea
|
||||
int xs = -1, ys = -1;
|
||||
switch (nd->subtype) {
|
||||
case NPCTYPE_SCRIPT:
|
||||
xs = nd->u.scr.xs;
|
||||
ys = nd->u.scr.ys;
|
||||
break;
|
||||
case NPCTYPE_WARP:
|
||||
xs = nd->u.warp.xs;
|
||||
ys = nd->u.warp.ys;
|
||||
break;
|
||||
}
|
||||
if (xs >= 0 || ys >= 0)
|
||||
map_foreachinallarea( npc_enable_sub, nd->bl.m, nd->bl.x-xs, nd->bl.y-ys, nd->bl.x+xs, nd->bl.y+ys, BL_PC, nd );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1183,7 +1196,7 @@ int npc_touch_areanpc2(struct mob_data *md)
|
||||
|
||||
for( i = 0; i < mapdata->npc_num_area; i++ )
|
||||
{
|
||||
if( mapdata->npc[i]->sc.option&OPTION_INVISIBLE )
|
||||
if( mapdata->npc[i]->sc.option&(OPTION_INVISIBLE|OPTION_CLOAK) )
|
||||
continue;
|
||||
|
||||
switch( mapdata->npc[i]->subtype )
|
||||
|
||||
Reference in New Issue
Block a user