private double score(Site rogue, Site monster) {
        if(inLoop.contains(rogue))
            return 1000 * (monster.manhattanTo(rogue) - 1);
        if(safeCorridorStarts.contains(rogue))
            return 500 * (monster.manhattanTo(rogue) - 1);
        if(viableCorridors.contains(rogue))
            return 250 * monster.manhattanTo(rogue);
        if(dungeon.isRoom(rogue) && !viableCorridors.contains(rogue))
            return Double.MIN_VALUE;
        if(dungeon.isRoom(rogue) && dungeon.isWall(rogue))
            return 0;
        if(dungeon.isRoom(rogue))
            return (monster.manhattanTo(rogue) - 1);

        return 0;     
    }