From 22caf8e742c63ddc695b2d50351afa1169503397 Mon Sep 17 00:00:00 2001 From: myrahz Date: Thu, 11 Dec 2025 15:37:29 +0000 Subject: [PATCH 1/3] Add clustering Add a method to detect clusters of tiles --- Radar.Pathfinding.cs | 107 ++- Radar.cs | 16 +- TargetDescription.cs | 1 + targets.json | 1926 ++++++++++++++++++++++-------------------- 4 files changed, 1122 insertions(+), 928 deletions(-) diff --git a/Radar.Pathfinding.cs b/Radar.Pathfinding.cs index 7fd8612..4cd4d81 100644 --- a/Radar.Pathfinding.cs +++ b/Radar.Pathfinding.cs @@ -182,6 +182,56 @@ private async Task FindPath(PathFinder pf, Vector2 point, Action> callback(path); } } + private List FilterByClusterSize(IReadOnlyCollection positions, int clusterSize) + { + if (clusterSize <= 1) return positions.ToList(); + + var validClusters = new HashSet(); + var positionSet = new HashSet(positions); + + foreach (var pos in positions) + { + if (validClusters.Contains(pos)) continue; + + // Flood fill to find connected component + var cluster = new HashSet(); + var queue = new Queue(); + queue.Enqueue(pos); + cluster.Add(pos); + + while (queue.Count > 0) + { + var current = queue.Dequeue(); + + // Check neighbors at TILE distance (23 grid units) + var neighbors = new[] + { + new Vector2i(current.X + TileToGridConversion, current.Y), + new Vector2i(current.X - TileToGridConversion, current.Y), + new Vector2i(current.X, current.Y + TileToGridConversion), + new Vector2i(current.X, current.Y - TileToGridConversion), + }; + + foreach (var neighbor in neighbors) + { + if (positionSet.Contains(neighbor) && !cluster.Contains(neighbor)) + { + cluster.Add(neighbor); + queue.Enqueue(neighbor); + } + } + } + + // If cluster is large enough, add all positions in it + if (cluster.Count >= clusterSize) + { + foreach (var p in cluster) + validClusters.Add(p); + } + } + + return validClusters.ToList(); + } private ConcurrentDictionary> GetTargets() { @@ -257,29 +307,40 @@ private IReadOnlyCollection GetLocationsFromTilePattern(string tilePat return _allTargetLocations.Where(x => regex.IsMatch(x.Key)).SelectMany(x => x.Value).ToList(); } - private TargetLocations ClusterTarget(TargetDescription target) - { - var expectedCount = target.ExpectedCount; - var targetName = target.Name; - var locations = ClusterTarget(targetName, expectedCount); - if (locations == null) return null; - return new TargetLocations - { - Locations = locations, - Target = target, - }; - } - - private Vector2[] ClusterTarget(string targetName, int expectedCount) - { - var tileList = GetLocationsFromTilePattern(targetName); - if (tileList is not { Count: > 0 }) - { - return null; - } - - var clusterIndexes = KMeans.Cluster(tileList.Select(x => new Vector2d(x.X, x.Y)).ToArray(), expectedCount); - var resultList = new List(); + private TargetLocations ClusterTarget(TargetDescription target) + { + var expectedCount = target.ExpectedCount; + var targetName = target.Name; + var clusterSize = target.ClusterSize; + var locations = ClusterTarget(targetName, expectedCount, clusterSize); + if (locations == null) return null; + return new TargetLocations + { + Locations = locations, + Target = target, + }; + } + + private Vector2[] ClusterTarget(string targetName, int expectedCount, int clusterSize = 1) // ADD clusterSize parameter + { + var tileList = GetLocationsFromTilePattern(targetName); + if (tileList is not { Count: > 0 }) + { + return null; + } + + // ADD THIS: Filter by cluster size before KMeans clustering + if (clusterSize > 1) + { + tileList = FilterByClusterSize(tileList, clusterSize); + if (tileList.Count == 0) + { + return null; + } + } + + var clusterIndexes = KMeans.Cluster(tileList.Select(x => new Vector2d(x.X, x.Y)).ToArray(), expectedCount); + var resultList = new List(); foreach (var tileGroup in tileList.Zip(clusterIndexes).GroupBy(x => x.Second)) { var v = new Vector2(); diff --git a/Radar.cs b/Radar.cs index 196f37d..a0d86ef 100644 --- a/Radar.cs +++ b/Radar.cs @@ -52,8 +52,8 @@ public override bool Initialise() GameController.PluginBridge.SaveMethod("Radar.LookForRoute", (Vector2 target, Action> callback, CancellationToken cancellationToken) => AddRoute(target, null, callback, cancellationToken)); - GameController.PluginBridge.SaveMethod("Radar.ClusterTarget", - (string targetName, int expectedCount) => ClusterTarget(targetName, expectedCount)); + GameController.PluginBridge.SaveMethod("Radar.ClusterTarget", + (string targetName, int expectedCount) => ClusterTarget(targetName, expectedCount, 1)); Input.RegisterKey(Settings.ManuallyDumpInstance.Value); Settings.ManuallyDumpInstance.OnValueChanged += () => { Input.RegisterKey(Settings.ManuallyDumpInstance.Value); }; @@ -67,7 +67,7 @@ public override void AreaChange(AreaInstance area) { _targetDescriptionsInArea = GetTargetDescriptionsInArea().DistinctBy(x => x.Name).ToDictionary(x => x.Name); _currentZoneTargetEntityPaths = _targetDescriptionsInArea.Values.Where(x => x.TargetType == TargetType.Entity).DistinctBy(x => x.Name).Select(x=>(x.Name.ToLikeRegex(), x)).ToList(); - _terrainMetadata = GameController.IngameState.Data.Terrain; + _terrainMetadata = GameController.IngameState.Data.DataStruct.Terrain; _heightData = GameController.IngameState.Data.RawTerrainHeightData; _allTargetLocations = GetTargets(); _locationsByPosition = new ConcurrentDictionary>(_allTargetLocations @@ -157,6 +157,13 @@ public override void EntityAdded(Entity entity) _allTargetLocations.AddOrUpdate(targetDescription.Name, _ => [truncatedPos], // ReSharper disable once AssignmentInConditionalExpression (_, l) => (alreadyContains = l.Contains(truncatedPos)) ? l : [..l, truncatedPos]); + if (targetDescription.ClusterSize > 1) + { + var currentLocations = _allTargetLocations[targetDescription.Name]; + var filteredLocations = FilterByClusterSize(currentLocations, targetDescription.ClusterSize); + _allTargetLocations[targetDescription.Name] = filteredLocations; + alreadyContains = !filteredLocations.Contains(truncatedPos); + } _locationsByPosition.AddOrUpdate(truncatedPos, _ => [targetDescription.Name], (_, l) => l.Contains(targetDescription.Name) ? l : [..l, targetDescription.Name]); if (!alreadyContains) @@ -173,7 +180,8 @@ public override void EntityAdded(Entity entity) } } } - + + private Vector2 GetPlayerPosition() { var player = GameController.Game.IngameState.Data.LocalPlayer; diff --git a/TargetDescription.cs b/TargetDescription.cs index 7220f96..1d44ad0 100644 --- a/TargetDescription.cs +++ b/TargetDescription.cs @@ -5,6 +5,7 @@ public record TargetDescription public string Name { get; set; } = ""; public string DisplayName { get; set; } public int ExpectedCount { get; set; } = 1; + public int ClusterSize { get; set; } = 1; public TargetType TargetType { get; set; } public string Color { get; set; } } \ No newline at end of file diff --git a/targets.json b/targets.json index a5f4612..f57f651 100644 --- a/targets.json +++ b/targets.json @@ -1,1424 +1,1515 @@ { - "G1_1": [ + "G2_6": [ { - "Name": "EncampmentFront", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/TitanQuest01.tdt", "ExpectedCount": 1, - "DisplayName": "Clearfell Encampment" - } - ], - "G1_2": [ + "DisplayName": "Ancient Seal" + }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/Clearfell_OldForest_Transition_01.tdt", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/titan_valley_boss_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Grelwood" + "DisplayName": "Medallion" }, { - "Name": "FallenTreeSlashTransition", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/TitanQuest03.tdt", "ExpectedCount": 1, - "DisplayName": "Mud Burrow" + "DisplayName": "Ancient Seal" }, - { - "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeSlash_in.tdt", - "ExpectedCount": 1, - "DisplayName": "Mud Burrow" - }, - { - "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeSlash_out.tdt", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/CartEntrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Mud Burrow" + "DisplayName": "The Ardura Caravan" }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeWoods_in.tdt", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/GrottoExit01.tdt", "ExpectedCount": 1, - "DisplayName": "Mud Burrow" + "DisplayName": "The Titan Grotto" }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeWoods_out.tdt", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/TitanQuest02.tdt", "ExpectedCount": 1, - "DisplayName": "Mud Burrow" - }, + "DisplayName": "Ancient Seal" + } + ], + "G2_3": [ { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_01.tdt", + "Name": "Metadata/Terrain/Desert/AreaTransitions/Ruin_PassageStair_01.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" + "DisplayName": "Traitor's Passage" }, { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_02.tdt", + "Name": "Metadata/Terrain/Desert/Gates/Features/boss_arena.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" + "DisplayName": "Infested Tower" + } + ], + "P2_3": [ + { + "Name": "Metadata/Terrain/Gallows/Act4_Interlude/Part2/P2_3/Tiles/SealPillar_01.tdt", + "ExpectedCount": 8, + "DisplayName": "2 Seal locations - Loot" }, { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_03.tdt", + "Name": "Metadata/Terrain/Interlude/Part2/P2_3/BossRoomTile.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" - }, + "DisplayName": "Boss" + } + ], + "G1_14": [ { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_04.tdt", + "Name": "Metadata/Terrain/Woods/Manor/CourtyardFeatures/Gallows_02.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" + "DisplayName": "Gallows (Support Gem Level 1)" }, { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_05.tdt", + "Name": "Metadata/Terrain/Woods/Village/Huts/VillageArena_02_courtyard_side.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" + "DisplayName": "Entrance" }, { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_06.tdt", + "Name": "Metadata/Terrain/Woods/Manor/CourtyardFeatures/Manor_GrandEntrance_Transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" - }, + "DisplayName": "Oghams Manor" + } + ], + "G4_11_2": [ { - "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_07.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/ArenaCombined/ArenaCombined_01.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" + "DisplayName": "Boss" }, { - "Name": "hagwitch", + "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/Whare_fill_02.tdt", "ExpectedCount": 1, - "DisplayName": "Beira of the Rotten (10% Cold Res)" + "DisplayName": "Rare chests" }, { - "Name": "special", + "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/FirePitMetaTile.tdt", "ExpectedCount": 1, - "DisplayName": "Clearfell Encampment" + "DisplayName": "less Rare chests " } ], - "G1_3": [ + "G4_3_1": [ { - "Name": "Metadata/Terrain/Woods/Mudburrow/Path/path_St_Spawner_v02_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Features/TropicalCoastCliff_CrabCave_02.tdt", "ExpectedCount": 1, - "DisplayName": "Devourer Entrance" - } - ], - "G1_4": [ + "DisplayName": "Rare (Support Gem Level 4)" + }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/OldForestToGrimTangle_02_metatile.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/TropicalCliff/TropicalCliff_Cv_Cove_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Grim Tangle" + "DisplayName": "Singing Caverns" + }, { + "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/TropicalCliff/TropicalCliff_Cv_Cove_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Singing Caverns" }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/OldForest_Clearfell_transition_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Features/TropicalCoastCliff_CrabCave_01.tdt", "ExpectedCount": 1, - "DisplayName": "Clearfell" + "DisplayName": "Singing Caverns" }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/redvale_transition_02_oldforest.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Features/Shark_Arena_02.tdt", "ExpectedCount": 1, - "DisplayName": "The Red Vale" + "DisplayName": "Boss - Shark" }, { - "Name": "Metadata/Terrain/Woods/GrimTangle/areatransitions/GrimtangleTransitionDown_02.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Ground/TropicalGround_10_blank.tdt", "ExpectedCount": 1, - "DisplayName": "The Corpse Tree (waypoint)" - }, + "DisplayName": "Map piece" + } + ], + "G3_8": [ { - "Name": "Metadata/Terrain/Woods/OldForestWoods/Feature/BurnTheWitch_01.tdt", + "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCityPresent/jungle_pyramid_entrance_atziri_03.tdt", "ExpectedCount": 1, - "DisplayName": "Areagne's Hut (Support Gem Level 1 and Flasks)" - }, - { - "Name": "BurnTheWitch", + "DisplayName": "Apex of Filth" + }, + { + "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCityPresent/SunkenCityToTown_01.tdt", "ExpectedCount": 1, - "DisplayName": "Areagne's Hut (Support Gem Level 1 and Flasks)" + "DisplayName": "Ziggurat Encampment" }, { - "Name": "Metadata/Terrain/Woods/OldForestWoods/Feature/PlantBoss_01.tdt", + "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCityPresent/jungle_pyramid_entrance_vault_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Moving Bramble (Skill Gem Level 2)" + "DisplayName": "The Molten Vault" } ], - "G1_5": [ + "G2_5_1": [ { - "Name": "Metadata/Terrain/Woods/AreaTransitions/redvale_transition_02_redvale.tdt", + "Name": "Metadata/Terrain/Desert/Badlands/Features/Badlands_Entrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Grelwood" - } - ], - "G1_6": [ + "DisplayName": "The Ardura Caravan" + }, { - "Name": "Metadata/Terrain/Woods/GrimTangle/areatransitions/GrimtangleTransitionUp_02.tdt", + "Name": "Metadata/Terrain/Desert/Badlands/Features/Landmark_feature_02.tdt", "ExpectedCount": 1, - "DisplayName": "Cemetery of the Eternals" + "DisplayName": "Fossilised Memorial (Support Gem Level 2))" }, { - "Name": "Metadata/Terrain/Woods/GrimTangle/areatransitions/IntroArea.tdt", + "Name": "Metadata/Terrain/Desert/Badlands/Features/AreaTransition_BadlandsToPits_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Grelwood" + "DisplayName": "The Bone Pits" }, { - "Name": "Metadata/Terrain/Woods/GrimTangle/feature/BossArena_01.tdt", + "Name": "Metadata/Terrain/Desert/Badlands/Features/AbyssHole.tdt", "ExpectedCount": 1, - "DisplayName": "Den of the Druid (Support Gem Level 1)" + "DisplayName": "Lightless Passage" } ], - "G1_7": [ + "P2_5": [ { - "Name": "Metadata/Terrain/Woods/Graveyard/Feature/GraveyardArena.tdt", + "Name": "Metadata/Terrain/Interlude/Part2/Gates/AreaTransitions/GatesEnd_01.tdt", "ExpectedCount": 1, - "DisplayName": "Arena / Hunting Grounds" - }, + "DisplayName": "Gates end" + } + ], + "G2_4_1": [ { - "Name": "Metadata/Terrain/Woods/Graveyard/Feature/GraveyardToGrimTangle_transition_01.tdt", + "Name": "BuriedDoor", "ExpectedCount": 1, - "DisplayName": "The Grim Tangle" + "DisplayName": "GOOD VAULT" }, { - "Name": "accessiblefence", - "ExpectedCount": 2, - "DisplayName": "Random ring 1 of 2 locations" + "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Keth_SinkholeTransition_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Looted Vault" }, { - "Name": "Metadata/Terrain/Woods/Graveyard/Feature/mausoleum_01.tdt", + "Name": "boss_bridge", "ExpectedCount": 1, - "DisplayName": "Mausoleum of the Praetor" + "DisplayName": "The Lost City" }, { - "Name": "Metadata/Terrain/Woods/Graveyard/Feature/tomb_01.tdt", + "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Keth_Stairs_RuinEntrance.tdt", "ExpectedCount": 1, - "DisplayName": "Tomb of the Consort" - } - ], - "G1_8": [ + "DisplayName": "The Lost City" + }, { - "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Feature/MausoleumBoss_ArenaFloor.tdt", + "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Cityroof_Entrance.tdt", "ExpectedCount": 1, - "DisplayName": "Draven" + "DisplayName": "The Ardura Caravan" }, { - "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Transitions/Mausoleum_SecretEntrance_01.tdt", + "Name": "Metadata/Terrain/Desert/BuriedCity/Features/QueenKabalaRoom_01_meta01.tdt", "ExpectedCount": 1, - "DisplayName": "Forgotten Riches" + "DisplayName": "Kabala (+2 Passive)" }, { - "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Transitions/Transition_Mausoleum_to_Graveyard_01.tdt", + "Name": "transition", "ExpectedCount": 1, - "DisplayName": "Cemetery of the Eternals" + "DisplayName": "Looted vault" }, { - "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Transitions/Transition_Tomb_to_Graveyard_01.tdt", + "Name": "Metadata/Terrain/Desert/BuriedCity/Citywall_0/StMM_Door_01.tdt", "ExpectedCount": 1, - "DisplayName": "Unknown 2" + "DisplayName": "GOOD VAULT" + }, + { + "Name": "BuriedDoor", + "DisplayName": "GOOD VAULT" + }, + { + "Name": "Metadata/Terrain/Desert/BuriedCity/Citywall_0/StMM_Door_01.tdt", + "DisplayName": "GOOD VAULT" } ], - "G1_9": [ + "G3_17": [ { - "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Feature/TombBoss_ArenaFloor.tdt", + "Name": "Metadata/Terrain/Dungeon/DoryanisSanctum/Features/Doryani_Arena_01.tdt", "ExpectedCount": 1, - "DisplayName": "Asinia" + "DisplayName": "Arena" }, { - "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Feature/Tomb_Landmark_01.tdt", + "Name": "Metadata/Terrain/Jungle/AreaTransitions/DoryanisSanctumEntranceInt_01_01.tdt", "ExpectedCount": 1, - "DisplayName": "Embattled Trove (Support Gem Level 1)" + "DisplayName": "Aggorat" } ], - "G1_11": [ - { - "Name": "GrassHole", - "ExpectedCount": 2, - "DisplayName": "Dryadic Ritual (Support gem)" - }, + "G4_7": [ { - "Name": "Metadata/Terrain/Woods/AreaTransitions/Bramble_Cnr_transition_01.tdt", - "ExpectedCount": 2, - "DisplayName": "Ogham Farmlands Or Deadend" + "Name": "Metadata/Terrain/Islands/Tiles/Island/ShrikeIsland/ShrikeIslandArena.tdt", + "ExpectedCount": 1, + "DisplayName": "Arena" }, { - "Name": "Metadata/Terrain/Woods/AreaTransitions/CanopyRoadTransition_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Thickwall/Island/Birdnest_Cc_01.tdt", "ExpectedCount": 1, - "DisplayName": "Freythorn" - }, + "DisplayName": "Quest - Map piece" + } + ], + "G3_7": [ { - "Name": "Metadata/Terrain/Woods/AreaTransitions/CliffRoad_Cnr_transition_01.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/Features/BurningWitchArena.tdt", "ExpectedCount": 1, - "DisplayName": "Cemetery of the Eternals" + "DisplayName": "Ignagduk, The Bog Witch (+30 Spirit)" }, { - "Name": "Metadata/Terrain/Woods/Features_Cairns/CairnBrecon.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/AreaTransition/EntranceBog_01.tdt", "ExpectedCount": 1, - "DisplayName": "Crowbell Start (+2 Passive)" - }, + "DisplayName": "Infested Barrens" + } + ], + "MapBluff": [ { - "Name": "Metadata/Terrain/Woods/Features_Cairns/DolmenDeAzutan_03.tdt", + "Name": "Metadata/Terrain/Maps/Bluff/Tiles/Feature/Beacon_01.tdt", "ExpectedCount": 1, - "DisplayName": "Crowbell Arena (+2 Passive)" + "DisplayName": "Beacon" + } + ], + "G2_12_1": [ + { + "Name": "Metadata/Terrain/Desert/FarudinCarts/cart_walkway_02.tdt", + "ExpectedCount": 2, + "DisplayName": "Dreadnought Vanguard" }, { - "Name": "Metadata/Terrain/Woods/HuntingGrounds/RitualClearing01.tdt", + "Name": "locustmaster_cart", "ExpectedCount": 1, - "DisplayName": "Ritual Site (Level 4 Skill Gem)" + "DisplayName": "Near real Dreadnought Vanguard" } ], - "G1_12": [ + "G3_9": [ { - "Name": "Metadata/Terrain/Woods/Canopy/Features/CanopyArena.tdt", + "Name": "Metadata/Terrain/Dungeon/TreasureVault/BossChannel_02.tdt", "ExpectedCount": 1, - "DisplayName": "The King in the Mists (30 Spirit + Spirit Gem Level 4)" + "DisplayName": "Mektul, The Forgemaster (Reforging Bench)" }, { - "Name": "Metadata/Terrain/Woods/Canopy/Features/CanopySpireTransition_01.tdt", + "Name": "Metadata/Terrain/Jungle/TreasureVault/BrutalistThickwall/Brutal_Entrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Hunting Grounds" + "DisplayName": "The Drowned City" } ], - "G1_13_1": [ + "G4_5_1": [ { - "Name": "Metadata/Terrain/Woods/AreaTransitions/cliff_gate_transition_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_chapel_01.tdt", "ExpectedCount": 1, - "DisplayName": "Hunting Grounds" + "DisplayName": "Flask buff - Need key" }, { - "Name": "Metadata/Terrain/Woods/Village/RoadFields/Bosstile_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/prison_armoury_01.tdt", "ExpectedCount": 1, - "DisplayName": "Crop Circle (Skill Gem Level 4)" + "DisplayName": "Armoury (weapon chests)" }, { - "Name": "Metadata/Terrain/Woods/Village/RoadFields/Feature/RoadVillage_Areatransition.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_entrance_down_v01_01.tdt", "ExpectedCount": 1, - "DisplayName": "Ogham Village" + "DisplayName": "Dungeon entrance down" }, { - "Name": "Metadata/Terrain/Woods/Village/RoadFields/Feature/YurtUna_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Una's Lute (+2 Passive)" + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Prison_Forced_Blank_01.tdt", + "ExpectedCount": 2, + "DisplayName": "Strongbox or monster gauntlet" } ], - "G1_13_2": [ + "G3_4": [ { - "Name": "Metadata/Terrain/Woods/Village/Blacksmith_Large.tdt", - "ExpectedCount": 1, - "DisplayName": "Renly's Tools (Salvaging Bench)" + "Name": "Metadata/Terrain/Dungeon/NextFeatures/dungeon_altar_v01_01.tdt", + "ExpectedCount": 2, + "DisplayName": "Quest close - passive effects" }, { - "Name": "Metadata/Terrain/Woods/Village/Huts/VillageArena_02.tdt", + "Name": "Metadata/Chests/QuestChests/SnakePit/SnakeLadyPotionChest", "ExpectedCount": 1, - "DisplayName": "Executioner's Block" + "DisplayName": "Venom Vial (Pick Bonus)", + "TargetType": "Entity" }, { - "Name": "Metadata/Terrain/Woods/Village/RoadFields/Feature/RoadVillage_Areatransition_village_side.tdt", + "Name": "Metadata/Terrain/Jungle/AreaTransitions/SnakePit_to_JungleDepths.tdt", "ExpectedCount": 1, - "DisplayName": "Ogham Farmlands" + "DisplayName": "Jungle Ruins" } ], - "G1_14": [ + "G4_1_1": [ { - "Name": "Metadata/Terrain/Woods/Manor/CourtyardFeatures/Gallows_02.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/RhoaCamp_01.tdt", "ExpectedCount": 1, - "DisplayName": "Gallows (Support Gem Level 1)" + "DisplayName": "Rhoa - No reward?" }, { - "Name": "Metadata/Terrain/Woods/Manor/CourtyardFeatures/Manor_GrandEntrance_Transition_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/SulphurRockVein_01.tdt", "ExpectedCount": 1, - "DisplayName": "Oghams Manor" + "DisplayName": "Large pack + MS Buff" }, { - "Name": "Metadata/Terrain/Woods/Village/Huts/VillageArena_02_courtyard_side.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/UnwalkableCliff/IsleOfKin/UnwalkableCliff_to_Ocean_CvSt_01.tdt", "ExpectedCount": 1, - "DisplayName": "Entrance" - } - ], - "G1_15": [ + "DisplayName": "Quest - Treasure map?" + }, { - "Name": "Metadata/Terrain/Woods/Manor/Features/ArenaTop_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/Goblins/Features/GoblinMinesEntrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Throne of the Wolf" + "DisplayName": "Volcanic Warrens" }, { - "Name": "Metadata/Terrain/Woods/Manor/Features/Chapel_boss_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/BeastCamp_01.tdt", "ExpectedCount": 1, - "DisplayName": "Candlemass (+20 Max Life)" + "DisplayName": "Support Gem Level 4" }, { - "Name": "Metadata/Terrain/Woods/Manor/Interior/Features/Manor_Entrance_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/FailedDelveHub_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Manor Ramparts" + "DisplayName": "Lesser jewellers orb" }, { - "Name": "Metadata/Terrain/Woods/Manor/Interior/Features/ThickWall_AreaTransition_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/RhoaCamp_02.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs Up" + "DisplayName": "Rhoa - No reward?" }, { - "Name": "Metadata/Terrain/Woods/Manor/Interior/Features/ThickWall_StairsDown_Cc_01.tdt", - "ExpectedCount": 2, - "DisplayName": "Stairs Down" + "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/Goblins/Features/GoblinTownArena_01.tdt", + "ExpectedCount": 1, + "DisplayName": "2 Passives" } ], - "G2_1": [ + "G2_4_2": [ { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/DunePlatform/Dune_Platform_Feature_01.tdt", + "Name": "diagonal_trim", "ExpectedCount": 1, - "DisplayName": "Raiders Cliffs" + "DisplayName": "Golden Tomb (Spirit Gem Level 7)" + }, + { + "Name": "Metadata/Terrain/Desert/Maraketh/Features/KethEntrance_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Keth" + }, + { + "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_StairsDown_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Buried Shrines" } ], - "G2_2": [ + "G2_4_3": [ { - "Name": "Metadata/Terrain/Desert/CavePath/Features/Landmark_feature_01.tdt", + "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_BossTransition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Bell Chest (Skill Gem Level 6)" + "DisplayName": "The Heart of Keth" }, { - "Name": "Metadata/Terrain/Desert/CavePath/Features/Thickwall_Cave_Entrance.tdt", + "Name": "Metadata/Terrain/Desert/Maraketh/Floor/Floortrim_BossMedallion_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Halani Gates" + "DisplayName": "Elemental Offering (Res Ring)" }, { - "Name": "Metadata/Terrain/Desert/CavePath/Features/cave_entrance_01.tdt", + "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_StairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Ardura Caravan" + "DisplayName": "The Lost City" }, { - "Name": "Metadata/Terrain/Desert/Maraketh/TraitorsPassage/TraitorsPassage_Arena_01.tdt", + "Name": "Metadata/Terrain/Desert/Maraketh/Floor/ThickWall_TransitionWide_St_01.tdt", "ExpectedCount": 1, - "DisplayName": "Prison of the Disgraced (Djinn Barya)" + "DisplayName": "Buried Shrines" + }, + { + "Name": "Metadata/Terrain/Desert/Maraketh/Arena/Thickwall_GoddessStatue_01.tdt", + "ExpectedCount": 1, + "DisplayName": "The Water Goddess" + }, + { + "Name": "Metadata/Terrain/Desert/Maraketh/Arena/CentrePattern_01.tdt", + "ExpectedCount": 1, + "DisplayName": "The Vestibule" } ], - "G2_3": [ + "G3_3": [ { - "Name": "Metadata/Terrain/Desert/AreaTransitions/Ruin_PassageStair_01.tdt", + "Name": "kuamshrine", "ExpectedCount": 1, - "DisplayName": "Traitor's Passage" + "DisplayName": "Shrine (BELT REWARD)" + }, + { + "Name": "Metadata/Terrain/Jungle/JungleExterior/RuinedThinwall/JungleDepths_Cv_FootwallEnd_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Troubled Camp(ARMOUR VENDOR)" }, { - "Name": "Metadata/Terrain/Desert/Gates/Features/boss_arena.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleDepths_to_SnakePit.tdt", "ExpectedCount": 1, - "DisplayName": "Infested Tower" - } - ], - "G2_4_1": [ + "DisplayName": "The Venom Crypts" + }, { - "Name": "BuriedDoor", + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleDepths_to_Town.tdt", "ExpectedCount": 1, - "DisplayName": "GOOD VAULT" + "DisplayName": "Ziggurat Encampment" }, { - "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Cityroof_Entrance.tdt", + "Name": "Metadata/Monsters/Quadrilla/Objects/BossRoomMinimapIcon", "ExpectedCount": 1, - "DisplayName": "The Ardura Caravan" + "DisplayName": "Mighty Silverfist (+2 Passive)", + "TargetType": "Entity" }, { - "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Keth_SinkholeTransition_01.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/RuinedThinwall/RuinedThinwall_Tri_06.tdt", "ExpectedCount": 1, - "DisplayName": "Looted Vault" + "DisplayName": "Monkeee (Passive)" }, { - "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Keth_Stairs_RuinEntrance.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleToWaterways_01_reverse.tdt", "ExpectedCount": 1, - "DisplayName": "The Lost City" + "DisplayName": "Infested Barrens" }, { - "Name": "Metadata/Terrain/Desert/BuriedCity/Features/QueenKabalaRoom_01_meta01.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/StMW_KuamShrine_02.tdt", "ExpectedCount": 1, - "DisplayName": "Kabala (+2 Passive)" + "DisplayName": "Shrine (BELT REWARD)" }, { - "Name": "boss_bridge", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/StMW_KuamShrine_03.tdt", "ExpectedCount": 1, - "DisplayName": "The Lost City" + "DisplayName": "Shrine (BELT REWARD)" }, { - "Name": "transition", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/StMW_KuamShrine_01.tdt", "ExpectedCount": 1, - "DisplayName": "Looted vault" + "DisplayName": "Shrine (BELT REWARD)" } ], - "G2_4_2": [ + "Abyss_Intro": [ { - "Name": "Metadata/Terrain/Desert/Maraketh/Features/KethEntrance_01.tdt", + "Name": "Metadata/Terrain/Gallows/Leagues/Abyss/AbyssHub/Tiles/AbyssPitFeature_01.tdt", "ExpectedCount": 1, - "DisplayName": "Keth" + "DisplayName": "Rare Fight" + } + ], + "G3_5": [ + { + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/ChimeralJungle_to_ChaosTemple.tdt", + "ExpectedCount": 1, + "DisplayName": "The Temple of Chaos" }, { - "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_StairsDown_01.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/ChimeralWetlands_to_JungleDepths.tdt", "ExpectedCount": 1, - "DisplayName": "Buried Shrines" + "DisplayName": "Infested Barrens" }, { - "Name": "diagonal_trim", + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/Observatory_Entrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Golden Tomb (Spirit Gem Level 7)" + "DisplayName": "Deadly Nest" + }, + { + "Name": "Metadata/Terrain/Jungle/JungleExterior/Fills/ChimeralFillRuins20.tdt", + "ExpectedCount": 1, + "DisplayName": "Rare Chest (contains rare helm)" } ], - "G2_4_3": [ + "G2_9_1": [ { - "Name": "Metadata/Terrain/Desert/Maraketh/Arena/CentrePattern_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Lower/Pillar_TinyBalcony_feature_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Vestibule" + "DisplayName": "4 Rare chests and Support Gem Level 2" }, { - "Name": "Metadata/Terrain/Desert/Maraketh/Arena/Thickwall_GoddessStatue_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Upper/PillarUpper_StairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Water Goddess" + "DisplayName": "The Spires of Deshar" }, { - "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_BossTransition_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Lower/Wide/PillarLowerWide_StairsDown_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Heart of Keth" - }, + "DisplayName": "Deshar" + } + ], + "G1_11": [ { - "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_StairsUp_01.tdt", + "Name": "Metadata/Terrain/Woods/AreaTransitions/CliffRoad_Cnr_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Lost City" + "DisplayName": "Cemetery of the Eternals" }, { - "Name": "Metadata/Terrain/Desert/Maraketh/Floor/Floortrim_BossMedallion_01.tdt", + "Name": "Metadata/Terrain/Woods/Features_Cairns/DolmenDeAzutan_03.tdt", "ExpectedCount": 1, - "DisplayName": "Elemental Offering (Res Ring)" + "DisplayName": "Crowbell Arena (+2 Passive)" }, { - "Name": "Metadata/Terrain/Desert/Maraketh/Floor/ThickWall_TransitionWide_St_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Buried Shrines" - } - ], - "G2_5_1": [ + "Name": "Metadata/Terrain/Woods/AreaTransitions/Bramble_Cnr_transition_01.tdt", + "ExpectedCount": 2, + "DisplayName": "Ogham Farmlands Or Deadend" + }, { - "Name": "Metadata/Terrain/Desert/Badlands/Features/AreaTransition_BadlandsToPits_01.tdt", + "Name": "Metadata/Terrain/Woods/AreaTransitions/CanopyRoadTransition_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Bone Pits" + "DisplayName": "Freythorn" }, { - "Name": "Metadata/Terrain/Desert/Badlands/Features/Badlands_Entrance_01.tdt", - "ExpectedCount": 1, - "DisplayName": "The Ardura Caravan" + "Name": "GrassHole", + "ExpectedCount": 2, + "DisplayName": "Dryadic Ritual (Support Gem Level 1)" }, { - "Name": "Metadata/Terrain/Desert/Badlands/Features/Landmark_feature_02.tdt", + "Name": "Metadata/Terrain/Woods/HuntingGrounds/RitualClearing01.tdt", "ExpectedCount": 1, - "DisplayName": "Fossilised Memorial (Support Gem Level 1)" + "DisplayName": "Ritual Site (Level 4 Skill Gem)" }, { - "Name": "Metadata/Terrain/Desert/Badlands/Features/AbyssHole.tdt", + "Name": "Metadata/Terrain/Woods/Features_Cairns/CairnBrecon.tdt", "ExpectedCount": 1, - "DisplayName": "Lightless Passage" + "DisplayName": "Crowbell Start (+2 Passive)" } ], - "Abyss_Intro": [ + "P2_4": [ { - "Name": "Metadata/Terrain/Gallows/Leagues/Abyss/AbyssHub/Tiles/AbyssPitFeature_01.tdt", + "Name": "Metadata/Terrain/interlude/part2/p2_4/saitwaste_entrance_transition.tdt", + "ExpectedCount": 3, + "DisplayName": "Saitwaste Entrance" + } + ], + "MapMesa": [ + { + "Name": "Metadata/Terrain/Maps/Mesa/Tiles/Peak.tdt", "ExpectedCount": 1, - "DisplayName": "Rare Fight" + "DisplayName": "Beacon" } ], - "G2_5_2": [ + "G4_2_1": [ { - "Name": "Metadata/Terrain/Desert/Badlands/Features/AreaTransition_BadlandsToPits_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/KedgeBay/BossArena_01.tdt", "ExpectedCount": 1, - "DisplayName": "Mastodon Badlands" + "DisplayName": "Rare Monster Orb of Alchemy" }, { - "Name": "Metadata/Terrain/Desert/Badlands/Features/MastodonArena_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Island/Features/UnwalkableCliff_Transition_Up_01.tdt", "ExpectedCount": 1, - "DisplayName": "Blackrib Pit" + "DisplayName": "Journey's end" + }, + { + "Name": "Metadata/Terrain/Islands/Tiles/Island/UnwalkableCliff/KedgeBay/UnwalkableCliff_CaveEntrance_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Map Piece" } ], - "G2_6": [ + "G2_7": [ { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/CartEntrance_01.tdt", + "Name": "Metadata/Terrain/Desert/CaveTitans/Features/Staircase_Entrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Ardura Caravan" + "DisplayName": "Valley of the Titans" }, { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/GrottoExit01.tdt", + "Name": "Metadata/Terrain/Desert/CaveTitans/Features/Titan_Arena_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Titan Grotto" + "DisplayName": "Boss" }, + { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/TitanQuest01.tdt", + "Name": "Metadata/Terrain/Desert/CaveTitans/Features/WalkwayTitan_Statue_St_End_01.tdt", "ExpectedCount": 1, - "DisplayName": "Ancient Seal" + "DisplayName": "Random Rune" }, { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/TitanQuest02.tdt", + "Name": "Metadata/Terrain/Desert/CaveTitans/Features/WalkwayTitan_Statue_St_End_02.tdt", "ExpectedCount": 1, - "DisplayName": "Ancient Seal" - }, + "DisplayName": "Random Rune" + } + ], + "MapLostTowers_NoBoss": [ { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/TitanQuest03.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Upper/PillarUpper_StairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "Ancient Seal" + "DisplayName": "Stairs" }, { - "Name": "Metadata/Terrain/Desert/UnwalkableDune/Titans/Feature/titan_valley_boss_01.tdt", + "Name": "tower_beacon", "ExpectedCount": 1, - "DisplayName": "Medallion" + "DisplayName": "Beacon" } ], - "G2_7": [ + "P3_2": [ { - "Name": "Metadata/Terrain/Desert/CaveTitans/Features/Staircase_Entrance_01.tdt", + "Name": "Metadata/Terrain/Interlude/Part3/P3_2/KriarVillage_Bossroom.tdt", "ExpectedCount": 1, - "DisplayName": "Valley of the Titans" + "DisplayName": "Boss" }, { - "Name": "Metadata/Terrain/Desert/CaveTitans/Features/Titan_Arena_01.tdt", + "Name": "Metadata/Terrain/interlude/part3/p3_2/jungle_transition.tdt", "ExpectedCount": 1, - "DisplayName": "Dais of Reckoning" + "DisplayName": "Ashen Forest" } ], - "G2_8": [ + "G1_7": [ { - "Name": "Metadata/Chests/SpireCorpseChest", + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/GraveyardArena.tdt", "ExpectedCount": 1, - "DisplayName": "Fallen Dekhara (+2 Passive)", - "TargetType": "Entity" + "DisplayName": "Arena / Hunting Grounds" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Base/Arena/bossroom_02.tdt", + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/mausoleum_01.tdt", "ExpectedCount": 1, - "DisplayName": "Forgotten Corpses" + "DisplayName": "Mausoleum of the Praetor" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Base/PillarBaseWide_StairsUp_01.tdt", + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/tomb_01.tdt", "ExpectedCount": 1, - "DisplayName": "Path of Mourning" + "DisplayName": "Tomb of the Consort" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Base/PillarBase_CartTransition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "The Ardura Caravan" - } - ], - "G2_9_1": [ + "Name": "accessiblefence", + "ExpectedCount": 2, + "DisplayName": "Random ring 1 of 2 locations" + }, { - "Name": "Metadata/Terrain/Desert/Pillars/Lower/Pillar_TinyBalcony_feature_01.tdt", + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/GraveyardToGrimTangle_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Shifting Vases (Support Gem Level 1)" + "DisplayName": "The Grim Tangle" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Lower/Wide/PillarLowerWide_StairsDown_01.tdt", + "Name": "tomb_transition", "ExpectedCount": 1, - "DisplayName": "Deshar" + "DisplayName": "Tomb of the Consort" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Upper/PillarUpper_StairsUp_01.tdt", + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/tomb_02.tdt", "ExpectedCount": 1, - "DisplayName": "The Spires of Deshar" - } - ], - "G2_9_2": [ + "DisplayName": "Tomb of the Consort" + }, { - "Name": "Metadata/Terrain/Desert/Pillars/Tall/PillarTall_StairsDown_01.tdt", + "Name": "mausoleum_transition", "ExpectedCount": 1, - "DisplayName": "Path of Mourning" + "DisplayName": "Mausoleum of the Praetor" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Tops/PillarArena.tdt", - "ExpectedCount": 1, - "DisplayName": "Arena" + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/tomb_01.tdt", + "DisplayName": "Tomb of the Consort" }, { - "Name": "Metadata/Terrain/Desert/Pillars/Tops/PillarTopWide_Shrine_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Sisters of Garukhan (10% Lightning Res)" + "Name": "Metadata/Terrain/Woods/Graveyard/Feature/tomb_02.tdt", + "DisplayName": "Tomb of the Consort" } ], - "G2_10_1": [ + "G4_4_2": [ { - "Name": "Metadata/Terrain/Desert/Quarry/Features/Maraketh_Entrance_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Thickwall/CoralSinkhole/Arena/YamaArena_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Ardura Caravan" + "DisplayName": "Boss - Yama" }, { - "Name": "Metadata/Terrain/Desert/Quarry/Features/MiningShaftCrane.tdt", - "ExpectedCount": 1, - "DisplayName": "Mawdun Mine" + "Name": "Metadata/Terrain/Islands/Tiles/HallsOfTheDead/CaveWall/Halls_CaveWall_Hinekora_Door_01.tdt", + "ExpectedCount": 3, + "DisplayName": "3 Test Areas" } ], - "G2_10_2": [ + "G1_13_2": [ { - "Name": "Metadata/Terrain/Desert/Foundry/Features/Foundry_Bossroom_01.tdt", + "Name": "Metadata/Terrain/Woods/Village/Huts/VillageArena_02.tdt", "ExpectedCount": 1, - "DisplayName": "Munitions Bunker" + "DisplayName": "Executioner's Block" }, { - "Name": "Metadata/Terrain/Desert/Quarry/Features/MiningShaftFloor.tdt", + "Name": "Metadata/Terrain/Woods/Village/Blacksmith_Large.tdt", "ExpectedCount": 1, - "DisplayName": "Mawdun Quarry" + "DisplayName": "Renly's Tools (Salvaging Bench)" + }, + { + "Name": "Metadata/Terrain/Woods/Village/RoadFields/Feature/RoadVillage_Areatransition_village_side.tdt", + "ExpectedCount": 1, + "DisplayName": "Ogham Farmlands" } ], - "G2_12_1": [ + "G4_2_2": [ { - "Name": "Metadata/Terrain/Desert/FarudinCarts/cart_walkway_02.tdt", - "ExpectedCount": 2, - "DisplayName": "Dreadnought Vanguard" + "Name": "Metadata/Terrain/Islands/Tiles/Island/JourneysEnd/JourneysEnd_ExplodingShip_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Loot - SHIP EXPLODES" + }, + { + "Name": "Metadata/Terrain/Islands/Tiles/Island/Features/UnwalkableCliff_Transition_Up_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Kedge Bay" }, { - "Name": "locustmaster_cart", + "Name": "Metadata/Terrain/Islands/Tiles/Island/JourneysEnd/BossArena_02.tdt", "ExpectedCount": 1, - "DisplayName": "Near real Dreadnought Vanguard" + "DisplayName": "Boss - Captain Hartlin" } ], - "G2_12_2": [ + "G4_10": [ { - "Name": "Metadata/Terrain/Desert/FarudinCarts/Features/DreadnoughtArena_02.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/DigSite/DigSiteFeature/Uncovered_Precursor_Feature_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Faridun Throne" + "DisplayName": "Chest" + }, { + "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/DigSite/DigSiteFeature/Uncovered_Precursor_Feature_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Rare Chest" }, { - "Name": "Metadata/Terrain/Desert/FarudinCarts/cart_walkway_02.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/PrecursorRuins/Arena/BossArena_Forge_PCR_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Dreadnought" + "DisplayName": "Boss" } ], - "G2_13": [ + "P3_6": [ { - "Name": "Metadata/Terrain/Desert/KethAscendancy/Level_1/Feature/pedestal_02.tdt", + "Name": "Metadata/Terrain/Interlude/Part3/P3_6/Ravine_Bossroom.tdt", "ExpectedCount": 1, - "DisplayName": "Relic Altar" + "DisplayName": "Boss" } ], - "G3_1": [ + "G4_3_2": [ { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Fills/JungleGroundPuddle_04.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/EggRoom_WW_01.tdt", "ExpectedCount": 1, - "DisplayName": "Orok Campfire (Lesser Jeweller's Orb)" + "DisplayName": "Egg Room - Rare monster" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/SandToWater/Feature/EntranceCaravanFord_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/SirenCoveEntrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Mini Town" + "DisplayName": "Whakapanu Island" }, { - "Name": "Metadata/Terrain/Jungle/SandsweptMarsh/bossman.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/SirenDonut_01.tdt", "ExpectedCount": 1, - "DisplayName": "Foul Ritual (Level 9)" + "DisplayName": "Boss - Siren" }, { - "Name": "Metadata/Terrain/Jungle/SandsweptMarsh/marsh_exit.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/CoveTreasure_01.tdt", "ExpectedCount": 1, - "DisplayName": "Ziggurat Encampment" - }, + "DisplayName": "Treasure (all res ammy)" + } + ], + "P3_4": [ { - "Name": "wide_shrine", + "Name": "Metadata/Terrain/Interlude/Part3/P3_4/Cave_Bossroom.tdt", "ExpectedCount": 1, - "DisplayName": "permanent buff" + "DisplayName": "Boss" } ], - "G3_2_1": [ + "P3_5": [ { - "Name": "Metadata/Terrain/Jungle/AntHill/AntHollow/hollow_StSW_01.tdt", + "Name": "Metadata/Terrain/Interlude/Part3/P3_5/Medition_Ridge.tdt", "ExpectedCount": 1, - "DisplayName": "Larva Hollow" + "DisplayName": "Guarenteed unique?" }, { - "Name": "Metadata/Terrain/Jungle/AntHill/AntJungle_Edge/AntEdge_Landmark_Feature_01.tdt", + "Name": "Metadata/Terrain/Interlude/Part3/P3_5/Ravine_Exit_Transition.tdt", "ExpectedCount": 1, - "DisplayName": "Troubled Camp (WEAPONS vendor)" - }, + "DisplayName": "Ravine" + } + ], + "Sanctum*": [ { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleDepths_to_ChimeralWetlands.tdt", + "Name": "areatransition", "ExpectedCount": 1, - "DisplayName": "Chimeral Wetlands" + "DisplayName": "Transition" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleToWaterways_01.tdt", + "Name": "exitdown", "ExpectedCount": 1, - "DisplayName": "Jungle Ruins" + "DisplayName": "Transition" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/AreaTransition/EntranceBog_02.tdt", - "ExpectedCount": 1, - "DisplayName": "The Azak Bog" + "Name": "Metadata/Terrain/Gallows/Leagues/Sanctum/Objects/SanctumGenericLever", + "ExpectedCount": 99, + "DisplayName": "Lever", + "TargetType": "Entity" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/Jungle_WaterwayAltar_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Canal Mechanism (waypoint)" + "Name": "airlock_transition", + "ExpectedCount": 10, + "DisplayName": "Transition" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Waterway/Jungle_Waterway_Ramp_01.tdt", - "ExpectedCount": 1, - "DisplayName": "The Matlan Waterways" - } - ], - "G3_2_2": [ + "Name": "Metadata/Monsters/MarakethSanctumTrial/Hazards/HourglassLethal", + "ExpectedCount": 99, + "DisplayName": "Crystal", + "TargetType": "Entity" + }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/CvWW_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Narag's Hut" + "Name": "square_transition", + "ExpectedCount": 10, + "DisplayName": "Transition" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/Jungle_WaterwaysLever_01.tdt", + "Name": "entrance_upper", "ExpectedCount": 1, - "DisplayName": "Waterways Lever" + "DisplayName": "Transition" }, { - "Name": "door", + "Name": "transition_down", + "ExpectedCount": 2, + "DisplayName": "Transition" + }, + { + "Name": "transition", + "ExpectedCount": 3, + "DisplayName": "Transition" + }, + { + "Name": "abyss_transition", "ExpectedCount": 1, - "DisplayName": "Waypoint / Matlan Waterways" + "DisplayName": "Transition" } ], - "G3_3": [ + "P1_5": [ { - "Name": "Metadata/Monsters/Quadrilla/Objects/BossRoomMinimapIcon", + "Name": "Metadata/Terrain/Interlude/Part1/P1_5/Holten_Prison_Bossroom.tdt", "ExpectedCount": 1, - "DisplayName": "Mighty Silverfist (+2 Passive)", - "TargetType": "Entity" - }, + "DisplayName": "Boss" + } + ], + "G2_8": [ { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleDepths_to_SnakePit.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Base/PillarBaseWide_StairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Venom Crypts" + "DisplayName": "Path of Mourning" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleDepths_to_Town.tdt", + "Name": "Metadata/Chests/SpireCorpseChest", "ExpectedCount": 1, - "DisplayName": "Ziggurat Encampment" + "DisplayName": "Fallen Dekhara (+2 Passive)", + "TargetType": "Entity" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleToWaterways_01_reverse.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Base/Arena/bossroom_02.tdt", "ExpectedCount": 1, - "DisplayName": "Infested Barrens" + "DisplayName": "Forgotten Corpses (Djinn Barya)" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/RuinedThinwall/JungleDepths_Cv_FootwallEnd_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Base/PillarBase_CartTransition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Troubled Camp(ARMOUR VENDOR)" + "DisplayName": "The Ardura Caravan" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/RuinedThinwall/RuinedThinwall_Tri_06.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Base/Pillar_landmark_01.tdt", "ExpectedCount": 1, - "DisplayName": "Monkeee (Passive)" + "DisplayName": "Artificers Orb" + } + ], + "P1_2": [ + { + "Name": "Metadata/Terrain/Maps/UniqueMegalith/Tiles/RitualClearing02.tdt", + "ExpectedCount": 1, + "DisplayName": "Boss" }, { - "Name": "kuamshrine", + "Name": "Metadata/Terrain/interlude/part1/p1_2/feature/farmlands_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Shrine (BELT REWARD)" + "DisplayName": "Farmlands" } ], - "G3_4": [ + "G2_10_2": [ { - "Name": "Metadata/Chests/QuestChests/SnakePit/SnakeLadyPotionChest", + "Name": "Metadata/Terrain/Desert/Quarry/Features/MiningShaftFloor.tdt", "ExpectedCount": 1, - "DisplayName": "Venom Vial (Pick Bonus)", - "TargetType": "Entity" - }, - { - "Name": "Metadata/Terrain/Dungeon/NextFeatures/dungeon_altar_v01_01.tdt", - "ExpectedCount": 2, - "DisplayName": "Quest close - passive effects" + "DisplayName": "Mawdun Quarry" }, { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/SnakePit_to_JungleDepths.tdt", + "Name": "Metadata/Terrain/Desert/Foundry/Features/Foundry_Bossroom_01.tdt", "ExpectedCount": 1, - "DisplayName": "Jungle Ruins" + "DisplayName": "Munitions Bunker" } ], - "G3_5": [ + "G3_2_2": [ { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/ChimeralJungle_to_ChaosTemple.tdt", + "Name": "door", "ExpectedCount": 1, - "DisplayName": "The Temple of Chaos" + "DisplayName": "Waypoint / Matlan Waterways" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/ChimeralWetlands_to_JungleDepths.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/CvWW_01.tdt", "ExpectedCount": 1, - "DisplayName": "Infested Barrens" + "DisplayName": "Narag's Hut" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/Observatory_Entrance_01.tdt", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/Jungle_WaterwaysLever_01.tdt", "ExpectedCount": 1, - "DisplayName": "Deadly Nest" + "DisplayName": "Waterways Lever" } ], - "G3_6_1": [ + "G3_16": [ { - "Name": "Metadata/Terrain/Dungeon/NextFeatures/Machinarium_Entrance_02.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/AggoratArena_Past_01.tdt", "ExpectedCount": 1, - "DisplayName": "Jiquani's Sanctum" + "DisplayName": "Idol 1" }, { - "Name": "Metadata/Terrain/Dungeon/NextFeatures/dungeon_cave_v01_01.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/DoryanisSanctumEntrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Transition" + "DisplayName": "The Black Chambers" }, { - "Name": "Metadata/Terrain/Dungeon/NextFeatures/dungeon_door_thin_boss.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/Aggorat_AtziriAltar_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Oubliette (10% Fire Res)" + "DisplayName": "Altar" }, { - "Name": "Metadata/Terrain/Dungeon/NextStairs/dungeon_stairs_straight_v01_01.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/AggoratToSunkenCity_01.tdt", "ExpectedCount": 1, - "DisplayName": "Stair Place" + "DisplayName": "Utzaal" + }, + { + "Name": "Metadata/Terrain/Jungle/Aggorat/Outerwall/AggoratOuterArena_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Sacrificial Dagger (+2 Passive)" } ], - "G3_6_2": [ + "P1_4": [ { - "Name": "Metadata/Terrain/Dungeon/Machinarium/BossWall01.tdt", + "Name": "Metadata/Terrain/interlude/part1/p1_4/holton_estate_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Holton Estate" }, { - "Name": "Metadata/Terrain/Dungeon/NextFeatures/VaalCorruptionAltar.tdt", + "Name": "Metadata/Terrain/Interlude/Part1/P1_4/Chaple_01.tdt", "ExpectedCount": 1, - "DisplayName": "Corruption Altar" + "DisplayName": "Bosses (no quest or reward)" }, { - "Name": "Metadata/Terrain/Jungle/VaalInterior/VaalGenerator/VaalGenerator.tdt", - "ExpectedCount": 2, - "DisplayName": "Generator" - } - ], - "G3_7": [ + "Name": "Metadata/Terrain/Interlude/Part1/P1_4/Prison_entrance.tdt", + "ExpectedCount": 1, + "DisplayName": "Woven" + }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/AreaTransition/EntranceBog_01.tdt", + "Name": "Metadata/Terrain/interlude/part1/p1_4/blackwood_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Infested Barrens" + "DisplayName": "Blackwood" }, { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/Features/BurningWitchArena.tdt", + "Name": "Metadata/Terrain/interlude/part1/p1_4/holtondocktransition.tdt", "ExpectedCount": 1, - "DisplayName": "Ignagduk, The Bog Witch (+30 Spirit)" + "DisplayName": "Soul Ferryman - Sells runes" } ], - "G3_8": [ + "G2_5_2": [ { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCityPresent/SunkenCityToTown_01.tdt", + "Name": "Metadata/Terrain/Desert/Badlands/Features/AreaTransition_BadlandsToPits_01.tdt", "ExpectedCount": 1, - "DisplayName": "Ziggurat Encampment" + "DisplayName": "Mastodon Badlands" }, { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCityPresent/jungle_pyramid_entrance_atziri_03.tdt", + "Name": "Metadata/Terrain/Desert/Badlands/Features/MastodonArena_01.tdt", "ExpectedCount": 1, - "DisplayName": "Apex of Filth" - }, + "DisplayName": "Blackrib Pit" + } + ], + "G2_1": [ { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCityPresent/jungle_pyramid_entrance_vault_01.tdt", + "Name": "Metadata/Terrain/Desert/UnwalkableDune/DunePlatform/Dune_Platform_Feature_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Molten Vault" + "DisplayName": "Raiders Cliffs" + },{ + "Name": "Metadata/Terrain/forced_blank.tdt", + "ExpectedCount": 1, + "ClusterSize": 9, + "DisplayName": "Rare Chest" } ], - "G3_9": [ + "P3_3": [ { - "Name": "Metadata/Terrain/Dungeon/TreasureVault/BossChannel_02.tdt", + "Name": "Metadata/Terrain/Maps/FrozenFalls/Tiles/Cove_01.tdt", "ExpectedCount": 1, - "DisplayName": "Mektul, The Forgemaster (Reforging Bench)" + "DisplayName": "Howling Caves" }, { - "Name": "Metadata/Terrain/Jungle/TreasureVault/BrutalistThickwall/Brutal_Entrance_01.tdt", + "Name": "Metadata/Terrain/Interlude/Part3/P3_3/GlacialTarn_Bossroom.tdt", "ExpectedCount": 1, - "DisplayName": "The Drowned City" + "DisplayName": "Boss" } ], - "G3_11": [ + "G2_9_2": [ { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/AggoratArena_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Tops/PillarTopWide_Shrine_01.tdt", "ExpectedCount": 1, - "DisplayName": "Queen of Filth" + "DisplayName": "Sisters of Garukhan (10% Lightning Res)" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/Present/AggoratToSunkenCity_Present_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Tall/PillarTall_StairsDown_01.tdt", "ExpectedCount": 1, - "DisplayName": "Waypoint" + "DisplayName": "Path of Mourning" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/Present/AggoratToSunkenCity_Present_02.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Tops/PillarArena.tdt", + "ExpectedCount": 1, + "DisplayName": "Arena" + } + ], + "G4_11_1b": [ + { + "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/Ngakanu/Medicine_Lady_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Drowned City" + "DisplayName": "Medicine lady" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Outerwall/AggoratOuterArena_Present_02.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/Ngakanu/NgakanuToBloodFever_01.tdt", "ExpectedCount": 1, - "DisplayName": "Cauldron Keeper" + "DisplayName": "Heart of the Tribe" } ], - "G3_12": [ + "G4_5_2": [ { - "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_outerwall_end_stairsdown_02.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/LowerPrison/Warden_Office.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs Down" - }, - { - "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_outerwall_end_stairsup_01.tdt", - "ExpectedCount": 2, - "DisplayName": "Stairs Up" + "DisplayName": "Warden office (rare chests)" }, { - "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_outerwall_end_stairsup_02.tdt", - "ExpectedCount": 2, - "DisplayName": "Stairs Up" + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_chapel_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Flask buff - Need key" }, { - "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_to_sunkencity_01.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/LowerPrison/Maximumprison.tdt", "ExpectedCount": 1, - "DisplayName": "Ziggurat Encampment" + "DisplayName": "Boss" } ], - "G3_14": [ + "MapLostTowers": [ { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCity/jungle_pyramid_entrance_atziri_01_metatile.tdt", - "ExpectedCount": 1, - "DisplayName": "Aggorat" + "Name": "Metadata/Terrain/Maps/LostTowers/Tiles/PillarArena01.tdt", + "DisplayName": "Beacon" }, { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCity/jungle_town_lower_entrance_past_01.tdt", + "Name": "Metadata/Terrain/Desert/Pillars/Upper/PillarUpper_StairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "Town" + "DisplayName": "Stairs" + }, + { + "Name": "tower_beacon", + "DisplayName": "Beacon" } ], - "G3_16": [ + "MapSwampTower": [ { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/AggoratArena_Past_01.tdt", + "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/CentrePillar_02.tdt", + "DisplayName": "Stairs" + }, + { + "Name": "tower_beacon", "ExpectedCount": 1, - "DisplayName": "Idol 1" + "DisplayName": "Beacon" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/AggoratToSunkenCity_01.tdt", + "Name": "StairsUp", + "DisplayName": "Stairs" + }, + { + "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Lower_Exterior/SwampTower_BasementOuterWall_EndStairsUp_02.tdt", "ExpectedCount": 1, - "DisplayName": "Utzaal" + "DisplayName": "Stairs" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/Aggorat_AtziriAltar_01.tdt", + "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Mid_Exterior/SwampTower_OuterWallEnd_StairsUp_02.tdt", "ExpectedCount": 1, - "DisplayName": "Altar" + "DisplayName": "Stairs" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Features/DoryanisSanctumEntrance_01.tdt", + "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Mid_Exterior/SwampTower_OuterWallEnd_StairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Black Chambers" + "DisplayName": "Stairs" }, { - "Name": "Metadata/Terrain/Jungle/Aggorat/Outerwall/AggoratOuterArena_02.tdt", + "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Lower_Exterior/SwampTower_BasementOuterWall_EndStairsUp_01.tdt", "ExpectedCount": 1, - "DisplayName": "Sacrificial Dagger (+2 Passive)" + "DisplayName": "Stairs" } ], - "G3_17": [ - { - "Name": "Metadata/Terrain/Dungeon/DoryanisSanctum/Features/Doryani_Arena_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Arena" - }, + "G1_1": [ { - "Name": "Metadata/Terrain/Jungle/AreaTransitions/DoryanisSanctumEntranceInt_01_01.tdt", + "Name": "EncampmentFront", "ExpectedCount": 1, - "DisplayName": "Aggorat" + "DisplayName": "Clearfell Encampment" } ], - "G4_1_1": [ + "*": [ { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/Goblins/Features/GoblinTownArena_01.tdt", + "Name": "boss_transition", "ExpectedCount": 1, - "DisplayName": "Goblin Arena" + "DisplayName": "boss_transition" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/Goblins/Features/GoblinMinesEntrance_01.tdt", + "Name": "entranceup", "ExpectedCount": 1, - "DisplayName": "Volcanic Warrens" + "DisplayName": "entranceup" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/UnwalkableCliff/IsleOfKin/UnwalkableCliff_to_Ocean_CvSt_01.tdt", + "Name": "entrance", "ExpectedCount": 1, - "DisplayName": "Quest - Treasure map?" + "DisplayName": "entrance" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/SulphurRockVein_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Voltaxic spire" + "Name": "Metadata/Terrain/islands/tiles/bloodfever/wharewall/alleyway_to_smallalley_ccst_01.tdt", + "ExpectedCount": 3, + "DisplayName": "Smallalley Ccst" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/FailedDelveHub_01.tdt", + "Name": "sticksinmud", "ExpectedCount": 1, - "DisplayName": "Lesser jewellers orb" + "DisplayName": "Grisly Trophy [Wild/Purple] - Body Loot" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/RhoaCamp_02.tdt", - "ExpectedCount": 1, - "DisplayName": "Rhoa - No reward?" + "Name": "Metadata/Terrain/islands/tiles/kalguurship/kalguurship_town_01.tdt", + "ExpectedCount": 3, + "DisplayName": "Kalguur town?" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/RhoaCamp_01.tdt", + "Name": "stairsdown", "ExpectedCount": 1, - "DisplayName": "Rhoa - No reward?" + "DisplayName": "stairsdown" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Volcano/BeastCamp_01.tdt", + "Name": "boss", "ExpectedCount": 1, - "DisplayName": "Rare - Good rewards" - } - ], - "G4_1_2": [ + "DisplayName": "boss" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCaveEntrance_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Isle of Kin" + "Name": "Metadata/Terrain/islands/tiles/kalguurship/kalguurship_town_02.tdt", + "ExpectedCount": 3, + "DisplayName": "Kalguur town?" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCaveArena/GoblinCaveArena_02.tdt", + "Name": "entrancedownboss", "ExpectedCount": 1, - "DisplayName": "Rares" + "DisplayName": "entrancedownboss" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCaveArena/GoblinCaveArena_01.tdt", + "Name": "witchorb", "ExpectedCount": 1, - "DisplayName": "Goblin Arena1" + "DisplayName": "3rd Maji Quest" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCave/ShrineLandmark_01.tdt", + "Name": "npc3", "ExpectedCount": 1, - "DisplayName": "Shrine - No loot?" - } - ], - "G4_2_1": [ + "DisplayName": "The Primal Huntress - Primalist [Primal/Blue]" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/KedgeBay/BossArena_01.tdt", + "Name": "entrancedown", "ExpectedCount": 1, - "DisplayName": "Arena - Orb of Alchemy?" + "DisplayName": "entrancedown" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Features/UnwalkableCliff_Transition_Up_01.tdt", + "Name": "Metadata/Terrain/Woods/Woods/AzmeriLeague/Features/arenaTransition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Journey's end" + "DisplayName": "Boss stronghold" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/UnwalkableCliff/KedgeBay/UnwalkableCliff_CaveEntrance_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Quest - deadman chest" - } - ], - "G4_2_2": [ + "Name": "Metadata/Terrain/islands/tiles/island/oceanledge/oceanledge_to_lowerledge_x_karui_01.tdt", + "ExpectedCount": 3, + "DisplayName": "Lowerledge X Karui" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/Features/UnwalkableCliff_Transition_Up_02.tdt", + "Name": "stonehenge", "ExpectedCount": 1, - "DisplayName": "Kedge Bay" + "DisplayName": "Stonehenge [Vivid/Yellow]" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/JourneysEnd/JourneysEnd_ExplodingShip_02.tdt", + "Name": "npc1", "ExpectedCount": 1, - "DisplayName": "Loot - SHIP EXPLODES" + "DisplayName": "Breaker of Oaths - Warlock [Wild/Purple]" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Island/JourneysEnd/BossArena_02.tdt", + "Name": "npc2", "ExpectedCount": 1, - "DisplayName": "Boss - Captain Hartlin" - } - ], - "G4_3_1": [ + "DisplayName": "The Warden of Eaves - Maji [Vivid/Yellow]" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Features/Shark_Arena_02.tdt", + "Name": "waypoint", "ExpectedCount": 1, - "DisplayName": "Boss - Shark" + "DisplayName": "waypoint" }, { - "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/TropicalCliff/TropicalCliff_Cv_Cove_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Singing Caverns" + "Name": "Metadata/Terrain/islands/tiles/coraldungeon/features/area_transition_stww_01.tdt", + "ExpectedCount": 3, + "DisplayName": "Transition" }, { - "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Features/TropicalCoastCliff_CrabCave_02.tdt", + "Name": "entrancebook", "ExpectedCount": 1, - "DisplayName": "Crab Rare" + "DisplayName": "entrancebook" }, { - "Name": "Metadata/Terrain/Islands/Tiles/TropicalIsland/Features/TropicalCoastCliff_CrabCave_01.tdt", + "Name": "stairsup", "ExpectedCount": 1, - "DisplayName": "Singing Caverns" - } - ], - "G4_3_2": [ + "DisplayName": "stairsup" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/SirenDonut_01.tdt", + "Name": "Metadata/Terrain/islands/tiles/kalguurship/kalguurship_town_01_ghost.tdt", "ExpectedCount": 1, - "DisplayName": "Boss - Siren" + "DisplayName": "Boat" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/CoveTreasure_01.tdt", + "Name": "entranceback", "ExpectedCount": 1, - "DisplayName": "Quest - Humming Pearl" + "DisplayName": "entranceback" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/EggRoom_WW_01.tdt", + "Name": "bosstransition", "ExpectedCount": 1, - "DisplayName": "Egg Room" + "DisplayName": "bosstransition" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/SirenCoveEntrance_01.tdt", + "Name": "boneyard", "ExpectedCount": 1, - "DisplayName": "Whakapanu Island" + "DisplayName": "Boneyard [Primal/Blue] - 50/50 monsters and loot" } ], - "G4_4_1": [ + "G1_8": [ { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Thickwall/CoralSinkhole/Arena/SudokuArena_03.tdt", + "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Transitions/Mausoleum_SecretEntrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Pay respects at end" + "DisplayName": "Forgotten Riches" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/Spiral_Eighths/Sinkhole_Spiral_QuarterHeight_WalkableHalf_01.tdt", + "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Transitions/Transition_Tomb_to_Graveyard_01.tdt", "ExpectedCount": 1, - "DisplayName": "Hall of the dead" - } - ], - "G4_4_2": [ + "DisplayName": "Unknown 2" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/HallsOfTheDead/CaveWall/Halls_CaveWall_Hinekora_Door_01.tdt", - "ExpectedCount": 3, - "DisplayName": "3 Test Areas" + "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Transitions/Transition_Mausoleum_to_Graveyard_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Cemetery of the Eternals" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Thickwall/CoralSinkhole/Arena/YamaArena_01.tdt", + "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Feature/MausoleumBoss_ArenaFloor.tdt", "ExpectedCount": 1, - "DisplayName": "Boss - Yama" + "DisplayName": "Draven" } ], - "G4_7": [ + "G1_9": [ { - "Name": "Metadata/Terrain/Islands/Tiles/Island/ShrikeIsland/ShrikeIslandArena.tdt", + "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Feature/Tomb_Landmark_01.tdt", "ExpectedCount": 1, - "DisplayName": "Arena" + "DisplayName": "Embattled Trove (Support Gem Level 1)" }, { - "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Thickwall/Island/Birdnest_Cc_01.tdt", + "Name": "Metadata/Terrain/Woods/GraveyardDungeons/Feature/TombBoss_ArenaFloor.tdt", "ExpectedCount": 1, - "DisplayName": "Quest - Map piece" + "DisplayName": "Asinia" } ], - "G4_5_1": [ - { - "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_entrance_down_v01_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Dungeon entrance down" - }, + "G3_6_1": [ { - "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/prison_armoury_01.tdt", + "Name": "Metadata/Terrain/Dungeon/NextFeatures/Machinarium_Entrance_02.tdt", "ExpectedCount": 1, - "DisplayName": "Armoury" + "DisplayName": "Jiquani's Sanctum" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_chapel_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Flask buff - Need key" - } - ], - "G4_5_2": [ - { - "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/LowerPrison/Maximumprison.tdt", + "Name": "Metadata/Terrain/Dungeon/NextFeatures/dungeon_cave_v01_01.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Transition" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/LowerPrison/Warden_Office.tdt", + "Name": "Metadata/Terrain/Dungeon/NextStairs/dungeon_stairs_straight_v01_01.tdt", "ExpectedCount": 1, - "DisplayName": "Warden office" + "DisplayName": "Stair Place" }, { - "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_chapel_01.tdt", + "Name": "Metadata/Terrain/Dungeon/NextFeatures/dungeon_door_thin_boss.tdt", "ExpectedCount": 1, - "DisplayName": "Flask buff - Need key" + "DisplayName": "The Oubliette (10% Fire Res)" } ], - "G4_8b": [ + "P2_7": [ { - "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/Feature/TwilightArena.tdt", + "Name": "Metadata/Terrain/Interlude/Part2/P2_7/Qimah_bossroom.tdt", "ExpectedCount": 1, "DisplayName": "Boss" }, { - "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/Feature/TwilightLighthouse.tdt", + "Name": "Metadata/Terrain/Maps/SevenWaters/Tiles/BuildingWall/BuildingWall_X_01.tdt", "ExpectedCount": 1, - "DisplayName": "Bell - Currency" - } - ], - "G4_10": [ + "DisplayName": "Pillars - Buff choice" + }, { - "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/PrecursorRuins/Arena/BossArena_Forge_PCR_01.tdt", + "Name": "Metadata/Terrain/Maps/Qimar/Tiles/PassageAbyss/abysswall_BendLarge_02.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Essence or Sacred Well (alchemy or exalted)" }, { - "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/DigSite/DigSiteFeature/Uncovered_Precursor_Feature_02.tdt", + "Name": "Metadata/Terrain/Maps/Qimar/Tiles/Passage/thickwall_CcLarge_nolight_04.tdt", "ExpectedCount": 1, - "DisplayName": "Chest" + "DisplayName": "Sacred Well (alchemy or exalted)" } ], - "G4_11_1b": [ + "G1_6": [ { - "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/Ngakanu/Medicine_Lady_01.tdt", + "Name": "Metadata/Terrain/Woods/GrimTangle/feature/BossArena_01.tdt", "ExpectedCount": 1, - "DisplayName": "Medicine lady" + "DisplayName": "Den of the Druid (Support Gem Level 1)" }, { - "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/Ngakanu/NgakanuToBloodFever_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Heart of the Tribe" - } - ], - "G4_11_2": [ - { - "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/ArenaCombined/ArenaCombined_01.tdt", + "Name": "Metadata/Terrain/Woods/GrimTangle/areatransitions/GrimtangleTransitionUp_02.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Cemetery of the Eternals" }, { - "Name": "Metadata/Terrain/Islands/Tiles/BloodFever/Features/Whare_fill_02.tdt", + "Name": "Metadata/Terrain/Woods/GrimTangle/areatransitions/IntroArea.tdt", "ExpectedCount": 1, - "DisplayName": "Rare chests" + "DisplayName": "The Grelwood" } ], - "P1_1": [ + "G1_15": [ { - "Name": "Metadata/Terrain/interlude/part1/p1_1/feature/forest_transition_01.tdt", - "ExpectedCount": 3, - "DisplayName": "Forest 1 of 2" + "Name": "Metadata/Terrain/Woods/Manor/Features/Chapel_boss_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Candlemass (+20 Max Life)" }, { - "Name": "Metadata/Terrain/interlude/part1/p1_1/feature/monolith_transition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Stones of serle" - } - ], - "P1_2": [ + "Name": "Metadata/Terrain/Woods/Manor/Interior/Features/ThickWall_StairsDown_Cc_01.tdt", + "ExpectedCount": 2, + "DisplayName": "Stairs Down" + }, + { + "Name": "Metadata/Terrain/Woods/Manor/Interior/Features/ThickWall_AreaTransition_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Stairs Up" + }, { - "Name": "Metadata/Terrain/interlude/part1/p1_2/feature/farmlands_transition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Farmlands" + "Name": "Metadata/Terrain/Woods/Manor/Features/ArenaTop_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Throne of the Wolf" }, - { - "Name": "Metadata/Terrain/Maps/UniqueMegalith/Tiles/RitualClearing02.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss" + { + "Name": "Metadata/Terrain/Woods/Manor/Interior/Features/Manor_Entrance_01.tdt", + "ExpectedCount": 1, + "DisplayName": "The Manor Ramparts" } ], - "P1_3": [ + "G1_3": [ { - "Name": "Metadata/Terrain/interlude/part1/p1_3/holten_transition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Holten" + "Name": "Metadata/Terrain/Woods/Mudburrow/Path/path_St_Spawner_v02_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Devourer Entrance" } ], - "P1_4": [ + "G4_1_2": [ { - "Name": "Metadata/Terrain/interlude/part1/p1_4/blackwood_transition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Blackwood" + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCaveArena/GoblinCaveArena_02.tdt", + "ExpectedCount": 1, + "DisplayName": "2 Rares - Rare and Magic Ring" }, { - "Name": "Metadata/Terrain/interlude/part1/p1_4/holtondocktransition.tdt", - "ExpectedCount": 1, - "DisplayName": "Soul Ferryman - Sells runes" + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCave/ShrineLandmark_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Shrine" }, { - "Name": "Metadata/Terrain/interlude/part1/p1_4/holton_estate_transition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Holton Estate" + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCaveArena/GoblinCaveArena_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Final Boss" }, { - "Name": "Metadata/Terrain/Interlude/Part1/P1_4/Chaple_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Bosses" - }, - { - "Name": "Metadata/Terrain/Interlude/Part1/P1_4/Prison_entrance.tdt", - "ExpectedCount": 1, - "DisplayName": "Woven" + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/GoblinCaveEntrance_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Isle of Kin" } ], - "P1_5": [ + "G2_12_2": [ + { + "Name": "Metadata/Terrain/Desert/FarudinCarts/cart_walkway_02.tdt", + "ExpectedCount": 1, + "DisplayName": "The Dreadnought" + }, { - "Name": "Metadata/Terrain/Interlude/Part1/P1_5/Holten_Prison_Bossroom.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss" + "Name": "Metadata/Terrain/Desert/FarudinCarts/Features/DreadnoughtArena_02.tdt", + "ExpectedCount": 1, + "DisplayName": "The Faridun Throne" } ], - "P1_6": [ + "G3_14": [ { - "Name": "Metadata/Terrain/Maps/Derelict/Tiles/StairsUp_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss stairs" + "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCity/jungle_pyramid_entrance_atziri_01_metatile.tdt", + "ExpectedCount": 1, + "DisplayName": "Aggorat" }, - { - "Name": "Metadata/Terrain/Maps/Derelict/Tiles/HoltenBossStairsDown_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss stairs" + { + "Name": "Metadata/Terrain/Jungle/AreaTransitions/SunkenCity/jungle_town_lower_entrance_past_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Town" } ], - "P2_1": [ + "G1_13_1": [ { - "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Dregs_Transition.tdt", + "Name": "Metadata/Terrain/Woods/Village/RoadFields/Feature/YurtUna_01.tdt", "ExpectedCount": 1, - "DisplayName": "Pools of Khatal" + "DisplayName": "Una's Lute (+2 Passive)" }, { - "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Forge_Transition.tdt", + "Name": "Metadata/Terrain/Woods/Village/RoadFields/Bosstile_01.tdt", "ExpectedCount": 1, - "DisplayName": "Forge" + "DisplayName": "Crop Circle (Skill Gem Level 4)" }, { - "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Salt_Waste_Bossroom.tdt", + "Name": "Metadata/Terrain/Woods/AreaTransitions/cliff_gate_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Hunting Grounds" }, { - "Name": "Metadata/Terrain/interlude/part2/p2_1/gates_exit_transition_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Galai Gates" + "Name": "Metadata/Terrain/Woods/Village/RoadFields/Feature/RoadVillage_Areatransition.tdt", + "ExpectedCount": 1, + "DisplayName": "Ogham Village" } ], - "P2_2": [ + "MapAlpineRidge": [ { - "Name": "Metadata/Terrain/Interlude/Part2/P2_2/PenitentArchive_Exit.tdt", + "Name": "pinnacle", "ExpectedCount": 1, - "DisplayName": "Exit" + "DisplayName": "Beacon" } ], - "P2_3": [ + "G4_4_1": [ { - "Name": "Metadata/Terrain/Interlude/Part2/P2_3/BossRoomTile.tdt", + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Features/Spiral_Eighths/Sinkhole_Spiral_QuarterHeight_WalkableHalf_01.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Hall of the dead" }, { - "Name": "Metadata/Terrain/Gallows/Act4_Interlude/Part2/P2_3/Tiles/SealPillar_01.tdt", - "ExpectedCount": 8, - "DisplayName": "2 Seal locations - Loot" + "Name": "Metadata/Terrain/Islands/Tiles/CoralDungeon/Thickwall/CoralSinkhole/Arena/SudokuArena_03.tdt", + "ExpectedCount": 1, + "DisplayName": "Pay respects at end" } ], - "P2_4": [ + "G1_12": [ { - "Name": "Metadata/Terrain/interlude/part2/p2_4/saitwaste_entrance_transition.tdt", - "ExpectedCount": 3, - "DisplayName": "Saitwaste Entrance" - } - ], - "P2_5": [ + "Name": "Metadata/Terrain/Woods/Canopy/Features/CanopySpireTransition_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Hunting Grounds" + }, { - "Name": "Metadata/Terrain/Interlude/Part2/Gates/AreaTransitions/GatesEnd_01.tdt", + "Name": "Metadata/Terrain/Woods/Canopy/Features/CanopyArena.tdt", "ExpectedCount": 1, - "DisplayName": "Gates end" + "DisplayName": "The King in the Mists (30 Spirit + Spirit Gem Level 4)" } ], - "P2_6": [ + "G2_2": [ { - "Name": "Metadata/Terrain/Maps/SevenWaters/Tiles/Feature/Arena_Transition_01.tdt", + "Name": "Metadata/Terrain/Desert/Maraketh/TraitorsPassage/TraitorsPassage_Arena_01.tdt", "ExpectedCount": 1, - "DisplayName": "Entrance" + "DisplayName": "Prison of the Disgraced (Djinn Barya)" }, { - "Name": "Metadata/Terrain/Maps/SevenWaters/Tiles/BuildingWall/BuildingWall_X_01.tdt", + "Name": "Metadata/Terrain/Desert/CavePath/Features/Thickwall_Cave_Entrance.tdt", "ExpectedCount": 1, - "DisplayName": "Pillars - Buff choice" + "DisplayName": "The Halani Gates" + }, + { + "Name": "Metadata/Terrain/Desert/CavePath/Features/cave_entrance_01.tdt", + "ExpectedCount": 1, + "DisplayName": "The Ardura Caravan" + }, + { + "Name": "Metadata/Terrain/Desert/CavePath/Features/Landmark_feature_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Rare Chest (Skill Gem Level 6)" } ], - "P2_7": [ + "G2_10_1": [ { - "Name": "Metadata/Terrain/Interlude/Part2/P2_7/Qimah_bossroom.tdt", + "Name": "Metadata/Terrain/Desert/Quarry/Features/MiningShaftCrane.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" + "DisplayName": "Mawdun Mine" }, { - "Name": "Metadata/Terrain/Maps/SevenWaters/Tiles/BuildingWall/BuildingWall_X_01.tdt", + "Name": "Metadata/Terrain/Desert/Quarry/Features/Maraketh_Entrance_01.tdt", "ExpectedCount": 1, - "DisplayName": "Pillars - Buff choice" + "DisplayName": "The Ardura Caravan" } ], "P3_1": [ { - "Name": "Metadata/Terrain/interlude/part3/p3_1/town_to_jungle_transition.tdt", - "ExpectedCount": 1, - "DisplayName": "Glade" + "Name": "Metadata/Terrain/interlude/part3/p3_1/town_to_jungle_transition.tdt", + "ExpectedCount": 1, + "DisplayName": "Glade" }, { "Name": "Metadata/Terrain/Interlude/Part3/P3_1/Jungle_to_KriarVillage_Transition.tdt", @@ -1426,350 +1517,383 @@ "DisplayName": "Kriar Village" } ], - "P3_2": [ - { - "Name": "Metadata/Terrain/interlude/part3/p3_2/jungle_transition.tdt", - "ExpectedCount": 1, - "DisplayName": "Ashen Forest" - }, + "P1_3": [ { - "Name": "Metadata/Terrain/Interlude/Part3/P3_2/KriarVillage_Bossroom.tdt", + "Name": "Metadata/Terrain/interlude/part1/p1_3/holten_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Boss" - } - ], - "P3_3": [ - { - "Name": "Metadata/Terrain/Interlude/Part3/P3_3/GlacialTarn_Bossroom.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss" - }, - { - "Name": "Metadata/Terrain/Maps/FrozenFalls/Tiles/Cove_01.tdt", - "ExpectedCount": 1, - "DisplayName": "Coves" + "DisplayName": "Holten" } ], - "P3_4": [ - { - "Name": "Metadata/Terrain/Interlude/Part3/P3_4/Cave_Bossroom.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss" + "G1_5": [ + { + "Name": "Metadata/Terrain/Woods/AreaTransitions/redvale_transition_02_redvale.tdt", + "ExpectedCount": 1, + "DisplayName": "The Grelwood" } ], - "P3_5": [ - { - "Name": "Metadata/Terrain/Interlude/Part3/P3_5/Ravine_Exit_Transition.tdt", - "ExpectedCount": 1, - "DisplayName": "Ravine" + "G3_12": [ + { + "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_outerwall_end_stairsdown_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Stairs Down" }, { - "Name": "Metadata/Terrain/Interlude/Part3/P3_5/Medition_Ridge.tdt", - "ExpectedCount": 1, - "DisplayName": "Guarenteed unique?" - } - ], - "P3_6": [ - { - "Name": "Metadata/Terrain/Interlude/Part3/P3_6/Ravine_Bossroom.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss" - } - ], - "P3_7": [ - { - "Name": "Metadata/Terrain/Interlude/Part3/P3_7/BloodVault_Bossroom.tdt", - "ExpectedCount": 1, - "DisplayName": "Boss" - } - ], - "MapAlpineRidge": [ + "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_outerwall_end_stairsup_02.tdt", + "ExpectedCount": 2, + "DisplayName": "Stairs Up" + }, { - "Name": "pinnacle", + "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_outerwall_end_stairsup_01.tdt", + "ExpectedCount": 2, + "DisplayName": "Stairs Up" + }, + { + "Name": "Metadata/Terrain/Dungeon/Ziggurat/ziggurat_to_sunkencity_01.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" + "DisplayName": "Ziggurat Encampment" } ], - "MapBluff": [ + "P2_1": [ { - "Name": "Metadata/Terrain/Maps/Bluff/Tiles/Feature/Beacon_01.tdt", + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Dregs_Transition.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" - } - ], - "MapLostTowers": [ + "DisplayName": "Pools of Khatal" + }, { - "Name": "Metadata/Terrain/Desert/Pillars/Upper/PillarUpper_StairsUp_01.tdt", + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Forge_Transition.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs" + "DisplayName": "Forge" }, { - "Name": "Metadata/Terrain/Maps/LostTowers/Tiles/PillarArena01.tdt", + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Salt_Waste_Bossroom.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" + "DisplayName": "2 Passives - Boss" }, { - "Name": "Metadata/Terrain/Maps/LostTowers/Tiles/PillarArena01.tdt", - "DisplayName": "Beacon" + "Name": "Metadata/Terrain/interlude/part2/p2_1/gates_exit_transition_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Galai Gates" + }, + { + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/landmark_exterior.tdt", + "ExpectedCount": 1, + "DisplayName": "Rare Chest and Monster Waves" + }, + { + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/forge_entrance.tdt", + "ExpectedCount": 1, + "DisplayName": "5% Maximum Life" + }, + { + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Cliff/Cliff_CvSS_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Near Caster Vendor" }, { - "Name": "tower_beacon", + "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Cliff/Cliff_StSS_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Near Caster Vendor" + } + ], + "P2_2": [ + { + "Name": "Metadata/Terrain/Interlude/Part2/P2_2/PenitentArchive_Exit.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" - }, - { - "Name": "tower_beacon", - "DisplayName": "Beacon" + "DisplayName": "Exit" } ], - "MapLostTowers_NoBoss": [ + "P2_6": [ { - "Name": "Metadata/Terrain/Desert/Pillars/Upper/PillarUpper_StairsUp_01.tdt", + "Name": "Metadata/Terrain/Maps/SevenWaters/Tiles/Feature/Arena_Transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs" + "DisplayName": "Entrance" }, { - "Name": "tower_beacon", + "Name": "Metadata/Terrain/Maps/SevenWaters/Tiles/BuildingWall/BuildingWall_X_01.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" + "DisplayName": "Pillars - Buff choice" } ], - "MapMesa": [ + "G2_13": [ { - "Name": "Metadata/Terrain/Maps/Mesa/Tiles/Peak.tdt", + "Name": "Metadata/Terrain/Desert/KethAscendancy/Level_1/Feature/pedestal_02.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" + "DisplayName": "Relic Altar" } ], - "MapSwampTower": [ + "G3_11": [ { - "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/CentrePillar_02.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/Present/AggoratToSunkenCity_Present_01.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs" + "DisplayName": "Waypoint" }, { - "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/CentrePillar_02.tdt", - "DisplayName": "Stairs" + "Name": "Metadata/Terrain/Jungle/Aggorat/Outerwall/AggoratOuterArena_Present_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Cauldron Keeper" }, { - "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Lower_Exterior/SwampTower_BasementOuterWall_EndStairsUp_01.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/AggoratArena_01.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs" + "DisplayName": "Queen of Filth" }, { - "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Lower_Exterior/SwampTower_BasementOuterWall_EndStairsUp_02.tdt", + "Name": "Metadata/Terrain/Jungle/Aggorat/Features/Present/AggoratToSunkenCity_Present_02.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs" - }, + "DisplayName": "The Drowned City" + } + ], + "G3_1": [ { - "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Mid_Exterior/SwampTower_OuterWallEnd_StairsUp_01.tdt", + "Name": "Metadata/Terrain/Jungle/SandsweptMarsh/marsh_exit.tdt", "ExpectedCount": 1, - "DisplayName": "Stairs" + "DisplayName": "Ziggurat Encampment" }, { - "Name": "Metadata/Terrain/Maps/SwampTower/Tiles/Mid_Exterior/SwampTower_OuterWallEnd_StairsUp_02.tdt", + "Name": "wide_shrine", "ExpectedCount": 1, - "DisplayName": "Stairs" + "DisplayName": "permanent buff" }, { - "Name": "StairsUp", - "ExpectedCount": 5, - "DisplayName": "Stairs" + "Name": "Metadata/Terrain/Jungle/JungleExterior/Fills/JungleGroundPuddle_04.tdt", + "ExpectedCount": 1, + "DisplayName": "Orok Campfire (Lesser Jeweller's Orb)" }, { - "Name": "StairsUp", - "DisplayName": "Stairs" + "Name": "Metadata/Terrain/Jungle/JungleExterior/SandToWater/Feature/EntranceCaravanFord_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Mini Town" }, { - "Name": "tower_beacon", + "Name": "Metadata/Terrain/Jungle/SandsweptMarsh/bossman.tdt", "ExpectedCount": 1, - "DisplayName": "Beacon" + "DisplayName": "Foul Ritual (Level 9)" } ], - "*": [ + "G1_2": [ { - "Name": "Metadata/Terrain/islands/tiles/bloodfever/wharewall/alleyway_to_smallalley_ccst_01.tdt", - "ExpectedCount": 3, - "DisplayName": "Smallalley Ccst" + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_02.tdt", + "ExpectedCount": 1, + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "Metadata/Terrain/islands/tiles/coraldungeon/features/area_transition_stww_01.tdt", - "ExpectedCount": 3, - "DisplayName": "Transition" + "Name": "Metadata/Terrain/Woods/AreaTransitions/Clearfell_OldForest_Transition_01.tdt", + "ExpectedCount": 1, + "DisplayName": "The Grelwood" }, { - "Name": "Metadata/Terrain/islands/tiles/island/oceanledge/oceanledge_to_lowerledge_x_karui_01.tdt", - "ExpectedCount": 3, - "DisplayName": "Lowerledge X Karui" + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "Metadata/Terrain/islands/tiles/kalguurship/kalguurship_town_01.tdt", - "ExpectedCount": 3, - "DisplayName": "Kalguur town?" + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_06.tdt", + "ExpectedCount": 1, + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "Metadata/Terrain/islands/tiles/kalguurship/kalguurship_town_01_ghost.tdt", - "ExpectedCount": 1, - "DisplayName": "Boat" + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_03.tdt", + "ExpectedCount": 1, + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "Metadata/Terrain/islands/tiles/kalguurship/kalguurship_town_02.tdt", - "ExpectedCount": 3, - "DisplayName": "Kalguur town?" + "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeSlash_in.tdt", + "ExpectedCount": 1, + "DisplayName": "Mud Burrow" }, { - "Name": "Metadata/Terrain/Woods/Woods/AzmeriLeague/Features/arenaTransition_01.tdt", + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_05.tdt", "ExpectedCount": 1, - "DisplayName": "Boss stronghold" + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "boneyard", + "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeWoods_in.tdt", "ExpectedCount": 1, - "DisplayName": "Boneyard [Primal/Blue] - 50/50 monsters and loot" + "DisplayName": "Mud Burrow" }, { - "Name": "boss", + "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeWoods_out.tdt", "ExpectedCount": 1, - "DisplayName": "boss" + "DisplayName": "Mud Burrow" }, { - "Name": "boss_transition", + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_07.tdt", "ExpectedCount": 1, - "DisplayName": "boss_transition" + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "bosstransition", + "Name": "special", "ExpectedCount": 1, - "DisplayName": "bosstransition" + "DisplayName": "Clearfell Encampment" }, { - "Name": "entrance", + "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_04.tdt", "ExpectedCount": 1, - "DisplayName": "entrance" + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "entranceback", + "Name": "Metadata/Terrain/Woods/AreaTransitions/FallenTreeSlash_out.tdt", "ExpectedCount": 1, - "DisplayName": "entranceback" + "DisplayName": "Mud Burrow" }, { - "Name": "entrancebook", + "Name": "hagwitch", "ExpectedCount": 1, - "DisplayName": "entrancebook" + "DisplayName": "Beira of the Rotten (10% Cold Res)" }, { - "Name": "entrancedown", + "Name": "FallenTreeSlashTransition", "ExpectedCount": 1, - "DisplayName": "entrancedown" - }, + "DisplayName": "Mud Burrow" + } + ], + "G4_8b": [ { - "Name": "entrancedownboss", + "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/Feature/TwilightArena.tdt", "ExpectedCount": 1, - "DisplayName": "entrancedownboss" + "DisplayName": "Boss" }, { - "Name": "entranceup", + "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/Feature/TwilightLighthouse.tdt", "ExpectedCount": 1, - "DisplayName": "entranceup" + "DisplayName": "Bell - Exalted" }, { - "Name": "npc1", + "Name": "Metadata/Terrain/Islands/Tiles/TwilightIsland/Feature/bell_feature_01.tdt", "ExpectedCount": 1, - "DisplayName": "Breaker of Oaths - Warlock [Wild/Purple]" - }, + "DisplayName": "Bell - Regal" + } + ], + "G1_4": [ { - "Name": "npc2", + "Name": "Metadata/Terrain/Woods/AreaTransitions/OldForestToGrimTangle_02_metatile.tdt", "ExpectedCount": 1, - "DisplayName": "The Warden of Eaves - Maji [Vivid/Yellow]" + "DisplayName": "The Grim Tangle" }, { - "Name": "npc3", + "Name": "Metadata/Terrain/Woods/AreaTransitions/OldForest_Clearfell_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "The Primal Huntress - Primalist [Primal/Blue]" + "DisplayName": "Clearfell" }, { - "Name": "stairsdown", + "Name": "BurnTheWitch", "ExpectedCount": 1, - "DisplayName": "stairsdown" + "DisplayName": "Areagne's Hut (Support Gem Level 1 and Flasks)" }, { - "Name": "stairsup", + "Name": "Metadata/Terrain/Woods/GrimTangle/areatransitions/GrimtangleTransitionDown_02.tdt", "ExpectedCount": 1, - "DisplayName": "stairsup" + "DisplayName": "The Corpse Tree (waypoint)" }, { - "Name": "sticksinmud", + "Name": "Metadata/Terrain/Woods/OldForestWoods/Feature/PlantBoss_01.tdt", "ExpectedCount": 1, - "DisplayName": "Grisly Trophy [Wild/Purple] - Body Loot" + "DisplayName": "The Moving Bramble (Skill Gem Level 2)" }, { - "Name": "stonehenge", + "Name": "Metadata/Terrain/Woods/AreaTransitions/redvale_transition_02_oldforest.tdt", "ExpectedCount": 1, - "DisplayName": "Stonehenge [Vivid/Yellow]" + "DisplayName": "The Red Vale" }, { - "Name": "waypoint", + "Name": "Metadata/Terrain/Woods/OldForestWoods/Feature/BurnTheWitch_01.tdt", "ExpectedCount": 1, - "DisplayName": "waypoint" - }, + "DisplayName": "Areagne's Hut (Support Gem Level 1 and Flasks)" + } + ], + "P1_1": [ { - "Name": "witchorb", + "Name": "Metadata/Terrain/interlude/part1/p1_1/feature/monolith_transition_01.tdt", "ExpectedCount": 1, - "DisplayName": "3rd Maji Quest" + "DisplayName": "Stones of serle" + }, + { + "Name": "Metadata/Terrain/interlude/part1/p1_1/feature/forest_transition_01.tdt", + "ExpectedCount": 3, + "DisplayName": "Forest 1 of 2" + }, + { + "Name": "Metadata/Terrain/Interlude/Part1/P1_1/Feature/collapsed_hut_01.tdt", + "ExpectedCount": 3, + "DisplayName": "Skill Gem Level 13" } ], - "Sanctum*": [ + "G3_2_1": [ { - "Name": "abyss_transition", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/AreaTransition/EntranceBog_02.tdt", "ExpectedCount": 1, - "DisplayName": "Transition" + "DisplayName": "The Azak Bog" }, { - "Name": "airlock_transition", - "ExpectedCount": 10, - "DisplayName": "Transition" + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleDepths_to_ChimeralWetlands.tdt", + "ExpectedCount": 1, + "DisplayName": "Chimeral Wetlands" }, { - "Name": "areatransition", + "Name": "Metadata/Terrain/Jungle/AntHill/AntHollow/hollow_StSW_01.tdt", "ExpectedCount": 1, - "DisplayName": "Transition" + "DisplayName": "Larva Hollow" }, { - "Name": "entrance_upper", + "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleToWaterways_01.tdt", "ExpectedCount": 1, - "DisplayName": "Transition" + "DisplayName": "Jungle Ruins" }, { - "Name": "exitdown", + "Name": "Metadata/Terrain/Jungle/JungleExterior/Feature/Jungle_WaterwayAltar_01.tdt", "ExpectedCount": 1, - "DisplayName": "Transition" + "DisplayName": "Canal Mechanism (waypoint)" }, { - "Name": "square_transition", - "ExpectedCount": 10, - "DisplayName": "Transition" + "Name": "Metadata/Terrain/Jungle/JungleExterior/Waterway/Jungle_Waterway_Ramp_01.tdt", + "ExpectedCount": 1, + "DisplayName": "The Matlan Waterways" }, { - "Name": "transition", - "ExpectedCount": 3, - "DisplayName": "Transition" + "Name": "Metadata/Terrain/Jungle/AntHill/AntJungle_Edge/AntEdge_Landmark_Feature_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Troubled Camp (WEAPONS vendor)" + } + ], + "P3_7": [ + { + "Name": "Metadata/Terrain/Interlude/Part3/P3_7/BloodVault_Bossroom.tdt", + "ExpectedCount": 1, + "DisplayName": "Boss" + } + ], + "G3_6_2": [ + { + "Name": "Metadata/Terrain/Dungeon/NextFeatures/VaalCorruptionAltar.tdt", + "ExpectedCount": 1, + "DisplayName": "Corruption Altar" }, { - "Name": "transition_down", + "Name": "Metadata/Terrain/Dungeon/Machinarium/BossWall01.tdt", + "ExpectedCount": 1, + "DisplayName": "Boss" + }, + { + "Name": "Metadata/Terrain/Jungle/VaalInterior/VaalGenerator/VaalGenerator.tdt", "ExpectedCount": 2, - "DisplayName": "Transition" + "DisplayName": "Generator" + } + ], + "P1_6": [ + { + "Name": "Metadata/Terrain/Maps/Derelict/Tiles/HoltenBossStairsDown_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Boss stairs" }, { - "Name": "Metadata/Monsters/MarakethSanctumTrial/Hazards/HourglassLethal", - "ExpectedCount": 99, - "DisplayName": "Crystal", - "TargetType": "Entity" + "Name": "Metadata/Terrain/Maps/Derelict/Tiles/StairsUp_01.tdt", + "ExpectedCount": 1, + "DisplayName": "Boss stairs" }, { - "Name": "Metadata/Terrain/Gallows/Leagues/Sanctum/Objects/SanctumGenericLever", - "ExpectedCount": 99, - "DisplayName": "Lever", - "TargetType": "Entity" + "Name": "Metadata/Terrain/Maps/Derelict/Tiles/Holton_Bossroom.tdt", + "ExpectedCount": 1, + "DisplayName": "Boss Room" } ] } \ No newline at end of file From 02b3794df33a4e4803f083c2e5eefd3a21dcd6c4 Mon Sep 17 00:00:00 2001 From: myrahz Date: Fri, 12 Dec 2025 01:33:18 +0000 Subject: [PATCH 2/3] Added Pattern scan for tilesets Added pattern scan for tilesets, you can find some examples on the targets.json --- Radar.Pathfinding.cs | 197 ++++++++++++++++++++++++++++++++--- Radar.cs | 2 +- TargetDescription.cs | 10 +- targets.json | 243 ++++++++++++++++++++++++++++++++++++++++--- 4 files changed, 420 insertions(+), 32 deletions(-) diff --git a/Radar.Pathfinding.cs b/Radar.Pathfinding.cs index 4cd4d81..8b8d5f6 100644 --- a/Radar.Pathfinding.cs +++ b/Radar.Pathfinding.cs @@ -21,7 +21,7 @@ public partial class Radar { private Func>, CancellationToken, Task> _addRouteAction; private Func _getColor; - + private void LoadTargets() { var fileText = File.ReadAllText(Path.Combine(DirectoryFullName, "targets.json")); @@ -307,21 +307,37 @@ private IReadOnlyCollection GetLocationsFromTilePattern(string tilePat return _allTargetLocations.Where(x => regex.IsMatch(x.Key)).SelectMany(x => x.Value).ToList(); } - private TargetLocations ClusterTarget(TargetDescription target) - { - var expectedCount = target.ExpectedCount; - var targetName = target.Name; - var clusterSize = target.ClusterSize; - var locations = ClusterTarget(targetName, expectedCount, clusterSize); - if (locations == null) return null; - return new TargetLocations - { - Locations = locations, - Target = target, - }; - } + private TargetLocations ClusterTarget(TargetDescription target) + { + // NEW: Use pattern matching if pattern is defined + if (target.ClusterPattern != null && target.ClusterPattern.Length > 0) + { + var locations = FindPatternMatches(target); + if (locations == null || locations.Count == 0) + return null; - private Vector2[] ClusterTarget(string targetName, int expectedCount, int clusterSize = 1) // ADD clusterSize parameter + return new TargetLocations + { + Locations = locations.Select(v => (Vector2)v).ToArray(), + Target = target, + }; + } + + // OLD: Fallback to original clustering for backward compatibility + var expectedCount = target.ExpectedCount; + var targetName = target.Name; + var clusterSize = target.ClusterSize; + var locations2 = ClusterTarget(targetName, expectedCount, clusterSize); + if (locations2 == null) return null; + + return new TargetLocations + { + Locations = locations2, + Target = target, + }; + } + + private Vector2[] ClusterTarget(string targetName, int expectedCount, int clusterSize = 1) // ADD clusterSize parameter { var tileList = GetLocationsFromTilePattern(targetName); if (tileList is not { Count: > 0 }) @@ -379,7 +395,158 @@ private bool IsGridWalkable(Vector2i tile) { return _processedTerrainData[tile.Y][tile.X] is 5 or 4; } + private List FindPatternMatches(TargetDescription target) + { + if (target.ClusterPattern == null || target.ClusterPattern.Length == 0) + return null; + + + + var matches = new List(); + var pattern = target.ClusterPattern; + var aliases = target.TileAliases ?? new Dictionary(); + + + // CACHE tile data for performance - read once instead of millions of times + var tileData = GameController.Memory.ReadStdVector(_terrainMetadata.TgtArray); + + + var rotations = new[] { + pattern, + RotatePattern90(pattern), + RotatePattern90(RotatePattern90(pattern)), + RotatePattern90(RotatePattern90(RotatePattern90(pattern))) + }; + + // Calculate map dimensions in tiles + int maxTileX = _areaDimensions.Value.X / TileToGridConversion; + int maxTileY = _areaDimensions.Value.Y / TileToGridConversion; + + + // Scan the entire map + for (int tileY = 0; tileY < maxTileY; tileY++) + { + for (int tileX = 0; tileX < maxTileX; tileX++) + { + var gridPos = new Vector2i(tileX * TileToGridConversion, tileY * TileToGridConversion); + + // Check if any rotation matches at this position + foreach (var rotatedPattern in rotations) + { + if (PatternMatchesAt(gridPos, rotatedPattern, aliases, tileData)) + { + // Calculate center position of the matched pattern + int patternWidth = rotatedPattern[0].Length; + int patternHeight = rotatedPattern.Length; + int centerX = gridPos.X + (patternWidth * TileToGridConversion) / 2; + int centerY = gridPos.Y + (patternHeight * TileToGridConversion) / 2; + matches.Add(new Vector2i(centerX, centerY)); + break; // Don't count same position multiple times with different rotations + } + } + } + } + + + return matches; + } + /// + /// Check if pattern matches at specific position + /// + private bool PatternMatchesAt(Vector2i startPos, string[][] pattern, Dictionary aliases, TileStructure[] tileData) + { + int patternHeight = pattern.Length; + int patternWidth = pattern[0].Length; + + // Check each cell in the pattern + for (int py = 0; py < patternHeight; py++) + { + for (int px = 0; px < patternWidth; px++) + { + var patternCell = pattern[py][px]; + var gridPos = new Vector2i( + startPos.X + px * TileToGridConversion, + startPos.Y + py * TileToGridConversion + ); + + // Skip wildcards (null or "*") + if (patternCell == null || patternCell == "*") + continue; + + // Resolve alias to full tile name + var requiredTile = aliases.ContainsKey(patternCell) + ? aliases[patternCell] + : patternCell; + + // Get actual tile at this position + var actualTile = GetTileAt(gridPos, tileData); + + + + // Check if tiles match + if (actualTile != requiredTile) + return false; + } + } + + return true; + } + + /// + /// Rotate pattern 90 degrees clockwise + /// + private string[][] RotatePattern90(string[][] pattern) + { + int rows = pattern.Length; + int cols = pattern[0].Length; + var rotated = new string[cols][]; + + for (int i = 0; i < cols; i++) + { + rotated[i] = new string[rows]; + for (int j = 0; j < rows; j++) + { + rotated[i][j] = pattern[rows - 1 - j][i]; + } + } + + return rotated; + } + + + /// + /// Get tile name at grid position + /// + private string GetTileAt(Vector2i gridPos, TileStructure[] tileData) + { + // Convert grid position to tile coordinates + int tileX = gridPos.X / TileToGridConversion; + int tileY = gridPos.Y / TileToGridConversion; + int tileIndex = tileY * _terrainMetadata.NumCols + tileX; + + // Bounds check + if (tileIndex < 0 || tileX < 0 || tileY < 0 || tileX >= _terrainMetadata.NumCols) + return null; + + try + { + if (tileIndex >= tileData.Length) + return null; + + var tgtTileStruct = GameController.Memory.Read(tileData[tileIndex].TgtFilePtr); + + // Read the TgtPath (the .tdt file path) instead of the detail name + var tilePath = tgtTileStruct.TgtPath.ToString(GameController.Memory); + + return tilePath; + } + catch (Exception ex) + { + + return null; + } + } private IEnumerable GetAllNeighborTiles(Vector2i start) { foreach (var range in Enumerable.Range(1, 100000)) diff --git a/Radar.cs b/Radar.cs index a0d86ef..517bc2d 100644 --- a/Radar.cs +++ b/Radar.cs @@ -67,7 +67,7 @@ public override void AreaChange(AreaInstance area) { _targetDescriptionsInArea = GetTargetDescriptionsInArea().DistinctBy(x => x.Name).ToDictionary(x => x.Name); _currentZoneTargetEntityPaths = _targetDescriptionsInArea.Values.Where(x => x.TargetType == TargetType.Entity).DistinctBy(x => x.Name).Select(x=>(x.Name.ToLikeRegex(), x)).ToList(); - _terrainMetadata = GameController.IngameState.Data.DataStruct.Terrain; + _terrainMetadata = GameController.IngameState.Data.DataStruct.Terrain; _heightData = GameController.IngameState.Data.RawTerrainHeightData; _allTargetLocations = GetTargets(); _locationsByPosition = new ConcurrentDictionary>(_allTargetLocations diff --git a/TargetDescription.cs b/TargetDescription.cs index 1d44ad0..dd71075 100644 --- a/TargetDescription.cs +++ b/TargetDescription.cs @@ -1,11 +1,17 @@ -namespace Radar; +using System.Collections.Generic; + +namespace Radar; public record TargetDescription { public string Name { get; set; } = ""; public string DisplayName { get; set; } public int ExpectedCount { get; set; } = 1; - public int ClusterSize { get; set; } = 1; public TargetType TargetType { get; set; } public string Color { get; set; } + + public string[][] ClusterPattern { get; set; } + public Dictionary TileAliases { get; set; } + + public int ClusterSize { get; set; } = 1; } \ No newline at end of file diff --git a/targets.json b/targets.json index f57f651..ea410b4 100644 --- a/targets.json +++ b/targets.json @@ -170,7 +170,7 @@ { "Name": "BuriedDoor", "ExpectedCount": 1, - "DisplayName": "GOOD VAULT" + "DisplayName": "Vault (Rare chest + magic amulet)" }, { "Name": "Metadata/Terrain/Desert/BuriedCity/Features/Keth_SinkholeTransition_01.tdt", @@ -205,15 +205,15 @@ { "Name": "Metadata/Terrain/Desert/BuriedCity/Citywall_0/StMM_Door_01.tdt", "ExpectedCount": 1, - "DisplayName": "GOOD VAULT" + "DisplayName": "Vault (Rare chest + magic amulet)" }, { "Name": "BuriedDoor", - "DisplayName": "GOOD VAULT" + "DisplayName": "Vault (Rare chest + magic amulet)" }, { "Name": "Metadata/Terrain/Desert/BuriedCity/Citywall_0/StMM_Door_01.tdt", - "DisplayName": "GOOD VAULT" + "DisplayName": "Vault (Rare chest + magic amulet)" } ], "G3_17": [ @@ -246,6 +246,12 @@ "ExpectedCount": 1, "DisplayName": "Ignagduk, The Bog Witch (+30 Spirit)" }, + { + "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/bogforcedblank_upper_01.tdt", + "ClusterSize": 36, + "DisplayName": "Fire Resist Buff" + }, + { "Name": "Metadata/Terrain/Jungle/JungleExterior/Bog/AreaTransition/EntranceBog_01.tdt", "ExpectedCount": 1, @@ -311,6 +317,88 @@ "ExpectedCount": 2, "DisplayName": "Quest close - passive effects" }, + + + { + "Name": "Rare Sarcophagus 1", + "DisplayName": "Rare Sarcophagus ", + "TileAliases": { + "A": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_Cc_01.tdt", + "B": "Metadata/Terrain/Jungle/SnakePit/BlackInsideWall_01_roofshadow.tdt", + "C": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_01.tdt", + "D": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cv_01.tdt", + "E": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_St_01.tdt" + + }, + "ClusterPattern": [ + ["*","*", "*", "*", "B"], + ["*","A", "A", "A", "*"], + ["*","A", "A", "A", "*"], + ["*","A", "A", "A", "E"], + ["B","*", "*", "C", "D"] + ] + },{ + "Name": "Rare Sarcophagus 2", + "DisplayName": "Rare Sarcophagus", + "TileAliases": { + "A": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_Cc_01.tdt", + "B": "Metadata/Terrain/Jungle/SnakePit/BlackInsideWall_01_roofshadow.tdt", + "C": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_01.tdt", + "D": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cv_01.tdt", + "E": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_St_01.tdt" + + }, + "ClusterPattern": [ + ["*","*", "*", "*", "B"], + ["*","A", "A", "A", "*"], + ["*","A", "A", "A", "*"], + ["*","A", "A", "A", "C"], + ["B","*", "*", "E", "D"] + ] + }, + { + "Name": "Metadata/Terrain/Jungle/SnakePit/ForcedBlank_01.tdt", + "DisplayName": "Venom Quest", + "TileAliases": { + "A": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_Cc_01.tdt", + "B": "Metadata/Terrain/Jungle/SnakePit/ForcedBlank_01.tdt", + "C": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_St_01.tdt" + + }, + "ClusterPattern": [ + ["B", "C"], + ["C", "A"] + ] + }, + + { + "Name": "Metadata/Terrain/Jungle/SnakePit/ForcedBlank_02.tdt", + "DisplayName": "Venom Quest", + "TileAliases": { + "A": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_Cc_01.tdt", + "B": "Metadata/Terrain/Jungle/SnakePit/ForcedBlank_02.tdt", + "C": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_St_01.tdt" + + }, + "ClusterPattern": [ + ["B", "C"], + ["C", "A"] + ] + }, + { + "Name": "Metadata/Terrain/Jungle/SnakePit/ForcedBlank_03.tdt", + "DisplayName": "Venom Quest", + "TileAliases": { + "A": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_Cc_Cc_01.tdt", + "B": "Metadata/Terrain/Jungle/SnakePit/ForcedBlank_03.tdt", + "C": "Metadata/Terrain/Jungle/SnakePit/CombinationTiles/Vaal_to_Roots_St_01.tdt" + + }, + "ClusterPattern": [ + ["B", "C"], + ["C", "A"] + ] + }, { "Name": "Metadata/Chests/QuestChests/SnakePit/SnakeLadyPotionChest", "ExpectedCount": 1, @@ -376,6 +464,37 @@ "ExpectedCount": 1, "DisplayName": "Keth" }, + { + "Name": "Metadata/Terrain/Desert/Maraketh/Floor/Blank_Fill_01.tdt", + "DisplayName": "Spirit Gem Level 7", + "TileAliases": { + "A": "Metadata/Terrain/Desert/Maraketh/Floor/Blank_Fill_01.tdt", + "B": "Metadata/Terrain/Desert/Maraketh/Floor/Floor_Medallion_Small_01.tdt" + }, + "ClusterPattern": [ + ["*", "A", "A","A", "*"], + ["A", "*", "*","*", "A"], + ["A", "*", "A","*", "A"], + ["A", "*", "*","*", "A"], + ["*", "A", "A","A", "*"] + + ] + }, + { + "Name": "Metadata/Terrain/Desert/Maraketh/Floor/Blank_Fill_01.tdt", + "DisplayName": "Jewel Rare Beetle", + "TileAliases": { + "A": "Metadata/Terrain/Desert/Maraketh/Floor/Blank_Fill_01.tdt", + "B": "Metadata/Terrain/Desert/Maraketh/Floor/Floor_Medallion_Small_01.tdt" + }, + "ClusterPattern": [ + ["A", "A", "A"], + ["A", "B", "A"], + ["A", "A", "A"] + ] + }, + + { "Name": "Metadata/Terrain/Desert/Maraketh/Features/Thickwall_StairsDown_01.tdt", "ExpectedCount": 1, @@ -475,7 +594,9 @@ } ], "G3_5": [ - { + + + { "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/ChimeralJungle_to_ChaosTemple.tdt", "ExpectedCount": 1, "DisplayName": "The Temple of Chaos" @@ -645,9 +766,9 @@ "DisplayName": "Tomb of the Consort" }, { - "Name": "accessiblefence", - "ExpectedCount": 2, - "DisplayName": "Random ring 1 of 2 locations" + "Name": "Metadata/Terrain/Woods/Graveyard/Thickwall/St_01.tdt", + "ClusterSize": 18, + "DisplayName": "Random ring" }, { "Name": "Metadata/Terrain/Woods/Graveyard/Feature/GraveyardToGrimTangle_transition_01.tdt", @@ -1047,6 +1168,11 @@ "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/dungeon_prison_chapel_01.tdt", "ExpectedCount": 1, "DisplayName": "Flask buff - Need key" + }, + { + "Name": "Metadata/Terrain/Islands/Tiles/Prison/Prison_Confinement_Fill_01.tdt", + "ClusterSize": 38, + "DisplayName": "Strongbox" }, { "Name": "Metadata/Terrain/Islands/Tiles/Prison/Features/LowerPrison/Maximumprison.tdt", @@ -1499,6 +1625,21 @@ "ExpectedCount": 1, "DisplayName": "Mawdun Mine" }, + { + "Name": "Metadata/Terrain/forced_blank.tdt", + "DisplayName": "Artificers Orb", + "TileAliases": { + "A": "Metadata/Terrain/forced_blank.tdt", + "B": "Metadata/Terrain/Desert/Quarry/Abyss/mine_abyss_concave_v01_01.tdt" + }, + "ClusterPattern": [ + + ["B", "A", "A", "A"], + ["A", "A", "A", "A"], + ["B", "A", "A", "A"] + + ] + }, { "Name": "Metadata/Terrain/Desert/Quarry/Features/Maraketh_Entrance_01.tdt", "ExpectedCount": 1, @@ -1511,6 +1652,28 @@ "ExpectedCount": 1, "DisplayName": "Glade" }, + { + "Name": "TH", + "DisplayName": "Gem Level 14", + "TileAliases": { + "A": "Metadata/Terrain/forced_blank.tdt", + "B": "Metadata/Terrain/Woods/OldForestWoods/Fill_01.tdt" + + }, + "ClusterPattern": [ + + + ["*","B", "B", "B", "B", "B", "B", "B"], + ["*","*", "*", "*", "*", "*", "*", "B"], + ["*","*", "*", "*", "*", "*", "*", "B"], + ["*","*", "*", "*", "*", "*", "*", "B"], + ["*","A", "A", "A", "*", "*", "*", "B"], + ["*","A", "A", "A", "*", "*", "*", "B"], + ["*","A", "A", "A", "*", "*", "*", "B"], + + + ] + }, { "Name": "Metadata/Terrain/Interlude/Part3/P3_1/Jungle_to_KriarVillage_Transition.tdt", "ExpectedCount": 1, @@ -1584,6 +1747,21 @@ "ExpectedCount": 1, "DisplayName": "5% Maximum Life" }, + { + "Name": "Metadata/Terrain/forced_blank.tdt", + "DisplayName": "Caster Vendor", + "TileAliases": { + "A": "Metadata/Terrain/forced_blank.tdt", + "B": "Metadata/Terrain/Desert/Oasis/Ruins/ruinwall_St_feature_01.tdt" + }, + "ClusterPattern": [ + + ["A", "A", "A", "B"], + ["A", "A", "A", "B"], + ["A", "A", "A", "B"] + + ] + }, { "Name": "Metadata/Terrain/Interlude/Part2/P2_1/Cliff/Cliff_CvSS_02.tdt", "ExpectedCount": 1, @@ -1654,11 +1832,39 @@ "ExpectedCount": 1, "DisplayName": "permanent buff" }, - { - "Name": "Metadata/Terrain/Jungle/JungleExterior/Fills/JungleGroundPuddle_04.tdt", - "ExpectedCount": 1, - "DisplayName": "Orok Campfire (Lesser Jeweller's Orb)" - }, + + + { + "Name": "Metadata/Terrain/Desert/Maraketh/Floor/Blank_Fill_01.tdt", + "DisplayName": "Orok Campfire (Lesser Jeweller's Orb)", + "TileAliases": { + "A": "Metadata/Terrain/forced_blank.tdt" + + }, + "ClusterPattern": [ + ["A", "A", "A"], + ["A", "A", "A"], + ["A", "A", "A"] + ] + }, + { + "Name": "Metadata/Terrain/Jungle/JungleExterior/SandToWater/Overlays/OverlayCv_01_01.tdt", + "DisplayName": "Magic Ring", + "TileAliases": { + "A": "Metadata/Terrain/Jungle/JungleExterior/SandToWater/Overlays/OverlayCv_01_01.tdt", + "B": "Metadata/Terrain/Jungle/JungleExterior/SandToWater/Overlays/OverlayCv_01_03.tdt" + + }, + "ClusterPattern": [ + ["A", "A", "A", "B", "B", "B"], + ["A", "A", "A", "B", "B", "B"], + ["A", "A", "A", "B", "B", "B"], + ["A", "A", "A", "B", "B", "B"], + ["A", "A", "A", "B", "B", "B"], + ["A", "A", "A", "B", "B", "B"], + + ] + }, { "Name": "Metadata/Terrain/Jungle/JungleExterior/SandToWater/Feature/EntranceCaravanFord_01.tdt", "ExpectedCount": 1, @@ -1672,6 +1878,15 @@ ], "G1_2": [ { + "Name": "Metadata/Terrain/Woods/Slash/CvMM_01.tdt", + "ClusterSize": 18, + "DisplayName": "Skill Gem" + },{ + "Name": "Metadata/Terrain/Woods/Slash/StMM_01.tdt", + "ClusterSize": 18, + "DisplayName": "Skill Gem" + }, + { "Name": "Metadata/Terrain/Woods/Slash/HagWitchArena_02.tdt", "ExpectedCount": 1, "DisplayName": "Beira of the Rotten (10% Cold Res)" @@ -1832,7 +2047,7 @@ { "Name": "Metadata/Terrain/Jungle/AntHill/AntHollow/hollow_StSW_01.tdt", "ExpectedCount": 1, - "DisplayName": "Larva Hollow" + "DisplayName": "Rare Monster" }, { "Name": "Metadata/Terrain/Jungle/JungleExterior/AreaTransitions/JungleToWaterways_01.tdt", From c88f2d77a3f3a42947e4e1b61394fe3941b3b288 Mon Sep 17 00:00:00 2001 From: myrahz Date: Fri, 12 Dec 2025 19:59:52 +0000 Subject: [PATCH 3/3] fix fix --- Radar.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Radar.cs b/Radar.cs index 517bc2d..a43e320 100644 --- a/Radar.cs +++ b/Radar.cs @@ -67,7 +67,7 @@ public override void AreaChange(AreaInstance area) { _targetDescriptionsInArea = GetTargetDescriptionsInArea().DistinctBy(x => x.Name).ToDictionary(x => x.Name); _currentZoneTargetEntityPaths = _targetDescriptionsInArea.Values.Where(x => x.TargetType == TargetType.Entity).DistinctBy(x => x.Name).Select(x=>(x.Name.ToLikeRegex(), x)).ToList(); - _terrainMetadata = GameController.IngameState.Data.DataStruct.Terrain; + _terrainMetadata = GameController.IngameState.Data.Terrain; _heightData = GameController.IngameState.Data.RawTerrainHeightData; _allTargetLocations = GetTargets(); _locationsByPosition = new ConcurrentDictionary>(_allTargetLocations