public boolean isAccessible(Site other) {
        //everything that is accessible, is adjacent
        if (!isAdjacent(other)){
        	//log.info("Is not adacent");
            return false;
        
        //check it is standable at the start
        } else if (!isWalkable()){
        	//log.info("Is not walkable");
            return false;
        
        //step down
        } else if (getZ() < other.getZ()){
        	//site above target must be empty
        	if (landscape.isSolid(other.getX(), other.getY(), other.getZ()-1)){
        		return false;
        	} else {
        		return true;
        	}
        //step up
        } else if (getZ() > other.getZ()){
        	//site above self must be empty
        	if (landscape.isSolid(getX(), getY(), getZ()-1)){
        		return false;
        	} else {
        		return true;
        	}                
        //same level
        } else {
            return true;
        }
    }