Game_object *obj = get_item(parms[0]); Virtue_stone_object *vs = dynamic_cast<Virtue_stone_object *> (obj); if (vs)
ActorVector npcs; gwin->get_main_actor()->find_nearby_actors(npcs, -359, 12); for (ActorVector::const_iterator it = npcs.begin(); it != npcs.end();++it)
USECODE_INTRINSIC(recall_virtue_stone){	Game_object *obj = get_item(parms[0]);	Virtue_stone_object *vs = dynamic_cast<Virtue_stone_object *> (obj);	if (vs)		{					// Pick it up if necessary.		Game_object *owner = obj->get_outermost();		if (!npc_in_party(owner))			{		// Go through whole party.			obj->remove_this(1);			Usecode_value party = get_party();			int cnt = party.get_array_size();			int i;			for (i = 0; i < cnt; i++)				{				Game_object *npc = get_item(party.get_elem(i));				if (npc && npc->add(obj))					break;				}			if (i == cnt)	// Failed?  Force it on Avatar.				gwin->get_main_actor()->add(obj, 1);			}		Tile_coord t = vs->get_pos();		if (t.tx > 0 || t.ty > 0)			gwin->teleport_party(t);		}	return no_ret;}